/* (c) 2014 Open Source Geospatial Foundation - all rights reserved * (c) 2001 - 2013 OpenPlans * This code is licensed under the GPL 2.0 license, available at the root * application directory. */ package org.geoserver.test; import static org.junit.Assert.*; import org.junit.Test; import org.geotools.data.complex.AppSchemaDataAccess; import org.w3c.dom.Document; /** * WFS GetFeature to test integration of {@link AppSchemaDataAccess} with GeoServer. * * @author Ben Caradoc-Davies, CSIRO Exploration and Mining */ public class XlinkWfsTest extends AbstractAppSchemaTestSupport { @Override protected XlinkMockData createTestData() { return new XlinkMockData(); } /** * Test whether GetCapabilities returns wfs:WFS_Capabilities. */ @Test public void testGetCapabilities() { Document doc = getAsDOM("wfs?request=GetCapabilities"); LOGGER.info("WFS GetCapabilities response:\n" + prettyString(doc)); assertEquals("wfs:WFS_Capabilities", doc.getDocumentElement().getNodeName()); } /** * Test whether DescribeFeatureType returns xsd:schema. */ @Test public void testDescribeFeatureType() { Document doc = getAsDOM("wfs?request=DescribeFeatureType&typename=gsml:MappedFeature"); LOGGER.info("WFS DescribeFeatureType response:\n" + prettyString(doc)); assertEquals("xsd:schema", doc.getDocumentElement().getNodeName()); } /** * Test whether GetFeature returns wfs:FeatureCollection. */ @Test public void testGetFeature() { Document doc = getAsDOM("wfs?request=GetFeature&version=1.1.0&typename=gsml:MappedFeature"); LOGGER.info("WFS GetFeature response:\n" + prettyString(doc)); assertEquals("wfs:FeatureCollection", doc.getDocumentElement().getNodeName()); } /** * Test content of GetFeature response. */ @Test public void testGetFeatureContent() { Document doc = getAsDOM("wfs?request=GetFeature&version=1.1.0&typename=gsml:MappedFeature"); LOGGER.info("WFS testGetFeatureContent response:\n" + prettyString(doc)); assertXpathCount(4, "//gsml:MappedFeature", doc); // mf1 assertXpathEvaluatesTo("GUNTHORPE FORMATION", "//gsml:MappedFeature[@gml:id='mf1']/gml:name", doc); assertXpathEvaluatesTo("urn:x-ogc:def:crs:EPSG:4326", "//gsml:MappedFeature[@gml:id='mf1']/gsml:shape/gml:Polygon/@srsName", doc); assertXpathEvaluatesTo("52.5 -1.2 52.6 -1.2 52.6 -1.1 52.5 -1.1 52.5 -1.2", "//gsml:MappedFeature[@gml:id='mf1']/gsml:shape//gml:posList", doc); assertXpathEvaluatesTo("urn:x-test:GeologicUnit:gu.25699", "//gsml:MappedFeature[@gml:id='mf1']/gsml:specification/@xlink:href", doc); // mf2 assertXpathEvaluatesTo("MERCIA MUDSTONE GROUP", "//gsml:MappedFeature[@gml:id='mf2']/gml:name", doc); assertXpathEvaluatesTo("urn:x-ogc:def:crs:EPSG:4326", "//gsml:MappedFeature[@gml:id='mf2']/gsml:shape/gml:Polygon/@srsName", doc); assertXpathEvaluatesTo("52.5 -1.3 52.6 -1.3 52.6 -1.2 52.5 -1.2 52.5 -1.3", "//gsml:MappedFeature[@gml:id='mf2']/gsml:shape//gml:posList", doc); assertXpathEvaluatesTo("urn:x-test:GeologicUnit:gu.25678", "//gsml:MappedFeature[@gml:id='mf2']/gsml:specification/@xlink:href", doc); // mf3 assertXpathEvaluatesTo("CLIFTON FORMATION", "//gsml:MappedFeature[@gml:id='mf3']/gml:name", doc); assertXpathEvaluatesTo("urn:x-ogc:def:crs:EPSG:4326", "//gsml:MappedFeature[@gml:id='mf3']/gsml:shape/gml:Polygon/@srsName", doc); assertXpathEvaluatesTo("52.5 -1.2 52.6 -1.2 52.6 -1.1 52.5 -1.1 52.5 -1.2", "//gsml:MappedFeature[@gml:id='mf3']/gsml:shape//gml:posList", doc); assertXpathEvaluatesTo("urn:x-test:GeologicUnit:gu.25678", "//gsml:MappedFeature[@gml:id='mf3']/gsml:specification/@xlink:href", doc); // mf4 assertXpathEvaluatesTo("MURRADUC BASALT", "//gsml:MappedFeature[@gml:id='mf4']/gml:name", doc); assertXpathEvaluatesTo("urn:x-ogc:def:crs:EPSG:4326", "//gsml:MappedFeature[@gml:id='mf4']/gsml:shape/gml:Polygon/@srsName", doc); assertXpathEvaluatesTo("52.5 -1.3 52.6 -1.3 52.6 -1.2 52.5 -1.2 52.5 -1.3", "//gsml:MappedFeature[@gml:id='mf4']/gsml:shape//gml:posList", doc); assertXpathEvaluatesTo("urn:x-test:GeologicUnit:gu.25682", "//gsml:MappedFeature[@gml:id='mf4']/gsml:specification/@xlink:href", doc); } }