Skip to content

Commit 3e8734b

Browse files
@W-20798759: [MSDK] Add ability to programmatically update servers list (Code Coverage 100%)
1 parent 0762987 commit 3e8734b

2 files changed

Lines changed: 41 additions & 8 deletions

File tree

libs/SalesforceSDK/src/com/salesforce/androidsdk/config/LoginServerManager.java

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -351,17 +351,16 @@ public void reorderCustomLoginServer(
351351

352352
// Determine the last non-custom login server index.
353353
final List<LoginServer> servers = getLoginServers();
354-
int lastNonCustomIndex = -1;
354+
int firstCustomLoginServerIndex = -1;
355355
for (int i = servers.size() - 1; i >= 0; i--) {
356-
if (!servers.get(i).isCustom) {
357-
lastNonCustomIndex = i;
358-
break;
356+
if (servers.get(i).isCustom) {
357+
firstCustomLoginServerIndex = i;
359358
}
360359
}
361360

362361
// Adjust the re-ordered custom login server index to be within bounds.
363-
if (updatedIndex <= lastNonCustomIndex) {
364-
updatedIndex = lastNonCustomIndex + 1;
362+
if (updatedIndex <= firstCustomLoginServerIndex) {
363+
updatedIndex = firstCustomLoginServerIndex;
365364
} else if (updatedIndex >= servers.size()) {
366365
updatedIndex = servers.size() - 1;
367366
}

libs/test/SalesforceSDKTest/src/com/salesforce/androidsdk/auth/LoginServerManagerTest.java

Lines changed: 36 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -387,6 +387,7 @@ public void testReplaceAndReOrderCustomLoginServer() {
387387
Assert.assertFalse(loginServerManager.getLoginServers().contains(originalCustomLoginServer));
388388
Assert.assertFalse(loginServerManager.getLoginServers().contains(otherCustomLoginServer));
389389

390+
390391
// Add the original and other custom login server.
391392
loginServerManager.addCustomLoginServer(originalName, originalUrl);
392393
loginServerManager.addCustomLoginServer(otherName, otherUrl);
@@ -395,25 +396,30 @@ public void testReplaceAndReOrderCustomLoginServer() {
395396
Assert.assertEquals(originalCustomLoginServer, loginServerManager.getLoginServers().get(loginServerManager.getLoginServers().size() - 2));
396397
Assert.assertEquals(otherCustomLoginServer, loginServerManager.getLoginServers().get(loginServerManager.getLoginServers().size() - 1));
397398

399+
398400
// Prepare for negative tests.
399401
final LoginServer production = new LoginServer("Production", "https://login.salesforce.com", false);
400-
final LoginServer productionMismatch = new LoginServer("Production", "https://login.salesforce.com", true);
402+
final LoginServer productionMismatch = new LoginServer("Production?", "https://login.salesforce.com", true);
401403
final LoginServer productionReplacement = new LoginServer("Production Replaced", "https://login.salesforce.com", false);
404+
final LoginServer productionReplacementMismatch = new LoginServer("Production Replaced?", "https://login.salesforce.com", true);
402405

403406
// Attempt the prohibited replacement of a non-custom login server where the original matches.
404407
loginServerManager.replaceCustomLoginServer(production, productionReplacement);
405408
Assert.assertTrue(loginServerManager.getLoginServers().contains(production));
406409
Assert.assertFalse(loginServerManager.getLoginServers().contains(productionReplacement));
407410

411+
408412
// Attempt the prohibited replacement of a non-custom login server where the original doesn't exit.
409-
loginServerManager.replaceCustomLoginServer(productionMismatch, productionReplacement);
413+
loginServerManager.replaceCustomLoginServer(productionMismatch, productionReplacementMismatch);
410414
Assert.assertTrue(loginServerManager.getLoginServers().contains(production));
411415
Assert.assertFalse(loginServerManager.getLoginServers().contains(productionReplacement));
412416

417+
413418
// Attempt the prohibited reordering of a non-custom login server.
414419
loginServerManager.reorderCustomLoginServer(0, 1);
415420
Assert.assertEquals(loginServerManager.getLoginServers().get(0), production);
416421

422+
417423
// Replace the original custom login server with a non-custom server.
418424
loginServerManager.replaceCustomLoginServer(originalCustomLoginServer, nonCustomLoginServer);
419425

@@ -422,6 +428,7 @@ public void testReplaceAndReOrderCustomLoginServer() {
422428
Assert.assertEquals(originalCustomLoginServer, loginServerManager.getLoginServers().get(loginServerManager.getLoginServers().size() - 2));
423429
Assert.assertEquals(otherCustomLoginServer, loginServerManager.getLoginServers().get(loginServerManager.getLoginServers().size() - 1));
424430

431+
425432
// Replace the original custom login server.
426433
loginServerManager.replaceCustomLoginServer(originalCustomLoginServer, updatedCustomLoginServer);
427434

@@ -431,6 +438,33 @@ public void testReplaceAndReOrderCustomLoginServer() {
431438
// Verify the updated and other custom login servers are present.
432439
Assert.assertEquals(updatedCustomLoginServer, loginServerManager.getLoginServers().get(loginServerManager.getLoginServers().size() - 2));
433440
Assert.assertEquals(otherCustomLoginServer, loginServerManager.getLoginServers().get(loginServerManager.getLoginServers().size() - 1));
441+
442+
// Attempt to move the updated custom login server above the non-custom login servers.
443+
loginServerManager.reorderCustomLoginServer(loginServerManager.getLoginServers().indexOf(updatedCustomLoginServer), 0);
444+
445+
// Verify the updated custom login server is actually immediately following the last non-custom login server.
446+
final List<LoginServer> loginServers = loginServerManager.getLoginServers();
447+
int lastNonCustomIndex = -1;
448+
for (int i = 0; i < loginServers.size(); i++) {
449+
final LoginServer loginServer = loginServers.get(i);
450+
if (!loginServer.isCustom) {
451+
lastNonCustomIndex = i;
452+
}
453+
}
454+
Assert.assertEquals(loginServers.get(lastNonCustomIndex + 1), updatedCustomLoginServer);
455+
456+
457+
// Attempt to move the updated custom login server one greater than the upper bounds of the login servers list.
458+
loginServerManager.reorderCustomLoginServer(loginServerManager.getLoginServers().indexOf(updatedCustomLoginServer), loginServerManager.getLoginServers().size());
459+
460+
// Attempt to move the updated custom login server more than one greater than the upper bounds of the login servers list.
461+
loginServerManager.reorderCustomLoginServer(loginServerManager.getLoginServers().indexOf(updatedCustomLoginServer), loginServerManager.getLoginServers().size() + 1);
462+
463+
// Attempt to move the updated custom login server more than one less than the upper bounds of the login servers list.
464+
loginServerManager.reorderCustomLoginServer(loginServerManager.getLoginServers().indexOf(updatedCustomLoginServer), loginServerManager.getLoginServers().size() - 1);
465+
466+
// Verify the updated custom login server is now the last login server in the list.
467+
Assert.assertEquals(loginServerManager.getLoginServers().getLast(), updatedCustomLoginServer);
434468
}
435469

436470
private void assertProduction(LoginServer server) {

0 commit comments

Comments
 (0)