diff --git a/GoogleSignIn/Sources/GIDClaim.m b/GoogleSignIn/Sources/GIDClaim.m index 13792cae..2179ec91 100644 --- a/GoogleSignIn/Sources/GIDClaim.m +++ b/GoogleSignIn/Sources/GIDClaim.m @@ -16,7 +16,8 @@ #import "GoogleSignIn/Sources/Public/GoogleSignIn/GIDClaim.h" -NSString * const kAuthTimeClaimName = @"auth_time"; +NSString *const kAuthTimeClaimName = @"auth_time"; +NSString *const kAMRClaimName = @"amr"; // Private interface to declare the internal initializer @interface GIDClaim () @@ -48,6 +49,14 @@ + (instancetype)essentialAuthTimeClaim { return [[self alloc] initWithName:kAuthTimeClaimName essential:YES]; } ++ (instancetype)AMRClaim { + return [[self alloc] initWithName:kAMRClaimName essential:NO]; +} + ++ (instancetype)essentialAMRClaim { + return [[self alloc] initWithName:kAMRClaimName essential:YES]; +} + #pragma mark - NSObject - (BOOL)isEqual:(id)object { diff --git a/GoogleSignIn/Sources/Public/GoogleSignIn/GIDClaim.h b/GoogleSignIn/Sources/Public/GoogleSignIn/GIDClaim.h index bc266930..8ff96a95 100644 --- a/GoogleSignIn/Sources/Public/GoogleSignIn/GIDClaim.h +++ b/GoogleSignIn/Sources/Public/GoogleSignIn/GIDClaim.h @@ -19,6 +19,7 @@ NS_ASSUME_NONNULL_BEGIN extern NSString *const kAuthTimeClaimName; +extern NSString *const kAMRClaimName; /** * An object representing a single OIDC claim to be requested for an ID token. @@ -42,6 +43,12 @@ extern NSString *const kAuthTimeClaimName; /// Creates an *essential* "auth_time" claim object. + (instancetype)essentialAuthTimeClaim; +/// Creates a *non-essential* (voluntary) "amr" claim object. ++ (instancetype)AMRClaim; + +/// Creates an *essential* "amr" claim object. ++ (instancetype)essentialAMRClaim; + @end NS_ASSUME_NONNULL_END diff --git a/GoogleSignIn/Tests/Unit/GIDClaimTest.m b/GoogleSignIn/Tests/Unit/GIDClaimTest.m index e014d885..bb955e8c 100644 --- a/GoogleSignIn/Tests/Unit/GIDClaimTest.m +++ b/GoogleSignIn/Tests/Unit/GIDClaimTest.m @@ -33,6 +33,18 @@ - (void)testEssentialAuthTimeClaim_PropertiesAreCorrect { XCTAssertTrue(claim.isEssential); } +- (void)testAMRClaim_PropertiesAreCorrect { + GIDClaim *claim = [GIDClaim AMRClaim]; + XCTAssertEqualObjects(claim.name, kAMRClaimName); + XCTAssertFalse(claim.isEssential); +} + +- (void)testEssentialAMRClaim_PropertiesAreCorrect { + GIDClaim *claim = [GIDClaim essentialAMRClaim]; + XCTAssertEqualObjects(claim.name, kAMRClaimName); + XCTAssertTrue(claim.isEssential); +} + - (void)testEquality_WithEqualClaims { GIDClaim *claim1 = [GIDClaim authTimeClaim]; GIDClaim *claim2 = [GIDClaim authTimeClaim];