Skip to content

Commit 7755fb9

Browse files
committed
test(parser): add additional tests for bad token
1 parent 57e500d commit 7755fb9

File tree

4 files changed

+47
-2
lines changed

4 files changed

+47
-2
lines changed

internal/errors.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package internal
33
import "fmt"
44

55
var ErrInvalidIDPResponse = fmt.Errorf("invalid identity provider response")
6-
var ErrInvalidIDPResponseType = fmt.Errorf("invalid identity provider response type")
76
var ErrAuthResultNotFound = fmt.Errorf("auth result not found")
87
var ErrAccessTokenNotFound = fmt.Errorf("access token not found")
98
var ErrRawTokenNotFound = fmt.Errorf("raw token not found")

manager/manager_test.go

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,25 @@ func newTestJWTToken(expiresOn time.Time) string {
8484
return tokenStr
8585
}
8686

87+
func newTestJWTTokenWithoutOID(expiresOn time.Time) string {
88+
claims := struct {
89+
jwt.RegisteredClaims
90+
}{}
91+
92+
// Parse the token to extract claims, but note that signature verification
93+
// should be handled by the identity provider
94+
_, _, err := jwt.NewParser().ParseUnverified(testJWTToken, &claims)
95+
if err != nil {
96+
panic(err)
97+
}
98+
claims.ExpiresAt = jwt.NewNumericDate(expiresOn)
99+
tokenStr, err := jwt.NewWithClaims(jwt.SigningMethodHS256, claims).SignedString([]byte("qwertyuiopasdfghjklzxcvbnm123456"))
100+
if err != nil {
101+
panic(err)
102+
}
103+
return tokenStr
104+
}
105+
87106
type mockIdentityProviderResponseParser struct {
88107
// Mock implementation of the IdentityProviderResponseParser interface
89108
mock.Mock

manager/token_manager_test.go

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -439,6 +439,34 @@ func TestDefaultIdentityProviderResponseParser(t *testing.T) {
439439
assert.NotNil(t, token1)
440440
assert.InEpsilon(t, authResultVal.ExpiresOn.Unix(), token1.ExpirationOn().Unix(), 1)
441441
})
442+
t.Run("Default IdentityProviderResponseParser with type AuthResult and empty token", func(t *testing.T) {
443+
t.Parallel()
444+
authResultVal := &public.AuthResult{
445+
ExpiresOn: time.Now().Add(time.Hour).UTC(),
446+
AccessToken: "",
447+
}
448+
idpResponse := &authResult{
449+
ResultType: shared.ResponseTypeAuthResult,
450+
AuthResultVal: authResultVal,
451+
}
452+
token1, err := parser.ParseResponse(idpResponse)
453+
assert.Error(t, err)
454+
assert.Nil(t, token1)
455+
})
456+
t.Run("Default IdentityProviderResponseParser with type AuthResult and token without oid", func(t *testing.T) {
457+
t.Parallel()
458+
authResultVal := &public.AuthResult{
459+
ExpiresOn: time.Now().Add(time.Hour).UTC(),
460+
AccessToken: newTestJWTTokenWithoutOID(time.Now().Add(time.Hour).UTC()),
461+
}
462+
idpResponse := &authResult{
463+
ResultType: shared.ResponseTypeAuthResult,
464+
AuthResultVal: authResultVal,
465+
}
466+
token1, err := parser.ParseResponse(idpResponse)
467+
assert.Error(t, err)
468+
assert.Nil(t, token1)
469+
})
442470
t.Run("Default IdentityProviderResponseParser with type AccessToken", func(t *testing.T) {
443471
t.Parallel()
444472
accessToken := &azcore.AccessToken{

shared/identity_provider_response.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ const (
1919
)
2020

2121
var ErrInvalidIDPResponse = internal.ErrInvalidIDPResponse
22-
var ErrInvalidIDPResponseType = internal.ErrInvalidIDPResponseType
2322
var ErrAuthResultNotFound = internal.ErrAuthResultNotFound
2423
var ErrAccessTokenNotFound = internal.ErrAccessTokenNotFound
2524
var ErrRawTokenNotFound = internal.ErrRawTokenNotFound

0 commit comments

Comments
 (0)