/* (c) 2014 Open Source Geospatial Foundation - all rights reserved * (c) 2001 - 2013 OpenPlans * This code is licensed under the GPL 2.0 license, available at the root * application directory. */ package org.geoserver.security.decorators; import static org.junit.Assert.*; import org.geoserver.security.WrapperPolicy; import org.geoserver.security.impl.AbstractAuthorizationTest; import org.junit.Test; public class ReadSecuredCatalogDecoratorsTest extends AbstractAuthorizationTest { @Test public void testSecuredLayerInfoFeatures() { SecuredLayerInfo ro = new SecuredLayerInfo(statesLayer, WrapperPolicy.hide(null)); assertFalse(statesLayer.getResource() instanceof SecuredFeatureTypeInfo); assertTrue(ro.getResource() instanceof SecuredFeatureTypeInfo); assertSame(ro.policy, ((SecuredFeatureTypeInfo) ro.getResource()).policy); } @Test public void testSecuredLayerInfoCoverages() { SecuredLayerInfo ro = new SecuredLayerInfo(arcGridLayer, WrapperPolicy.hide(null)); assertFalse(arcGridLayer.getResource() instanceof SecuredCoverageInfo); assertTrue(ro.getResource() instanceof SecuredCoverageInfo); assertSame(ro.policy, ((SecuredCoverageInfo) ro.getResource()).policy); } @Test public void testSecuredFeatureTypeInfoHide() throws Exception { SecuredFeatureTypeInfo ro = new SecuredFeatureTypeInfo(states, WrapperPolicy.hide(null)); SecuredFeatureSource fs = (SecuredFeatureSource) ro.getFeatureSource( null, null); assertEquals(SecuredFeatureSource.class, fs.getClass()); assertTrue(fs.policy.isHide()); SecuredDataStoreInfo store = (SecuredDataStoreInfo) ro.getStore(); assertTrue(((SecuredDataStoreInfo) store).policy.isHide()); } @Test public void testSecuredFeatureTypeInfoMetadata() throws Exception { SecuredFeatureTypeInfo ro = new SecuredFeatureTypeInfo(states, WrapperPolicy.metadata(null)); try { ro.getFeatureSource(null, null); fail("This should have failed with a security exception"); } catch (Exception e) { if (ReadOnlyDataStoreTest.isSpringSecurityException(e)==false) fail("Should have failed with a security exception"); } SecuredDataStoreInfo store = (SecuredDataStoreInfo) ro.getStore(); assertTrue(((SecuredDataStoreInfo) store).policy.isMetadata()); } @Test public void testSecuredTypeInfoReadOnly() throws Exception { SecuredFeatureTypeInfo ro = new SecuredFeatureTypeInfo(states, WrapperPolicy.readOnlyChallenge(null)); SecuredFeatureStore fs = (SecuredFeatureStore) ro.getFeatureSource( null, null); assertTrue(fs.policy.isReadOnlyChallenge()); SecuredDataStoreInfo store = (SecuredDataStoreInfo) ro.getStore(); assertTrue(((SecuredDataStoreInfo) store).policy.isReadOnlyChallenge()); } @Test public void testSecuredDataStoreInfoHide() throws Exception { SecuredDataStoreInfo ro = new SecuredDataStoreInfo(statesStore, WrapperPolicy.hide(null)); ReadOnlyDataStore dataStore = (ReadOnlyDataStore) ro.getDataStore(null); assertTrue(dataStore.policy.isHide()); } @Test public void testSecuredDataStoreInfoMetadata() throws Exception { SecuredDataStoreInfo ro = new SecuredDataStoreInfo(statesStore, WrapperPolicy.metadata(null)); try { ReadOnlyDataStore dataStore = (ReadOnlyDataStore) ro.getDataStore(null); fail("This should have failed with a security exception"); } catch (Exception e) { if (ReadOnlyDataStoreTest.isSpringSecurityException(e)==false) fail("Should have failed with a security exception"); } } }