basic_auth_test.go 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. package api
  2. import (
  3. "encoding/base64"
  4. "fmt"
  5. "net/http"
  6. "testing"
  7. . "github.com/smartystreets/goconvey/convey"
  8. "gopkg.in/macaron.v1"
  9. )
  10. func TestBasicAuthenticatedRequest(t *testing.T) {
  11. expectedUser := "prometheus"
  12. expectedPass := "password"
  13. Convey("Given a valid set of basic auth credentials", t, func() {
  14. httpReq, err := http.NewRequest("GET", "http://localhost:3000/metrics", nil)
  15. So(err, ShouldBeNil)
  16. req := macaron.Request{
  17. Request: httpReq,
  18. }
  19. encodedCreds := encodeBasicAuthCredentials(expectedUser, expectedPass)
  20. req.Header.Add("Authorization", fmt.Sprintf("Basic %s", encodedCreds))
  21. authenticated := BasicAuthenticatedRequest(req, expectedUser, expectedPass)
  22. So(authenticated, ShouldBeTrue)
  23. })
  24. Convey("Given an invalid set of basic auth credentials", t, func() {
  25. httpReq, err := http.NewRequest("GET", "http://localhost:3000/metrics", nil)
  26. So(err, ShouldBeNil)
  27. req := macaron.Request{
  28. Request: httpReq,
  29. }
  30. encodedCreds := encodeBasicAuthCredentials("invaliduser", "invalidpass")
  31. req.Header.Add("Authorization", fmt.Sprintf("Basic %s", encodedCreds))
  32. authenticated := BasicAuthenticatedRequest(req, expectedUser, expectedPass)
  33. So(authenticated, ShouldBeFalse)
  34. })
  35. }
  36. func encodeBasicAuthCredentials(user, pass string) string {
  37. creds := fmt.Sprintf("%s:%s", user, pass)
  38. return base64.StdEncoding.EncodeToString([]byte(creds))
  39. }