Skip to content

Commit 3e5215a

Browse files
@W-20798759: [MSDK] Add ability to programmatically update servers list (Code Coverage Testing W.I.P.)
1 parent 0762987 commit 3e5215a

2 files changed

Lines changed: 47 additions & 9 deletions

File tree

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

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,7 @@ public LoginServer getSelectedLoginServer() {
130130
boolean isCustom = selectedServerPrefs.getBoolean(IS_CUSTOM, false);
131131

132132
// Selection has been saved before.
133+
// TODO: Collateral Coverage Need. ECJ20260217
133134
if (name != null && url != null) {
134135
LoginServer server = new LoginServer(name, url, isCustom);
135136

@@ -351,18 +352,23 @@ public void reorderCustomLoginServer(
351352

352353
// Determine the last non-custom login server index.
353354
final List<LoginServer> servers = getLoginServers();
354-
int lastNonCustomIndex = -1;
355+
int firstCustomLoginServerIndex = -1;
356+
// TODO: ✅Coverage Need. ECJ20260217
355357
for (int i = servers.size() - 1; i >= 0; i--) {
356-
if (!servers.get(i).isCustom) {
357-
lastNonCustomIndex = i;
358-
break;
358+
if (servers.get(i).isCustom) {
359+
firstCustomLoginServerIndex = i;
359360
}
360361
}
361362

362363
// Adjust the re-ordered custom login server index to be within bounds.
363-
if (updatedIndex <= lastNonCustomIndex) {
364-
updatedIndex = lastNonCustomIndex + 1;
365-
} else if (updatedIndex >= servers.size()) {
364+
// TODO: ✅Coverage Need. ECJ20260217
365+
if (updatedIndex <= firstCustomLoginServerIndex) {
366+
// TODO: ✅Coverage Need. ECJ20260217
367+
updatedIndex = firstCustomLoginServerIndex;
368+
}
369+
// TODO: ✅Coverage Need. ECJ20260217
370+
else if (updatedIndex >= servers.size()) {
371+
// TODO: ✅Coverage Need. ECJ20260217
366372
updatedIndex = servers.size() - 1;
367373
}
368374

@@ -407,6 +413,7 @@ public void replaceCustomLoginServer(
407413

408414
// Guard against an original login server that doesn't exist.
409415
if (originalIndex == -1) {
416+
// TODO:✅Coverage Need. ECJ20260217
410417
return;
411418
}
412419

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

Lines changed: 33 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,30 @@ 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 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 bounds of the login servers list.
461+
loginServerManager.reorderCustomLoginServer(loginServerManager.getLoginServers().indexOf(updatedCustomLoginServer), loginServerManager.getLoginServers().size() + 1);
462+
463+
// Verify the updated custom login server is now the last login server in the list.
464+
Assert.assertEquals(loginServerManager.getLoginServers().getLast(), updatedCustomLoginServer);
434465
}
435466

436467
private void assertProduction(LoginServer server) {

0 commit comments

Comments
 (0)