/** * Copyright (c) 2011, SOCIETIES Consortium * All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following * conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT * SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.societies.privacytrust.privacyprotection.test.model; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; import java.util.ArrayList; import java.util.List; import org.junit.After; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.societies.api.cis.model.CisAttributeTypes; import org.societies.api.identity.util.RequestorUtils; import org.societies.api.privacytrust.privacy.util.privacypolicy.ActionUtils; import org.societies.api.schema.identity.DataIdentifierScheme; import org.societies.api.schema.privacytrust.privacy.model.privacypolicy.Action; import org.societies.api.schema.privacytrust.privacy.model.privacypolicy.ActionConstants; import org.societies.api.schema.privacytrust.privacy.model.privacypolicy.Decision; import org.societies.api.schema.privacytrust.privacy.model.privacypolicy.ResponseItem; import org.societies.privacytrust.privacyprotection.model.PrivacyPermission; /** * @author Olivier Maridat (Trialog) * */ public class PrivacyPermissionTest { private static Logger LOG = LoggerFactory.getLogger(PrivacyPermissionTest.class.getSimpleName()); public PrivacyPermission privacyPermission; public static List<Action> actions0; public static List<Action> actions1; public static List<Action> actions2; @BeforeClass public static void setUpClass() { actions0 = new ArrayList<Action>(); actions1 = new ArrayList<Action>(); actions1.add(ActionUtils.create(ActionConstants.READ)); actions2 = new ArrayList<Action>(); actions2.add(ActionUtils.create(ActionConstants.READ, true)); actions2.add(ActionUtils.create(ActionConstants.WRITE, false)); } @Before public void setUp() { privacyPermission = new PrivacyPermission(); } @After public void tearDown() { privacyPermission = null; } @Test public void testSet1Action() { String testTitle = new String("testSet1Action"); LOG.info("[Test] "+testTitle); // -- 1 action in the list LOG.info("Expected actions:"); for(Action action : actions1) { LOG.info(action.getActionConstant().name()+":"+action.isOptional()); } privacyPermission.setActionsToData(actions1); LOG.info("Setted actions: "+privacyPermission.getActions()); List<Action> retrievedActions1 = privacyPermission.getActionsFromData(); LOG.info("Retrieved actions: "); for(Action action : retrievedActions1) { LOG.info(action.getActionConstant().name()+":"+action.isOptional()); } assertTrue("Expected same but are not", ActionUtils.equal(actions1, retrievedActions1)); } @Test public void testSet2Actions() { String testTitle = new String("testSet2Actions"); LOG.info("[Test] "+testTitle); // -- 1 action in the list LOG.info("Expected actions:"); for(Action action : actions2) { LOG.info(action.getActionConstant().name()+":"+action.isOptional()); } privacyPermission.setActionsToData(actions2); LOG.info("Setted actions: "+privacyPermission.getActions()); LOG.info("Setted action optional flags: "+privacyPermission.getActionOptionalFlags()); int posOptional = 0; int endOptional = privacyPermission.getActionOptionalFlags().indexOf('/', posOptional); assertTrue("Should be true but string was "+privacyPermission.getActionOptionalFlags().substring(posOptional, endOptional), "true".equals(privacyPermission.getActionOptionalFlags().substring(posOptional, endOptional))); List<Action> retrievedActions2 = privacyPermission.getActionsFromData(); LOG.info("Retrieved actions: "); for(Action action : retrievedActions2) { LOG.info(action.getActionConstant().name()+":"+action.isOptional()); } assertTrue("Expected same but are not", ActionUtils.equal(actions2, retrievedActions2)); } @Test public void testSet0Action() { String testTitle = new String("testSet0Action"); LOG.info("[Test] "+testTitle); // -- 1 action in the list LOG.info("Expected actions:"); for(Action action : actions0) { LOG.info(action.getActionConstant().name()+":"+action.isOptional()); } privacyPermission.setActionsToData(actions0); LOG.info("Setted actions: "+privacyPermission.getActions()); List<Action> retrievedActions0 = privacyPermission.getActionsFromData(); LOG.info("Retrieved actions: "); for(Action action : retrievedActions0) { LOG.info(action.getActionConstant().name()+":"+action.isOptional()); } assertTrue("Expected same but are not", ActionUtils.equal(actions0, retrievedActions0)); } @Test public void testNotNominalCases() { String testTitle = new String("testNotNominalCases"); LOG.info("[Test] "+testTitle); assertNull("Should be null", PrivacyPermission.createResponseItems(null)); assertNull("Should be null 2", PrivacyPermission.createResponseItems(new ArrayList<PrivacyPermission>())); PrivacyPermission internalPermission = new PrivacyPermission(RequestorUtils.create("myCss.societies.local"), null, new ArrayList<Action>(), Decision.PERMIT); ResponseItem responseItem = internalPermission.createResponseItem(); assertNull("Resource should be null", responseItem.getRequestItem().getResource()); internalPermission = new PrivacyPermission("myCss.societies.local", DataIdentifierScheme.CIS+"://myCss.societies.local/"+CisAttributeTypes.MEMBER_LIST, "read/write/", "false/false/", Decision.PERMIT); responseItem = internalPermission.createResponseItem(); assertNotNull("Resource should not be null", responseItem.getRequestItem().getResource()); List<Action> expectedActions = new ArrayList<Action>(); expectedActions.add(ActionUtils.create(ActionConstants.READ)); expectedActions.add(ActionUtils.create(ActionConstants.WRITE)); List<Action> retrievedActions0 = internalPermission.getActionsFromData(); LOG.info("Retrieved actions: "); for(Action action : retrievedActions0) { LOG.info(action.getActionConstant().name()+":"+action.isOptional()); } assertTrue("Expected same but are not", ActionUtils.equal(expectedActions, retrievedActions0)); } }