/* Copyright (c) 2001 - 2013 OpenPlans - www.openplans.org. All rights reserved.
* This code is licensed under the GPL 2.0 license, available at the root
* application directory.
*/
package org.geoserver.wps;
import static org.custommonkey.xmlunit.XMLAssert.assertXpathEvaluatesTo;
import static org.custommonkey.xmlunit.XMLAssert.assertXpathExists;
import org.junit.Test;
import org.w3c.dom.Document;
public class DescribeProcessTest extends WPSTestSupport {
@Test
public void testGetBuffer() throws Exception { // Standard Test A.4.3.1
Document d = getAsDOM( root() + "service=wps&request=describeprocess&identifier=JTS:buffer");
// print(d);
testBufferDescription(d);
}
@Test
public void testPostBuffer() throws Exception { // Standard Test A.4.3.2
String request = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n" +
"<DescribeProcess xmlns=\"http://www.opengis.net/wps/1.0.0\" " +
"xmlns:ows=\"http://www.opengis.net/ows/1.1\" " +
"xmlns:xlink=\"http://www.w3.org/1999/xlink\" " +
"xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">\r\n" +
" <ows:Identifier>JTS:buffer</ows:Identifier>\r\n" +
"</DescribeProcess>";
Document d = postAsDOM(root(), request);
// print(d);
testBufferDescription(d);
}
@Test
public void testGetBufferFeatureCollection() throws Exception { // Standard Test A.4.3.1
Document d = getAsDOM( root() + "service=wps&request=describeprocess&identifier=gs:BufferFeatureCollection");
// print(d);
}
private void testBufferDescription(Document d) throws Exception { // Standard Test A.4.3.3
// first off, let's check it's schema compliant
checkValidationErrors(d);
assertXpathExists( "/wps:ProcessDescriptions", d );
assertXpathEvaluatesTo("true", "//ProcessDescription/@storeSupported", d);
assertXpathEvaluatesTo("true", "//ProcessDescription/@statusSupported", d);
String base = "/wps:ProcessDescriptions/ProcessDescription/DataInputs";
// check store and status
//first parameter
assertXpathExists( base + "/Input[1]" , d );
assertXpathExists( base + "/Input[1]/ComplexData", d );
assertXpathEvaluatesTo("text/xml; subtype=gml/3.1.1",
base + "/Input[1]/ComplexData/Default/Format/MimeType/child::text()", d);
assertXpathEvaluatesTo("text/xml; subtype=gml/3.1.1",
base + "/Input[1]/ComplexData/Supported/Format[1]/MimeType/child::text()", d);
assertXpathEvaluatesTo("text/xml; subtype=gml/2.1.2",
base + "/Input[1]/ComplexData/Supported/Format[2]/MimeType/child::text()", d);
assertXpathEvaluatesTo("application/wkt",
base + "/Input[1]/ComplexData/Supported/Format[3]/MimeType/child::text()", d);
//second parameter
assertXpathExists( base + "/Input[2]", d );
assertXpathEvaluatesTo("distance", base + "/Input[2]/ows:Identifier/child::text()", d );
assertXpathExists( base + "/Input[2]/LiteralData", d );
assertXpathEvaluatesTo("xs:double", base + "/Input[2]/LiteralData/ows:DataType/child::text()", d );
//output
base = "/wps:ProcessDescriptions/ProcessDescription/ProcessOutputs";
assertXpathExists( base + "/Output", d );
assertXpathExists( base + "/Output/ComplexOutput", d );
}
/**
* Tests encoding of bounding box outputs
* @throws Exception
*/
@Test
public void testBounds() throws Exception {
Document d = getAsDOM( root() + "service=wps&request=describeprocess&identifier=gs:Bounds");
// print(d);
checkValidationErrors(d);
assertXpathEvaluatesTo("EPSG:4326", "//Output[ows:Identifier='bounds']/BoundingBoxOutput/Default/CRS", d);
assertXpathEvaluatesTo("EPSG:4326", "//Output[ows:Identifier='bounds']/BoundingBoxOutput/Supported/CRS", d);
}
@Test
public void testDefaultValues() throws Exception {
Document d = getAsDOM(root()
+ "service=wps&request=describeprocess&identifier=gs:GeorectifyCoverage");
// print(d);
checkValidationErrors(d);
assertXpathEvaluatesTo("true",
"//Input[ows:Identifier='transparent']/LiteralData/DefaultValue", d);
assertXpathEvaluatesTo("false", "//Input[ows:Identifier='store']/LiteralData/DefaultValue",
d);
}
/* TODO Language Negotiation tests
public void testGetLanguageGood() throws Exception { // Standard Test A.4.3.4
Document d = getAsDOM( root() + "service=wps&request=describeprocess&identifier=gt:buffer&language=en-US" );
print(d);
testBufferDescription(d);
}
public void testGetLanguageBad() throws Exception { // Standard Test A.4.3.4
Document d = getAsDOM( root() + "service=wps&request=describeprocess&identifier=gt:buffer&language=zz-ZZ" );
print(d);
testBufferDescription(d);
}
public void testPostLanguageGod() throws Exception { // Standard Test A.4.3.4
String request = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n" +
"<DescribeProcess xmlns=\"http://www.opengis.net/wps/1.0.0\" " +
"xmlns:ows=\"http://www.opengis.net/ows/1.1\" " +
"xmlns:xlink=\"http://www.w3.org/1999/xlink\" " +
"xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" " +
"language=\"en-US\">\r\n" +
" <ows:Identifier>gt:buffer</ows:Identifier>\r\n" +
"</DescribeProcess>";
Document d = postAsDOM(root(), request);
testBufferDescription(d);
}
public void testPostLanguageBad() throws Exception { // Standard Test A.4.3.4
String request = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n" +
"<DescribeProcess xmlns=\"http://www.opengis.net/wps/1.0.0\" " +
"xmlns:ows=\"http://www.opengis.net/ows/1.1\" " +
"xmlns:xlink=\"http://www.w3.org/1999/xlink\" " +
"xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" " +
"language=\"zz-ZZ\">\r\n" +
" <ows:Identifier>gt:buffer</ows:Identifier>\r\n" +
"</DescribeProcess>";
Document d = postAsDOM(root(), request);
testBufferDescription(d);
}
*/
}