handlers_test.go 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. package authlogger
  2. import (
  3. "fmt"
  4. "net/http"
  5. "net/http/httptest"
  6. "testing"
  7. "time"
  8. )
  9. func TestHandleIndexListing(t *testing.T) {
  10. teardownSuite := setupSuite(t)
  11. defer teardownSuite(t)
  12. logger, err := NewLogger()
  13. if err != nil {
  14. t.Fatalf("Failed to create a new logger: %v", err)
  15. }
  16. defer logger.Close()
  17. tt := time.Now()
  18. err = logger.LogAuthByRequestInfo("testUser", "192.168.1.1:8080", tt.Unix(), true, "custom")
  19. if err != nil {
  20. t.Fatalf("Failed to create a new entry: %v", err)
  21. }
  22. // Setup a test HTTP request for index listing
  23. request, err := http.NewRequest("GET", "/index", nil)
  24. if err != nil {
  25. t.Fatal(err)
  26. }
  27. // Setup a test server to capture the response
  28. rr := httptest.NewRecorder()
  29. // Test handling index listing
  30. logger.HandleIndexListing(rr, request)
  31. // Check the response status code
  32. if status := rr.Code; status != http.StatusOK {
  33. t.Errorf("HandleIndexListing returned wrong status code: got %v want %v", status, http.StatusOK)
  34. }
  35. // Check the response body
  36. expectedBody := `["` + time.Now().UTC().Format("Jan-2006") + `"]`
  37. if rr.Body.String() != expectedBody {
  38. t.Errorf("HandleIndexListing returned unexpected body: got %v want %v", rr.Body.String(), expectedBody)
  39. }
  40. }
  41. func TestHandleTableListing(t *testing.T) {
  42. teardownSuite := setupSuite(t)
  43. defer teardownSuite(t)
  44. logger, err := NewLogger()
  45. if err != nil {
  46. t.Fatalf("Failed to create a new logger: %v", err)
  47. }
  48. defer logger.Close()
  49. tt := time.Now().Unix()
  50. err = logger.LogAuthByRequestInfo("testUser", "192.168.1.1:8080", tt, true, "custom")
  51. if err != nil {
  52. t.Fatalf("Failed to create a new logger: %v", err)
  53. }
  54. // Setup a test HTTP request for table listing
  55. request, err := http.NewRequest("POST", "/table", nil)
  56. if err != nil {
  57. t.Fatal(err)
  58. }
  59. // Post parameter "record" is required
  60. request.PostForm = make(map[string][]string)
  61. request.PostForm.Add("record", time.Now().UTC().Format("Jan-2006"))
  62. // Setup a test server to capture the response
  63. rr := httptest.NewRecorder()
  64. // Test handling table listing
  65. logger.HandleTableListing(rr, request)
  66. // Check the response status code
  67. if status := rr.Code; status != http.StatusOK {
  68. t.Errorf("HandleTableListing returned wrong status code: got %v want %v", status, http.StatusOK)
  69. }
  70. // Check the response body
  71. expectedBody := `[{"Timestamp":` + fmt.Sprint(tt) + `,"TargetUsername":"testUser","LoginSucceed":true,"IpAddr":"192.168.1.1","AuthType":"custom","Port":8080}]`
  72. if rr.Body.String() != expectedBody {
  73. t.Errorf("HandleTableListing returned unexpected body: got %v want %v", rr.Body.String(), expectedBody)
  74. }
  75. }