package org.geoserver.gss; import static org.custommonkey.xmlunit.XMLAssert.*; import static org.geoserver.gss.GSSCore.*; import org.geotools.data.DataUtilities; import org.geotools.data.FeatureStore; import org.geotools.data.VersioningDataStore; import org.geotools.feature.simple.SimpleFeatureBuilder; import org.opengis.feature.simple.SimpleFeature; import org.opengis.feature.simple.SimpleFeatureType; import org.w3c.dom.Document; import com.mockrunner.mock.web.MockHttpServletResponse; public class GetCentralRevisionTest extends GSSTestSupport { @Override protected void setUpInternal() throws Exception { super.setUpInternal(); VersioningDataStore synch = (VersioningDataStore) getCatalog().getDataStoreByName("synch").getDataStore(null); FeatureStore<SimpleFeatureType, SimpleFeature> fs = (FeatureStore<SimpleFeatureType, SimpleFeature>) synch.getFeatureSource(SYNCH_HISTORY); SimpleFeatureBuilder fb = new SimpleFeatureBuilder(fs.getSchema()); // three synchs occurred on this layer fs.addFeatures(DataUtilities.collection(fb.buildFeature(null, new Object[] {"roads", 150, 160}))); fs.addFeatures(DataUtilities.collection(fb.buildFeature(null, new Object[] {"roads", 182, 210}))); fs.addFeatures(DataUtilities.collection(fb.buildFeature(null, new Object[] {"roads", 193, 340}))); // and none on restricted } /** * Tests a layer that is not there * @throws Exception */ public void testCentralRevisionUnknownLayer() throws Exception { MockHttpServletResponse response = getAsServletResponse(root() + "service=gss&request=GetCentralRevision&typeName=sf:missing"); validate(response); Document doc = dom(response); // print(doc); checkOws10Exception(doc, "InvalidParameterValue"); } /** * Tests a layer that is there, but not in the synch tables * @throws Exception */ public void testCentralRevisionLocalLayer() throws Exception { MockHttpServletResponse response = getAsServletResponse(root() + "service=gss&request=GetCentralRevision&typeName=sf:archsites"); validate(response); Document doc = dom(response); // print(doc); checkOws10Exception(doc, "InvalidParameterValue"); } public void testCentralRevisionRestricted() throws Exception { MockHttpServletResponse response = getAsServletResponse(root() + "service=gss&request=GetCentralRevision&typeName=sf:restricted"); validate(response); Document doc = dom(response); // print(doc); // no synchronization, give me everything back assertXpathEvaluatesTo("-1", "//gss:CentralRevisions/gss:LayerRevision/@centralRevision", doc); } public void testCentralRevisionRoads() throws Exception { MockHttpServletResponse response = getAsServletResponse(root() + "service=gss&request=GetCentralRevision&typeName=sf:roads"); validate(response); Document doc = dom(response); // print(doc); assertXpathEvaluatesTo("340", "//gss:CentralRevisions/gss:LayerRevision/@centralRevision", doc); } }