package org.geoserver.security.decorators; import org.acegisecurity.AcegiSecurityException; import org.geoserver.security.AbstractAuthorizationTest; import org.geoserver.security.SecureCatalogImpl.WrapperPolicy; public class ReadOnlyDecoratorsTest extends AbstractAuthorizationTest { public void testSecuredLayerInfoFeatures() { SecuredLayerInfo ro = new SecuredLayerInfo(statesLayer, WrapperPolicy.HIDE); assertFalse(statesLayer.getResource() instanceof SecuredFeatureTypeInfo); assertTrue(ro.getResource() instanceof SecuredFeatureTypeInfo); assertSame(ro.policy, ((SecuredFeatureTypeInfo) ro.getResource()).policy); } public void testSecuredLayerInfoCoverages() { SecuredLayerInfo ro = new SecuredLayerInfo(arcGridLayer, WrapperPolicy.HIDE); assertFalse(arcGridLayer.getResource() instanceof SecuredCoverageInfo); assertTrue(ro.getResource() instanceof SecuredCoverageInfo); assertSame(ro.policy, ((SecuredCoverageInfo) ro.getResource()).policy); } public void testSecuredFeatureTypeInfoHide() throws Exception { SecuredFeatureTypeInfo ro = new SecuredFeatureTypeInfo(states, WrapperPolicy.HIDE); ReadOnlyFeatureSource fs = (ReadOnlyFeatureSource) ro.getFeatureSource( null, null); assertEquals(ReadOnlyFeatureSource.class, fs.getClass()); assertEquals(WrapperPolicy.HIDE, fs.policy); SecuredDataStoreInfo store = (SecuredDataStoreInfo) ro.getStore(); assertSame(WrapperPolicy.HIDE, ((SecuredDataStoreInfo) store).policy); } public void testSecuredFeatureTypeInfoMetadata() throws Exception { SecuredFeatureTypeInfo ro = new SecuredFeatureTypeInfo(states, WrapperPolicy.METADATA); try { ro.getFeatureSource(null, null); fail("This should have failed with a security exception"); } catch (AcegiSecurityException e) { // ok } SecuredDataStoreInfo store = (SecuredDataStoreInfo) ro.getStore(); assertSame(WrapperPolicy.METADATA, ((SecuredDataStoreInfo) store).policy); } public void testSecuredTypeInfoReadOnly() throws Exception { SecuredFeatureTypeInfo ro = new SecuredFeatureTypeInfo(states, WrapperPolicy.RO_CHALLENGE); ReadOnlyFeatureStore fs = (ReadOnlyFeatureStore) ro.getFeatureSource( null, null); assertEquals(WrapperPolicy.RO_CHALLENGE, fs.policy); SecuredDataStoreInfo store = (SecuredDataStoreInfo) ro.getStore(); assertSame(WrapperPolicy.RO_CHALLENGE, ((SecuredDataStoreInfo) store).policy); } public void testSecuredDataStoreInfoHide() throws Exception { SecuredDataStoreInfo ro = new SecuredDataStoreInfo(statesStore, WrapperPolicy.HIDE); ReadOnlyDataStore dataStore = (ReadOnlyDataStore) ro.getDataStore(null); assertEquals(WrapperPolicy.HIDE, dataStore.policy); } public void testSecuredDataStoreInfoMetadata() throws Exception { SecuredDataStoreInfo ro = new SecuredDataStoreInfo(statesStore, WrapperPolicy.METADATA); try { ReadOnlyDataStore dataStore = (ReadOnlyDataStore) ro.getDataStore(null); fail("This should have failed with a security exception"); } catch (AcegiSecurityException e) { // ok } } }