public static void main(String[] args) throws Exception { LocalTestServer server = new LocalTestServer(null, null); try { server.start(); server.register("/*", new LoggingHandler()); server.awaitTermination(3600 * 1000); } catch (Exception e) { e.printStackTrace(); } finally { server.stop(); } }
public void register(String method, JSONObject response) { server.register( "/api/" + method, TestUtils.makeHttpHandler(HttpStatus.SC_OK, response.toString(2), requestBodies) ); } }
@Test public void testSuccess() { StringBuilder expectedStr = new StringBuilder(); Map<String, TLE> expected; try (BufferedReader r = new BufferedReader(new InputStreamReader(CelestrakClientTest.class.getClassLoader().getResourceAsStream("sample-tle.txt")))) { String curLine = null; List<String> lines = new ArrayList<>(); while( (curLine = r.readLine()) != null ) { lines.add(curLine); expectedStr.append(curLine).append("\n"); } expected = convert(lines); } catch (Exception e) { throw new RuntimeException(e); } server.register("/*", new HttpRequestHandler() { @Override public void handle(HttpRequest request, HttpResponse response, HttpContext context) throws HttpException, IOException { response.setEntity(new StringEntity(expectedStr.toString(), StandardCharsets.UTF_8)); } }); // one slash is important here CelestrakClient client = new CelestrakClient("http:/" + server.getServiceAddress()); Map<String, TLE> actual = client.getWeatherTLE(); assertEquals(expected.size(), actual.size()); assertTrue(expected.equals(actual)); }
@Test public void testGetParentCoverageNull() { server.register("/*", TestUtils.makeHttpHandler(HttpStatus.SC_OK, "null")); assertNull(client.getParentCoverage(TestUtils.TEST_SHA)); }
@Test public void testGetCoverageFound() { server.register("/*", TestUtils.makeHttpHandler(HttpStatus.SC_OK, "{}")); String coverage = client.getCoverage(TestUtils.TEST_SHA); assertEquals("{}", coverage); }
@Test public void testGetCoverageInternalError() { server.register("/*", TestUtils.makeHttpHandler(HttpStatus.SC_INTERNAL_SERVER_ERROR, "")); assertNull(client.getCoverage(TestUtils.TEST_SHA)); }
@Test public void testGetCoverageMissingKey() { server.register("/*", TestUtils.makeHttpHandler(HttpStatus.SC_OK, "{}")); assertNull(client.getParentCoverage(TestUtils.TEST_SHA)); }
@Test public void testSuccessfullFetch() throws Exception { server.register("/api/valid", TestUtils.makeHttpHandler(HttpStatus.SC_OK, "{\"hello\": \"world\"}")); client = new ConduitAPIClient(getTestServerAddress(), TestUtils.TEST_CONDUIT_TOKEN); JSONObject response = client.perform("valid", emptyParams); assertEquals("world", response.getString("hello")); }
@Test(expected = ConduitAPIException.class) public void testBadRequestErrorCode() throws Exception { server.register("/api/foo", TestUtils.makeHttpHandler(HttpStatus.SC_BAD_REQUEST, "nothing")); client = new ConduitAPIClient(getTestServerAddress(), TestUtils.TEST_CONDUIT_TOKEN); client.perform("foo", emptyParams); }
@Test public void testRecordCoverageInternalError() { server.register("/*", TestUtils.makeHttpHandler(HttpStatus.SC_INTERNAL_SERVER_ERROR, "")); assertFalse(client.recordCoverage(TestUtils.TEST_SHA, TestUtils.getDefaultCodeCoverageMetrics())); }
@Test public void testGetCoverageWorkingBackend() throws IOException { JSONObject validJSON = TestUtils.getJSONFromFile(getClass(), "validCoverage"); server.register("/*", TestUtils.makeHttpHandler(HttpStatus.SC_OK, validJSON.toString())); CodeCoverageMetrics metrics = client.getParentCoverage(TestUtils.TEST_SHA); assertEquals(42.0f, metrics.getLineCoveragePercent(), 0.01f); }
@Test public void testRecordCoverageSuccessful() { server.register("/*", TestUtils.makeHttpHandler(HttpStatus.SC_OK, "{}")); assertTrue(client.recordCoverage(TestUtils.TEST_SHA, TestUtils.getDefaultCodeCoverageMetrics())); }
@Test public void testWithUTF8() throws Exception { server.register("/api/utf8", TestUtils.makeHttpHandler(HttpStatus.SC_OK, "{}")); client = new ConduitAPIClient(getTestServerAddress(), TestUtils.TEST_CONDUIT_TOKEN); JSONObject utf8Params = new JSONObject().element("message", "こんにちは世界"); client.perform("utf8", utf8Params); }