@@ -318,6 +318,7 @@ func TestAuthenticateTokenNotFound(t *testing.T) {
318
318
t .Errorf ("Unexpected user: %v" , userInfo )
319
319
}
320
320
}
321
+
321
322
func TestAuthenticateTokenOtherGetError (t * testing.T ) {
322
323
fakeOAuthClient := oauthfake .NewSimpleClientset ()
323
324
fakeOAuthClient .PrependReactor ("get" , "oauthaccesstokens" , func (action clienttesting.Action ) (handled bool , ret runtime.Object , err error ) {
@@ -340,27 +341,67 @@ func TestAuthenticateTokenOtherGetError(t *testing.T) {
340
341
t .Errorf ("Unexpected user: %v" , userInfo )
341
342
}
342
343
}
344
+
343
345
func TestAuthenticateTokenExpired (t * testing.T ) {
346
+ fakeOAuthClient := oauthfake .NewSimpleClientset (
347
+ // expired token that had a lifetime of 10 minutes
348
+ & oapi.OAuthAccessToken {
349
+ ObjectMeta : metav1.ObjectMeta {Name : "token1" , CreationTimestamp : metav1.Time {Time : time .Now ().Add (- 1 * time .Hour )}},
350
+ ExpiresIn : 600 ,
351
+ UserName : "foo" ,
352
+ },
353
+ // non-expired token that has a lifetime of 10 minutes, but has a non-nil deletion timestamp
354
+ & oapi.OAuthAccessToken {
355
+ ObjectMeta : metav1.ObjectMeta {Name : "token2" , CreationTimestamp : metav1.Time {Time : time .Now ()}, DeletionTimestamp : & metav1.Time {}},
356
+ ExpiresIn : 600 ,
357
+ UserName : "foo" ,
358
+ },
359
+ )
360
+ userRegistry := usertest .NewUserRegistry ()
361
+ userRegistry .GetUsers ["foo" ] = & userapi.User {ObjectMeta : metav1.ObjectMeta {UID : "bar" }}
362
+
363
+ tokenAuthenticator := NewTokenAuthenticator (fakeOAuthClient .Oauth ().OAuthAccessTokens (), userRegistry , identitymapper.NoopGroupMapper {}, NewExpirationValidator ())
364
+
365
+ for _ , tokenName := range []string {"token1" , "token2" } {
366
+ userInfo , found , err := tokenAuthenticator .AuthenticateToken (tokenName )
367
+ if found {
368
+ t .Error ("Found token, but it should be missing!" )
369
+ }
370
+ if err != errExpired {
371
+ t .Errorf ("Unexpected error: %v" , err )
372
+ }
373
+ if userInfo != nil {
374
+ t .Errorf ("Unexpected user: %v" , userInfo )
375
+ }
376
+ }
377
+ }
378
+
379
+ func TestAuthenticateTokenInvalidUID (t * testing.T ) {
344
380
fakeOAuthClient := oauthfake .NewSimpleClientset (
345
381
& oapi.OAuthAccessToken {
346
- ObjectMeta : metav1.ObjectMeta {Name : "token" , CreationTimestamp : metav1.Time {Time : time .Now (). Add ( - 1 * time . Hour ) }},
382
+ ObjectMeta : metav1.ObjectMeta {Name : "token" , CreationTimestamp : metav1.Time {Time : time .Now ()}},
347
383
ExpiresIn : 600 , // 10 minutes
384
+ UserName : "foo" ,
385
+ UserUID : string ("bar1" ),
348
386
},
349
387
)
350
388
userRegistry := usertest .NewUserRegistry ()
351
- tokenAuthenticator := NewTokenAuthenticator (fakeOAuthClient .Oauth ().OAuthAccessTokens (), userRegistry , identitymapper.NoopGroupMapper {})
389
+ userRegistry .GetUsers ["foo" ] = & userapi.User {ObjectMeta : metav1.ObjectMeta {UID : "bar2" }}
390
+
391
+ tokenAuthenticator := NewTokenAuthenticator (fakeOAuthClient .Oauth ().OAuthAccessTokens (), userRegistry , identitymapper.NoopGroupMapper {}, NewUIDValidator ())
352
392
353
393
userInfo , found , err := tokenAuthenticator .AuthenticateToken ("token" )
354
394
if found {
355
395
t .Error ("Found token, but it should be missing!" )
356
396
}
357
- if err != ErrExpired {
397
+ if err . Error () != "user.UID (bar2) does not match token.userUID (bar1)" {
358
398
t .Errorf ("Unexpected error: %v" , err )
359
399
}
360
400
if userInfo != nil {
361
401
t .Errorf ("Unexpected user: %v" , userInfo )
362
402
}
363
403
}
404
+
364
405
func TestAuthenticateTokenValidated (t * testing.T ) {
365
406
fakeOAuthClient := oauthfake .NewSimpleClientset (
366
407
& oapi.OAuthAccessToken {
@@ -373,7 +414,7 @@ func TestAuthenticateTokenValidated(t *testing.T) {
373
414
userRegistry := usertest .NewUserRegistry ()
374
415
userRegistry .GetUsers ["foo" ] = & userapi.User {ObjectMeta : metav1.ObjectMeta {UID : "bar" }}
375
416
376
- tokenAuthenticator := NewTokenAuthenticator (fakeOAuthClient .Oauth ().OAuthAccessTokens (), userRegistry , identitymapper.NoopGroupMapper {})
417
+ tokenAuthenticator := NewTokenAuthenticator (fakeOAuthClient .Oauth ().OAuthAccessTokens (), userRegistry , identitymapper.NoopGroupMapper {}, NewExpirationValidator (), NewUIDValidator () )
377
418
378
419
userInfo , found , err := tokenAuthenticator .AuthenticateToken ("token" )
379
420
if ! found {
0 commit comments