package com.github.alexvictoor.rule; import org.junit.*; import java.io.IOException; import java.net.InetSocketAddress; import java.net.ServerSocket; import java.net.Socket; import static org.assertj.core.api.Assertions.assertThat; public class SocketsTest { private ServerSocket serverSocket; @Before public void setUp() throws Exception { serverSocket = new ServerSocket(); serverSocket.bind(new InetSocketAddress("localhost", 0), 1); } @After public void tearDown() throws Exception { serverSocket.close(); } @Test public void should_consider_port_available() throws IOException { // given int port = serverSocket.getLocalPort(); serverSocket.close(); // when boolean available = Sockets.isPortAvailable(port); // then assertThat(available).isTrue(); } @Test public void should_consider_port_not_available() throws IOException { // given int port = serverSocket.getLocalPort(); // when boolean available = Sockets.isPortAvailable(port); // then assertThat(available).isFalse(); } @Test @Ignore public void should_consider_port_unavailable_after_connection_timeout() throws IOException { // given int port = serverSocket.getLocalPort(); new Socket("localhost", port); // when boolean available = Sockets.isPortAvailable(port); // then assertThat(available).isFalse(); } }