package org.geoserver.wcs2_0.xml; import static org.custommonkey.xmlunit.XMLAssert.assertXpathEvaluatesTo; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import java.io.File; import org.apache.commons.io.FileUtils; import org.geoserver.wcs2_0.WCSTestSupport; import org.geotools.xml.PreventLocalEntityResolver; import org.junit.Test; import org.w3c.dom.Document; public class DescribeCoverageTest extends WCSTestSupport { @Test public void testEntityExpansion() throws Exception { final File xml = new File("./src/test/resources/testDescribeCoverageEntityExpansion.xml"); final String request = FileUtils.readFileToString(xml); Document dom = postAsDOM("wcs", request); assertNotNull(dom); // print(dom, System.out); String text = xpath.evaluate("//ows:ExceptionText", dom); assertTrue(text.contains(PreventLocalEntityResolver.ERROR_MESSAGE_BASE)); } @Test public void testDescribeCoverageSimple() throws Exception { final File xml= new File("./src/test/resources/testDescribeCoverage.xml"); final String request= FileUtils.readFileToString(xml); Document dom = postAsDOM("wcs", request); assertNotNull(dom); // print(dom, System.out); // validate checkValidationErrors(dom, WCS20_SCHEMA); // check it is good assertXpathEvaluatesTo("wcs__BlueMarble", "//wcs:CoverageDescription//wcs:CoverageId", dom); assertXpathEvaluatesTo("3", "count(//wcs:CoverageDescription//gmlcov:rangeType//swe:DataRecord//swe:field)", dom); assertXpathEvaluatesTo("image/tiff", "//wcs:CoverageDescriptions//wcs:CoverageDescription[1]//wcs:ServiceParameters//wcs:nativeFormat", dom); // enforce pixel center assertXpathEvaluatesTo("-43.0020833333312 146.5020833333281", "//wcs:CoverageDescriptions//wcs:CoverageDescription[1]//gml:domainSet//gml:RectifiedGrid//gml:origin//gml:Point//gml:pos", dom); } @Test public void testDescribeCoverageMultiband() throws Exception { final File xml= new File("./src/test/resources/testDescribeCoverageMultiBand.xml"); final String request= FileUtils.readFileToString(xml); Document dom = postAsDOM("wcs", request); assertNotNull(dom); // print(dom, System.out); checkValidationErrors(dom, WCS20_SCHEMA); // check it is good assertXpathEvaluatesTo("wcs__multiband", "//wcs:CoverageDescription//wcs:CoverageId", dom); assertXpathEvaluatesTo("9", "count(//wcs:CoverageDescription//gmlcov:rangeType//swe:DataRecord//swe:field)", dom); assertXpathEvaluatesTo("image/tiff", "//wcs:CoverageDescriptions//wcs:CoverageDescription[1]//wcs:ServiceParameters//wcs:nativeFormat", dom); } }