package org.geoserver.wms; import java.util.ArrayList; import java.util.List; import java.util.ListIterator; import junit.framework.Test; import org.custommonkey.xmlunit.XMLUnit; import org.custommonkey.xmlunit.XpathEngine; import org.geoserver.catalog.LayerGroupInfo; import org.geoserver.catalog.LayerInfo; import org.geoserver.config.GeoServerInfo; import org.geoserver.data.test.MockData; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.NodeList; public class CapabilitiesTest extends WMSTestSupport { public CapabilitiesTest() { super(); } /** * This is a READ ONLY TEST so we can use one time setup */ public static Test suite() { return new OneTimeTestSetup(new CapabilitiesTest()); } @Override protected void oneTimeSetUp() throws Exception { super.oneTimeSetUp(); GeoServerInfo global = getGeoServer().getGlobal(); global.setProxyBaseUrl("src/test/resources/geoserver"); getGeoServer().save(global); } @Override protected void populateDataDirectory(MockData dataDirectory) throws Exception { super.populateDataDirectory(dataDirectory); dataDirectory.addWellKnownCoverageTypes(); } public void testCapabilities() throws Exception { Document dom = dom(get("wms?request=getCapabilities"), false); Element e = dom.getDocumentElement(); assertEquals("WMT_MS_Capabilities", e.getLocalName()); } public void testFilteredCapabilitiesCite() throws Exception { Document dom = dom(get("wms?request=getCapabilities&namespace=cite"), true); Element e = dom.getDocumentElement(); assertEquals("WMT_MS_Capabilities", e.getLocalName()); XpathEngine xpath = XMLUnit.newXpathEngine(); assertTrue(xpath.getMatchingNodes("//Layer/Name[starts-with(., cite)]", dom).getLength() > 0); assertEquals(0, xpath.getMatchingNodes("//Layer/Name[not(starts-with(., cite))]", dom).getLength()); } public void testLayerCount() throws Exception { List<LayerInfo> layers = new ArrayList<LayerInfo>(getCatalog().getLayers()); for (ListIterator<LayerInfo> it = layers.listIterator(); it.hasNext();) { LayerInfo next = it.next(); if (next.getName().equals(MockData.GEOMETRYLESS.getLocalPart())) { it.remove(); } } Document dom = dom(get("wms?request=getCapabilities"), true); XpathEngine xpath = XMLUnit.newXpathEngine(); NodeList nodeLayers = xpath.getMatchingNodes("/WMT_MS_Capabilities/Capability/Layer/Layer", dom); assertEquals(layers.size(), nodeLayers.getLength()); } }