/** * Copyright (c) 2011, SOCIETIES Consortium (WATERFORD INSTITUTE OF TECHNOLOGY (TSSG), HERIOT-WATT UNIVERSITY (HWU), SOLUTA.NET * (SN), GERMAN AEROSPACE CENTRE (Deutsches Zentrum fuer Luft- und Raumfahrt e.V.) (DLR), Zavod za varnostne tehnologije * informacijske družbe in elektronsko poslovanje (SETCCE), INSTITUTE OF COMMUNICATION AND COMPUTER SYSTEMS (ICCS), LAKE * COMMUNICATIONS (LAKE), INTEL PERFORMANCE LEARNING SOLUTIONS LTD (INTEL), PORTUGAL TELECOM INOVAÇÃO, SA (PTIN), IBM Corp., * INSTITUT TELECOM (ITSUD), AMITEC DIACHYTI EFYIA PLIROFORIKI KAI EPIKINONIES ETERIA PERIORISMENIS EFTHINIS (AMITEC), TELECOM * ITALIA S.p.a.(TI), TRIALOG (TRIALOG), Stiftelsen SINTEF (SINTEF), NEC EUROPE LTD (NEC)) * 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.assessment.test; import static org.junit.Assert.*; import java.util.ArrayList; import java.util.Date; import java.util.List; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.societies.api.identity.IIdentity; import org.societies.api.identity.IdentityType; import org.societies.api.internal.privacytrust.privacyprotection.model.privacyassessment.DataAccessLogEntry; import org.societies.identity.IdentityImpl; import org.societies.privacytrust.privacyprotection.assessment.log.PrivacyLog; import org.societies.privacytrust.privacyprotection.assessment.logic.DataAccessAnalyzer; /** * * * @author Mitja Vardjan * */ public class DataAccessAnalyzerTest { private DataAccessAnalyzer dataAccessAnalyzer; private Date time1 = new Date(1000000); private Date time2 = new Date(2000000); private Date time3 = new Date(3000000); private Date time4 = new Date(4000000); private Date time5 = new Date(5000000); private Date time6 = new Date(6000000); private Date time7 = new Date(7000000); private IIdentity id1 = new IdentityImpl(IdentityType.CSS_RICH, "identifier1", "domain1"); private IIdentity id2 = new IdentityImpl(IdentityType.CSS_LIGHT, "identifier2", "domain1"); private IIdentity id3 = new IdentityImpl(IdentityType.CSS, "identifier3", "domain1"); private IIdentity id4 = new IdentityImpl(IdentityType.CIS, "identifier4", "domain2"); private String class1 = "class1"; private String class2 = "class2"; private String class3 = "class3"; private List<String> stack1 = new ArrayList<String>(); private List<String> stack2 = new ArrayList<String>(); private List<String> stack3 = new ArrayList<String>(); private String bundle1 = "bundle1"; private String bundle2 = "bundle2"; private String bundle3 = "bundle3"; private String bundle4 = "bundle4"; private List<String> bundles1 = new ArrayList<String>(); private List<String> bundles2 = new ArrayList<String>(); private List<String> bundles3 = new ArrayList<String>(); private List<String> bundles4 = new ArrayList<String>(); /** * @throws java.lang.Exception */ @Before public void setUp() throws Exception { stack1.add(class1); stack2.add(class2); stack3.add(class3); bundles1.add(bundle1); bundles2.add(bundle2); bundles3.add(bundle3); bundles4.add(bundle2); bundles4.add(bundle4); PrivacyLog privacyLog; privacyLog = new PrivacyLog(); privacyLog.append(new DataAccessLogEntry(time1, id1, class1, stack1, bundles1, id1, -1)); privacyLog.append(new DataAccessLogEntry(time2, id1, class2, stack2, bundles1, id2, -1)); privacyLog.append(new DataAccessLogEntry(time3, id1, class3, stack3, bundles1, id1, -1)); privacyLog.append(new DataAccessLogEntry(time4, id1, class3, stack3, bundles1, id1, -1)); privacyLog.append(new DataAccessLogEntry(time5, id1, class1, stack1, bundles1, id3, -1)); privacyLog.append(new DataAccessLogEntry(time6, id2, class1, stack1, bundles1, id4, -1)); privacyLog.append(new DataAccessLogEntry(time7, id2, class1, stack1, bundles1, id1, -1)); privacyLog.append(new DataAccessLogEntry(time7, null, null, null, null, null, -1)); dataAccessAnalyzer = new DataAccessAnalyzer(privacyLog.getDataAccess()); } /** * @throws java.lang.Exception */ @After public void tearDown() throws Exception { } /** * Test method for {@link org.societies.privacytrust.privacyprotection.assessment.logic.DataAccessAnalyzer#getDataAccess(org.societies.api.identity.IIdentity, java.util.Date, java.util.Date)}. */ @Test public void testGetDataAccessIIdentityDateDate() { List<DataAccessLogEntry> result = dataAccessAnalyzer.getDataAccess(id1, time2, time7); assertEquals(3, result.size(), 0.0); assertTrue(result.get(0).getRequestor().equals(id1)); assertTrue(result.get(0).getRequestorClass().equals(class3)); assertTrue(result.get(0).getTime().equals(time3)); assertTrue(result.get(0).getOwner().equals(id1)); assertTrue(result.get(1).getRequestor().equals(id1)); assertTrue(result.get(1).getRequestorClass().equals(class3)); assertTrue(result.get(1).getTime().equals(time4)); assertTrue(result.get(1).getOwner().equals(id1)); assertTrue(result.get(2).getRequestor().equals(id1)); assertTrue(result.get(2).getRequestorClass().equals(class1)); assertTrue(result.get(2).getTime().equals(time5)); assertTrue(result.get(2).getOwner().equals(id3)); } /** * Test method for {@link org.societies.privacytrust.privacyprotection.assessment.logic.DataAccessAnalyzer#getDataAccess(java.lang.String, java.util.Date, java.util.Date)}. */ @Test public void testGetDataAccessStringDateDate() { List<DataAccessLogEntry> result = dataAccessAnalyzer.getDataAccess(class3, time3, time6); assertEquals(1, result.size(), 0.0); assertTrue(result.get(0).getRequestor().equals(id1)); assertTrue(result.get(0).getRequestorClass().equals(class3)); assertTrue(result.get(0).getTime().equals(time4)); assertTrue(result.get(0).getOwner().equals(id1)); } /** * Test method for {@link org.societies.privacytrust.privacyprotection.assessment.logic.DataAccessAnalyzer#getDataAccessSize(org.societies.api.identity.IIdentity, java.util.Date, java.util.Date)}. */ @Test public void testGetDataAccessSizeIIdentityDateDate() { // id1 assertEquals(4, dataAccessAnalyzer.getNumDataAccessEvents(id1, time1, time7), 0.0); assertEquals(3, dataAccessAnalyzer.getNumDataAccessEvents(id1, time2, time7), 0.0); assertEquals(2, dataAccessAnalyzer.getNumDataAccessEvents(id1, time3, time7), 0.0); assertEquals(1, dataAccessAnalyzer.getNumDataAccessEvents(id1, time4, time7), 0.0); assertEquals(3, dataAccessAnalyzer.getNumDataAccessEvents(id1, time2, time6), 0.0); assertEquals(2, dataAccessAnalyzer.getNumDataAccessEvents(id1, time2, time5), 0.0); assertEquals(1, dataAccessAnalyzer.getNumDataAccessEvents(id1, time2, time4), 0.0); assertEquals(0, dataAccessAnalyzer.getNumDataAccessEvents(id1, time2, time3), 0.0); // id2 assertEquals(0, dataAccessAnalyzer.getNumDataAccessEvents(id2, time1, time5), 0.0); assertEquals(0, dataAccessAnalyzer.getNumDataAccessEvents(id2, time2, time6), 0.0); assertEquals(1, dataAccessAnalyzer.getNumDataAccessEvents(id2, time3, time7), 0.0); assertEquals(1, dataAccessAnalyzer.getNumDataAccessEvents(id2, time5, time7), 0.0); assertEquals(0, dataAccessAnalyzer.getNumDataAccessEvents(id2, time6, time7), 0.0); // Start time after end time => should be 0 entires assertEquals(0, dataAccessAnalyzer.getNumDataAccessEvents(id1, time2, time1), 0.0); assertEquals(0, dataAccessAnalyzer.getNumDataAccessEvents(id2, time4, time2), 0.0); } /** * Test method for {@link org.societies.privacytrust.privacyprotection.assessment.logic.DataAccessAnalyzer#getDataAccessSize(java.lang.String, java.util.Date, java.util.Date)}. */ @Test public void testGetDataAccessSizeStringDateDate() { // class1: times 1, 5, 6, 7 assertEquals(2, dataAccessAnalyzer.getNumDataAccessEvents(class1, time1, time7), 0.0); assertEquals(0, dataAccessAnalyzer.getNumDataAccessEvents(class1, time1, time3), 0.0); assertEquals(0, dataAccessAnalyzer.getNumDataAccessEvents(class1, time2, time4), 0.0); assertEquals(2, dataAccessAnalyzer.getNumDataAccessEvents(class1, time2, time7), 0.0); // class2: time 2 assertEquals(1, dataAccessAnalyzer.getNumDataAccessEvents(class2, time1, time7), 0.0); assertEquals(1, dataAccessAnalyzer.getNumDataAccessEvents(class2, time1, time3), 0.0); assertEquals(0, dataAccessAnalyzer.getNumDataAccessEvents(class2, time2, time4), 0.0); assertEquals(0, dataAccessAnalyzer.getNumDataAccessEvents(class2, time2, time7), 0.0); // class3: times 3, 4 assertEquals(2, dataAccessAnalyzer.getNumDataAccessEvents(class3, time1, time7), 0.0); assertEquals(0, dataAccessAnalyzer.getNumDataAccessEvents(class3, time1, time3), 0.0); assertEquals(1, dataAccessAnalyzer.getNumDataAccessEvents(class3, time2, time4), 0.0); assertEquals(2, dataAccessAnalyzer.getNumDataAccessEvents(class3, time2, time7), 0.0); } }