/* (c) 2014 - 2016 Open Source Geospatial Foundation - all rights reserved
* (c) 2001 - 2007 OpenPlans
* This code is licensed under the GPL 2.0 license, availible at the root
* application directory.
*/
package org.geoserver.wms.capabilities;
import static org.junit.Assert.assertEquals;
import java.io.StringWriter;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.custommonkey.xmlunit.SimpleNamespaceContext;
import org.custommonkey.xmlunit.XMLUnit;
import org.custommonkey.xmlunit.XpathEngine;
import org.geoserver.catalog.MetadataMap;
import org.geoserver.wms.ExtendedCapabilitiesProvider;
import org.geoserver.wms.GetCapabilitiesRequest;
import org.geoserver.wms.WMS;
import org.geoserver.wms.WMSInfo;
import org.geoserver.wms.WMSTestSupport;
import org.junit.Test;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
/**
* Unit test suite for {@link GetCapabilitiesResponse}.
*
* @author Antonio Cerciello - Geocat
* @version $Id$
*/
public class GetCapabilitiesSRCOrderTest extends WMSTestSupport {
/** The xpath. */
private final XpathEngine xpath;
/** The Constant BASE_URL. */
private static final String BASE_URL = "http://localhost/geoserver";
/**
* Instantiates a new gets the capabilities SRC order test.
*/
public GetCapabilitiesSRCOrderTest() {
Map<String, String> namespaces = new HashMap<String, String>();
namespaces.put("xlink", "http://www.w3.org/1999/xlink");
namespaces.put("wms", "http://www.opengis.net/wms");
XMLUnit.setXpathNamespaceContext(new SimpleNamespaceContext(namespaces));
xpath = XMLUnit.newXpathEngine();
}
/**
* Test root layer.
*
* @throws Exception the exception
*/
@Test
public void testRootLayer()throws Exception{
Document dom = findCapabilities(false);
// print(dom);
checkWms13ValidationErrors(dom);
DOMSource domSource = new DOMSource(dom);
StringWriter writer = new StringWriter();
StreamResult result = new StreamResult(writer);
TransformerFactory tf = TransformerFactory.newInstance();
Transformer transformer = tf.newTransformer();
transformer.transform(domSource, result);
assertEquals(writer.toString().indexOf("22222") < writer.toString().indexOf("11111") , true);
}
/**
* Find capabilities.
*
* @param scaleHintUnitsPerDiaPixel the scale hint units per dia pixel
* @return the document
* @throws Exception the exception
*/
private Document findCapabilities(Boolean scaleHintUnitsPerDiaPixel) throws Exception{
//set the Scalehint units per diagonal pixel setting.
WMS wms = getWMS();
WMSInfo info=wms.getServiceInfo();
info.getSRS().add("22222");
info.getSRS().add("11111");
MetadataMap mm= info.getMetadata();
mm.put(WMS.SCALEHINT_MAPUNITS_PIXEL, scaleHintUnitsPerDiaPixel);
info.getGeoServer().save(info);
Capabilities_1_3_0_Transformer tr = new Capabilities_1_3_0_Transformer(wms, BASE_URL,
wms.getAllowedMapFormats(), new HashSet<ExtendedCapabilitiesProvider>());
GetCapabilitiesRequest req = new GetCapabilitiesRequest();
req.setBaseUrl(BASE_URL);
req.setVersion(WMS.VERSION_1_3_0.toString());
Document dom = WMSTestSupport.transform(req, tr);
Element root = dom.getDocumentElement();
assertEquals(WMS.VERSION_1_3_0.toString(), root.getAttribute("version"));
return dom;
}
}