|
31 | 31 | import android.content.Context; |
32 | 32 |
|
33 | 33 | import androidx.arch.core.executor.testing.InstantTaskExecutorRule; |
34 | | -import androidx.test.platform.app.InstrumentationRegistry; |
35 | | -import androidx.test.filters.SmallTest; |
36 | 34 | import androidx.test.ext.junit.runners.AndroidJUnit4; |
| 35 | +import androidx.test.filters.SmallTest; |
| 36 | +import androidx.test.platform.app.InstrumentationRegistry; |
37 | 37 |
|
38 | 38 | import com.salesforce.androidsdk.TestForceApp; |
39 | 39 | import com.salesforce.androidsdk.app.SalesforceSDKManager; |
@@ -347,6 +347,126 @@ public void testAddingDuplicateServers() { |
347 | 347 | loginServerManager.getLoginServers().size()); |
348 | 348 | } |
349 | 349 |
|
| 350 | + /** |
| 351 | + * Test both replace and re-order custom login server. |
| 352 | + */ |
| 353 | + @Test |
| 354 | + public void testReplaceAndReOrderCustomLoginServer() { |
| 355 | + |
| 356 | + // Test data. |
| 357 | + final String originalName = "ORIGINAL_CUSTOM_LOGIN_SERVER_FOR_REPLACEMENT_TEST"; |
| 358 | + final String originalUrl = "https://original.example.com"; |
| 359 | + final LoginServer originalCustomLoginServer = new LoginServer( |
| 360 | + originalName, |
| 361 | + originalUrl, |
| 362 | + true |
| 363 | + ); |
| 364 | + final String otherName = "OTHER_CUSTOM_LOGIN_SERVER_FOR_REPLACEMENT_TEST"; |
| 365 | + final String otherUrl = "https://other.example.com"; |
| 366 | + final LoginServer otherCustomLoginServer = new LoginServer( |
| 367 | + otherName, |
| 368 | + otherUrl, |
| 369 | + true |
| 370 | + ); |
| 371 | + final String updatedName = "UPDATED_CUSTOM_LOGIN_SERVER_FOR_REPLACEMENT_TEST"; |
| 372 | + final String updatedUrl = "https://updated.example.com"; |
| 373 | + final LoginServer updatedCustomLoginServer = new LoginServer( |
| 374 | + updatedName, |
| 375 | + updatedUrl, |
| 376 | + true |
| 377 | + ); |
| 378 | + final String nonCustomName = "NON_CUSTOM_LOGIN_SERVER_FOR_REPLACEMENT_TEST"; |
| 379 | + final String nonCustomUrl = "https://non.custom.example.com"; |
| 380 | + final LoginServer nonCustomLoginServer = new LoginServer( |
| 381 | + nonCustomName, |
| 382 | + nonCustomUrl, |
| 383 | + false |
| 384 | + ); |
| 385 | + |
| 386 | + // Verify the original and other custom login servers are not present. |
| 387 | + Assert.assertFalse(loginServerManager.getLoginServers().contains(originalCustomLoginServer)); |
| 388 | + Assert.assertFalse(loginServerManager.getLoginServers().contains(otherCustomLoginServer)); |
| 389 | + |
| 390 | + |
| 391 | + // Add the original and other custom login server. |
| 392 | + loginServerManager.addCustomLoginServer(originalName, originalUrl); |
| 393 | + loginServerManager.addCustomLoginServer(otherName, otherUrl); |
| 394 | + |
| 395 | + // Verify the original and other custom login servers were added. |
| 396 | + Assert.assertEquals(originalCustomLoginServer, loginServerManager.getLoginServers().get(loginServerManager.getLoginServers().size() - 2)); |
| 397 | + Assert.assertEquals(otherCustomLoginServer, loginServerManager.getLoginServers().get(loginServerManager.getLoginServers().size() - 1)); |
| 398 | + |
| 399 | + |
| 400 | + // Prepare for negative tests. |
| 401 | + final LoginServer production = new LoginServer("Production", "https://login.salesforce.com", false); |
| 402 | + final LoginServer productionMismatch = new LoginServer("Production?", "https://login.salesforce.com", true); |
| 403 | + 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); |
| 405 | + |
| 406 | + // Attempt the prohibited replacement of a non-custom login server where the original matches. |
| 407 | + loginServerManager.replaceCustomLoginServer(production, productionReplacement); |
| 408 | + Assert.assertTrue(loginServerManager.getLoginServers().contains(production)); |
| 409 | + Assert.assertFalse(loginServerManager.getLoginServers().contains(productionReplacement)); |
| 410 | + |
| 411 | + |
| 412 | + // Attempt the prohibited replacement of a non-custom login server where the original doesn't exit. |
| 413 | + loginServerManager.replaceCustomLoginServer(productionMismatch, productionReplacementMismatch); |
| 414 | + Assert.assertTrue(loginServerManager.getLoginServers().contains(production)); |
| 415 | + Assert.assertFalse(loginServerManager.getLoginServers().contains(productionReplacement)); |
| 416 | + |
| 417 | + |
| 418 | + // Attempt the prohibited reordering of a non-custom login server. |
| 419 | + loginServerManager.reorderCustomLoginServer(0, 1); |
| 420 | + Assert.assertEquals(loginServerManager.getLoginServers().get(0), production); |
| 421 | + |
| 422 | + |
| 423 | + // Replace the original custom login server with a non-custom server. |
| 424 | + loginServerManager.replaceCustomLoginServer(originalCustomLoginServer, nonCustomLoginServer); |
| 425 | + |
| 426 | + // Verify the original and other custom login servers weren't changed. |
| 427 | + Assert.assertFalse(loginServerManager.getLoginServers().contains(nonCustomLoginServer)); |
| 428 | + Assert.assertEquals(originalCustomLoginServer, loginServerManager.getLoginServers().get(loginServerManager.getLoginServers().size() - 2)); |
| 429 | + Assert.assertEquals(otherCustomLoginServer, loginServerManager.getLoginServers().get(loginServerManager.getLoginServers().size() - 1)); |
| 430 | + |
| 431 | + |
| 432 | + // Replace the original custom login server. |
| 433 | + loginServerManager.replaceCustomLoginServer(originalCustomLoginServer, updatedCustomLoginServer); |
| 434 | + |
| 435 | + // Verify the original custom login server is not present. |
| 436 | + Assert.assertFalse(loginServerManager.getLoginServers().contains(originalCustomLoginServer)); |
| 437 | + |
| 438 | + // Verify the updated and other custom login servers are present. |
| 439 | + Assert.assertEquals(updatedCustomLoginServer, loginServerManager.getLoginServers().get(loginServerManager.getLoginServers().size() - 2)); |
| 440 | + 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); |
| 468 | + } |
| 469 | + |
350 | 470 | private void assertProduction(LoginServer server) { |
351 | 471 | Assert.assertEquals("Expected production's name", "Production", server.name); |
352 | 472 | Assert.assertEquals("Expected production's url", PRODUCTION_URL, server.url); |
|
0 commit comments