/*
* GeoTools - The Open Source Java GIS Toolkit
* http://geotools.org
*
* (C) 2008, Open Source Geospatial Foundation (OSGeo)
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation;
* version 2.1 of the License.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*/
package org.geotools.wps;
import junit.framework.TestCase;
import net.opengis.ows11.AddressType;
import net.opengis.ows11.CodeType;
import net.opengis.ows11.ContactType;
import net.opengis.ows11.DCPType;
import net.opengis.ows11.HTTPType;
import net.opengis.ows11.KeywordsType;
import net.opengis.ows11.LanguageStringType;
import net.opengis.ows11.MetadataType;
import net.opengis.ows11.OperationType;
import net.opengis.ows11.OperationsMetadataType;
import net.opengis.ows11.RequestMethodType;
import net.opengis.ows11.ResponsiblePartySubsetType;
import net.opengis.ows11.ServiceIdentificationType;
import net.opengis.ows11.ServiceProviderType;
import net.opengis.wps10.LanguagesType1;
import net.opengis.wps10.ProcessBriefType;
import net.opengis.wps10.ProcessOfferingsType;
import net.opengis.wps10.WPSCapabilitiesType;
import org.geotools.xml.Parser;
public class GetCapabilitiesTest extends TestCase {
public void testParse() throws Exception {
WPSConfiguration wps = new WPSConfiguration();
Parser parser = new Parser( wps );
Object o = parser.parse( getClass().getResourceAsStream( "20_wpsGetCapabilities_response.xml"));
assertTrue( o instanceof WPSCapabilitiesType);
WPSCapabilitiesType caps = (WPSCapabilitiesType) o;
assertServiceIdentification( caps.getServiceIdentification() );
assertServiceProvider( caps.getServiceProvider() );
assertOperationsMetadata( caps.getOperationsMetadata() );
assertProcessOfferings( caps.getProcessOfferings() );
assertLanguages( caps.getLanguages() );
}
/**
* <ows:ServiceIdentification>
* <ows:Title>AAFC GDAS-based WPS server</ows:Title>
* <ows:Abstract>AAFC GDAS-based WPS server developed for the OGC WPSie.</ows:Abstract>
* <ows:Keywords>
* <ows:Keyword>WPS</ows:Keyword>
* <ows:Keyword>AAFC</ows:Keyword>
* <ows:Keyword>geospatial</ows:Keyword>
* <ows:Keyword>geoprocessing</ows:Keyword>
* </ows:Keywords>
* <ows:ServiceType>WPS</ows:ServiceType>
* <ows:ServiceTypeVersion>1.0.0</ows:ServiceTypeVersion>
* <ows:ServiceTypeVersion>0.4.0</ows:ServiceTypeVersion>
* <ows:Fees>NONE</ows:Fees>
* <ows:AccessConstraints>NONE</ows:AccessConstraints>
* </ows:ServiceIdentification>
*/
void assertServiceIdentification( ServiceIdentificationType si ) {
assertNotNull( si );
assertEquals( 1, si.getTitle().size() );
assertEquals( "AAFC GDAS-based WPS server", ((LanguageStringType) si.getTitle().get(0)).getValue() );
assertEquals( 1, si.getAbstract().size() );
assertEquals( "AAFC GDAS-based WPS server developed for the OGC WPSie.", ((LanguageStringType) si.getAbstract().get(0)).getValue() );
assertEquals( 1, si.getKeywords().size() );
KeywordsType kw = (KeywordsType) si.getKeywords().get( 0 );
assertEquals( 4, kw.getKeyword().size() );
assertEquals( "WPS", ((LanguageStringType)kw.getKeyword().get(0)).getValue() );
assertEquals( "AAFC", ((LanguageStringType)kw.getKeyword().get(1)).getValue() );
assertEquals( "geospatial", ((LanguageStringType)kw.getKeyword().get(2)).getValue() );
assertEquals( "geoprocessing", ((LanguageStringType)kw.getKeyword().get(3)).getValue() );
assertNotNull( si.getServiceType() );
assertEquals( "WPS", si.getServiceType().getValue() );
assertEquals( 2, si.getServiceTypeVersion().size() );
assertEquals( "1.0.0", si.getServiceTypeVersion().get(0) );
assertEquals( "0.4.0", si.getServiceTypeVersion().get(1) );
assertEquals( "NONE", si.getFees() );
assertEquals( 1, si.getAccessConstraints().size() );
assertEquals( "NONE", si.getAccessConstraints().get(0) );
}
/**
* <ows:ServiceProvider>
* <ows:ProviderName>Agriculture and Agri-Food Canada</ows:ProviderName>
* <ows:ProviderSite xlink:href="http://gis.agr.gc.ca/"/>
* <ows:ServiceContact>
* <ows:IndividualName>Peter Schut</ows:IndividualName>
* <ows:PositionName>Information System Scientist</ows:PositionName>
* <ows:ContactInfo>
* <ows:Phone>
* <ows:Voice>+1 613 759-1874</ows:Voice>
* <ows:Facsimile>+1 613 759-1937</ows:Facsimile>
* </ows:Phone>
* <ows:Address>
* <ows:DeliveryPoint>Room 1135, Neatby Building, 960, Carling Avenue</ows:DeliveryPoint>
* <ows:City>Ottawa</ows:City>
* <ows:AdministrativeArea>ON</ows:AdministrativeArea>
* <ows:PostalCode>K1AOC6</ows:PostalCode>
* <ows:Country>Canada</ows:Country>
* <ows:ElectronicMailAddress>schutp@agr.gc.ca</ows:ElectronicMailAddress>
* </ows:Address>
* </ows:ContactInfo>
* </ows:ServiceContact>
* </ows:ServiceProvider>
*
*/
void assertServiceProvider( ServiceProviderType sp ) {
assertNotNull( sp );
assertEquals( "Agriculture and Agri-Food Canada", sp.getProviderName() );
assertEquals( "http://gis.agr.gc.ca/", sp.getProviderSite().getHref() );
ResponsiblePartySubsetType sc = sp.getServiceContact();
assertNotNull( sc );
assertEquals( "Peter Schut", sc.getIndividualName() );
ContactType ci = sc.getContactInfo();
assertNotNull( ci );
assertEquals( 1, ci.getPhone().getVoice().size() );
assertEquals( "+1 613 759-1874", ci.getPhone().getVoice().get( 0 ) );
assertEquals( 1, ci.getPhone().getFacsimile().size() );
assertEquals( "+1 613 759-1937", ci.getPhone().getFacsimile().get( 0 ) );
AddressType a = ci.getAddress();
assertNotNull( a );
assertEquals( 1, a.getDeliveryPoint().size() );
assertEquals( "Room 1135, Neatby Building, 960, Carling Avenue", a.getDeliveryPoint().get( 0 ) );
assertEquals( "Ottawa", a.getCity() );
assertEquals( "ON", a.getAdministrativeArea() );
assertEquals( "Canada", a.getCountry() );
assertEquals( 1, a.getElectronicMailAddress().size() );
assertEquals( "schutp@agr.gc.ca", a.getElectronicMailAddress().get(0) );
}
/**
* <ows:OperationsMetadata>
* <ows:Operation name="GetCapabilities">
* <ows:DCP>
* <ows:HTTP>
* <ows:Get xlink:href="http://wms1.agr.gc.ca/GeoPS/GeoPS?"/>
* </ows:HTTP>
* </ows:DCP>
* </ows:Operation>
* <ows:Operation name="DescribeProcess">
* <ows:DCP>
* <ows:HTTP>
* <ows:Get xlink:href="http://wms1.agr.gc.ca/GeoPS/GeoPS?"/>
* <ows:Post xlink:href="http://wms1.agr.gc.ca/GeoPS/GeoPS"/>
* </ows:HTTP>
* </ows:DCP>
* </ows:Operation>
* <ows:Operation name="Execute">
* <ows:DCP>
* <ows:HTTP>
* <ows:Get xlink:href="http://wms1.agr.gc.ca/GeoPS/GeoPS?"/>
* <ows:Post xlink:href="http://wms1.agr.gc.ca/GeoPS/GeoPS"/>
* </ows:HTTP>
* </ows:DCP>
* </ows:Operation>
* </ows:OperationsMetadata>
*/
void assertOperationsMetadata( OperationsMetadataType om ) {
assertNotNull( om );
assertEquals( 3, om.getOperation().size() );
OperationType op = (OperationType) om.getOperation().get( 0 );
assertEquals( "GetCapabilities", op.getName() );
assertEquals( 1, op.getDCP().size() );
HTTPType http = ((DCPType)op.getDCP().get(0)).getHTTP();
assertEquals( 1, http.getGet().size() );
assertEquals( "http://wms1.agr.gc.ca/GeoPS/GeoPS?", ((RequestMethodType)http.getGet().get(0)).getHref() );
op = (OperationType) om.getOperation().get( 1 );
assertEquals( "DescribeProcess", op.getName() );
assertEquals( 1, op.getDCP().size() );
http = ((DCPType)op.getDCP().get(0)).getHTTP();
assertEquals( 1, http.getGet().size() );
assertEquals( "http://wms1.agr.gc.ca/GeoPS/GeoPS?", ((RequestMethodType)http.getGet().get(0)).getHref() );
assertEquals( 1, http.getPost().size() );
assertEquals( "http://wms1.agr.gc.ca/GeoPS/GeoPS", ((RequestMethodType)http.getPost().get(0)).getHref() );
op = (OperationType) om.getOperation().get( 2 );
assertEquals( "Execute", op.getName() );
assertEquals( 1, op.getDCP().size() );
http = ((DCPType)op.getDCP().get(0)).getHTTP();
assertEquals( 1, http.getGet().size() );
assertEquals( "http://wms1.agr.gc.ca/GeoPS/GeoPS?", ((RequestMethodType)http.getGet().get(0)).getHref() );
assertEquals( 1, http.getPost().size() );
assertEquals( "http://wms1.agr.gc.ca/GeoPS/GeoPS", ((RequestMethodType)http.getPost().get(0)).getHref() );
}
/**
* <wps:ProcessOfferings>
* <wps:Process wps:processVersion="1">
* <ows:Identifier>buffer</ows:Identifier>
* <ows:Title>Buffer a polygon feature</ows:Title>
* <ows:Abstract>Buffer the polygon coordinates found in one GML stream by a given buffer distance, and output the results in GML.</ows:Abstract>
* <ows:Metadata xlink:title="buffer" />
* <ows:Metadata xlink:title="polygon" />
* </wps:Process>
* </wps:ProcessOfferings>
*/
void assertProcessOfferings( ProcessOfferingsType po ) {
assertNotNull( po );
assertEquals( 1, po.getProcess().size() );
ProcessBriefType pb = (ProcessBriefType) po.getProcess().get( 0 );
assertNotNull( pb.getIdentifier() );
assertEquals( "buffer", ((CodeType) pb.getIdentifier()).getValue() );
assertNotNull( pb.getTitle() );
assertEquals( "Buffer a polygon feature", pb.getTitle().getValue() );
assertNotNull( pb.getAbstract() );
assertEquals( "Buffer the polygon coordinates found in one GML stream by a given buffer distance, and output the results in GML.", pb.getAbstract().getValue() );
assertEquals( 2, pb.getMetadata().size() );
assertEquals( "buffer", ((MetadataType)pb.getMetadata().get(0)).getTitle() );
assertEquals( "polygon", ((MetadataType)pb.getMetadata().get(1)).getTitle() );
}
void assertLanguages( LanguagesType1 l ) {
assertNotNull( l.getDefault() );
assertEquals( "en-CA", l.getDefault().getLanguage() );
assertEquals( 2, l.getSupported().getLanguage().size() );
assertEquals( "en-CA", l.getSupported().getLanguage().get( 0 ) );
assertEquals( "fr-CA", l.getSupported().getLanguage().get( 1 ) );
}
}