/**
* 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.integration.test.bit.privacydatamanagement;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Random;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Future;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.societies.api.context.model.MalformedCtxIdentifierException;
import org.societies.api.identity.IIdentity;
import org.societies.api.identity.InvalidFormatException;
import org.societies.api.identity.Requestor;
import org.societies.api.identity.RequestorCis;
import org.societies.api.identity.RequestorService;
import org.societies.api.identity.util.DataIdentifierFactory;
import org.societies.api.identity.util.RequestorUtils;
import org.societies.api.internal.privacytrust.privacy.util.dataobfuscation.DataWrapperFactory;
import org.societies.api.internal.privacytrust.privacy.util.dataobfuscation.LocationCoordinatesUtils;
import org.societies.api.internal.privacytrust.privacy.util.dataobfuscation.NameUtils;
import org.societies.api.internal.schema.privacytrust.privacy.model.dataobfuscation.DataWrapper;
import org.societies.api.internal.schema.privacytrust.privacy.model.dataobfuscation.LocationCoordinates;
import org.societies.api.internal.schema.privacytrust.privacy.model.dataobfuscation.Name;
import org.societies.api.privacytrust.privacy.model.PrivacyException;
import org.societies.api.privacytrust.privacy.model.privacypolicy.Action;
import org.societies.api.privacytrust.privacy.model.privacypolicy.Condition;
import org.societies.api.privacytrust.privacy.model.privacypolicy.Decision;
import org.societies.api.privacytrust.privacy.model.privacypolicy.RequestItem;
import org.societies.api.privacytrust.privacy.model.privacypolicy.RequestPolicy;
import org.societies.api.privacytrust.privacy.model.privacypolicy.Resource;
import org.societies.api.privacytrust.privacy.model.privacypolicy.ResponseItem;
import org.societies.api.privacytrust.privacy.model.privacypolicy.constants.ActionConstants;
import org.societies.api.privacytrust.privacy.model.privacypolicy.constants.ConditionConstants;
import org.societies.api.schema.identity.DataIdentifier;
import org.societies.api.schema.identity.DataIdentifierScheme;
import org.societies.api.schema.servicelifecycle.model.ServiceResourceIdentifier;
import org.societies.integration.test.IntegrationTest;
import org.societies.integration.test.userfeedback.UserFeedbackMockResult;
import org.societies.integration.test.userfeedback.UserFeedbackType;
/**
* @author Olivier Maridat (Trialog)
*
*/
public class PrivacyDataManagerTest extends IntegrationTest
{
private static Logger LOG = LoggerFactory.getLogger(PrivacyDataManagerTest.class);
private DataIdentifier dataId;
private DataIdentifier dataId2;
private DataIdentifier cisPublicDataId;
private DataIdentifier cisPrivateDataId;
private IIdentity myCssId;
private IIdentity otherCssId;
private IIdentity cisPublicId;
private IIdentity cisPrivateId;
private RequestorCis requestorCis;
private RequestorService requestorService;
private List<Action> actionsRead;
private List<Condition> conditionsPublic;
private List<Condition> conditionsMembersOnly;
private List<Condition> conditionsPrivate;
private RequestPolicy privacyPolicy;
private RequestPolicy privacyPolicyMembersOnly;
private RequestPolicy privacyPolicyPrivate;
@Before
public void setUp() throws Exception
{
LOG.info("[#"+testCaseNumber+"] "+getClass().getSimpleName()+"::setUp");
// Dependency injection not ready
if (!TestCase.isDepencyInjectionDone()) {
throw new PrivacyException("[#"+testCaseNumber+"] [Dependency Injection] PrivacyDataManagerTest not ready");
}
// Data
myCssId = TestCase.commManager.getIdManager().getThisNetworkNode();
otherCssId = TestCase.commManager.getIdManager().fromJid("othercss.societies.local");
cisPublicId = TestCase.commManager.getIdManager().fromJid("cis-public.societies.local");
cisPrivateId = TestCase.commManager.getIdManager().fromJid("cis-private.societies.local");
requestorCis = getRequestorCis();
requestorService = getRequestorService();
// Data Id
try {
Random randomer = new Random((new Date()).getTime());
String randomValue1 = ""+randomer.nextInt(200);
String randomValue2 = ""+randomer.nextInt(200);
dataId = DataIdentifierFactory.fromUri(DataIdentifierScheme.CONTEXT+"://"+myCssId+"/ENTITY/person/1/ATTRIBUTE/name/"+randomValue1);
dataId2 = DataIdentifierFactory.fromUri(DataIdentifierScheme.CONTEXT+"://"+myCssId+"/ENTITY/person/1/ATTRIBUTE/action/"+randomValue2);
cisPublicDataId = DataIdentifierFactory.fromUri(DataIdentifierScheme.CIS+"://"+cisPublicId+"/cis-member-list/");
cisPrivateDataId = DataIdentifierFactory.fromUri(DataIdentifierScheme.CIS+"://"+cisPrivateId+"/cis-member-list/");
LOG.info("Data id: "+dataId.getUri()+" (scheme: "+dataId.getScheme()+", type: "+dataId.getType()+")");
LOG.info("Data id 2: "+dataId2.getUri()+" (scheme: "+dataId2.getScheme()+", type: "+dataId2.getType()+")");
LOG.info("Public Cis Data id: "+cisPublicDataId.getUri()+" (scheme: "+cisPublicDataId.getScheme()+", type: "+cisPublicDataId.getType()+")");
LOG.info("Private Cis Data id: "+cisPrivateDataId.getUri()+" (scheme: "+cisPrivateDataId.getScheme()+", type: "+cisPrivateDataId.getType()+")");
}
catch (MalformedCtxIdentifierException e) {
LOG.error("setUp(): DataId creation error "+e.getMessage()+"\n", e);
fail("setUp(): DataId creation error "+e.getMessage());
}
// - Actions
actionsRead = new ArrayList<Action>();
actionsRead.add(new Action(ActionConstants.READ));
// - Conditions
conditionsPublic = new ArrayList<Condition>();
conditionsPublic.add(new Condition(ConditionConstants.SHARE_WITH_3RD_PARTIES, "1"));
conditionsPublic.add(new Condition(ConditionConstants.STORE_IN_SECURE_STORAGE, "1"));
conditionsMembersOnly = new ArrayList<Condition>();
conditionsMembersOnly.add(new Condition(ConditionConstants.SHARE_WITH_CIS_MEMBERS_ONLY, "1"));
conditionsMembersOnly.add(new Condition(ConditionConstants.STORE_IN_SECURE_STORAGE, "1"));
conditionsPrivate = new ArrayList<Condition>();
conditionsPrivate.add(new Condition(ConditionConstants.SHARE_WITH_CIS_OWNER_ONLY, "1"));
conditionsPrivate.add(new Condition(ConditionConstants.STORE_IN_SECURE_STORAGE, "1"));
// - Privacy Policy
List<RequestItem> requestItems = new ArrayList<RequestItem>();
requestItems.add(new RequestItem(new Resource(cisPublicDataId), actionsRead, conditionsPublic));
List<RequestItem> requestItemsMembersOnly = new ArrayList<RequestItem>();
requestItemsMembersOnly.add(new RequestItem(new Resource(cisPublicDataId), actionsRead, conditionsMembersOnly));
List<RequestItem> requestItemsPrivate = new ArrayList<RequestItem>();
requestItemsPrivate.add(new RequestItem(new Resource(cisPublicDataId), actionsRead, conditionsPrivate));
privacyPolicy = new RequestPolicy(new RequestorCis(myCssId, cisPublicId), requestItems);
privacyPolicyMembersOnly = new RequestPolicy(new RequestorCis(myCssId, cisPublicId), requestItemsMembersOnly);
privacyPolicyPrivate = new RequestPolicy(new RequestorCis(myCssId, cisPublicId), requestItemsPrivate);
}
@After
public void tearDown() throws Exception
{
LOG.info("[#"+testCaseNumber+"] "+getClass().getSimpleName()+"::tearDown");
}
/* --- CHECK PERMISSION CSS --- */
@Test
public void testCheckPermissionFirstTime()
{
String testTitle = new String("CheckPermission: retrieve a privacy for the first time");
LOG.info("[#"+testCaseNumber+"] "+testTitle);
List<ResponseItem> permissions = null;
try {
// Random Data ID
// DataIdentifier dataId = DataIdentifierFactory.fromUri(DataIdentifierScheme.CONTEXT+"://"+currentJid+"/ENTITY/person/1/ATTRIBUTE/name/13");
Random randomer = new Random((new Date()).getTime());
String randomValue = ""+randomer.nextInt(200);
DataIdentifier randomDataId = DataIdentifierFactory.fromUri(DataIdentifierScheme.CIS+"://"+myCssId+"/"+randomValue);
TestCase.getUserFeedbackMocker().addReply(UserFeedbackType.CHECKBOXLIST, new UserFeedbackMockResult(1, "READ"));
permissions = TestCase.privacyDataManager.checkPermission(requestorCis, randomDataId, actionsRead);
} catch (PrivacyException e) {
LOG.error("[#"+testCaseNumber+"] [PrivacyException] "+testTitle, e);
fail("PrivacyException ("+e.getMessage()+") "+testTitle);
} catch (MalformedCtxIdentifierException e) {
LOG.error("[#"+testCaseNumber+"] [MalformedCtxIdentifierException] "+testTitle, e);
fail("MalformedCtxIdentifierException ("+e.getMessage()+") "+testTitle);
}
assertNotNull("No permission retrieved", permissions);
assertTrue("No permission retrieved", permissions.size() > 0);
assertNotNull("No (real) permission retrieved", permissions.get(0).getDecision());
assertEquals("Bad permission retrieved", Decision.PERMIT.name(), permissions.get(0).getDecision().name());
}
@Test
public void testCheckPermissionPreviouslyAdded()
{
String testTitle = new String("CheckPermission: retrieve a privacy two times");
LOG.info("[#"+testCaseNumber+"] "+testTitle);
List<ResponseItem> permissions1 = null;
List<ResponseItem> permissions2 = null;
try {
TestCase.getUserFeedbackMocker().addReply(UserFeedbackType.CHECKBOXLIST, new UserFeedbackMockResult(1, "READ"));
permissions1 = TestCase.privacyDataManager.checkPermission(requestorCis, dataId, actionsRead);
TestCase.getUserFeedbackMocker().removeAllReplies(); // Just to be sure
permissions2 = TestCase.privacyDataManager.checkPermission(requestorCis, dataId, actionsRead);
} catch (PrivacyException e) {
LOG.error("[#"+testCaseNumber+"] [PrivacyException] "+testTitle, e);
fail("PrivacyException ("+e.getMessage()+") "+testTitle);
}
assertNotNull("No permission retrieved", permissions1);
assertTrue("No permission retrieved", permissions1.size() > 0);
assertNotNull("No (real) permission retrieved", permissions1.get(0).getDecision());
assertEquals("Bad permission retrieved", Decision.PERMIT.name(), permissions1.get(0).getDecision().name());
assertNotNull("No permission retrieved", permissions2);
assertNotNull("No (real) permission retrieved", permissions2.get(0).getDecision());
assertEquals("Bad permission retrieved", Decision.PERMIT.name(), permissions2.get(0).getDecision().name());
assertEquals("Two requests, not the same answer", permissions1.get(0).toXMLString(), permissions2.get(0).toXMLString());
}
@Test
public void testCheckPermissionDenied()
{
String testTitle = new String("CheckPermission denied result: retrieve a decision two times, the first one is DENIED by the user");
LOG.info("[#"+testCaseNumber+"] "+testTitle);
List<ResponseItem> permissions1 = null;
List<ResponseItem> permissions2 = null;
try {
TestCase.getUserFeedbackMocker().addReply(UserFeedbackType.CHECKBOXLIST, new UserFeedbackMockResult(1, "WROOONG"));
permissions1 = TestCase.privacyDataManager.checkPermission(requestorCis, dataId2, actionsRead);
TestCase.getUserFeedbackMocker().removeAllReplies(); // Just to be sure
permissions2 = TestCase.privacyDataManager.checkPermission(requestorCis, dataId2, actionsRead);
} catch (PrivacyException e) {
LOG.error("[#"+testCaseNumber+"] [PrivacyException] "+testTitle, e);
fail("PrivacyException "+testTitle+": "+e);
}
assertNotNull("No permission retrieved", permissions1);
assertTrue("No permission retrieved", permissions1.size() > 0);
assertNotNull("No (real) permission retrieved", permissions1.get(0).getDecision());
assertEquals("Bad permission retrieved", Decision.DENY.name(), permissions1.get(0).getDecision().name());
assertNotNull("No permission retrieved", permissions2);
assertNotNull("No (real) permission retrieved", permissions2.get(0).getDecision());
assertEquals("Bad permission retrieved", Decision.DENY.name(), permissions2.get(0).getDecision().name());
assertEquals("Two requests, not the same answer", permissions1.get(0).toXMLString(), permissions2.get(0).toXMLString());
}
/* --- CHECK PERMISSION CIS --- */
@Test
public void testCheckPermissionPublicCis()
{
String testTitle = new String("CheckPermission public Cis: retrieve a privacy for the first time");
LOG.info("[#"+testCaseNumber+"] "+testTitle);
RequestPolicy privacyPolicyAdded = null;
boolean privacyPolicyDeleted = false;
List<ResponseItem> permissions = null;
try {
privacyPolicyAdded = TestCase.privacyPolicyManager.updatePrivacyPolicy(privacyPolicy);
permissions = TestCase.privacyDataManager.checkPermission(requestorService, cisPublicDataId, actionsRead);
privacyPolicyDeleted = TestCase.privacyPolicyManager.deletePrivacyPolicy(privacyPolicy.getRequestor());
} catch (PrivacyException e) {
LOG.error("[#"+testCaseNumber+"] [PrivacyException] "+testTitle, e);
fail("PrivacyException ("+e.getMessage()+") "+testTitle);
}
assertNotNull("No privacy policy added", privacyPolicyAdded);
assertEquals("Privacy policy added: not the good one", privacyPolicy.toXMLString(), privacyPolicyAdded.toXMLString());
assertNotNull("No permission retrieved", permissions);
assertTrue("No permission retrieved", permissions.size() > 0);
assertNotNull("No (real) permission retrieved", permissions.get(0).getDecision());
assertEquals("Bad permission retrieved", Decision.PERMIT.name(), permissions.get(0).getDecision().name());
assertTrue("Privacy policy not deleted", privacyPolicyDeleted);
}
@Test
public void testCheckPermissionPublicCisPreviouslyAdded()
{
String testTitle = new String("CheckPermission public Cis: retrieve a privacy two times");
LOG.info("[#"+testCaseNumber+"] "+testTitle);
RequestPolicy privacyPolicyAdded = null;
boolean privacyPolicyDeleted = false;
List<ResponseItem> permissions1 = null;
List<ResponseItem> permissions2 = null;
try {
privacyPolicyAdded = TestCase.privacyPolicyManager.updatePrivacyPolicy(privacyPolicy);
permissions1 = TestCase.privacyDataManager.checkPermission(requestorService, cisPublicDataId, actionsRead);
permissions2 = TestCase.privacyDataManager.checkPermission(requestorService, cisPublicDataId, actionsRead);
privacyPolicyDeleted = TestCase.privacyPolicyManager.deletePrivacyPolicy(privacyPolicy.getRequestor());
} catch (PrivacyException e) {
LOG.error("[#"+testCaseNumber+"] [PrivacyException] "+testTitle, e);
fail("PrivacyException ("+e.getMessage()+") "+testTitle);
}
assertNotNull("No privacy policy added", privacyPolicyAdded);
assertEquals("Privacy policy added: not the good one", privacyPolicy.toXMLString(), privacyPolicyAdded.toXMLString());
assertNotNull("No permission retrieved", permissions1);
assertTrue("No permission retrieved", permissions1.size() > 0);
assertNotNull("No (real) permission retrieved", permissions1.get(0).getDecision());
assertEquals("Bad permission retrieved", Decision.PERMIT.name(), permissions1.get(0).getDecision().name());
assertNotNull("No permission retrieved", permissions2);
assertTrue("No permission retrieved", permissions2.size() > 0);
assertNotNull("No (real) permission retrieved", permissions2.get(0).getDecision());
assertEquals("Bad permission retrieved", Decision.PERMIT.name(), permissions2.get(0).getDecision().name());
assertEquals("Two requests, not the same answer", permissions1.get(0).toXMLString(), permissions2.get(0).toXMLString());
assertTrue("Privacy policy not deleted", privacyPolicyDeleted);
}
@Test
public void testCheckPermissionPrivateCis()
{
String testTitle = new String("CheckPermission Private Cis: retrieve a privacy for the first time");
LOG.info("[#"+testCaseNumber+"] "+testTitle);
RequestPolicy privacyPolicyAdded = null;
boolean privacyPolicyDeleted = false;
List<ResponseItem> permissionOthers = null;
List<ResponseItem> permissionMes = null;
try {
privacyPolicyAdded = TestCase.privacyPolicyManager.updatePrivacyPolicy(privacyPolicyPrivate);
LOG.info("[#"+testCaseNumber+"] Requested by: "+requestorService);
permissionOthers = TestCase.privacyDataManager.checkPermission(requestorService, cisPrivateDataId, actionsRead);
LOG.info("[#"+testCaseNumber+"] Requested by me: "+myCssId.getJid());
permissionMes = TestCase.privacyDataManager.checkPermission(new Requestor(myCssId), cisPrivateDataId, actionsRead);
privacyPolicyDeleted = TestCase.privacyPolicyManager.deletePrivacyPolicy(privacyPolicyPrivate.getRequestor());
} catch (PrivacyException e) {
LOG.error("[#"+testCaseNumber+"] [PrivacyException] "+testTitle, e);
fail("PrivacyException ("+e.getMessage()+") "+testTitle);
}
assertNotNull("No privacy policy added", privacyPolicyAdded);
assertEquals("Privacy policy added: not the good one", privacyPolicyPrivate.toXMLString(), privacyPolicyAdded.toXMLString());
assertNotNull("No permission retrieved", permissionOthers);
assertTrue("No permission retrieved", permissionOthers.size() > 0);
assertNotNull("No (real) permission retrieved", permissionOthers.get(0).getDecision());
assertEquals("Bad permission retrieved", Decision.DENY.name(), permissionOthers.get(0).getDecision().name());
assertNotNull("No permission retrieved", permissionMes);
assertTrue("No permission retrieved", permissionMes.size() > 0);
assertNotNull("No (real) permission retrieved", permissionMes.get(0).getDecision());
assertEquals("Bad permission retrieved", Decision.PERMIT.name(), permissionMes.get(0).getDecision().name());
assertTrue("Privacy policy not deleted", privacyPolicyDeleted);
}
@Test
public void testCheckPermissionPrivateCisPreviouslyAdded()
{
String testTitle = new String("CheckPermission Private Cis: retrieve a privacy two times");
LOG.info("[#"+testCaseNumber+"] "+testTitle);
RequestPolicy privacyPolicyAdded = null;
boolean privacyPolicyDeleted = false;
List<ResponseItem> permissionOther1s = null;
List<ResponseItem> permissionMe1s = null;
List<ResponseItem> permissionOther2s = null;
List<ResponseItem> permissionMe2s = null;
try {
privacyPolicyAdded = TestCase.privacyPolicyManager.updatePrivacyPolicy(privacyPolicyPrivate);
permissionOther1s = TestCase.privacyDataManager.checkPermission(requestorService, cisPrivateDataId, actionsRead);
permissionMe1s = TestCase.privacyDataManager.checkPermission(new Requestor(myCssId), cisPrivateDataId, actionsRead);
permissionOther2s = TestCase.privacyDataManager.checkPermission(requestorService, cisPrivateDataId, actionsRead);
permissionMe2s = TestCase.privacyDataManager.checkPermission(new Requestor(myCssId), cisPrivateDataId, actionsRead);
privacyPolicyDeleted = TestCase.privacyPolicyManager.deletePrivacyPolicy(privacyPolicyPrivate.getRequestor());
} catch (PrivacyException e) {
LOG.error("[#"+testCaseNumber+"] [PrivacyException] "+testTitle, e);
fail("PrivacyException ("+e.getMessage()+") "+testTitle);
}
assertNotNull("No privacy policy added", privacyPolicyAdded);
assertEquals("Privacy policy added: not the good one", privacyPolicyPrivate.toXMLString(), privacyPolicyAdded.toXMLString());
assertNotNull("Other: No permission retrieved", permissionOther1s);
assertTrue("No permission retrieved", permissionOther1s.size() > 0);
assertNotNull("Other: No (real) permission retrieved", permissionOther1s.get(0).getDecision());
assertEquals("Other: Bad permission retrieved", Decision.DENY.name(), permissionOther1s.get(0).getDecision().name());
assertNotNull("Other: No permission retrieved", permissionOther2s);
assertTrue("No permission retrieved", permissionOther2s.size() > 0);
assertNotNull("Other: No (real) permission retrieved", permissionOther2s.get(0).getDecision());
assertEquals("Other: Bad permission retrieved", Decision.DENY.name(), permissionOther2s.get(0).getDecision().name());
assertEquals("Other: Two requests, not the same answer", permissionOther1s.get(0).toXMLString(), permissionOther2s.get(0).toXMLString());
assertNotNull("Me: No permission retrieved", permissionMe1s);
assertTrue("No permission retrieved", permissionMe1s.size() > 0);
assertNotNull("Me: No (real) permission retrieved", permissionMe1s.get(0).getDecision());
assertEquals("Me: Bad permission retrieved", Decision.PERMIT.name(), permissionMe1s.get(0).getDecision().name());
assertNotNull("Me: No permission retrieved", permissionMe2s);
assertTrue("No permission retrieved", permissionMe2s.size() > 0);
assertNotNull("Me: No (real) permission retrieved", permissionMe2s.get(0).getDecision());
assertEquals("Me: Bad permission retrieved", Decision.PERMIT.name(), permissionMe2s.get(0).getDecision().name());
assertEquals("Me: Two requests, not the same answer", permissionMe1s.get(0).toXMLString(), permissionMe2s.get(0).toXMLString());
assertTrue("Privacy policy not deleted", privacyPolicyDeleted);
}
/* --- OBFUSCATION --- */
@Test
public void testObfuscateDataName()
{
String testTitle = "ObfuscateData: name";
LOG.info("[#"+testCaseNumber+"] "+testTitle);
try {
DataWrapper wrapper = DataWrapperFactory.getNameWrapper("Olivier", "Maridat");
Future<DataWrapper> obfuscatedDataWrapperAsync = TestCase.privacyDataManager.obfuscateData(RequestorUtils.toRequestorBean(requestorCis), wrapper);
DataWrapper obfuscatedDataWrapper = obfuscatedDataWrapperAsync.get();
// Verify
assertNotNull("Obfuscated data null", obfuscatedDataWrapper);
Name originalData = DataWrapperFactory.retrieveName(wrapper);
Name obfuscatedData = DataWrapperFactory.retrieveName(obfuscatedDataWrapper);
LOG.info("[#"+testCaseNumber+"] Orginal name: "+NameUtils.toString(originalData));
LOG.info("[#"+testCaseNumber+"] Obfuscated name: "+NameUtils.toString(obfuscatedData));
}
catch (PrivacyException e) {
LOG.error("[#"+testCaseNumber+"] [PrivacyException obfuscator error] "+testTitle, e);
fail("PrivacyException obfuscator error ("+e.getMessage()+") "+testTitle);
}
catch (InterruptedException e) {
LOG.error("[#"+testCaseNumber+"] [InterruptedException async error] "+testTitle, e);
fail("InterruptedException async error ("+e.getMessage()+") "+testTitle);
}
catch (ExecutionException e) {
LOG.error("[#"+testCaseNumber+"] [InterruptedException async exec error] "+testTitle, e);
fail("InterruptedException async exec error ("+e.getMessage()+") "+testTitle);
}
}
@Test
public void testObfuscateDataLocationCoordinates()
{
String testTitle = new String("ObfuscateData: coordinate location");
LOG.info("[#"+testCaseNumber+"] "+testTitle);
try {
DataWrapper wrapper = DataWrapperFactory.getLocationCoordinatesWrapper(48.856666, 2.350987, 542.0);
Future<DataWrapper> obfuscatedDataWrapperAsync = TestCase.privacyDataManager.obfuscateData(RequestorUtils.toRequestorBean(requestorCis), wrapper);
DataWrapper obfuscatedDataWrapper = obfuscatedDataWrapperAsync.get();
// Verify
LocationCoordinates originalData = DataWrapperFactory.retrieveLocationCoordinates(wrapper);
LocationCoordinates obfuscatedData = DataWrapperFactory.retrieveLocationCoordinates(obfuscatedDataWrapper);
assertNotNull("Obfuscated data should not be null", obfuscatedDataWrapper);
LOG.info("[#"+testCaseNumber+"] Orginal location:\n"+LocationCoordinatesUtils.toJsonString(originalData));
LOG.info("[#"+testCaseNumber+"] Obfuscated location:\n"+LocationCoordinatesUtils.toJsonString(obfuscatedData));
}
catch (PrivacyException e) {
LOG.error("[#"+testCaseNumber+"] [PrivacyException obfuscator error] "+testTitle, e);
fail("PrivacyException obfuscator error ("+e.getMessage()+") "+testTitle);
}
catch (InterruptedException e) {
LOG.error("[#"+testCaseNumber+"] [InterruptedException async error] "+testTitle, e);
fail("InterruptedException async error ("+e.getMessage()+") "+testTitle);
}
catch (ExecutionException e) {
LOG.error("[#"+testCaseNumber+"] [InterruptedException async exec error] "+testTitle, e);
fail("InterruptedException async exec error ("+e.getMessage()+") "+testTitle);
}
}
/* ****************************
* Tools *
******************************/
private RequestorService getRequestorService() throws InvalidFormatException, URISyntaxException{
ServiceResourceIdentifier serviceId = new ServiceResourceIdentifier();
serviceId.setServiceInstanceIdentifier("css://"+otherCssId+"/HelloEarth");
serviceId.setIdentifier(new URI("css://"+otherCssId+"/HelloEarth"));
return new RequestorService(otherCssId, serviceId);
}
private RequestorCis getRequestorCis() throws InvalidFormatException{
return new RequestorCis(otherCssId, cisPublicId);
}
}