|
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,92 @@ public void testAddingDuplicateServers() { |
347 | 347 | loginServerManager.getLoginServers().size()); |
348 | 348 | } |
349 | 349 |
|
| 350 | + /** |
| 351 | + * Test attempting to add a duplicate server default or custom 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 | + // Add the original and other custom login server. |
| 391 | + loginServerManager.addCustomLoginServer(originalName, originalUrl); |
| 392 | + loginServerManager.addCustomLoginServer(otherName, otherUrl); |
| 393 | + |
| 394 | + // Verify the original and other custom login servers were added. |
| 395 | + Assert.assertEquals(originalCustomLoginServer, loginServerManager.getLoginServers().get(loginServerManager.getLoginServers().size() - 2)); |
| 396 | + Assert.assertEquals(otherCustomLoginServer, loginServerManager.getLoginServers().get(loginServerManager.getLoginServers().size() - 1)); |
| 397 | + |
| 398 | + // Prepare for negative tests. |
| 399 | + final LoginServer production = new LoginServer("Production", "https://login.salesforce.com", false); |
| 400 | + final LoginServer productionMismatch = new LoginServer("Production", "https://login.salesforce.com", true); |
| 401 | + final LoginServer productionReplacement = new LoginServer("Production Replaced", "https://login.salesforce.com", false); |
| 402 | + |
| 403 | + // Attempt the prohibited replacement of a non-custom login server where the original matches. |
| 404 | + loginServerManager.replaceCustomLoginServer(production, productionReplacement); |
| 405 | + Assert.assertTrue(loginServerManager.getLoginServers().contains(production)); |
| 406 | + Assert.assertFalse(loginServerManager.getLoginServers().contains(productionReplacement)); |
| 407 | + |
| 408 | + // Attempt the prohibited replacement of a non-custom login server where the original doesn't exit. |
| 409 | + loginServerManager.replaceCustomLoginServer(productionMismatch, productionReplacement); |
| 410 | + Assert.assertTrue(loginServerManager.getLoginServers().contains(production)); |
| 411 | + Assert.assertFalse(loginServerManager.getLoginServers().contains(productionReplacement)); |
| 412 | + |
| 413 | + // Attempt the prohibited reordering of a non-custom login server. |
| 414 | + loginServerManager.reorderCustomLoginServer(0, 1); |
| 415 | + Assert.assertEquals(loginServerManager.getLoginServers().get(0), production); |
| 416 | + |
| 417 | + // Replace the original custom login server with a non-custom server. |
| 418 | + loginServerManager.replaceCustomLoginServer(originalCustomLoginServer, nonCustomLoginServer); |
| 419 | + |
| 420 | + // Verify the original and other custom login servers weren't changed. |
| 421 | + Assert.assertFalse(loginServerManager.getLoginServers().contains(nonCustomLoginServer)); |
| 422 | + Assert.assertEquals(originalCustomLoginServer, loginServerManager.getLoginServers().get(loginServerManager.getLoginServers().size() - 2)); |
| 423 | + Assert.assertEquals(otherCustomLoginServer, loginServerManager.getLoginServers().get(loginServerManager.getLoginServers().size() - 1)); |
| 424 | + |
| 425 | + // Replace the original custom login server. |
| 426 | + loginServerManager.replaceCustomLoginServer(originalCustomLoginServer, updatedCustomLoginServer); |
| 427 | + |
| 428 | + // Verify the original custom login server is not present. |
| 429 | + Assert.assertFalse(loginServerManager.getLoginServers().contains(originalCustomLoginServer)); |
| 430 | + |
| 431 | + // Verify the updated and other custom login servers are present. |
| 432 | + Assert.assertEquals(updatedCustomLoginServer, loginServerManager.getLoginServers().get(loginServerManager.getLoginServers().size() - 2)); |
| 433 | + Assert.assertEquals(otherCustomLoginServer, loginServerManager.getLoginServers().get(loginServerManager.getLoginServers().size() - 1)); |
| 434 | + } |
| 435 | + |
350 | 436 | private void assertProduction(LoginServer server) { |
351 | 437 | Assert.assertEquals("Expected production's name", "Production", server.name); |
352 | 438 | Assert.assertEquals("Expected production's url", PRODUCTION_URL, server.url); |
|
0 commit comments