@@ -782,24 +782,26 @@ public void existence_of_a_file_cannot_be_checked_after_the_test_is_finished() {
782782 public static class server_shutdown {
783783 @ Test
784784 public void after_a_successful_test_SFTP_server_is_shutdown () {
785- FakeSftpServerRule sftpServer = new FakeSftpServerRule ();
785+ FakeSftpServerRule sftpServer = new FakeSftpServerRule ()
786+ .setPort (DUMMY_PORT );
786787 executeTestWithRule (
787788 () -> {},
788789 sftpServer
789790 );
790- assertConnectionToSftpServerNotPossible (sftpServer );
791+ assertConnectionToSftpServerNotPossible (DUMMY_PORT );
791792 }
792793
793794 @ Test
794795 public void after_an_erroneous_test_SFTP_server_is_shutdown () {
795- FakeSftpServerRule sftpServer = new FakeSftpServerRule ();
796+ FakeSftpServerRule sftpServer = new FakeSftpServerRule ()
797+ .setPort (DUMMY_PORT );
796798 executeTestThatThrowsExceptionWithRule (
797799 () -> {
798800 throw new RuntimeException ();
799801 },
800802 sftpServer
801803 );
802- assertConnectionToSftpServerNotPossible (sftpServer );
804+ assertConnectionToSftpServerNotPossible (DUMMY_PORT );
803805 }
804806
805807 @ Test
@@ -823,12 +825,6 @@ public void after_a_test_second_SFTP_server_is_shutdown_when_port_was_changed_du
823825 assertConnectionToSftpServerNotPossible (DUMMY_PORT );
824826 }
825827
826- private void assertConnectionToSftpServerNotPossible (
827- FakeSftpServerRule sftpServer
828- ) {
829- assertConnectionToSftpServerNotPossible (sftpServer .getPort ());
830- }
831-
832828 private void assertConnectionToSftpServerNotPossible (
833829 int port
834830 ) {
@@ -845,6 +841,26 @@ private void assertConnectionToSftpServerNotPossible(
845841 }
846842
847843 public static class port_selection {
844+ @ Test
845+ public void by_default_two_rules_run_servers_at_different_ports () {
846+ FakeSftpServerRule firstSftpServer = new FakeSftpServerRule ();
847+ AtomicInteger portCaptureForFirstServer = new AtomicInteger ();
848+ FakeSftpServerRule secondSftpServer = new FakeSftpServerRule ();
849+ AtomicInteger portCaptureForSecondServer = new AtomicInteger ();
850+
851+ executeTestWithRule (
852+ () -> portCaptureForFirstServer .set (firstSftpServer .getPort ()),
853+ firstSftpServer
854+ );
855+ executeTestWithRule (
856+ () -> portCaptureForSecondServer .set (secondSftpServer .getPort ()),
857+ secondSftpServer
858+ );
859+
860+ assertThat (portCaptureForFirstServer )
861+ .doesNotHaveValue (portCaptureForSecondServer .get ());
862+ }
863+
848864 @ Test
849865 public void the_port_can_be_changed_during_the_test () {
850866 FakeSftpServerRule sftpServer = new FakeSftpServerRule ();
@@ -906,37 +922,79 @@ public void it_is_not_possible_to_set_a_port_greater_than_65535() {
906922 }
907923 }
908924
925+ @ RunWith (Enclosed .class )
909926 public static class port_query {
910- @ Test
911- public void port_can_be_read_before_the_test () {
912- FakeSftpServerRule sftpServer = new FakeSftpServerRule ()
913- .setPort (DUMMY_PORT );
914- int port = sftpServer .getPort ();
915- assertThat (port ).isEqualTo (DUMMY_PORT );
916- }
917927
918- @ Test
919- public void port_can_be_read_during_the_test () {
920- AtomicInteger portCapture = new AtomicInteger ();
921- FakeSftpServerRule sftpServer = new FakeSftpServerRule ()
922- .setPort (DUMMY_PORT );
923- executeTestWithRule (
924- () -> portCapture .set (sftpServer .getPort ()),
925- sftpServer
926- );
927- assertThat (portCapture ).hasValue (DUMMY_PORT );
928+ public static class random_port {
929+ @ Test
930+ public void cannot_be_read_before_the_test () {
931+ FakeSftpServerRule sftpServer = new FakeSftpServerRule ();
932+ assertPortCannotBeRead (sftpServer );
933+ }
934+
935+ @ Test
936+ public void can_be_read_during_the_test () {
937+ AtomicInteger portCapture = new AtomicInteger ();
938+ FakeSftpServerRule sftpServer = new FakeSftpServerRule ();
939+ executeTestWithRule (
940+ () -> portCapture .set (sftpServer .getPort ()),
941+ sftpServer
942+ );
943+ assertThat (portCapture ).doesNotHaveValue (0 );
944+ }
945+
946+ @ Test
947+ public void cannot_be_read_after_the_test () {
948+ FakeSftpServerRule sftpServer = new FakeSftpServerRule ();
949+ executeTestWithRule (
950+ () -> {},
951+ sftpServer
952+ );
953+ assertPortCannotBeRead (sftpServer );
954+ }
955+
956+ private void assertPortCannotBeRead (FakeSftpServerRule sftpServer ) {
957+ assertThatThrownBy (sftpServer ::getPort )
958+ .isInstanceOf (IllegalStateException .class )
959+ .hasMessage (
960+ "Failed to call getPort() because test has not been"
961+ + " started or is already finished."
962+ );
963+ }
928964 }
929965
930- @ Test
931- public void port_can_be_read_after_the_test () {
932- FakeSftpServerRule sftpServer = new FakeSftpServerRule ()
933- .setPort (DUMMY_PORT );
934- executeTestWithRule (
935- () -> {},
936- sftpServer
937- );
938- int port = sftpServer .getPort ();
939- assertThat (port ).isEqualTo (DUMMY_PORT );
966+ public static class specified_port {
967+ @ Test
968+ public void can_be_read_before_the_test () {
969+ FakeSftpServerRule sftpServer = new FakeSftpServerRule ()
970+ .setPort (DUMMY_PORT );
971+ int port = sftpServer .getPort ();
972+ assertThat (port ).isEqualTo (DUMMY_PORT );
973+ }
974+
975+ @ Test
976+ public void can_be_read_during_the_test () {
977+ AtomicInteger portCapture = new AtomicInteger ();
978+ FakeSftpServerRule sftpServer = new FakeSftpServerRule ()
979+ .setPort (DUMMY_PORT );
980+ executeTestWithRule (
981+ () -> portCapture .set (sftpServer .getPort ()),
982+ sftpServer
983+ );
984+ assertThat (portCapture ).hasValue (DUMMY_PORT );
985+ }
986+
987+ @ Test
988+ public void can_be_read_after_the_test () {
989+ FakeSftpServerRule sftpServer = new FakeSftpServerRule ()
990+ .setPort (DUMMY_PORT );
991+ executeTestWithRule (
992+ () -> {},
993+ sftpServer
994+ );
995+ int port = sftpServer .getPort ();
996+ assertThat (port ).isEqualTo (DUMMY_PORT );
997+ }
940998 }
941999 }
9421000
0 commit comments