Skip to content

Instantly share code, notes, and snippets.

@ptaylor
Created June 27, 2018 16:52
Show Gist options
  • Save ptaylor/06d457cc4a4b226290dcae257dc8154d to your computer and use it in GitHub Desktop.
Save ptaylor/06d457cc4a4b226290dcae257dc8154d to your computer and use it in GitHub Desktop.
Unit test with HTTP server
package org.example.service;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.servlet.ServletContextHandler;
import org.eclipse.jetty.servlet.ServletHolder;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.springframework.core.io.ClassPathResource;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
import java.util.Random;
import java.util.Scanner;
import java.util.stream.Collectors;
import static org.junit.Assert.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
public class ServiceTest {
Server server;
public class TestServlet extends HttpServlet {
protected void doPost(
HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
int status = HttpServletResponse.SC_SERVICE_UNAVAILABLE;
String output = "";
try {
System.out.println("path: " + request.getServletPath());
String requestData = request.getReader().lines().collect(Collectors.joining());
System.out.println("requestdata: " + requestData);
response.setContentType("application/json");
JSONObject json = (JSONObject) new JSONParser().parse(requestData);
String path = "/test_data/" + json.get("id") + "_" + json.get("startDate") + "_" + json.get("endDate") + ".json";
System.out.println("Reading test data from: " + path);
output = new Scanner(this.getClass().getResourceAsStream(path), "UTF-8").useDelimiter("\\A").next();
System.out.println("test data: " + output);
status = HttpServletResponse.SC_OK;
} catch (Exception e) {
System.out.println("excpetion " + e);
output = "Exception " + e;
}
response.setStatus(status);
response.getWriter().write(output);
}
}
@Before
public void setUp() throws Exception {
int port = new Random().nextInt(1000) + 9000;
System.out.println("port: " + port);
server = new Server(port);
ServletContextHandler context = new ServletContextHandler();
ServletHolder holder = new ServletHolder(new TestServlet());
context.addServlet(holder, "/getData");
server.setHandler(context);
server.start();
String endpoint = "http://localhost:" + port + "/";
}
@After
public void close() throws Exception {
server.stop();
}
@Test
public void txnSearchCallsAPIAndReturnsResult() throws Exception {
// ...
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment