Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 10 additions & 1 deletion GoogleSignIn/Sources/GIDClaim.m
Original file line number Diff line number Diff line change
Expand Up @@ -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 ()
Expand Down Expand Up @@ -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 {
Expand Down
7 changes: 7 additions & 0 deletions GoogleSignIn/Sources/Public/GoogleSignIn/GIDClaim.h
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand All @@ -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
Expand Down
12 changes: 12 additions & 0 deletions GoogleSignIn/Tests/Unit/GIDClaimTest.m
Original file line number Diff line number Diff line change
Expand Up @@ -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];
Expand Down