transport_test.go 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. package oauth2
  2. import (
  3. "net/http"
  4. "net/http/httptest"
  5. "testing"
  6. "time"
  7. )
  8. type tokenSource struct{ token *Token }
  9. func (t *tokenSource) Token() (*Token, error) {
  10. return t.token, nil
  11. }
  12. func TestTransportTokenSource(t *testing.T) {
  13. ts := &tokenSource{
  14. token: &Token{
  15. AccessToken: "abc",
  16. },
  17. }
  18. tr := &Transport{
  19. Source: ts,
  20. }
  21. server := newMockServer(func(w http.ResponseWriter, r *http.Request) {
  22. if r.Header.Get("Authorization") != "Bearer abc" {
  23. t.Errorf("Transport doesn't set the Authorization header from the fetched token")
  24. }
  25. })
  26. defer server.Close()
  27. client := http.Client{Transport: tr}
  28. client.Get(server.URL)
  29. }
  30. func TestTokenValidNoAccessToken(t *testing.T) {
  31. token := &Token{}
  32. if token.Valid() {
  33. t.Errorf("Token should not be valid with no access token")
  34. }
  35. }
  36. func TestExpiredWithExpiry(t *testing.T) {
  37. token := &Token{
  38. Expiry: time.Now().Add(-5 * time.Hour),
  39. }
  40. if token.Valid() {
  41. t.Errorf("Token should not be valid if it expired in the past")
  42. }
  43. }
  44. func newMockServer(handler func(w http.ResponseWriter, r *http.Request)) *httptest.Server {
  45. return httptest.NewServer(http.HandlerFunc(handler))
  46. }