package org.geoserver.wfsv.security; import static org.easymock.EasyMock.createNiceMock; import static org.easymock.EasyMock.expect; import static org.easymock.EasyMock.replay; import org.geoserver.security.WrapperPolicy; import org.geoserver.security.decorators.SecuredObjects; import org.geoserver.util.SecurityUtils; import org.geotools.data.DataUtilities; import org.geotools.data.VersioningDataStore; import org.geotools.data.VersioningFeatureStore; import org.opengis.feature.simple.SimpleFeatureType; import org.opengis.filter.Filter; public class ReadOnlyVersioningFeatureStoreTest extends SecuredVersioningTest { private static final String SCHEMA = "testSchema"; private VersioningDataStore dsMock; private SimpleFeatureType schema; private VersioningFeatureStore fsMock; private ReadOnlyVersioningFeatureStore secured; @Override protected void setUp() throws Exception { super.setUp(); // nice dummy schema schema = DataUtilities.createType(SCHEMA, "id:int"); // create a data store dsMock = createNiceMock(VersioningDataStore.class); replay(dsMock); // create a feature store fsMock = createNiceMock(VersioningFeatureStore.class); fsMock.removeFeatures(Filter.INCLUDE); fsMock.rollback("0", Filter.INCLUDE, null); expect(fsMock.getDataStore()).andReturn(dsMock); expect(fsMock.getSchema()).andReturn(schema).anyTimes(); replay(fsMock); // create secured version secured = (ReadOnlyVersioningFeatureStore) SecuredObjects.secure( fsMock, WrapperPolicy.readOnlyChallenge(null)); } public void testRemove() throws Exception { try { secured.removeFeatures(Filter.INCLUDE); fail("Should have thrown a security exception..."); } catch(Throwable e) { if (SecurityUtils.isSecurityException(e)==false) fail("Should have thrown a security exception..."); } } public void testRollback() throws Exception { try { secured.rollback("'", Filter.INCLUDE, null); fail("Should have thrown a security exception..."); } catch(Throwable e) { if (SecurityUtils.isSecurityException(e)==false) fail("Should have thrown a security exception..."); } } }