/** * junit-rules: JUnit Rules Library * * Copyright (c) 2009-2011 by Alistair A. Israel. * This software is made available under the terms of the MIT License. * * Created Aug 28, 2009 */ package junit.rules.jetty; import static java.lang.Boolean.FALSE; import static java.lang.Boolean.TRUE; import static java.net.HttpURLConnection.HTTP_OK; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.net.HttpURLConnection; import junit.rules.util.SimpleReference; import org.junit.Rule; import org.junit.Test; /** * <p> * JUnit test case for {@link JettyServerRule}. * </p> * <p> * With contributions by <a href="https://github.com/beobal">Sam Tunnicliffe</a>. * </p> * * @author Alistair A. Israel */ public final class JettyServerRuleTest { // CHECKSTYLE:OFF @Rule public final JettyServerRule jettyServer = new JettyServerRule(); // CHECKSTYLE:ON /** * @throws Exception * on exception */ @Test public void testJettyServerRule() throws Exception { jettyServer.setHandler(new SimpleJettyHandler() { @Override protected void onGet() throws IOException { final PrintWriter out = getResponseWriter(); out.println("<?xml version=\"1.0\"?>"); out.println("<resource id=\"1234\" name=\"test\" />"); } }); final HttpURLConnection connection = jettyServer.get("/1234.xml"); final BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream())); assertEquals("<?xml version=\"1.0\"?>", in.readLine()); assertEquals("<resource id=\"1234\" name=\"test\" />", in.readLine()); assertEquals(HTTP_OK, connection.getResponseCode()); } /** * Test HTTP POST * * @throws Exception * should never happen */ @Test public void testJettyServerRulePostMethod() throws Exception { jettyServer.setHandler(new SimpleJettyHandler() { @Override protected void onPost() throws IOException { final BufferedReader reader = new BufferedReader(new InputStreamReader(request().getInputStream())); final PrintWriter out = getResponseWriter(); out.println(reader.readLine()); } }); final HttpURLConnection connection = jettyServer.post("/"); final BufferedWriter out = new BufferedWriter(new OutputStreamWriter(connection.getOutputStream())); out.write("Hello World"); out.flush(); final BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream())); assertEquals("Hello World", in.readLine()); assertEquals(HTTP_OK, connection.getResponseCode()); } /** * Test HTTP PUT * * @throws Exception * should never happen */ @Test public void testJettyServerRulePutMethod() throws Exception { jettyServer.setHandler(new SimpleJettyHandler() { @Override protected void onPut() throws IOException { final BufferedReader reader = new BufferedReader(new InputStreamReader(request().getInputStream())); final PrintWriter out = getResponseWriter(); out.println(reader.readLine()); } }); final HttpURLConnection connection = jettyServer.put("/"); final BufferedWriter out = new BufferedWriter(new OutputStreamWriter(connection.getOutputStream())); out.write("Hello Again"); out.flush(); final BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream())); assertEquals("Hello Again", in.readLine()); assertEquals(HTTP_OK, connection.getResponseCode()); } /** * Test HTTP DELETE * * @throws Exception * should never happen */ @Test public void testJettyServerRuleDeleteMethod() throws Exception { final SimpleReference<Boolean> deleteIssued = SimpleReference.to(FALSE); jettyServer.setHandler(new SimpleJettyHandler() { @Override protected void onDelete() throws IOException { deleteIssued.set(TRUE); } }); final HttpURLConnection connection = jettyServer.delete("/"); assertEquals(HTTP_OK, connection.getResponseCode()); assertTrue(deleteIssued.get()); } }