| // Copyright 2022 The Go Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style | |
| // license that can be found in the LICENSE file. | |
| package google | |
| import ( | |
| "net/http" | |
| "testing" | |
| "golang.org/x/oauth2" | |
| ) | |
| func TestAuthenticationError_Temporary(t *testing.T) { | |
| tests := []struct { | |
| name string | |
| code int | |
| want bool | |
| }{ | |
| { | |
| name: "temporary with 500", | |
| code: 500, | |
| want: true, | |
| }, | |
| { | |
| name: "temporary with 503", | |
| code: 503, | |
| want: true, | |
| }, | |
| { | |
| name: "temporary with 408", | |
| code: 408, | |
| want: true, | |
| }, | |
| { | |
| name: "temporary with 429", | |
| code: 429, | |
| want: true, | |
| }, | |
| { | |
| name: "temporary with 418", | |
| code: 418, | |
| want: false, | |
| }, | |
| } | |
| for _, tt := range tests { | |
| t.Run(tt.name, func(t *testing.T) { | |
| ae := &AuthenticationError{ | |
| err: &oauth2.RetrieveError{ | |
| Response: &http.Response{ | |
| StatusCode: tt.code, | |
| }, | |
| }, | |
| } | |
| if got := ae.Temporary(); got != tt.want { | |
| t.Errorf("Temporary() = %v; want %v", got, tt.want) | |
| } | |
| }) | |
| } | |
| } | |
| func TestErrWrappingTokenSource_Token(t *testing.T) { | |
| tok := oauth2.Token{AccessToken: "MyAccessToken"} | |
| ts := errWrappingTokenSource{ | |
| src: oauth2.StaticTokenSource(&tok), | |
| } | |
| got, err := ts.Token() | |
| if *got != tok { | |
| t.Errorf("Token() = %v; want %v", got, tok) | |
| } | |
| if err != nil { | |
| t.Error(err) | |
| } | |
| } | |
| type errTokenSource struct { | |
| err error | |
| } | |
| func (s *errTokenSource) Token() (*oauth2.Token, error) { | |
| return nil, s.err | |
| } | |
| func TestErrWrappingTokenSource_TokenError(t *testing.T) { | |
| re := &oauth2.RetrieveError{ | |
| Response: &http.Response{ | |
| StatusCode: 500, | |
| }, | |
| } | |
| ts := errWrappingTokenSource{ | |
| src: &errTokenSource{ | |
| err: re, | |
| }, | |
| } | |
| _, err := ts.Token() | |
| if err == nil { | |
| t.Fatalf("errWrappingTokenSource.Token() err = nil, want *AuthenticationError") | |
| } | |
| ae, ok := err.(*AuthenticationError) | |
| if !ok { | |
| t.Fatalf("errWrappingTokenSource.Token() err = %T, want *AuthenticationError", err) | |
| } | |
| wrappedErr := ae.Unwrap() | |
| if wrappedErr == nil { | |
| t.Fatalf("AuthenticationError.Unwrap() err = nil, want *oauth2.RetrieveError") | |
| } | |
| _, ok = wrappedErr.(*oauth2.RetrieveError) | |
| if !ok { | |
| t.Errorf("AuthenticationError.Unwrap() err = %T, want *oauth2.RetrieveError", err) | |
| } | |
| } |