diff --git a/GoogleSignIn/Tests/Unit/GIDGoogleUserTest.m b/GoogleSignIn/Tests/Unit/GIDGoogleUserTest.m index 1410ce74..1199fc48 100644 --- a/GoogleSignIn/Tests/Unit/GIDGoogleUserTest.m +++ b/GoogleSignIn/Tests/Unit/GIDGoogleUserTest.m @@ -39,9 +39,8 @@ static NSString *const kNewRefreshToken = @"new_refresh_token"; static NSTimeInterval const kTimeAccuracy = 10; -// The difference between times. -// It should be larger than kTimeAccuracy which is used in the method `XCTAssertEqualWithAccuracy`. -static NSTimeInterval const kTimeIncrement = 100; +static NSTimeInterval const kIDTokenExpiresIn = 100; +static NSTimeInterval const kNewIDTokenExpiresIn = 200; @interface GIDGoogleUserTest : XCTestCase @end @@ -101,43 +100,40 @@ - (void)testLegacyCoding { #endif // TARGET_OS_IOS || TARGET_OS_MACCATALYST - (void)testUpdateAuthState { - NSTimeInterval accessTokenExpireTime = [[NSDate date] timeIntervalSince1970]; - NSTimeInterval idTokenExpireTime = accessTokenExpireTime + kTimeIncrement; + GIDGoogleUser *user = [self googleUserWithAccessTokenExpiresIn:kAccessTokenExpiresIn + idTokenExpiresIn:kIDTokenExpiresIn]; - GIDGoogleUser *user = [self googleUserWithAccessTokenExpireTime:accessTokenExpireTime - idTokenExpireTime:idTokenExpireTime]; - - NSTimeInterval updatedAccessTokenExpireTime = idTokenExpireTime + kTimeIncrement; - NSTimeInterval updatedIDTokenExpireTime = updatedAccessTokenExpireTime + kTimeIncrement; - NSString *updatedIDToken = [self idTokenWithExpireTime:updatedIDTokenExpireTime]; + NSString *updatedIDToken = [self idTokenWithExpiresIn:kNewIDTokenExpiresIn]; OIDAuthState *updatedAuthState = [OIDAuthState testInstanceWithIDToken:updatedIDToken accessToken:kNewAccessToken - accessTokenExpireTime:updatedAccessTokenExpireTime + accessTokenExpiresIn:kAccessTokenExpiresIn refreshToken:kNewRefreshToken]; GIDProfileData *updatedProfileData = [GIDProfileData testInstance]; [user updateAuthState:updatedAuthState profileData:updatedProfileData]; XCTAssertEqualObjects(user.accessToken.tokenString, kNewAccessToken); + NSDate *expectedAccessTokenExpirationDate = [[NSDate date] dateByAddingTimeInterval:kAccessTokenExpiresIn]; XCTAssertEqualWithAccuracy([user.accessToken.expirationDate timeIntervalSince1970], - updatedAccessTokenExpireTime, kTimeAccuracy); + [expectedAccessTokenExpirationDate timeIntervalSince1970], kTimeAccuracy); + XCTAssertEqualObjects(user.idToken.tokenString, updatedIDToken); + NSDate *expectedIDTokenExpirationDate = [[NSDate date] dateByAddingTimeInterval:kNewIDTokenExpiresIn]; XCTAssertEqualWithAccuracy([user.idToken.expirationDate timeIntervalSince1970], - updatedIDTokenExpireTime, kTimeAccuracy); + [expectedIDTokenExpirationDate timeIntervalSince1970], kTimeAccuracy); + XCTAssertEqualObjects(user.refreshToken.tokenString, kNewRefreshToken); + XCTAssertEqual(user.profile, updatedProfileData); } // When updating with a new OIDAuthState in which token information is not changed, the token objects // should remain the same. - (void)testUpdateAuthState_tokensAreNotChanged { - NSTimeInterval accessTokenExpireTime = [[NSDate date] timeIntervalSince1970]; - NSTimeInterval idTokenExpireTime = [[NSDate date] timeIntervalSince1970]; - - NSString *idToken = [self idTokenWithExpireTime:idTokenExpireTime]; + NSString *idToken = [self idTokenWithExpiresIn:kIDTokenExpiresIn]; OIDAuthState *authState = [OIDAuthState testInstanceWithIDToken:idToken accessToken:kAccessToken - accessTokenExpireTime:accessTokenExpireTime + accessTokenExpiresIn:kAccessTokenExpiresIn refreshToken:kRefreshToken]; GIDGoogleUser *user = [[GIDGoogleUser alloc] initWithAuthState:authState profileData:nil]; @@ -155,19 +151,20 @@ - (void)testUpdateAuthState_tokensAreNotChanged { #pragma mark - Helpers -- (GIDGoogleUser *)googleUserWithAccessTokenExpireTime:(NSTimeInterval)accessTokenExpireTime - idTokenExpireTime:(NSTimeInterval)idTokenExpireTime { - NSString *idToken = [self idTokenWithExpireTime:idTokenExpireTime]; +- (GIDGoogleUser *)googleUserWithAccessTokenExpiresIn:(NSTimeInterval)accessTokenExpiresIn + idTokenExpiresIn:(NSTimeInterval)idTokenExpiresIn { + NSString *idToken = [self idTokenWithExpiresIn:idTokenExpiresIn]; OIDAuthState *authState = [OIDAuthState testInstanceWithIDToken:idToken accessToken:kAccessToken - accessTokenExpireTime:accessTokenExpireTime + accessTokenExpiresIn:accessTokenExpiresIn refreshToken:kRefreshToken]; return [[GIDGoogleUser alloc] initWithAuthState:authState profileData:nil]; } -// The expireTime should be based on 1970. -- (NSString *)idTokenWithExpireTime:(NSTimeInterval)expireTime { +- (NSString *)idTokenWithExpiresIn:(NSTimeInterval)expiresIn { + // The expireTime should be based on 1970. + NSTimeInterval expireTime = [[NSDate date] timeIntervalSince1970] + expiresIn; return [OIDTokenResponse idTokenWithSub:kUserID exp:@(expireTime)]; } diff --git a/GoogleSignIn/Tests/Unit/OIDAuthState+Testing.h b/GoogleSignIn/Tests/Unit/OIDAuthState+Testing.h index f660e34e..15feb758 100644 --- a/GoogleSignIn/Tests/Unit/OIDAuthState+Testing.h +++ b/GoogleSignIn/Tests/Unit/OIDAuthState+Testing.h @@ -28,9 +28,15 @@ + (instancetype)testInstanceWithTokenResponse:(OIDTokenResponse *)tokenResponse; +/** + * @idToken The ID token. + * @accessToken The access token string. + * @accessTokenExipresIn The life time of the access token starting from the moment when `OIDTokenResponse` is created. + * @refreshToken The refresh token string. + */ + (instancetype)testInstanceWithIDToken:(NSString *)idToken accessToken:(NSString *)accessToken - accessTokenExpireTime:(NSTimeInterval)accessTokenExpireTime + accessTokenExpiresIn:(NSTimeInterval)accessTokenExpiresIn refreshToken:(NSString *)refreshToken; @end diff --git a/GoogleSignIn/Tests/Unit/OIDAuthState+Testing.m b/GoogleSignIn/Tests/Unit/OIDAuthState+Testing.m index b9082227..c6c694a4 100644 --- a/GoogleSignIn/Tests/Unit/OIDAuthState+Testing.m +++ b/GoogleSignIn/Tests/Unit/OIDAuthState+Testing.m @@ -35,14 +35,12 @@ + (instancetype)testInstanceWithTokenResponse:(OIDTokenResponse *)tokenResponse + (instancetype)testInstanceWithIDToken:(NSString *)idToken accessToken:(NSString *)accessToken - accessTokenExpireTime:(NSTimeInterval)accessTokenExpireTime + accessTokenExpiresIn:(NSTimeInterval)accessTokenExpiresIn refreshToken:(NSString *)refreshToken { - NSNumber *accessTokenExpiresIn = - @(accessTokenExpireTime - [[NSDate date] timeIntervalSince1970]); OIDTokenResponse *newResponse = [OIDTokenResponse testInstanceWithIDToken:idToken accessToken:accessToken - expiresIn:accessTokenExpiresIn + expiresIn:@(accessTokenExpiresIn) refreshToken:refreshToken tokenRequest:nil]; return [self testInstanceWithTokenResponse:newResponse];