Skip to content

Commit 13df980

Browse files
committed
init2
1 parent 396805a commit 13df980

1 file changed

Lines changed: 92 additions & 0 deletions

File tree

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
//
2+
// GIDTokenClaimsInternalOptionsTest.h
3+
// GoogleSignIn
4+
//
5+
// Created by Akshat Gandhi on 9/5/25.
6+
//
7+
8+
9+
#import <XCTest/XCTest.h>
10+
#import "GoogleSignIn/Sources/GIDTokenClaimsInternalOptions.h"
11+
#import "GoogleSignIn/Sources/Public/GoogleSignIn/GIDTokenClaim.h"
12+
13+
@import OCMock;
14+
15+
static NSString *const kEssentialAuthTimeExpectedJSON = @"{\"id_token\":{\"auth_time\":{\"essential\":true}}}";
16+
static NSString *const kNonEssentialAuthTimeExpectedJSON = @"{\"id_token\":{\"auth_time\":null}}";
17+
18+
19+
@interface GIDTokenClaimsInternalOptionsTest : XCTestCase
20+
@end
21+
22+
@implementation GIDTokenClaimsInternalOptionsTest
23+
24+
#pragma mark - Input Validation Tests
25+
26+
- (void)testValidatedJSONStringForClaims_WithNilInput_ShouldReturnNil {
27+
XCTAssertNil([GIDTokenClaimsInternalOptions validatedJSONStringForClaims:nil error:nil]);
28+
}
29+
30+
- (void)testValidatedJSONStringForClaims_WithEmptyInput_ShouldReturnNil {
31+
XCTAssertNil([GIDTokenClaimsInternalOptions validatedJSONStringForClaims:[NSSet set] error:nil]);
32+
}
33+
34+
#pragma mark - Correct Formatting Tests
35+
36+
- (void)testValidatedJSONStringForClaims_WithNonEssentialClaim_IsCorrectlyFormatted {
37+
NSSet *claims = [NSSet setWithObject:[GIDTokenClaim authTimeClaim]];
38+
39+
NSError *error = nil;
40+
NSString *result = [GIDTokenClaimsInternalOptions validatedJSONStringForClaims:claims error:&error];
41+
42+
XCTAssertNil(error);
43+
XCTAssertEqualObjects(result, kNonEssentialAuthTimeExpectedJSON);
44+
}
45+
46+
- (void)testValidatedJSONStringForClaims_WithEssentialClaim_IsCorrectlyFormatted {
47+
NSSet *claims = [NSSet setWithObject:[GIDTokenClaim essentialAuthTimeClaim]];
48+
49+
NSError *error = nil;
50+
NSString *result = [GIDTokenClaimsInternalOptions validatedJSONStringForClaims:claims error:&error];
51+
52+
XCTAssertNil(error);
53+
XCTAssertEqualObjects(result, kEssentialAuthTimeExpectedJSON);
54+
}
55+
56+
#pragma mark - Client Error Handling Tests
57+
58+
- (void)testValidatedJSONStringForClaims_WithConflictingClaims_ReturnsNilAndPopulatesError {
59+
NSSet *claims = [NSSet setWithObjects:[GIDTokenClaim authTimeClaim],
60+
[GIDTokenClaim essentialAuthTimeClaim],
61+
nil];
62+
NSError *error = nil;
63+
64+
NSString *result = [GIDTokenClaimsInternalOptions validatedJSONStringForClaims:claims error:&error];
65+
66+
XCTAssertNil(result, @"Method should return nil for conflicting claims.");
67+
XCTAssertNotNil(error, @"An error object should be populated.");
68+
XCTAssertEqualObjects(error.domain, kGIDSignInErrorDomain, @"Error domain should be correct.");
69+
XCTAssertEqual(error.code, kGIDSignInErrorCodeAmbiguousClaims, @"Error code should be for ambiguous claims.");
70+
}
71+
72+
- (void)testValidatedJSONStringForClaims_WhenSerializationFails_ReturnsNilAndError {
73+
NSSet *claims = [NSSet setWithObject:[GIDTokenClaim authTimeClaim]];
74+
NSError *fakeJSONError = [NSError errorWithDomain:@"com.fake.json" code:-999 userInfo:nil];
75+
id mockSerialization = OCMClassMock([NSJSONSerialization class]);
76+
77+
OCMStub([mockSerialization dataWithJSONObject:OCMOCK_ANY
78+
options:0
79+
error:[OCMArg setTo:fakeJSONError]]).andReturn(nil);
80+
81+
NSError *actualError = nil;
82+
NSString *result =
83+
[GIDTokenClaimsInternalOptions validatedJSONStringForClaims:claims error:&actualError];
84+
85+
XCTAssertNil(result, @"The result should be nil when JSON serialization fails.");
86+
XCTAssertEqualObjects(actualError, fakeJSONError,
87+
@"The error from serialization should be passed back to the caller.");
88+
89+
[mockSerialization stopMocking];
90+
}
91+
92+
@end

0 commit comments

Comments
 (0)