@Test public void testGetWrongGranule() throws Exception { // Parameters for the request String ws = "wcs"; String cs = "watertemp"; String g = "notThere.html"; // Request path String requestPath = "/rest/workspaces/" + ws + "/coveragestores/" + cs + "/coverages/" + cs + "/index/granules/" + g; // Exception path String exception = "Could not find a granule with id " + g + " in coveage " + ws + ":" + cs; // First request should thrown an exception MockHttpServletResponse response = getAsServletResponse(requestPath); assertEquals(404, response.getStatusCode()); assertTrue(response.getOutputStreamContent().contains(exception)); // Same request with ?quietOnNotFound should not throw an exception response = getAsServletResponse(requestPath + "?quietOnNotFound=true"); assertEquals(404, response.getStatusCode()); assertFalse(response.getOutputStreamContent().contains(exception)); // No exception thrown assertTrue(response.getOutputStreamContent().isEmpty()); }
@Test public void testUploadImageMosaic() throws Exception { URL zip = MockData.class.getResource("watertemp.zip"); InputStream is = null; byte[] bytes; try { is = zip.openStream(); bytes = IOUtils.toByteArray(is); } finally { IOUtils.closeQuietly(is); } MockHttpServletResponse response = putAsServletResponse( "/rest/workspaces/gs/coveragestores/watertemp/file.imagemosaic", bytes, "application/zip"); assertEquals(201, response.getStatusCode()); // check the response contents String content = response.getOutputStreamContent(); Document d = dom(new ByteArrayInputStream(content.getBytes())); XMLAssert.assertXpathEvaluatesTo("watertemp", "//coverageStore/name", d); XMLAssert.assertXpathEvaluatesTo("ImageMosaic", "//coverageStore/type", d); // check the coverage is actually there CoverageStoreInfo storeInfo = getCatalog().getCoverageStoreByName("watertemp"); assertNotNull(storeInfo); CoverageInfo ci = getCatalog().getCoverageByName("watertemp"); assertNotNull(ci); assertEquals(storeInfo, ci.getStore()); }
public void testPlainAddition() throws Exception { // Standard Test A.4.4.3 String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\" ?>\r\n" + "<wps:Execute service=\"WPS\" version=\"1.0.0\"\r\n" + " xmlns:wps=\"http://www.opengis.net/wps/1.0.0\" xmlns:ows=\"http://www.opengis.net/ows/1.1\"\r\n" + " xmlns:xlink=\"http://www.w3.org/1999/xlink\">\r\n" + " <ows:Identifier>gt:DoubleAddition</ows:Identifier>\r\n" + " <wps:DataInputs>\r\n" + " <wps:Input>\r\n" + " <ows:Identifier>input_a</ows:Identifier>\r\n" + " <wps:Data>\r\n" + " <wps:LiteralData>7</wps:LiteralData>\r\n" + " </wps:Data>\r\n" + " </wps:Input>\r\n" + " <wps:Input>\r\n" + " <ows:Identifier>input_b</ows:Identifier>\r\n" + " <wps:Data>\r\n" + " <wps:LiteralData>7</wps:LiteralData>\r\n" + " </wps:Data>\r\n" + " </wps:Input>\r\n" + " </wps:DataInputs>\r\n" + " <wps:ResponseForm>\r\n" + " <wps:RawDataOutput>\r\n" + " <ows:Identifier>result</ows:Identifier>\r\n" + " </wps:RawDataOutput>\r\n" + " </wps:ResponseForm>\r\n" + "</wps:Execute>"; MockHttpServletResponse response = postAsServletResponse(root(), xml); assertEquals("text/plain", response.getContentType()); assertEquals("14.0", response.getOutputStreamContent()); }
public void testInlineGeoJSON() throws Exception { String xml = "<wps:Execute service='WPS' version='1.0.0' xmlns:wps='http://www.opengis.net/wps/1.0.0' " + "xmlns:ows='http://www.opengis.net/ows/1.1'>" + "<ows:Identifier>gt:BufferFeatureCollection</ows:Identifier>" + "<wps:DataInputs>" + "<wps:Input>" + "<ows:Identifier>features</ows:Identifier>" + "<wps:Data>" + "<wps:ComplexData mimeType=\"application/json\"><![CDATA[" + readFileIntoString("states-FeatureCollection.json") + "]]></wps:ComplexData>" + "</wps:Data>" + "</wps:Input>" + "<wps:Input>" + "<ows:Identifier>buffer</ows:Identifier>" + "<wps:Data>" + "<wps:LiteralData>10</wps:LiteralData>" + "</wps:Data>" + "</wps:Input>" + "</wps:DataInputs>" + "<wps:ResponseForm>" + "<wps:RawDataOutput mimeType=\"application/json\">" + "<ows:Identifier>result</ows:Identifier>" + "</wps:RawDataOutput>" + "</wps:ResponseForm>" + "</wps:Execute>"; MockHttpServletResponse r = postAsServletResponse("wps", xml); assertEquals("application/json", r.getContentType()); // System.out.println(r.getOutputStreamContent()); FeatureCollection fc = new FeatureJSON().readFeatureCollection(r.getOutputStreamContent()); assertEquals(2, fc.size()); }
public void testDispatchWithNamespace() throws Exception { URL url = getClass().getResource("applicationContextNamespace.xml"); FileSystemXmlApplicationContext context = new FileSystemXmlApplicationContext(url.toString()); Dispatcher dispatcher = (Dispatcher) context.getBean("dispatcher"); MockHttpServletRequest request = new MockHttpServletRequest() { String encoding; public int getServerPort() { return 8080; } public String getCharacterEncoding() { return encoding; } public void setCharacterEncoding(String encoding) { this.encoding = encoding; } }; request.setScheme("http"); request.setServerName("localhost"); request.setContextPath("/geoserver"); request.setMethod("POST"); MockHttpServletResponse response = new MockHttpServletResponse(); request.setContentType("application/xml"); request.setBodyContent( "<h:Hello service='hello' message='Hello world!' xmlns:h='http://hello.org' />"); request.setRequestURI("http://localhost/geoserver/hello"); dispatcher.handleRequest(request, response); assertEquals("Hello world!", response.getOutputStreamContent()); request.setBodyContent( "<h:Hello service='hello' message='Hello world!' xmlns:h='http://hello.org/v2' />"); response = new MockHttpServletResponse(); dispatcher.handleRequest(request, response); assertEquals("Hello world!:V2", response.getOutputStreamContent()); }
/** * Tests mixed get/post situations for cases in which there is no kvp parser * * @throws Exception */ public void testHelloOperationMixed() throws Exception { URL url = getClass().getResource("applicationContextOnlyXml.xml"); FileSystemXmlApplicationContext context = new FileSystemXmlApplicationContext(url.toString()); Dispatcher dispatcher = (Dispatcher) context.getBean("dispatcher"); final String body = "<Hello service=\"hello\" message=\"Hello world!\" version=\"1.0.0\" />"; MockHttpServletRequest request = new MockHttpServletRequest() { String encoding; public int getServerPort() { return 8080; } public String getCharacterEncoding() { return encoding; } public void setCharacterEncoding(String encoding) { this.encoding = encoding; } public ServletInputStream getInputStream() throws IOException { final ServletInputStream stream = super.getInputStream(); return new ServletInputStream() { public int read() throws IOException { return stream.read(); } public int available() { return body.length(); } }; } }; request.setScheme("http"); request.setServerName("localhost"); request.setContextPath("/geoserver"); request.setMethod("POST"); request.setRequestURI("http://localhost/geoserver/ows"); request.setContentType("application/xml"); request.setBodyContent(body); MockHttpServletResponse response = new MockHttpServletResponse(); request.setupAddParameter("strict", "true"); dispatcher.handleRequest(request, response); assertEquals("Hello world!", response.getOutputStreamContent()); }
public void testPlainAdditionKVP() throws Exception { // Standard Test A.4.4.3 String request = "wps?service=WPS&version=1.0.0&request=Execute&Identifier=gt:DoubleAddition" + "&DataInputs=" + urlEncode("input_a=7;input_b=7") + "&RawDataOutput=result"; MockHttpServletResponse response = getAsServletResponse(request); assertEquals("text/plain", response.getContentType()); assertEquals("14.0", response.getOutputStreamContent()); }
/** * Checks the bounds process returned the expected envelope * * @param request * @param id * @throws Exception */ void executeState1BoundsTest(String request, String id) throws Exception { if (!RemoteOWSTestSupport.isRemoteWMSStatesAvailable(LOGGER)) { LOGGER.warning("Remote OWS tests disabled, skipping test with " + id + " reference source"); return; } MockHttpServletResponse resp = postAsServletResponse(root(), request); ReferencedEnvelope re = toEnvelope(resp.getOutputStreamContent()); assertEquals(-91.516129, re.getMinX(), 0.001); assertEquals(36.986771, re.getMinY(), 0.001); assertEquals(-87.507889, re.getMaxX(), 0.001); assertEquals(42.509361, re.getMaxY(), 0.001); }
public void testWKTInlineKVPRawOutput() throws Exception { String request = "wps?service=WPS&version=1.0.0&request=Execute&Identifier=gt:buffer" + "&DataInputs=" + urlEncode( "geom1=POLYGON((1 1, 2 1, 2 2, 1 2, 1 1))@mimetype=application/wkt;buffer=1") + "&RawDataOutput=" + urlEncode("result=@mimetype=application/wkt"); MockHttpServletResponse response = getAsServletResponse(request); // System.out.println(response.getOutputStreamContent()); assertEquals("application/wkt", response.getContentType()); Geometry g = new WKTReader().read(response.getOutputStreamContent()); assertTrue(g instanceof Polygon); }
public void testWKTInlineRawOutput() throws Exception { // Standard Test A.4.4.3 String xml = "<wps:Execute service='WPS' version='1.0.0' xmlns:wps='http://www.opengis.net/wps/1.0.0' " + "xmlns:ows='http://www.opengis.net/ows/1.1'>" + "<ows:Identifier>gt:buffer</ows:Identifier>" + "<wps:DataInputs>" + "<wps:Input>" + "<ows:Identifier>geom1</ows:Identifier>" + "<wps:Data>" + "<wps:ComplexData mimeType=\"application/wkt\">" + "<![CDATA[POLYGON((1 1, 2 1, 2 2, 1 2, 1 1))]]>" + "</wps:ComplexData>" + "</wps:Data>" + "</wps:Input>" + "<wps:Input>" + "<ows:Identifier>buffer</ows:Identifier>" + "<wps:Data>" + "<wps:LiteralData>1</wps:LiteralData>" + "</wps:Data>" + "</wps:Input>" + "</wps:DataInputs>" + "<wps:ResponseForm>" + " <wps:RawDataOutput mimeType=\"application/wkt\">" + " <ows:Identifier>result</ows:Identifier>" + " </wps:RawDataOutput>" + " </wps:ResponseForm>" + "</wps:Execute>"; // print(dom(new StringInputStream("<?xml version=\"1.0\" encoding=\"UTF-16\"?>\n" + xml))); MockHttpServletResponse response = postAsServletResponse("wps", xml); System.out.println(response.getOutputStreamContent()); assertEquals("application/wkt", response.getContentType()); Geometry g = new WKTReader().read(response.getOutputStreamContent()); assertTrue(g instanceof Polygon); }
public void testProcessChaining() throws Exception { // chain two JTS processes String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + "<wps:Execute version=\"1.0.0\" service=\"WPS\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns=\"http://www.opengis.net/wps/1.0.0\" xmlns:wfs=\"http://www.opengis.net/wfs\" xmlns:wps=\"http://www.opengis.net/wps/1.0.0\" xmlns:ows=\"http://www.opengis.net/ows/1.1\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:ogc=\"http://www.opengis.net/ogc\" xmlns:wcs=\"http://www.opengis.net/wcs/1.1.1\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xsi:schemaLocation=\"http://www.opengis.net/wps/1.0.0 http://schemas.opengis.net/wps/1.0.0/wpsAll.xsd\">\n" + " <ows:Identifier>JTS:area</ows:Identifier>\n" + " <wps:DataInputs>\n" + " <wps:Input>\n" + " <ows:Identifier>geom</ows:Identifier>\n" + " <wps:Reference mimeType=\"text/xml; subtype=gml/3.1.1\" xlink:href=\"http://geoserver/wps\" method=\"POST\">\n" + " <wps:Execute>\n" + " <ows:Identifier>JTS:buffer</ows:Identifier>\n" + " <wps:DataInputs>\n" + " <wps:Input>\n" + " <ows:Identifier>geom</ows:Identifier>\n" + " <wps:Data>\n" + " <wps:ComplexData mimeType=\"application/wkt\"><![CDATA[POINT(0 0)]]></wps:ComplexData>\n" + " </wps:Data>\n" + " </wps:Input>\n" + " <wps:Input>\n" + " <ows:Identifier>distance</ows:Identifier>\n" + " <wps:Data>\n" + " <wps:LiteralData>10</wps:LiteralData>\n" + " </wps:Data>\n" + " </wps:Input>\n" + " </wps:DataInputs>\n" + " <wps:ResponseForm>\n" + " <wps:RawDataOutput mimeType=\"text/xml; subtype=gml/3.1.1\">\n" + " <ows:Identifier>result</ows:Identifier>\n" + " </wps:RawDataOutput>\n" + " </wps:ResponseForm>\n" + " </wps:Execute>\n" + " </wps:Reference>\n" + " </wps:Input>\n" + " </wps:DataInputs>\n" + " <wps:ResponseForm>\n" + " <wps:RawDataOutput>\n" + " <ows:Identifier>result</ows:Identifier>\n" + " </wps:RawDataOutput>\n" + " </wps:ResponseForm>\n" + "</wps:Execute>"; MockHttpServletResponse resp = postAsServletResponse(root(), xml); assertEquals("text/plain", resp.getContentType()); // the result is inaccurate since the buffer is just a poor approximation of a circle assertTrue(resp.getOutputStreamContent().matches("312\\..*")); }
public void testProcessChainingKVP() throws Exception { String nested = "http://geoserver/wps?service=WPS&version=1.0.0&request=Execute&Identifier=JTS:buffer" + "&DataInputs=" + urlEncode("geom=POINT(0 0)@mimetype=application/wkt;distance=10") + "&RawDataOutput=result"; String request = "wps?service=WPS&version=1.0.0&request=Execute&Identifier=JTS:area" + "&DataInputs=" + urlEncode("geom=@href=" + nested) + "&RawDataOutput=result"; MockHttpServletResponse resp = getAsServletResponse(request); assertEquals("text/plain", resp.getContentType()); // the result is inaccurate since the buffer is just a poor approximation of a circle assertTrue(resp.getOutputStreamContent().matches("312\\..*")); }
/** * Ensures there is at most one feature at the specified location, and returns its feature id * * @param baseFeatureInfo The GetFeatureInfo request, minus x and y * @param x * @param y * @param layerName TODO * @return */ Double getFeatureAt(String baseFeatureInfo, int x, int y, String layerName) throws Exception { MockHttpServletResponse response = getAsServletResponse( baseFeatureInfo + "&info_format=application/vnd.ogc.gml&x=" + x + "&y=" + y); assertEquals("application/vnd.ogc.gml", response.getContentType()); Document doc = dom(new ByteArrayInputStream(response.getOutputStreamContent().getBytes())); String sCount = xpath.evaluate("count(//" + layerName + ")", doc); int count = Integer.valueOf(sCount); if (count == 0) { return null; } else if (count == 1) { return Double.valueOf(xpath.evaluate("//" + layerName + "/sf:GRAY_INDEX", doc)); } else { fail("Found more than one feature: " + count); return null; // just to make the compiler happy, fail throws an unchecked exception } }
public void testHelloOperationGet() throws Exception { URL url = getClass().getResource("applicationContext.xml"); FileSystemXmlApplicationContext context = new FileSystemXmlApplicationContext(url.toString()); Dispatcher dispatcher = (Dispatcher) context.getBean("dispatcher"); MockHttpServletRequest request = new MockHttpServletRequest() { String encoding; public int getServerPort() { return 8080; } public String getCharacterEncoding() { return encoding; } public void setCharacterEncoding(String encoding) { this.encoding = encoding; } }; request.setScheme("http"); request.setServerName("localhost"); request.setContextPath("/geoserver"); request.setMethod("GET"); MockHttpServletResponse response = new MockHttpServletResponse(); request.setupAddParameter("service", "hello"); request.setupAddParameter("request", "Hello"); request.setupAddParameter("version", "1.0.0"); request.setupAddParameter("message", "Hello world!"); request.setRequestURI( "http://localhost/geoserver/ows?service=hello&request=hello&message=HelloWorld"); request.setQueryString("service=hello&request=hello&message=HelloWorld"); dispatcher.handleRequest(request, response); assertEquals("Hello world!", response.getOutputStreamContent()); }
@Test public void testWorldImageUploadZipped() throws Exception { URL zip = getClass().getResource("test-data/usa.zip"); byte[] bytes = FileUtils.readFileToByteArray(DataUtilities.urlToFile(zip)); MockHttpServletResponse response = putAsServletResponse( "/rest/workspaces/sf/coveragestores/usa/file.worldimage", bytes, "application/zip"); assertEquals(201, response.getStatusCode()); String content = response.getOutputStreamContent(); Document d = dom(new ByteArrayInputStream(content.getBytes())); assertEquals("coverageStore", d.getDocumentElement().getNodeName()); CoverageStoreInfo cs = getCatalog().getCoverageStoreByName("sf", "usa"); assertNotNull(cs); CoverageInfo ci = getCatalog().getCoverageByName("sf", "usa"); assertNotNull(ci); }
@Test public void testCreateStoredQuerySOAP() throws Exception { String xml = "<soap:Envelope xmlns:soap='http://www.w3.org/2003/05/soap-envelope'> " + " <soap:Header/> " + " <soap:Body>" + "<wfs:CreateStoredQuery service='WFS' version='2.0.0' " + " xmlns:wfs='http://www.opengis.net/wfs/2.0' " + " xmlns:fes='http://www.opengis.org/fes/2.0' " + " xmlns:gml='http://www.opengis.net/gml/3.2' " + " xmlns:myns='http://www.someserver.com/myns' " + " xmlns:sf='" + MockData.SF_URI + "'>" + " <wfs:StoredQueryDefinition id='myStoredQuery'> " + " <wfs:Parameter name='AreaOfInterest' type='gml:Polygon'/> " + " <wfs:QueryExpressionText " + " returnFeatureTypes='sf:PrimitiveGeoFeature' " + " language='urn:ogc:def:queryLanguage:OGC-WFS::WFS_QueryExpression' " + " isPrivate='false'> " + " <wfs:Query typeNames='sf:PrimitiveGeoFeature'> " + " <fes:Filter> " + " <fes:Within> " + " <fes:ValueReference>pointProperty</fes:ValueReference> " + " ${AreaOfInterest} " + " </fes:Within> " + " </fes:Filter> " + " </wfs:Query> " + " </wfs:QueryExpressionText> " + " </wfs:StoredQueryDefinition> " + "</wfs:CreateStoredQuery>" + " </soap:Body> " + "</soap:Envelope> "; MockHttpServletResponse resp = postAsServletResponse("wfs", xml, "application/soap+xml"); assertEquals("application/soap+xml", resp.getContentType()); Document dom = dom(new ByteArrayInputStream(resp.getOutputStreamContent().getBytes())); assertEquals("soap:Envelope", dom.getDocumentElement().getNodeName()); assertEquals(1, dom.getElementsByTagName("wfs:CreateStoredQueryResponse").getLength()); }
@Test public void testDropStoredQuerySOAP() throws Exception { testCreateStoredQuery(); String xml = "<soap:Envelope xmlns:soap='http://www.w3.org/2003/05/soap-envelope'> " + " <soap:Header/> " + " <soap:Body>" + "<wfs:DropStoredQuery service='WFS' version='2.0.0' " + " xmlns:wfs='" + WFS.NAMESPACE + "' id='myStoredQuery'/>" + " </soap:Body> " + "</soap:Envelope> "; MockHttpServletResponse resp = postAsServletResponse("wfs", xml, "application/soap+xml"); assertEquals("application/soap+xml", resp.getContentType()); Document dom = dom(new ByteArrayInputStream(resp.getOutputStreamContent().getBytes())); assertEquals("soap:Envelope", dom.getDocumentElement().getNodeName()); assertEquals(1, dom.getElementsByTagName("wfs:DropStoredQueryResponse").getLength()); }
@Test public void testGetWrongWMSLayer() throws Exception { // Parameters for the request String ws = "sf"; String wms = "demo"; String wl = "statessssss"; // Request path String requestPath = "/rest/workspaces/" + ws + "/wmslayers/" + wl + ".html"; String requestPath2 = "/rest/workspaces/" + ws + "/wmsstores/" + wms + "/wmslayers/" + wl + ".html"; // Exception path String exception = "No such cascaded wms: " + ws + "," + wl; String exception2 = "No such cascaded wms layer: " + ws + "," + wms + "," + wl; // CASE 1: No wmsstore set // First request should thrown an exception MockHttpServletResponse response = getAsServletResponse(requestPath); assertEquals(404, response.getStatusCode()); assertTrue(response.getOutputStreamContent().contains(exception)); // Same request with ?quietOnNotFound should not throw an exception response = getAsServletResponse(requestPath + "?quietOnNotFound=true"); assertEquals(404, response.getStatusCode()); assertFalse(response.getOutputStreamContent().contains(exception)); // No exception thrown assertTrue(response.getOutputStreamContent().isEmpty()); // CASE 2: wmsstore set // First request should thrown an exception response = getAsServletResponse(requestPath2); assertEquals(404, response.getStatusCode()); assertTrue(response.getOutputStreamContent().contains(exception2)); // Same request with ?quietOnNotFound should not throw an exception response = getAsServletResponse(requestPath2 + "?quietOnNotFound=true"); assertEquals(404, response.getStatusCode()); assertFalse(response.getOutputStreamContent().contains(exception2)); // No exception thrown assertTrue(response.getOutputStreamContent().isEmpty()); }
@Test public void testHarvestImageMosaicWithDirectory() throws Exception { // Upload of the Mosaic via REST URL zip = MockData.class.getResource("watertemp.zip"); InputStream is = null; byte[] bytes; try { is = zip.openStream(); bytes = IOUtils.toByteArray(is); } finally { IOUtils.closeQuietly(is); } MockHttpServletResponse response = putAsServletResponse( "/rest/workspaces/gs/coveragestores/watertemp3/file.imagemosaic", bytes, "application/zip"); assertEquals(201, response.getStatusCode()); // check the response contents String content = response.getOutputStreamContent(); Document d = dom(new ByteArrayInputStream(content.getBytes())); XMLAssert.assertXpathEvaluatesTo("watertemp3", "//coverageStore/name", d); XMLAssert.assertXpathEvaluatesTo("ImageMosaic", "//coverageStore/type", d); // check the coverage is actually there CoverageStoreInfo storeInfo = getCatalog().getCoverageStoreByName("watertemp3"); assertNotNull(storeInfo); CoverageInfo ci = getCatalog().getCoverageByName("watertemp3"); assertNotNull(ci); assertEquals(storeInfo, ci.getStore()); // Harvesting of the Mosaic URL zipHarvest = getClass().getResource("test-data/harvesting.zip"); File zipFile = DataUtilities.urlToFile(zipHarvest); // Creation of another zip file which is a copy of the one before File newZip = new File(zipFile.getParentFile(), "harvesting2.zip"); // Copy the content of the first zip to the second FileUtils.copyFile(zipFile, newZip); File outputDirectory = new File(zipFile.getParentFile(), "harvesting"); outputDirectory.mkdir(); RESTUtils.unzipFile(newZip, outputDirectory); // Create the POST request MockHttpServletRequest request = createRequest("/rest/workspaces/gs/coveragestores/watertemp3/external.imagemosaic"); request.setMethod("POST"); request.setContentType("text/plain"); request.setBodyContent("file:///" + outputDirectory.getAbsolutePath()); request.setHeader("Content-type", "text/plain"); // Get The response response = dispatch(request); // Get the Mosaic Reader GridCoverageReader reader = storeInfo.getGridCoverageReader(null, GeoTools.getDefaultHints()); // Test if all the TIME DOMAINS are present String[] metadataNames = reader.getMetadataNames(); assertNotNull(metadataNames); assertEquals("true", reader.getMetadataValue("HAS_TIME_DOMAIN")); assertEquals( "2008-10-31T00:00:00.000Z,2008-11-01T00:00:00.000Z,2008-11-02T00:00:00.000Z", reader.getMetadataValue(metadataNames[0])); // Removal of the temporary directory FileUtils.deleteDirectory(outputDirectory); }
@Test public void testHarvestImageMosaic() throws Exception { // Upload of the Mosaic via REST URL zip = MockData.class.getResource("watertemp.zip"); InputStream is = null; byte[] bytes; try { is = zip.openStream(); bytes = IOUtils.toByteArray(is); } finally { IOUtils.closeQuietly(is); } MockHttpServletResponse response = putAsServletResponse( "/rest/workspaces/gs/coveragestores/watertemp2/file.imagemosaic", bytes, "application/zip"); assertEquals(201, response.getStatusCode()); // check the response contents String content = response.getOutputStreamContent(); Document d = dom(new ByteArrayInputStream(content.getBytes())); XMLAssert.assertXpathEvaluatesTo("watertemp2", "//coverageStore/name", d); XMLAssert.assertXpathEvaluatesTo("ImageMosaic", "//coverageStore/type", d); // check the coverage is actually there CoverageStoreInfo storeInfo = getCatalog().getCoverageStoreByName("watertemp2"); assertNotNull(storeInfo); CoverageInfo ci = getCatalog().getCoverageByName("watertemp2"); assertNotNull(ci); assertEquals(storeInfo, ci.getStore()); // Harvesting of the Mosaic URL zipHarvest = getClass().getResource("test-data/harvesting.zip"); // Extract a Byte array from the zip file is = null; try { is = zipHarvest.openStream(); bytes = IOUtils.toByteArray(is); } finally { IOUtils.closeQuietly(is); } // Create the POST request MockHttpServletRequest request = createRequest("/rest/workspaces/gs/coveragestores/watertemp2/file.imagemosaic"); request.setMethod("POST"); request.setContentType("application/zip"); request.setBodyContent(bytes); request.setHeader("Content-type", "application/zip"); // Get The response response = dispatch(request); // Get the Mosaic Reader GridCoverageReader reader = storeInfo.getGridCoverageReader(null, GeoTools.getDefaultHints()); // Test if all the TIME DOMAINS are present String[] metadataNames = reader.getMetadataNames(); assertNotNull(metadataNames); assertEquals("true", reader.getMetadataValue("HAS_TIME_DOMAIN")); assertEquals( "2008-10-31T00:00:00.000Z,2008-11-01T00:00:00.000Z,2008-11-02T00:00:00.000Z", reader.getMetadataValue(metadataNames[0])); }