Ver Fonte

Use class `GIDToken` to handle tokens in `GIDVerifiedAccountDetailResult`. (#459)

Brianna Morales há 1 ano atrás
pai
commit
435b5172a7

+ 15 - 17
GoogleSignIn/Sources/GIDVerifyAccountDetail/Implementations/GIDVerifiedAccountDetailResult.m

@@ -18,6 +18,8 @@
 
 #import "GoogleSignIn/Sources/Public/GoogleSignIn/GIDVerifiableAccountDetail.h"
 
+#import "GoogleSignIn/Sources/GIDToken_Private.h"
+
 #ifdef SWIFT_PACKAGE
 @import AppAuth;
 #else
@@ -42,6 +44,11 @@ NS_ASSUME_NONNULL_BEGIN
   if (self) {
     _verifiedAccountDetails = accountDetails;
     _verifiedAuthState = authState;
+    _accessToken = 
+        [[GIDToken alloc] initWithTokenString:authState.lastTokenResponse.accessToken
+                               expirationDate:authState.lastTokenResponse.accessTokenExpirationDate];
+    _refreshToken = [[GIDToken alloc] initWithTokenString:authState.refreshToken
+                                           expirationDate:nil];
   }
   return self;
 }
@@ -69,6 +76,9 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)updateVerifiedDetailsWithTokenResponse:(nullable OIDTokenResponse *)tokenResponse {
   if (tokenResponse) {
+    _accessToken = [[GIDToken alloc] initWithTokenString:tokenResponse.accessToken
+                                          expirationDate:tokenResponse.accessTokenExpirationDate];
+
     NSArray<NSString *> *accountDetailsString =
         [OIDScopeUtilities scopesArrayWithString:tokenResponse.scope];
     NSMutableArray<GIDVerifiableAccountDetail *> *verifiedAccountDetails = [NSMutableArray array];
@@ -85,34 +95,22 @@ NS_ASSUME_NONNULL_BEGIN
   }
 }
 
-- (nullable NSString *)accessTokenString {
-  return self.verifiedAuthState.lastTokenResponse.accessToken;
-}
-
-- (nullable NSString *)refreshTokenString {
-  return self.verifiedAuthState.refreshToken;
-}
-
-- (nullable NSDate *)expirationDate {
-  return self.verifiedAuthState.lastTokenResponse.accessTokenExpirationDate;
-}
-
 - (BOOL)isEqual:(id)object {
   if (![object isKindOfClass:[GIDVerifiedAccountDetailResult class]]) {
     return NO;
   }
 
   GIDVerifiedAccountDetailResult *other = (GIDVerifiedAccountDetailResult *)object;
-  return [self.expirationDate isEqual:other.expirationDate] &&
-         [self.accessTokenString isEqualToString:other.accessTokenString] &&
-         [self.refreshTokenString isEqualToString:other.refreshTokenString] &&
+  return [self.accessToken.expirationDate isEqual:other.accessToken.expirationDate] &&
+         [self.accessToken.tokenString isEqualToString:other.accessToken.tokenString] &&
+         [self.refreshToken.tokenString isEqualToString:other.refreshToken.tokenString] &&
          [self.verifiedAccountDetails isEqual:other.verifiedAccountDetails] &&
          [self.verifiedAuthState isEqual:other.verifiedAuthState];
 }
 
 - (NSUInteger)hash {
-  return [self.expirationDate hash] ^ [self.accessTokenString hash] ^ 
-         [self.refreshTokenString hash] ^ [self.verifiedAccountDetails hash] ^
+  return [self.accessToken.expirationDate hash] ^ [self.accessToken.tokenString hash] ^
+         [self.refreshToken.tokenString hash] ^ [self.verifiedAccountDetails hash] ^
          [self.verifiedAuthState hash];
 }
 

+ 5 - 6
GoogleSignIn/Sources/Public/GoogleSignIn/GIDVerifiedAccountDetailResult.h

@@ -25,6 +25,7 @@
 NS_ASSUME_NONNULL_BEGIN
 
 @class GIDVerifiableAccountDetail;
+@class GIDToken;
 @class OIDAuthState;
 @class OIDTokenResponse;
 
@@ -32,12 +33,10 @@ NS_ASSUME_NONNULL_BEGIN
 /// This will pass back the necessary tokens to the requesting party.
 @interface GIDVerifiedAccountDetailResult : NSObject <GIDVerifiedAccountDetailHandling>
 
-/// The date when the access token expires.
-@property(nonatomic, readonly, nullable) NSDate *expirationDate;
-/// The access token string.
-@property(nonatomic, copy, readonly, nullable) NSString *accessTokenString;
-/// The refresh token string.
-@property(nonatomic, copy, readonly, nullable) NSString *refreshTokenString;
+/// The access token object holding the string and expiration.
+@property(nonatomic, copy, readonly, nullable) GIDToken *accessToken;
+/// The refresh token object holding the string and expiration.
+@property(nonatomic, copy, readonly, nullable) GIDToken *refreshToken;
 /// A list of verified account details.
 @property(nonatomic, copy, readonly) NSArray<GIDVerifiableAccountDetail *>
     *verifiedAccountDetails;

+ 4 - 3
GoogleSignIn/Tests/Unit/GIDVerifiedAccountDetailResultTest.m

@@ -21,6 +21,7 @@
 #import "GoogleSignIn/Sources/GIDVerifyAccountDetail/Fake/GIDVerifiedAccountDetailHandlingFake.h"
 
 #import "GoogleSignIn/Sources/GIDSignIn_Private.h"
+#import "GoogleSignIn/Sources/GIDToken_Private.h"
 
 #import "GoogleSignIn/Tests/Unit/OIDAuthState+Testing.h"
 #import "GoogleSignIn/Tests/Unit/OIDAuthorizationRequest+Testing.h"
@@ -46,9 +47,9 @@
 
   XCTAssertEqual(result.verifiedAuthState, authState);
   XCTAssertEqual(result.verifiedAccountDetails, verifiedList);
-  XCTAssertEqual(result.expirationDate, authState.lastTokenResponse.accessTokenExpirationDate);
-  XCTAssertEqual(result.accessTokenString, authState.lastTokenResponse.accessToken);
-  XCTAssertEqual(result.refreshTokenString, authState.lastTokenResponse.refreshToken);
+  XCTAssertEqual(result.accessToken.expirationDate, authState.lastTokenResponse.accessTokenExpirationDate);
+  XCTAssertEqual(result.accessToken.tokenString, authState.lastTokenResponse.accessToken);
+  XCTAssertEqual(result.refreshToken.tokenString, authState.lastTokenResponse.refreshToken);
 }
 
 - (void)testRefreshTokensWithCompletion_success {

+ 3 - 3
Samples/Swift/DaysUntilBirthday/Shared/Views/VerificationView.swift

@@ -29,15 +29,15 @@ struct VerificationView: View {
 
         HStack(alignment: .top) {
           Text("Access Token:")
-          Text(result.accessTokenString ?? "Not available")
+          Text(result.accessToken?.tokenString ?? "Not available")
         }
         HStack(alignment: .top) {
           Text("Refresh Token:")
-          Text(result.refreshTokenString ?? "Not available")
+          Text(result.refreshToken?.tokenString ?? "Not available")
         }
         HStack {
           Text("Expiration:")
-          if let expirationDate = result.expirationDate {
+          if let expirationDate = result.accessToken?.expirationDate {
             Text(formatDateWithDateFormatter(expirationDate))
           } else {
             Text("Not available")