public void testDescribeDemCoverageKvp() throws Exception { Document dom = getAsDOM(BASEPATH + "?request=DescribeCoverage&service=WCS&version=1.0.0&coverage=" + getLayerId(TASMANIA_DEM)); // print(dom); checkValidationErrors(dom, WCS10_DESCRIBECOVERAGE_SCHEMA); checkDemCoverageDescription(dom); }
public void testDescribeMissingVersion() throws Exception { Document dom = getAsDOM(BASEPATH + "?request=DescribeCoverage&service=WCS&coverage=" + getLayerId(TASMANIA_DEM)); // print(dom); checkOws11Exception(dom); Element element = (Element) dom.getElementsByTagName("ServiceException").item(0); assertEquals("MissingParameterValue", element.getAttribute("code")); assertEquals("version", element.getAttribute("locator")); }
public void testDescribeAll() throws Exception { Document dom = getAsDOM(BASEPATH + "?request=DescribeCoverage&service=WCS&version=1.0.0"); // print(dom); // the response is compliant checkValidationErrors(dom, WCS10_DESCRIBECOVERAGE_SCHEMA); // check all coverages have been described int count = getCatalog().getCoverages().size(); assertEquals(count, dom.getElementsByTagName("wcs:CoverageOffering").getLength()); }
public void testDescribeDemCoverageXml() throws Exception { List<Exception> errors = new ArrayList<Exception>(); String request = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n" + // "<wcs:DescribeCoverage service=\"WCS\" " + // "xmlns:ows=\"http://www.opengis.net/ows/1.1\"\r\n" + // " xmlns:wcs=\"http://www.opengis.net/wcs\"\r\n" + // " xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" \r\n" + // " version=\"1.0.0\" >\r\n" + // " <wcs:Coverage>" + getLayerId(TASMANIA_DEM) + "</wcs:Coverage>\r\n" + // "</wcs:DescribeCoverage>"; Document dom = postAsDOM(BASEPATH, request, errors); checkValidationErrors(dom, WCS10_DESCRIBECOVERAGE_SCHEMA); checkDemCoverageDescription(dom); }
@Test public void testDescribeRotatedCoverage() throws Exception { Document dom = getAsDOM( BASEPATH + "?request=DescribeCoverage&service=WCS&version=1.1.1&identifiers=" + getLayerId(ROTATED_CAD)); checkValidationErrors(dom, WCS11_SCHEMA); getLayerId(ROTATED_CAD), "/wcs:CoverageDescriptions/wcs:CoverageDescription/wcs:Identifier", dom);
public void testDescribeRotatedCoverage() throws Exception { Document dom = getAsDOM(BASEPATH + "?request=DescribeCoverage&service=WCS&version=1.0.0&coverage=" + getLayerId(ROTATED_CAD)); checkValidationErrors(dom, WCS10_DESCRIBECOVERAGE_SCHEMA); assertEquals(1, dom.getElementsByTagName("wcs:CoverageDescription").getLength()); assertEquals(1, dom.getElementsByTagName("wcs:CoverageOffering").getLength()); assertXpathEvaluatesTo(getLayerId(ROTATED_CAD), "/wcs:CoverageDescription/wcs:CoverageOffering/wcs:name", dom); dom).item(1); String[] offsetStrsHigh = gridOffsets.getTextContent().split(" "); assertEquals(2, offsetStrsLow.length); assertEquals(2, offsetStrsHigh.length); double[] offsets = new double[4]; for (int i = 0; i < offsetStrsLow.length; i++) { assertTrue(offsets[0] < 0); assertTrue(offsets[1] > 0); assertTrue(offsets[2] > 0); assertTrue(offsets[3] > 0); assertEquals(1, dom.getElementsByTagName("wcs:AxisDescription").getLength());
@Test public void testDescribeMissingVersion() throws Exception { Document dom = getAsDOM( BASEPATH + "?request=DescribeCoverage&service=WCS&identifiers=" + getLayerId(TASMANIA_DEM)); // print(dom); checkOws11Exception(dom); Element element = (Element) dom.getElementsByTagName("ows:Exception").item(0); assertEquals("MissingParameterValue", element.getAttribute("exceptionCode")); assertEquals("version", element.getAttribute("locator")); }
@Test public void testDescribeAll() throws Exception { Document dom = getAsDOM(BASEPATH + "?request=DescribeCoverage&service=WCS&version=1.0.0"); // print(dom); // the response is compliant checkValidationErrors(dom, WCS10_DESCRIBECOVERAGE_SCHEMA); // check all coverages have been described int count = getCatalog().getCoverages().size(); assertEquals(count, dom.getElementsByTagName("wcs:CoverageOffering").getLength()); }
public void testDescribeUnknownCoverageKvp() throws Exception { Document dom = getAsDOM(BASEPATH + "?request=DescribeCoverage&service=WCS&version=1.0.0&coverage=plop"); // print(dom); checkOws11Exception(dom); Element element = (Element) dom.getElementsByTagName("ServiceException").item(0); assertEquals("InvalidParameterValue", element.getAttribute("code")); assertEquals("coverage", element.getAttribute("locator")); assertTrue(element.getTextContent().contains("plop")); }
@Override protected void onSetUp(SystemTestData testData) throws Exception { super.onSetUp(testData); testData.addRasterLayer(SF_RAIN, "rain.zip", "asc", getCatalog()); testData.addRasterLayer(GS_RAIN, "rain.zip", "asc", getCatalog()); testData.addRasterLayer( NO_RANGE, "norange.tiff", null, null, DescribeCoverageTest.class, getCatalog()); // the GUI builds the dimension without range, let's do the same here CoverageInfo noRange = getCatalog().getCoverageByName(getLayerId(NO_RANGE)); CoverageDimensionInfo cdi = noRange.getDimensions().get(0); cdi.setRange(null); getCatalog().save(noRange); GeoServerInfo global = getGeoServer().getGlobal(); global.getSettings().setProxyBaseUrl("src/test/resources/geoserver"); getGeoServer().save(global); }
public void testDescribeUnknownCoverageXml() throws Exception { List<Exception> errors = new ArrayList<Exception>(); String request = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n" + // "<wcs:DescribeCoverage service=\"WCS\" " + // "xmlns:ows=\"http://www.opengis.net/ows/1.1\"\r\n" + // " xmlns:wcs=\"http://www.opengis.net/wcs\"\r\n" + // " xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" \r\n" + // " version=\"1.0.0\" >\r\n" + // " <wcs:Coverage>plop</wcs:Coverage>\r\n" + // "</wcs:DescribeCoverage>"; Document dom = postAsDOM(BASEPATH, request, errors); // print(dom); checkOws11Exception(dom); Element element = (Element) dom.getElementsByTagName("ServiceException").item(0); assertEquals("InvalidParameterValue", element.getAttribute("code")); assertEquals("coverage", element.getAttribute("locator")); assertTrue(element.getTextContent().contains("plop")); }
@Test public void testDescribeUnknownCoverageKvp() throws Exception { Document dom = getAsDOM( BASEPATH + "?request=DescribeCoverage&service=WCS&version=1.1.1&identifiers=plop"); // print(dom); checkOws11Exception(dom); Element element = (Element) dom.getElementsByTagName("ows:Exception").item(0); assertEquals("InvalidParameterValue", element.getAttribute("exceptionCode")); assertEquals("identifiers", element.getAttribute("locator")); assertTrue(element.getTextContent().contains("plop")); }
@Test public void testDescribeUnknownCoverageXml() throws Exception { List<Exception> errors = new ArrayList<Exception>(); String request = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n" + // "<wcs:DescribeCoverage service=\"WCS\" " + // "xmlns:ows=\"http://www.opengis.net/ows/1.1\"\r\n" + // " xmlns:wcs=\"http://www.opengis.net/wcs/1.1.1\"\r\n" + // " xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" \r\n" + // " version=\"1.1.1\" >\r\n" + // " <wcs:Identifier>plop</wcs:Identifier>\r\n" + // "</wcs:DescribeCoverage>"; Document dom = postAsDOM(BASEPATH, request, errors); // print(dom); checkOws11Exception(dom); Element element = (Element) dom.getElementsByTagName("ows:Exception").item(0); assertEquals("InvalidParameterValue", element.getAttribute("exceptionCode")); assertEquals("identifiers", element.getAttribute("locator")); assertTrue(element.getTextContent().contains("plop")); }
@Test public void testDescribeByIdentifiers() throws Exception { String queryString = "&request=getcoverage&service=wcs&version=1.1.1&&format=image/geotiff" + "&BoundingBox=-45,146,-42,149,urn:ogc:def:crs:EPSG:6.6:4326"; // Get identifiers from getCapabilities Document dom = getAsDOM("wcs?request=GetCapabilities&service=WCS"); NodeList nodes = xpath.getMatchingNodes( "//wcs:CoverageSummary/wcs:Identifier[text()[contains(.,'rain')]]", dom); assertTrue(nodes.getLength() >= 2); for (int i = 0; i < nodes.getLength(); i++) { String identifier = nodes.item(i).getTextContent(); dom = getAsDOM( "wcs?request=DescribeCoverage&service=WCS&version=1.1.1&identifiers=" + identifier); // Response should be a valid document consisting of 1 coverage with a matching // identifier print(dom); assertEquals("wcs:CoverageDescriptions", dom.getDocumentElement().getNodeName()); assertEquals(1, dom.getElementsByTagName("wcs:CoverageDescription").getLength()); assertEquals( identifier, dom.getElementsByTagName("wcs:Identifier").item(0).getTextContent()); } }
@Before public void revertTasmaniaDem() throws IOException { getTestData().addDefaultRasterLayer(TASMANIA_DEM, getCatalog()); }
@Test public void testMethodNameInjection() throws Exception { Document dom = getAsDOM( "wcs?service=WCS&version=1.0.0" + "&request=DescribeCoverage%22%3E%3C/ServiceException%3E%3Cfoo%3EHello,%20World%3C/foo%3E%3CServiceException+foo=%22" + "&coverage=" + getLayerId(TIMERANGES)); // print(dom); // check we have a valid exception XMLAssert.assertXpathExists("/ServiceExceptionReport/ServiceException", dom); XMLAssert.assertXpathEvaluatesTo( "OperationNotSupported", "/ServiceExceptionReport/ServiceException/@code", dom); // the locator has been escaped XMLAssert.assertXpathEvaluatesTo( "DescribeCoverage\"></ServiceException><foo>Hello, World</foo><ServiceException foo=\"", "/ServiceExceptionReport/ServiceException/@locator", dom); // the attack failed and the foo element is not there XMLAssert.assertXpathNotExists("//foo", dom); } }
private void checkDemCoverageDescription(Document dom) throws Exception { assertEquals(1, dom.getElementsByTagName("wcs:CoverageDescription").getLength()); assertEquals(1, dom.getElementsByTagName("wcs:CoverageOffering").getLength()); assertXpathEvaluatesTo(getLayerId(TASMANIA_DEM), "/wcs:CoverageDescription/wcs:CoverageOffering/wcs:name", dom); dom).item(1); String[] offsetStrsHigh = gridOffsets.getTextContent().split(" "); assertEquals(2, offsetStrsLow.length); assertEquals(2, offsetStrsHigh.length); double[] offsets = new double[4]; for (int i = 0; i < offsetStrsLow.length; i++) { offsets[i] = Double.parseDouble(offsetStrsHigh[i - 2]); assertTrue(offsets[0] > 0); assertEquals(0.0, offsets[1]); assertEquals(0.0, offsets[2]); assertTrue(offsets[3] < 0); assertEquals(1, dom.getElementsByTagName("wcs:AxisDescription").getLength());
public void testWorkspaceQualified() throws Exception { String request = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n" + // "<wcs:DescribeCoverage service=\"WCS\" " + // "xmlns:ows=\"http://www.opengis.net/ows/1.1\"\r\n" + // " xmlns:wcs=\"http://www.opengis.net/wcs\"\r\n" + // " xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" \r\n" + // " version=\"1.0.0\" >\r\n" + // " <wcs:Coverage>" + TASMANIA_DEM.getLocalPart() + "</wcs:Coverage>\r\n" + // "</wcs:DescribeCoverage>"; Document dom = postAsDOM("cdf/wcs", request); assertEquals("ServiceExceptionReport", dom.getDocumentElement().getNodeName()); dom = postAsDOM("wcs", request); assertEquals("wcs:CoverageDescription", dom.getDocumentElement().getNodeName()); }
@Test public void testWorkspaceQualified() throws Exception { Document dom = getAsDOM( "cdf/wcs?request=DescribeCoverage&service=WCS&version=1.1.1&identifiers=" + TASMANIA_DEM.getLocalPart()); assertEquals("ows:ExceptionReport", dom.getDocumentElement().getNodeName()); dom = getAsDOM( "wcs?request=DescribeCoverage&service=WCS&version=1.1.1&identifiers=" + TASMANIA_DEM.getLocalPart()); assertEquals("wcs:CoverageDescriptions", dom.getDocumentElement().getNodeName()); }
@Test public void testWorkspaceQualified() throws Exception { String request = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n" + // "<wcs:DescribeCoverage service=\"WCS\" " + // "xmlns:ows=\"http://www.opengis.net/ows/1.1\"\r\n" + // " xmlns:wcs=\"http://www.opengis.net/wcs\"\r\n" + // " xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" \r\n" + // " version=\"1.0.0\" >\r\n" + // " <wcs:Coverage>" + TASMANIA_DEM.getLocalPart() + "</wcs:Coverage>\r\n" + // "</wcs:DescribeCoverage>"; Document dom = postAsDOM("cdf/wcs", request); assertEquals("ServiceExceptionReport", dom.getDocumentElement().getNodeName()); dom = postAsDOM("wcs", request); assertEquals("wcs:CoverageDescription", dom.getDocumentElement().getNodeName()); }