Skip to content

Commit 2565980

Browse files
committed
New unit tests
1 parent 3fa16e5 commit 2565980

File tree

2 files changed

+164
-0
lines changed

2 files changed

+164
-0
lines changed

libs/SalesforceSDKCore/SalesforceSDKCoreTests/SFUserAccountManagerTests.m

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -664,4 +664,96 @@ - (void)testUserAccountEncoding {
664664
XCTAssertEqual(userIn.accessRestrictions, userOut.accessRestrictions, @"accessRestrictions mismatch");
665665
}
666666

667+
#pragma mark - authRequestWithLoginHost Tests
668+
669+
- (void)testAuthRequestWithLoginHostDefaults {
670+
// Setup default values
671+
NSString *expectedLoginHost = @"https://login.salesforce.com";
672+
NSString *expectedClientId = @"testClientId";
673+
NSString *expectedRedirectUri = @"testapp://oauth/done";
674+
NSSet *expectedScopes = [NSSet setWithObjects:@"api", @"web", @"refresh_token", nil];
675+
676+
self.uam.loginHost = expectedLoginHost;
677+
self.uam.oauthClientId = expectedClientId;
678+
self.uam.oauthCompletionUrl = expectedRedirectUri;
679+
self.uam.scopes = expectedScopes;
680+
681+
// Call with nil loginHost and nil appConfig (should use defaults)
682+
SFSDKAuthRequest *request = [self.uam authRequestWithLoginHost:nil appConfig:nil];
683+
684+
XCTAssertNotNil(request, @"Auth request should not be nil");
685+
XCTAssertEqualObjects(request.loginHost, expectedLoginHost, @"Login host should match default");
686+
XCTAssertEqualObjects(request.oauthClientId, expectedClientId, @"Client ID should match default");
687+
XCTAssertEqualObjects(request.oauthCompletionUrl, expectedRedirectUri, @"Redirect URI should match default");
688+
XCTAssertEqualObjects(request.scopes, expectedScopes, @"Scopes should match default");
689+
}
690+
691+
- (void)testAuthRequestWithLoginHostCustomHost {
692+
// Setup default values
693+
NSString *defaultLoginHost = @"https://login.salesforce.com";
694+
NSString *customLoginHost = @"https://test.salesforce.com";
695+
NSString *expectedClientId = @"testClientId";
696+
697+
self.uam.loginHost = defaultLoginHost;
698+
self.uam.oauthClientId = expectedClientId;
699+
700+
// Call with custom loginHost
701+
SFSDKAuthRequest *request = [self.uam authRequestWithLoginHost:customLoginHost appConfig:nil];
702+
703+
XCTAssertNotNil(request, @"Auth request should not be nil");
704+
XCTAssertEqualObjects(request.loginHost, customLoginHost, @"Login host should be custom value, not default");
705+
XCTAssertEqualObjects(request.oauthClientId, expectedClientId, @"Client ID should match default");
706+
}
707+
708+
- (void)testAuthRequestWithLoginHostWithAppConfig {
709+
// Setup default values
710+
NSString *defaultLoginHost = @"https://login.salesforce.com";
711+
NSString *defaultClientId = @"defaultClientId";
712+
NSString *defaultRedirectUri = @"defaultapp://oauth/done";
713+
NSSet *defaultScopes = [NSSet setWithObjects:@"api", @"web", nil];
714+
715+
self.uam.loginHost = defaultLoginHost;
716+
self.uam.oauthClientId = defaultClientId;
717+
self.uam.oauthCompletionUrl = defaultRedirectUri;
718+
self.uam.scopes = defaultScopes;
719+
720+
// Create app config with different values
721+
NSString *appConfigClientId = @"appConfigClientId";
722+
NSString *appConfigRedirectUri = @"appconfig://oauth/done";
723+
NSSet *appConfigScopes = [NSSet setWithObjects:@"id", @"api", @"refresh_token", nil];
724+
725+
NSDictionary *configDict = @{
726+
@"remoteAccessConsumerKey": appConfigClientId,
727+
@"oauthRedirectURI": appConfigRedirectUri,
728+
@"oauthScopes": [appConfigScopes allObjects],
729+
@"shouldAuthenticate": @YES
730+
};
731+
SFSDKAppConfig *appConfig = [[SFSDKAppConfig alloc] initWithDict:configDict];
732+
733+
// Call with appConfig
734+
SFSDKAuthRequest *request = [self.uam authRequestWithLoginHost:nil appConfig:appConfig];
735+
736+
XCTAssertNotNil(request, @"Auth request should not be nil");
737+
XCTAssertEqualObjects(request.loginHost, defaultLoginHost, @"Login host should match default");
738+
XCTAssertEqualObjects(request.oauthClientId, appConfigClientId, @"Client ID should come from appConfig");
739+
XCTAssertEqualObjects(request.oauthCompletionUrl, appConfigRedirectUri, @"Redirect URI should come from appConfig");
740+
XCTAssertEqualObjects(request.scopes, appConfigScopes, @"Scopes should come from appConfig");
741+
}
742+
743+
- (void)testDefaultAuthRequestUsesAuthRequestWithLoginHost {
744+
// Setup default values
745+
NSString *expectedLoginHost = @"https://login.salesforce.com";
746+
NSString *expectedClientId = @"testClientId";
747+
748+
self.uam.loginHost = expectedLoginHost;
749+
self.uam.oauthClientId = expectedClientId;
750+
751+
// defaultAuthRequest should call authRequestWithLoginHost:nil appConfig:nil
752+
SFSDKAuthRequest *request = [self.uam defaultAuthRequest];
753+
754+
XCTAssertNotNil(request, @"Default auth request should not be nil");
755+
XCTAssertEqualObjects(request.loginHost, expectedLoginHost, @"Login host should match default");
756+
XCTAssertEqualObjects(request.oauthClientId, expectedClientId, @"Client ID should match default");
757+
}
758+
667759
@end

