Monorepo for Tangled tangled.org
4

Configure Feed

Select the types of activity you want to include in your feed.

1package oauth 2 3import ( 4 "errors" 5 "fmt" 6 "testing" 7) 8 9func TestIsPermanentAuthErr(t *testing.T) { 10 cases := []struct { 11 name string 12 err error 13 want bool 14 }{ 15 {"nil", nil, false}, 16 {"empty", errors.New(""), false}, 17 {"random", errors.New("network unreachable"), false}, 18 {"rate limited", errors.New("token refresh failed (HTTP 429): rate_limited"), false}, 19 {"invalid grant direct", errors.New("token refresh failed (HTTP 400): invalid_grant"), true}, 20 {"invalid grant wrapped", fmt.Errorf("put record: %w", errors.New("failed to refresh OAuth tokens: token refresh failed: auth server request failed (HTTP 400): invalid_grant")), true}, 21 {"invalid client", errors.New("auth server request failed (HTTP 401): invalid_client"), true}, 22 {"unauthorized client", errors.New("token refresh failed (HTTP 400): unauthorized_client"), true}, 23 {"substring trap", errors.New("our invalid_grant_alternative ran out"), false}, 24 {"case-sensitive", errors.New("INVALID_GRANT"), false}, 25 } 26 for _, c := range cases { 27 t.Run(c.name, func(t *testing.T) { 28 got := IsPermanentAuthErr(c.err) 29 if got != c.want { 30 t.Fatalf("got %v want %v", got, c.want) 31 } 32 }) 33 } 34} 35 36func TestIsStaleAccessTokenErr(t *testing.T) { 37 cases := []struct { 38 name string 39 err error 40 want bool 41 }{ 42 {"nil", nil, false}, 43 {"random", errors.New("hello"), false}, 44 {"500", errors.New("API request failed (HTTP 500): InternalError"), false}, 45 {"401 auth required", errors.New("API request failed (HTTP 401): AuthenticationRequired: Invalid OAuth access token"), true}, 46 {"401 invalid token", errors.New("API request failed (HTTP 401): invalid_token"), true}, 47 {"401 wrapped", fmt.Errorf("put record: %w", errors.New("API request failed (HTTP 401): AuthenticationRequired")), true}, 48 {"403 forbidden", errors.New("API request failed (HTTP 403): Forbidden"), false}, 49 } 50 for _, c := range cases { 51 t.Run(c.name, func(t *testing.T) { 52 got := IsStaleAccessTokenErr(c.err) 53 if got != c.want { 54 t.Fatalf("got %v want %v", got, c.want) 55 } 56 }) 57 } 58}