Fixes #1275 - Get rid of Mockito.

Converted the 2 tests that were using Mockito and removed from the POMs.
This commit is contained in:
Simone Bordet 2017-01-18 17:09:57 +01:00
parent 732277c002
commit f97396b131
5 changed files with 373 additions and 641 deletions

View File

@ -22,11 +22,6 @@
<artifactId>jetty-test-helper</artifactId> <artifactId>jetty-test-helper</artifactId>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<scope>test</scope>
</dependency>
</dependencies> </dependencies>
<build> <build>
<plugins> <plugins>

View File

@ -78,10 +78,5 @@
<classifier>tests</classifier> <classifier>tests</classifier>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<scope>test</scope>
</dependency>
</dependencies> </dependencies>
</project> </project>

View File

@ -18,110 +18,119 @@
package org.eclipse.jetty.server.handler; package org.eclipse.jetty.server.handler;
import static org.junit.Assert.assertEquals; import java.io.IOException;
import static org.junit.Assert.assertTrue; import java.io.OutputStream;
import static org.mockito.Mockito.when;
import java.net.Inet4Address;
import java.net.InetSocketAddress; import java.net.InetSocketAddress;
import java.net.Socket;
import java.nio.charset.StandardCharsets;
import java.util.concurrent.CountDownLatch; import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import org.eclipse.jetty.http.HttpStatus;
import org.eclipse.jetty.http.HttpTester;
import org.eclipse.jetty.server.Handler;
import org.eclipse.jetty.server.Request; import org.eclipse.jetty.server.Request;
import org.eclipse.jetty.server.Server; import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.ServerConnector;
import org.eclipse.jetty.util.component.AbstractLifeCycle; import org.eclipse.jetty.util.component.AbstractLifeCycle;
import org.eclipse.jetty.util.component.LifeCycle; import org.eclipse.jetty.util.component.LifeCycle;
import org.junit.Before; import org.junit.Assert;
import org.junit.Test; import org.junit.Test;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
public class ShutdownHandlerTest public class ShutdownHandlerTest
{ {
@Mock private Request baseRequest; private Server server;
@Mock private HttpServletRequest request; private ServerConnector connector;
@Mock private HttpServletResponse response;
private Server server = new Server(0);
private String shutdownToken = "asdlnsldgnklns"; private String shutdownToken = "asdlnsldgnklns";
// class under test public void start(HandlerWrapper wrapper) throws Exception
private ShutdownHandler shutdownHandler;
@Before
public void startServer() throws Exception
{ {
MockitoAnnotations.initMocks(this); server = new Server();
shutdownHandler = new ShutdownHandler(shutdownToken); connector = new ServerConnector(server);
server.setHandler(shutdownHandler); server.addConnector(connector);
Handler shutdown = new ShutdownHandler(shutdownToken);
Handler handler = shutdown;
if (wrapper != null)
{
wrapper.setHandler(shutdown);
handler = wrapper;
}
server.setHandler(handler);
server.start(); server.start();
} }
@Test @Test
public void shutdownServerWithCorrectTokenAndIPTest() throws Exception public void testShutdownServerWithCorrectTokenAndIP() throws Exception
{ {
setDefaultExpectations(); start(null);
final CountDownLatch countDown = new CountDownLatch(1);
server.addLifeCycleListener(new AbstractLifeCycle.Listener () CountDownLatch stopLatch = new CountDownLatch(1);
server.addLifeCycleListener(new AbstractLifeCycle.AbstractLifeCycleListener()
{ {
@Override
public void lifeCycleStarting(LifeCycle event)
{
}
public void lifeCycleStarted(LifeCycle event)
{
}
public void lifeCycleFailure(LifeCycle event, Throwable cause)
{
}
public void lifeCycleStopping(LifeCycle event)
{
}
public void lifeCycleStopped(LifeCycle event) public void lifeCycleStopped(LifeCycle event)
{ {
countDown.countDown(); stopLatch.countDown();
} }
}); });
when(baseRequest.getRemoteInetSocketAddress()).thenReturn(new InetSocketAddress(Inet4Address.getLoopbackAddress(),45454));
shutdownHandler.handle("/shutdown",baseRequest,request,response); HttpTester.Response response = shutdown(shutdownToken);
boolean stopped = countDown.await(1000, TimeUnit.MILLISECONDS); //wait up to 1 sec to stop Assert.assertEquals(HttpStatus.OK_200, response.getStatus());
assertTrue("Server lifecycle stop listener called", stopped);
assertEquals("Server should be stopped","STOPPED",server.getState()); Assert.assertTrue(stopLatch.await(5, TimeUnit.SECONDS));
Assert.assertEquals(AbstractLifeCycle.STOPPED, server.getState());
} }
@Test @Test
public void wrongTokenTest() throws Exception public void testWrongToken() throws Exception
{ {
setDefaultExpectations(); start(null);
when(request.getParameter("token")).thenReturn("anothertoken");
when(baseRequest.getRemoteInetSocketAddress()).thenReturn(new InetSocketAddress(Inet4Address.getLoopbackAddress(),45454)); HttpTester.Response response = shutdown("wrongToken");
shutdownHandler.handle("/shutdown",baseRequest,request,response); Assert.assertEquals(HttpStatus.UNAUTHORIZED_401, response.getStatus());
assertEquals("Server should be running","STARTED",server.getState());
Thread.sleep(1000);
Assert.assertEquals(AbstractLifeCycle.STARTED, server.getState());
} }
@Test @Test
public void shutdownRequestNotFromLocalhostTest() throws Exception public void testShutdownRequestNotFromLocalhost() throws Exception
{ {
setDefaultExpectations(); start(new HandlerWrapper()
when(request.getRemoteAddr()).thenReturn("192.168.3.3"); {
when(baseRequest.getRemoteInetSocketAddress()).thenReturn(new InetSocketAddress(Inet4Address.getByName("192.168.3.3"),45454)); @Override
shutdownHandler.handle("/shutdown",baseRequest,request,response); public void handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException
assertEquals("Server should be running","STARTED",server.getState()); {
} baseRequest.setRemoteAddr(new InetSocketAddress("192.168.0.1", 12345));
super.handle(target, baseRequest, request, response);
}
});
private void setDefaultExpectations() HttpTester.Response response = shutdown(shutdownToken);
{ Assert.assertEquals(HttpStatus.UNAUTHORIZED_401, response.getStatus());
when(request.getMethod()).thenReturn("POST");
when(request.getParameter("token")).thenReturn(shutdownToken);
when(request.getRemoteAddr()).thenReturn("127.0.0.1");
}
Thread.sleep(1000);
Assert.assertEquals(AbstractLifeCycle.STARTED, server.getState());
}
private HttpTester.Response shutdown(String shutdownToken) throws IOException
{
try (Socket socket = new Socket("localhost", connector.getLocalPort()))
{
String request = "" +
"POST /shutdown?token=" + shutdownToken + " HTTP/1.1\r\n" +
"Host: localhost\r\n" +
"\r\n";
OutputStream output = socket.getOutputStream();
output.write(request.getBytes(StandardCharsets.UTF_8));
output.flush();
HttpTester.Input input = HttpTester.from(socket.getInputStream());
return HttpTester.parseResponse(input);
}
}
} }

11
pom.xml
View File

@ -740,17 +740,6 @@
<artifactId>hamcrest-library</artifactId> <artifactId>hamcrest-library</artifactId>
<version>1.3</version> <version>1.3</version>
</dependency> </dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>1.9.5</version>
<exclusions>
<exclusion>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies> </dependencies>
</dependencyManagement> </dependencyManagement>
<!-- <!--