gitea源码

httpauth_test.go 1.4KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. // Copyright 2025 The Gitea Authors. All rights reserved.
  2. // SPDX-License-Identifier: MIT
  3. package httpauth
  4. import (
  5. "encoding/base64"
  6. "testing"
  7. "github.com/stretchr/testify/assert"
  8. )
  9. func TestParseAuthorizationHeader(t *testing.T) {
  10. type parsed = ParsedAuthorizationHeader
  11. type basic = BasicAuth
  12. type bearer = BearerToken
  13. cases := []struct {
  14. headerValue string
  15. expected parsed
  16. ok bool
  17. }{
  18. {"", parsed{}, false},
  19. {"?", parsed{}, false},
  20. {"foo", parsed{}, false},
  21. {"any value", parsed{}, false},
  22. {"Basic ?", parsed{}, false},
  23. {"Basic " + base64.StdEncoding.EncodeToString([]byte("foo")), parsed{}, false},
  24. {"Basic " + base64.StdEncoding.EncodeToString([]byte("foo:bar")), parsed{BasicAuth: &basic{"foo", "bar"}}, true},
  25. {"basic " + base64.StdEncoding.EncodeToString([]byte("foo:bar")), parsed{BasicAuth: &basic{"foo", "bar"}}, true},
  26. {"token value", parsed{BearerToken: &bearer{"value"}}, true},
  27. {"Token value", parsed{BearerToken: &bearer{"value"}}, true},
  28. {"bearer value", parsed{BearerToken: &bearer{"value"}}, true},
  29. {"Bearer value", parsed{BearerToken: &bearer{"value"}}, true},
  30. {"Bearer wrong value", parsed{}, false},
  31. }
  32. for _, c := range cases {
  33. ret, ok := ParseAuthorizationHeader(c.headerValue)
  34. assert.Equal(t, c.ok, ok, "header %q", c.headerValue)
  35. assert.Equal(t, c.expected, ret, "header %q", c.headerValue)
  36. }
  37. }