@@ -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