@@ -459,6 +459,25 @@ - (void)testRefreshTokensIfNeededWithCompletion_handleConcurrentRefresh {
459459 [self waitForExpectationsWithTimeout: 1 handler: nil ];
460460}
461461
462+ - (void )testRefreshTokensIfNeededWithCompletion_noRefresh_givenRefreshTokenExpired {
463+ NSTimeInterval expiresIn = -10 ;
464+ GIDGoogleUser *user = [self googleUserWithAccessTokenExpiresIn: expiresIn
465+ idTokenExpiresIn: expiresIn
466+ refreshTokenExpiresIn: expiresIn];
467+
468+ XCTestExpectation *expectation = [self expectationWithDescription: @" Callback is called" ];
469+
470+ [user refreshTokensIfNeededWithCompletion: ^(GIDGoogleUser * _Nullable user,
471+ NSError * _Nullable error) {
472+ [expectation fulfill ];
473+ XCTAssertNil (user);
474+ XCTAssertEqualObjects (error.domain , kGIDSignInErrorDomain );
475+ XCTAssertEqual (error.code , kGIDSignInErrorCodeRefreshTokenExpired );
476+ }];
477+
478+ [self waitForExpectationsWithTimeout: 1 handler: nil ];
479+ }
480+
462481# pragma mark - Test `addScopes:`
463482
464483- (void )testAddScopes_success {
@@ -560,6 +579,20 @@ - (GIDGoogleUser *)googleUserWithAccessTokenExpiresIn:(NSTimeInterval)accessToke
560579 return [[GIDGoogleUser alloc ] initWithAuthState: authState profileData: nil ];
561580}
562581
582+ - (GIDGoogleUser *)googleUserWithAccessTokenExpiresIn : (NSTimeInterval )accessTokenExpiresIn
583+ idTokenExpiresIn : (NSTimeInterval )idTokenExpiresIn
584+ refreshTokenExpiresIn : (NSTimeInterval )refreshTokenExpiresIn {
585+ NSString *idToken = [self idTokenWithExpiresIn: idTokenExpiresIn];
586+
587+ OIDAuthState *authState = [OIDAuthState testInstanceWithIDToken: idToken
588+ accessToken: kAccessToken
589+ accessTokenExpiresIn: accessTokenExpiresIn
590+ refreshToken: kRefreshToken
591+ refreshTokenExpiresIn: refreshTokenExpiresIn];
592+
593+ return [[GIDGoogleUser alloc ] initWithAuthState: authState profileData: nil ];
594+ }
595+
563596- (NSString *)idTokenWithExpiresIn : (NSTimeInterval )expiresIn {
564597 // The expireTime should be based on 1970.
565598 NSTimeInterval expireTime = [[NSDate date ] timeIntervalSince1970 ] + expiresIn;
0 commit comments