libs/SalesforceSDKCore/SalesforceSDKCoreTests/SalesforceSDKManagerTests.m

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -485,4 +485,76 @@ - (void)compareAppNames:(NSString *)expectedAppName
485485
XCTAssertTrue([userAgent containsString:expectedAppName], @"App names should match");
486486
}
487487

488+
#pragma mark - Runtime Selected App Config Tests
489+
490+
- (void)testRuntimeSelectedAppConfigReturnsNilWhenBlockNotSet {
491+
// Clear any existing block
492+
[SalesforceSDKManager sharedManager].appConfigRuntimeSelectorBlock = nil;
493+
494+
// Call with nil loginHost
495+
SFSDKAppConfig *config = [[SalesforceSDKManager sharedManager] runtimeSelectedAppConfig:nil];
496+
XCTAssertNil(config, @"Should return nil when no selector block is set");
497+
498+
// Call with a loginHost
499+
config = [[SalesforceSDKManager sharedManager] runtimeSelectedAppConfig:@"https://test.salesforce.com"];
500+
XCTAssertNil(config, @"Should return nil when no selector block is set, regardless of loginHost");
501+
}
502+
503+
- (void)testRuntimeSelectedAppConfigWithDifferentLoginHosts {
504+
NSString *loginHost1 = @"https://login.salesforce.com";
505+
NSString *loginHost2 = @"https://test.salesforce.com";
506+
507+
NSDictionary *config1Dict = @{
508+
@"remoteAccessConsumerKey": @"clientId1",
509+
@"oauthRedirectURI": @"app1://oauth/done",
510+
@"shouldAuthenticate": @YES
511+
};
512+
SFSDKAppConfig *config1 = [[SFSDKAppConfig alloc] initWithDict:config1Dict];
513+
514+
NSDictionary *config2Dict = @{
515+
@"remoteAccessConsumerKey": @"clientId2",
516+
@"oauthRedirectURI": @"app2://oauth/done",
517+
@"shouldAuthenticate": @YES
518+
};
519+
SFSDKAppConfig *config2 = [[SFSDKAppConfig alloc] initWithDict:config2Dict];
520+
521+
// Set the selector block to return different configs based on loginHost
522+
[SalesforceSDKManager sharedManager].appConfigRuntimeSelectorBlock = ^SFSDKAppConfig *(NSString *loginHost) {
523+
if ([loginHost isEqualToString:loginHost1]) {
524+
return config1;
525+
} else if ([loginHost isEqualToString:loginHost2]) {
526+
return config2;
527+
}
528+
return nil;
529+
};
530+
531+
// Test first loginHost
532+
SFSDKAppConfig *result1 = [[SalesforceSDKManager sharedManager] runtimeSelectedAppConfig:loginHost1];
533+
XCTAssertNotNil(result1, @"Should return config for loginHost1");
534+
XCTAssertEqual(result1, config1, @"Should return config1 for loginHost1");
535+
XCTAssertEqualObjects(result1.remoteAccessConsumerKey, @"clientId1", @"Should have correct client ID for config1");
536+
537+
// Test second loginHost
538+
SFSDKAppConfig *result2 = [[SalesforceSDKManager sharedManager] runtimeSelectedAppConfig:loginHost2];
539+
XCTAssertNotNil(result2, @"Should return config for loginHost2");
540+
XCTAssertEqual(result2, config2, @"Should return config2 for loginHost2");
541+
XCTAssertEqualObjects(result2.remoteAccessConsumerKey, @"clientId2", @"Should have correct client ID for config2");
542+
}
543+
544+
- (void)testRuntimeSelectedAppConfigBlockReturnsNil {
545+
__block BOOL blockWasCalled = NO;
546+
547+
// Set the selector block to return nil
548+
[SalesforceSDKManager sharedManager].appConfigRuntimeSelectorBlock = ^SFSDKAppConfig *(NSString *loginHost) {
549+
blockWasCalled = YES;
550+
return nil;
551+
};
552+
553+
// Call the method
554+
SFSDKAppConfig *config = [[SalesforceSDKManager sharedManager] runtimeSelectedAppConfig:@"https://test.salesforce.com"];
555+
556+
XCTAssertTrue(blockWasCalled, @"Block should have been called");
557+
XCTAssertNil(config, @"Should return nil when block returns nil");
558+
}
559+
488560
@end

0 commit comments

Comments
 (0)