public void testWorkspaceQualified() throws Exception { String queryString ="&request=getcoverage&service=wcs&version=1.0.0&format=image/geotiff&bbox=146,-45,147,-42"+ "&crs=EPSG:4326&width=150&height=150"; ServletResponse response = getAsServletResponse( "wcs?sourcecoverage="+TASMANIA_BM.getLocalPart()+queryString); assertTrue(response.getContentType().startsWith("image/tiff")); Document dom = getAsDOM( "cdf/wcs?sourcecoverage="+TASMANIA_BM.getLocalPart()+queryString); assertEquals("ServiceExceptionReport", dom.getDocumentElement().getNodeName()); }
@Test public void testNotExistent() throws Exception { String queryString = "&request=getcoverage&service=wcs&version=1.1.1&&format=image/geotiff" + "&BoundingBox=-45,146,-42,147,urn:ogc:def:crs:EPSG:6.6:4326"; Document dom = getAsDOM("wcs?identifier=NotThere" + queryString); // print(dom); checkOws11Exception(dom, "InvalidParameterValue", "identifier"); }
public void testLayerQualified() throws Exception { String queryString ="&request=getcoverage&service=wcs&version=1.0.0&format=image/geotiff&bbox=146,-45,147,-42"+ "&crs=EPSG:4326&width=150&height=150"; ServletResponse response = getAsServletResponse( "wcs/BlueMarble/wcs?sourcecoverage=BlueMarble"+queryString); assertTrue(response.getContentType().startsWith("image/tiff")); Document dom = getAsDOM( "wcs/DEM/wcs?sourcecoverage=BlueMarble"+queryString); assertEquals("ServiceExceptionReport", dom.getDocumentElement().getNodeName()); }
@Test public void testWorkspaceQualified() throws Exception { String queryString = "&request=getcoverage&service=wcs&version=1.1.1&&format=image/geotiff" + "&BoundingBox=-45,146,-42,147,urn:ogc:def:crs:EPSG:6.6:4326"; ServletResponse r = getAsServletResponse("wcs?identifier=" + TASMANIA_BM.getLocalPart() + queryString); assertTrue(r.getContentType().startsWith("multipart/related")); Document dom = getAsDOM("cdf/wcs?identifier=" + TASMANIA_BM.getLocalPart() + queryString); assertEquals("ows:ExceptionReport", dom.getDocumentElement().getNodeName()); }
@Test public void testWorkspaceQualified() throws Exception { String queryString = "&request=getcoverage&service=wcs&version=1.0.0&format=image/geotiff&bbox=146,-45,147,-42" + "&crs=EPSG:4326&width=150&height=150"; ServletResponse response = getAsServletResponse( "wcs?sourcecoverage=" + TASMANIA_BM.getLocalPart() + queryString); assertTrue(response.getContentType().startsWith("image/tiff")); Document dom = getAsDOM("cdf/wcs?sourcecoverage=" + TASMANIA_BM.getLocalPart() + queryString); assertEquals("ServiceExceptionReport", dom.getDocumentElement().getNodeName()); }
@Test public void testLayerQualified() throws Exception { String queryString = "&request=getcoverage&service=wcs&version=1.1.1&&format=image/geotiff" + "&BoundingBox=-45,146,-42,147,urn:ogc:def:crs:EPSG:6.6:4326"; ServletResponse r = getAsServletResponse("wcs/BlueMarble/wcs?identifier=BlueMarble" + queryString); assertTrue(r.getContentType().startsWith("multipart/related")); Document dom = getAsDOM("wcs/DEM/wcs?identifier=BlueMarble" + queryString); assertEquals("ows:ExceptionReport", dom.getDocumentElement().getNodeName()); }
@Test public void testTimeInputLimitsDefault() throws Exception { String queryString = "&request=getcoverage&service=wcs&version=1.1.1&&format=image/geotiff" + "&BoundingBox=-45,146,-42,147,urn:ogc:def:crs:EPSG:6.6:4326&timeSequence=2010-01-01/2011-01-01/P1D"; Document dom = getAsDOM("wcs/BlueMarble/wcs?identifier=" + getLayerId(TASMANIA_BM) + queryString); // print(dom); String text = checkOws11Exception(dom, ServiceException.INVALID_PARAMETER_VALUE, "time"); assertThat(text, containsString("More than 100 times")); }
@Test public void testNonExistentCoverage() throws Exception { String queryString = "&request=getcoverage&service=wcs&version=1.0.0&format=image/geotiff&bbox=146,-45,147,-42" + "&crs=EPSG:4326&width=150&height=150"; Document dom = getAsDOM("wcs?sourcecoverage=NotThere" + queryString); // print(dom); XMLAssert.assertXpathEvaluatesTo( "InvalidParameterValue", "/ServiceExceptionReport/ServiceException/@code", dom); XMLAssert.assertXpathEvaluatesTo( "sourcecoverage", "/ServiceExceptionReport/ServiceException/@locator", dom); }
@Test public void testLayerQualified() throws Exception { String queryString = "&request=getcoverage&service=wcs&version=1.0.0&format=image/geotiff&bbox=146,-45,147,-42" + "&crs=EPSG:4326&width=150&height=150"; MockHttpServletResponse response = getAsServletResponse("wcs/BlueMarble/wcs?sourcecoverage=BlueMarble" + queryString); assertTrue(response.getContentType().startsWith("image/tiff")); String disposition = response.getHeader("Content-Disposition"); assertTrue(disposition.endsWith("BlueMarble.tif")); Document dom = getAsDOM("wcs/DEM/wcs?sourcecoverage=BlueMarble" + queryString); assertEquals("ServiceExceptionReport", dom.getDocumentElement().getNodeName()); }
public void testOutputLimits() throws Exception { try { // ridicolous limit, just one byte setOutputLimit(1); String queryString = "&request=getcoverage&service=wcs&version=1.0.0&format=image/geotiff&bbox=146,-45,147,-42" + "&crs=EPSG:4326&width=150&height=150"; Document dom = getAsDOM("wcs/BlueMarble/wcs?sourcecoverage=" + getLayerId(TASMANIA_BM) + queryString); // print(dom); // check it's an error, check we're getting it because of the output limits assertEquals("ServiceExceptionReport", dom.getDocumentElement().getNodeName()); String error = xpath.evaluate( "/ServiceExceptionReport/ServiceException/text()", dom).trim(); assertTrue(error.matches(".*generate too much data.*")); } finally { setOutputLimit(0); } }
public void testInputLimits() throws Exception { try { // ridicolous limit, just one byte setInputLimit(1); String queryString = "&request=getcoverage&service=wcs&version=1.0.0&format=image/geotiff&bbox=146,-45,147,-42" + "&crs=EPSG:4326&width=150&height=150"; Document dom = getAsDOM("wcs/BlueMarble/wcs?sourcecoverage=" + getLayerId(TASMANIA_BM) + queryString); // print(dom); // check it's an error, check we're getting it because of the input limits assertEquals("ServiceExceptionReport", dom.getDocumentElement().getNodeName()); String error = xpath.evaluate( "/ServiceExceptionReport/ServiceException/text()", dom).trim(); assertTrue(error.matches(".*read too much data.*")); } finally { setInputLimit(0); } }
@Test public void testInputLimits() throws Exception { try { // ridicolous limit, just one byte setInputLimit(1); String queryString = "&request=getcoverage&service=wcs&version=1.0.0&format=image/geotiff&bbox=146,-45,147,-42" + "&crs=EPSG:4326&width=150&height=150"; Document dom = getAsDOM( "wcs/BlueMarble/wcs?sourcecoverage=" + getLayerId(TASMANIA_BM) + queryString); // print(dom); // check it's an error, check we're getting it because of the input limits assertEquals("ServiceExceptionReport", dom.getDocumentElement().getNodeName()); String error = xpath.evaluate("/ServiceExceptionReport/ServiceException/text()", dom).trim(); assertTrue(error.matches(".*read too much data.*")); } finally { setInputLimit(0); } }
@Test public void testOutputLimits() throws Exception { try { // ridicolous limit, just one byte setOutputLimit(1); String queryString = "&request=getcoverage&service=wcs&version=1.0.0&format=image/geotiff&bbox=146,-45,147,-42" + "&crs=EPSG:4326&width=150&height=150"; Document dom = getAsDOM( "wcs/BlueMarble/wcs?sourcecoverage=" + getLayerId(TASMANIA_BM) + queryString); // print(dom); // check it's an error, check we're getting it because of the output limits assertEquals("ServiceExceptionReport", dom.getDocumentElement().getNodeName()); String error = xpath.evaluate("/ServiceExceptionReport/ServiceException/text()", dom).trim(); assertTrue(error.matches(".*generate too much data.*")); } finally { setOutputLimit(0); } }
@Test public void testOutputLimits() throws Exception { try { // ridicolous limit, just one byte setOutputLimit(1); String queryString = "&request=getcoverage&service=wcs&version=1.1.1&&format=image/geotiff" + "&BoundingBox=-45,146,-42,147,urn:ogc:def:crs:EPSG:6.6:4326"; Document dom = getAsDOM("wcs/wcs?identifier=" + getLayerId(TASMANIA_BM) + queryString); // print(dom); // check it's an error, check we're getting it because of the output limits assertEquals("ows:ExceptionReport", dom.getDocumentElement().getNodeName()); String error = xpath.evaluate( "/ows:ExceptionReport/ows:Exception/ows:ExceptionText/text()", dom); assertTrue(error.matches(".*generate too much data.*")); } finally { setOutputLimit(0); } }
@Test public void testInputLimits() throws Exception { try { // ridicolous limit, just one byte setInputLimit(1); String queryString = "&request=getcoverage&service=wcs&version=1.1.1&&format=image/geotiff" + "&BoundingBox=-45,146,-42,147,urn:ogc:def:crs:EPSG:6.6:4326"; Document dom = getAsDOM( "wcs/BlueMarble/wcs?identifier=" + getLayerId(TASMANIA_BM) + queryString); // print(dom); // check it's an error, check we're getting it because of the input limits assertEquals("ows:ExceptionReport", dom.getDocumentElement().getNodeName()); String error = xpath.evaluate( "/ows:ExceptionReport/ows:Exception/ows:ExceptionText/text()", dom); assertTrue(error.matches(".*read too much data.*")); } finally { setInputLimit(0); } }
@Test public void testRequestDisabledResource() throws Exception { Catalog catalog = getCatalog(); ResourceInfo tazbm = catalog.getResourceByName(getLayerId(MockData.TASMANIA_BM), ResourceInfo.class); try { tazbm.setEnabled(false); catalog.save(tazbm); String queryString = "&request=getcoverage&service=wcs&version=1.0.0&format=image/geotiff&bbox=146,-45,147,-42" + "&crs=EPSG:4326&width=150&height=150"; Document dom = getAsDOM("wcs?sourcecoverage=" + TASMANIA_BM.getLocalPart() + queryString); // print(dom); assertEquals("ServiceExceptionReport", dom.getDocumentElement().getNodeName()); } finally { tazbm.setEnabled(true); catalog.save(tazbm); } }
@Test public void testTimeInputLimitsCustom() throws Exception { GeoServer gs = getGeoServer(); WCSInfo wcs = gs.getService(WCSInfo.class); wcs.setMaxRequestedDimensionValues(2); gs.save(wcs); try { String queryString = "&request=getcoverage&service=wcs&version=1.1.1&&format=image/geotiff" + "&BoundingBox=-45,146,-42,147,urn:ogc:def:crs:EPSG:6.6:4326&timeSequence=2010-01-01/2011-01-01/P1D"; Document dom = getAsDOM( "wcs/BlueMarble/wcs?identifier=" + getLayerId(TASMANIA_BM) + queryString); // print(dom); String text = checkOws11Exception(dom, ServiceException.INVALID_PARAMETER_VALUE, "time"); assertThat(text, containsString("More than 2 times")); } finally { wcs.setMaxRequestedDimensionValues( DimensionInfo.DEFAULT_MAX_REQUESTED_DIMENSION_VALUES); gs.save(wcs); } }
@Test public void testTimeRangeKVP() throws Exception { setupRasterDimension(TIMERANGES, ResourceInfo.TIME, DimensionPresentation.LIST, null); setupRasterDimension(TIMERANGES, ResourceInfo.ELEVATION, DimensionPresentation.LIST, null); String baseUrl = "wcs?request=getcoverage&service=wcs&version=1.0.0&format=image/geotiff" + "&bbox=0.237,40.562,14.593,44.558&crs=EPSG:4326&width=25&height=25" + "&coverage=" + getLayerId(TIMERANGES); // last range MockHttpServletResponse response = getAsServletResponse( baseUrl + "&TIME=2008-11-05T00:00:00.000Z/2008-11-06T12:00:00.000Z"); assertEquals("image/tiff", response.getContentType()); checkPixelValue(response, 10, 10, 13.337999683572); // middle hole, no data --> we should get back an exception Document dom = getAsDOM(baseUrl + "&TIME=2008-11-04T12:00:00.000Z/2008-11-04T16:00:00.000Z"); // print(dom); XMLAssert.assertXpathEvaluatesTo("1", "count(//ServiceExceptionReport)", dom); // first range response = getAsServletResponse( baseUrl + "&TIME=2008-10-31T12:00:00.000Z/2008-10-31T16:00:00.000Z"); assertEquals("image/tiff", response.getContentType()); checkPixelValue(response, 10, 10, 18.2659999176394); }