oauth2/google/error_test.go

112 lines
2.2 KiB
Go

// 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)
}
}