api_key_test.go 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. package apiserver
  2. import (
  3. "net/http"
  4. "net/http/httptest"
  5. "strings"
  6. "testing"
  7. log "github.com/sirupsen/logrus"
  8. "github.com/stretchr/testify/assert"
  9. )
  10. func TestAPIKey(t *testing.T) {
  11. router, config, err := NewAPITest()
  12. if err != nil {
  13. log.Fatalf("unable to run local API: %s", err)
  14. }
  15. APIKey, err := CreateTestBouncer(config.API.Server.DbConfig)
  16. if err != nil {
  17. log.Fatal(err)
  18. }
  19. // Login with empty token
  20. w := httptest.NewRecorder()
  21. req, _ := http.NewRequest("GET", "/v1/decisions", strings.NewReader(""))
  22. req.Header.Add("User-Agent", UserAgent)
  23. router.ServeHTTP(w, req)
  24. assert.Equal(t, 403, w.Code)
  25. assert.Equal(t, "{\"message\":\"access forbidden\"}", w.Body.String())
  26. // Login with invalid token
  27. w = httptest.NewRecorder()
  28. req, _ = http.NewRequest("GET", "/v1/decisions", strings.NewReader(""))
  29. req.Header.Add("User-Agent", UserAgent)
  30. req.Header.Add("X-Api-Key", "a1b2c3d4e5f6")
  31. router.ServeHTTP(w, req)
  32. assert.Equal(t, 403, w.Code)
  33. assert.Equal(t, "{\"message\":\"access forbidden\"}", w.Body.String())
  34. // Login with valid token
  35. w = httptest.NewRecorder()
  36. req, _ = http.NewRequest("GET", "/v1/decisions", strings.NewReader(""))
  37. req.Header.Add("User-Agent", UserAgent)
  38. req.Header.Add("X-Api-Key", APIKey)
  39. router.ServeHTTP(w, req)
  40. assert.Equal(t, 200, w.Code)
  41. assert.Equal(t, "null", w.Body.String())
  42. }