/* (c) 2014 - 2015 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.csw;
import static junit.framework.Assert.assertEquals;
import static org.custommonkey.xmlunit.XMLAssert.assertXpathEvaluatesTo;
import java.util.HashMap;
import java.util.Map;
import net.opengis.cat.csw20.GetDomainType;
import org.custommonkey.xmlunit.NamespaceContext;
import org.custommonkey.xmlunit.SimpleNamespaceContext;
import org.custommonkey.xmlunit.XMLUnit;
import org.custommonkey.xmlunit.XpathEngine;
import org.geoserver.csw.kvp.GetDomainKvpRequestReader;
import org.geoserver.csw.xml.v2_0_2.CSWXmlReader;
import org.geoserver.ows.xml.v1_0.OWS;
import org.geoserver.util.EntityResolverProvider;
import org.geotools.csw.CSWConfiguration;
import org.geotools.filter.v1_1.OGC;
import org.geotools.xlink.XLINK;
import org.junit.Test;
import org.w3c.dom.Document;
public class GetDomainTest extends CSWSimpleTestSupport {
static XpathEngine xpath = XMLUnit.newXpathEngine();
static {
Map<String, String> prefixMap = new HashMap<String, String>();
prefixMap.put("ows", OWS.NAMESPACE);
prefixMap.put("ogc", OGC.NAMESPACE);
prefixMap.put("gml", "http://www.opengis.net/gml");
prefixMap.put("gmd", "http://www.isotc211.org/2005/gmd");
prefixMap.put("xlink", XLINK.NAMESPACE);
NamespaceContext nameSpaceContext = new SimpleNamespaceContext(prefixMap);
xpath.setNamespaceContext(nameSpaceContext);
}
@Test
public void testKVPParameter() throws Exception {
Map<String, Object> raw = new HashMap<String, Object>();
raw.put("service", "CSW");
raw.put("version", "2.0.2");
raw.put("request", "GetDomain");
raw.put("parameterName", "GetRecords.resultType");
GetDomainKvpRequestReader reader = new GetDomainKvpRequestReader();
Object request = reader.createRequest();
GetDomainType gd = (GetDomainType) reader.read(request, parseKvp(raw), raw);
assertEquals("CSW", gd.getService());
assertEquals("2.0.2", gd.getVersion());
assertEquals("GetRecords.resultType", gd.getParameterName());
}
@Test
public void testKVPProperty() throws Exception {
Map<String, Object> raw = new HashMap<String, Object>();
raw.put("service", "CSW");
raw.put("version", "2.0.2");
raw.put("request", "GetDomain");
raw.put("propertyName", "dc:title");
GetDomainKvpRequestReader reader = new GetDomainKvpRequestReader();
Object request = reader.createRequest();
GetDomainType gd = (GetDomainType) reader.read(request, parseKvp(raw), raw);
assertEquals("CSW", gd.getService());
assertEquals("2.0.2", gd.getVersion());
assertEquals("dc:title", gd.getPropertyName());
}
@Test
public void testXMLReaderParameter() throws Exception {
CSWXmlReader reader = new CSWXmlReader("GetDomain", "2.0.2", new CSWConfiguration(),
EntityResolverProvider.RESOLVE_DISABLED_PROVIDER);
GetDomainType gd = (GetDomainType) reader.read(null,
getResourceAsReader("GetDomainParameter.xml"), (Map) null);
assertEquals("CSW", gd.getService());
assertEquals("2.0.2", gd.getVersion());
assertEquals("GetRecords.resultType", gd.getParameterName());
}
@Test
public void testXMLReaderProperty() throws Exception {
CSWXmlReader reader = new CSWXmlReader("GetDomain", "2.0.2", new CSWConfiguration(),
EntityResolverProvider.RESOLVE_DISABLED_PROVIDER);
GetDomainType gd = (GetDomainType) reader.read(null,
getResourceAsReader("GetDomainProperty.xml"), (Map) null);
assertEquals("CSW", gd.getService());
assertEquals("2.0.2", gd.getVersion());
assertEquals("dc:title", gd.getPropertyName());
}
@Test
public void testGETReaderParameter() throws Exception {
Document dom = getAsDOM(BASEPATH
+ "?service=csw&version=2.0.2&request=GetDomain¶meterName=GetRecords.resultType");
// print(dom);
//checkValidationErrors(dom);
assertXpathEvaluatesTo("GetRecords.resultType", "/csw:GetDomainResponse/csw:DomainValues/csw:ParameterName", dom);
assertXpathEvaluatesTo("3", "count(//csw:Value)", dom);
}
@Test
public void testGETReaderProperty() throws Exception {
Document dom = getAsDOM(BASEPATH
+ "?service=csw&version=2.0.2&request=GetDomain&propertyName=dc:title", "ISO-8859-1");
print(dom);
//checkValidationErrors(dom);
assertXpathEvaluatesTo("dc:title", "/csw:GetDomainResponse/csw:DomainValues/csw:PropertyName", dom);
assertXpathEvaluatesTo("9", "count(//csw:Value)", dom);
}
}