testCreateReport(MapPrinterServlet.REPORT_URL + ".pdf", printSpec);
}
private void testCreateReport(String requestPath, String printSpec) throws Exception,
JSONException, Exception {
ClientHttpRequest request = getPrintRequest(requestPath, HttpMethod.POST);
setPrintSpec(printSpec, request);
response = request.execute();
assertEquals(HttpStatus.OK, response.getStatusCode());
assertEquals(getJsonMediaType(), response.getHeaders().getContentType());
String responseAsText = getBodyAsText(response);
JSONObject createResult = new JSONObject(responseAsText);
String ref = createResult.getString(MapPrinterServlet.JSON_PRINT_JOB_REF);
String statusUrl = createResult.getString(MapPrinterServlet.JSON_STATUS_LINK);
String downloadUrl = createResult.getString(MapPrinterServlet.JSON_DOWNLOAD_LINK);
assertEquals("/print-servlet/print/status/" + ref + ".json", statusUrl);
assertEquals("/print-servlet/print/report/" + ref, downloadUrl);
response.close();
// check status
request = getPrintRequest(MapPrinterServlet.STATUS_URL + "/" + ref + ".json", HttpMethod.GET);
response = request.execute();
assertEquals(HttpStatus.OK, response.getStatusCode());
assertEquals(getJsonMediaType(), response.getHeaders().getContentType());
responseAsText = getBodyAsText(response);
JSONObject statusResult = new JSONObject(responseAsText);
assertTrue(statusResult.has(MapPrinterServlet.JSON_DONE));
assertEquals(downloadUrl, statusResult.getString(MapPrinterServlet.JSON_DOWNLOAD_LINK));
response.close();
// check status with JSONP
request = getPrintRequest(MapPrinterServlet.STATUS_URL + "/" + ref + ".json?jsonp=getStatus", HttpMethod.GET);
response = request.execute();
assertEquals(HttpStatus.OK, response.getStatusCode());
assertEquals(getJavaScriptMediaType(), response.getHeaders().getContentType());
responseAsText = getBodyAsText(response);
assertTrue(responseAsText.startsWith("getStatus("));
responseAsText = responseAsText.replace("getStatus(", "").replace(");", "");
statusResult = new JSONObject(responseAsText);
assertTrue(statusResult.has(MapPrinterServlet.JSON_DONE));
assertEquals(downloadUrl, statusResult.getString(MapPrinterServlet.JSON_DOWNLOAD_LINK));
response.close();
waitUntilDoneOrError(ref);
// check download
request = getPrintRequest(MapPrinterServlet.REPORT_URL + "/" + ref, HttpMethod.GET);
response = request.execute();
assertEquals(HttpStatus.OK, response.getStatusCode());
assertEquals(new MediaType("application", "pdf"), response.getHeaders().getContentType());
assertTrue(response.getBody().read() >= 0);
}