Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/org.eclipse.osee.framework.core.model.test/src/org/eclipse/osee/framework/core/model/access/AccessDataTest.java')
-rw-r--r--plugins/org.eclipse.osee.framework.core.model.test/src/org/eclipse/osee/framework/core/model/access/AccessDataTest.java277
1 files changed, 277 insertions, 0 deletions
diff --git a/plugins/org.eclipse.osee.framework.core.model.test/src/org/eclipse/osee/framework/core/model/access/AccessDataTest.java b/plugins/org.eclipse.osee.framework.core.model.test/src/org/eclipse/osee/framework/core/model/access/AccessDataTest.java
new file mode 100644
index 00000000000..1893de8dc87
--- /dev/null
+++ b/plugins/org.eclipse.osee.framework.core.model.test/src/org/eclipse/osee/framework/core/model/access/AccessDataTest.java
@@ -0,0 +1,277 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.core.model.access;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Set;
+import org.eclipse.osee.framework.core.data.IArtifactType;
+import org.eclipse.osee.framework.core.data.IAttributeType;
+import org.eclipse.osee.framework.core.data.IOseeBranch;
+import org.eclipse.osee.framework.core.enums.CoreArtifactTypes;
+import org.eclipse.osee.framework.core.enums.CoreAttributeTypes;
+import org.eclipse.osee.framework.core.enums.CoreBranches;
+import org.eclipse.osee.framework.core.enums.PermissionEnum;
+import org.eclipse.osee.framework.core.enums.RelationSide;
+import org.eclipse.osee.framework.core.exception.OseeArgumentException;
+import org.eclipse.osee.framework.core.exception.OseeCoreException;
+import org.eclipse.osee.framework.core.model.DefaultBasicArtifact;
+import org.eclipse.osee.framework.core.model.IBasicArtifact;
+import org.eclipse.osee.framework.core.model.RelationTypeSide;
+import org.eclipse.osee.framework.core.model.access.AccessData;
+import org.eclipse.osee.framework.core.model.access.AccessDetail;
+import org.eclipse.osee.framework.core.model.mocks.MockDataFactory;
+import org.eclipse.osee.framework.core.model.mocks.ModelAsserts;
+import org.eclipse.osee.framework.core.model.access.Scope;
+import org.eclipse.osee.framework.core.model.type.RelationType;
+import org.eclipse.osee.framework.jdk.core.util.Compare;
+import org.eclipse.osee.framework.jdk.core.util.GUID;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * Test Case for {@link AccessData}
+ *
+ * @author Roberto E. Escobar
+ */
+public class AccessDataTest {
+
+ private IOseeBranch branchToCheck1;
+ private IOseeBranch branchToCheck2;
+ private IArtifactType artifactType;
+ private IAttributeType attributeType;
+ private IAttributeType wordAttributeType;
+
+ private RelationTypeSide relTypeSide1;
+ private RelationTypeSide relTypeSide2;
+
+ private IBasicArtifact<?> artifactToCheck;
+
+ @Before
+ public void setup() {
+ branchToCheck1 = CoreBranches.SYSTEM_ROOT;
+ branchToCheck2 = CoreBranches.COMMON;
+
+ artifactType = CoreArtifactTypes.AbstractSoftwareRequirement;
+ attributeType = CoreAttributeTypes.ParagraphNumber;
+ wordAttributeType = CoreAttributeTypes.WordTemplateContent;
+
+ RelationType relType = MockDataFactory.createRelationType(2, null, null);
+ relTypeSide1 = new RelationTypeSide(relType, RelationSide.SIDE_A);
+ relTypeSide2 = new RelationTypeSide(relType, RelationSide.SIDE_B);
+
+ artifactToCheck = new DefaultBasicArtifact(12, GUID.create(), "Hello");
+ }
+
+ @Test
+ public void testIsEmpty() throws OseeCoreException {
+ AccessData data = new AccessData();
+ Assert.assertTrue(data.isEmpty());
+ data.add(new Object(), createDetail(7, new Object()));
+ Assert.assertFalse(data.isEmpty());
+ }
+
+ @Test(expected = OseeArgumentException.class)
+ public void testAddNullCheck1() throws OseeCoreException {
+ AccessData data = new AccessData();
+ data.add(null, createDetail(4, new Object()));
+ }
+
+ @Test(expected = OseeArgumentException.class)
+ public void testAddNullCheck2() throws OseeCoreException {
+ AccessData data = new AccessData();
+ data.add(new Object(), null);
+ }
+
+ @Test(expected = OseeArgumentException.class)
+ public void testAddAllCheck1() throws OseeCoreException {
+ AccessData data = new AccessData();
+ data.addAll(null, Collections.<AccessDetail<?>> emptyList());
+ }
+
+ @Test(expected = OseeArgumentException.class)
+ public void testAddAllCheck2() throws OseeCoreException {
+ AccessData data = new AccessData();
+ data.addAll(new Object(), null);
+ }
+
+ @Test(expected = OseeArgumentException.class)
+ public void testGetAccessNullCheck() throws OseeCoreException {
+ AccessData data = new AccessData();
+ data.getAccess(null);
+ }
+
+ @Test
+ public void testAddAll() throws OseeCoreException {
+ Collection<AccessDetail<?>> expectedDetails = new ArrayList<AccessDetail<?>>();
+ createTestObjects(expectedDetails, branchToCheck1, artifactType, attributeType, wordAttributeType,
+ artifactToCheck, relTypeSide1, relTypeSide2, branchToCheck2);
+
+ AccessData data = new AccessData();
+ data.addAll(artifactToCheck, expectedDetails);
+ Collection<AccessDetail<?>> actualDetails = data.getAccess(artifactToCheck);
+ Assert.assertEquals(expectedDetails.size(), actualDetails.size());
+ Assert.assertFalse(Compare.isDifferent(expectedDetails, actualDetails));
+
+ for (AccessDetail<?> expectedDetail : expectedDetails) {
+ AccessDetail<?> actualDetail = findObject(expectedDetail, actualDetails);
+ ModelAsserts.assertEquals(expectedDetail, actualDetail);
+ }
+ }
+
+ @Test
+ public void testAccessDetailMerge() throws OseeCoreException {
+ AccessData data = new AccessData();
+
+ AccessDetail<?> detail1 =
+ MockDataFactory.createAccessDetails(relTypeSide1, PermissionEnum.DENY, "item 1 - deny",
+ new Scope().add("same_scope"));
+ AccessDetail<?> detail2 =
+ MockDataFactory.createAccessDetails(relTypeSide1, PermissionEnum.WRITE, "item 2 - write",
+ new Scope().add("same_scope"));
+ data.add(artifactToCheck, detail1);
+ data.add(artifactToCheck, detail2);
+
+ Collection<AccessDetail<?>> details = data.getAccess(artifactToCheck);
+ Assert.assertTrue(details.size() == 1);
+ AccessDetail<?> actualDetail = details.iterator().next();
+ Assert.assertEquals(detail1.getAccessObject(), actualDetail.getAccessObject());
+ Assert.assertEquals(detail2.getAccessObject(), actualDetail.getAccessObject());
+
+ Assert.assertEquals(PermissionEnum.DENY, actualDetail.getPermission());
+ Assert.assertEquals("item 1 - deny, item 2 - write", actualDetail.getReason());
+ Assert.assertEquals("/same_scope", actualDetail.getScope().getPath());
+ }
+
+ @Test
+ public void testAccessDetailMultipleKeys() throws OseeCoreException {
+ AccessDetail<?> detail1 =
+ MockDataFactory.createAccessDetails(relTypeSide1, PermissionEnum.DENY, "item 1 - deny",
+ new Scope().add("same_scope"));
+ AccessDetail<?> detail2 =
+ MockDataFactory.createAccessDetails(relTypeSide1, PermissionEnum.WRITE, "item 2 - write",
+ new Scope().add("same_scope"));
+
+ AccessData data = new AccessData();
+ data.add(branchToCheck1, detail1);
+ data.add(branchToCheck2, detail2);
+
+ Set<Object> keys = data.keySet();
+ Assert.assertEquals(2, keys.size());
+ Assert.assertTrue(keys.contains(branchToCheck1));
+ Assert.assertTrue(keys.contains(branchToCheck2));
+
+ Collection<AccessDetail<?>> details = data.getAccess(branchToCheck1);
+ Assert.assertTrue(details.size() == 1);
+ AccessDetail<?> actualDetail = details.iterator().next();
+ Assert.assertEquals(detail1, actualDetail);
+
+ details = data.getAccess(branchToCheck2);
+ Assert.assertTrue(details.size() == 1);
+ actualDetail = details.iterator().next();
+ Assert.assertEquals(detail2, actualDetail);
+ Assert.assertEquals("/same_scope", actualDetail.getScope().getPath());
+ }
+
+ @Test
+ public void testAccessDetailMultipleScopeLevels() throws OseeCoreException {
+ AccessDetail<?> detail1 =
+ MockDataFactory.createAccessDetails(relTypeSide1, PermissionEnum.DENY, "item 1 - deny",
+ new Scope().add("more").add("specific").add("scope"));
+ AccessDetail<?> detail2 =
+ MockDataFactory.createAccessDetails(relTypeSide1, PermissionEnum.WRITE, "item 2 - write",
+ new Scope().add("less").add("specific"));
+
+ AccessData data = new AccessData();
+ data.add(branchToCheck1, detail1);
+ data.add(branchToCheck1, detail2);
+
+ Collection<AccessDetail<?>> details = data.getAccess(branchToCheck1);
+ Assert.assertTrue(details.size() == 1);
+ AccessDetail<?> actualDetail = details.iterator().next();
+ Assert.assertEquals(detail1, actualDetail);
+ Assert.assertEquals("/more/specific/scope", actualDetail.getScope().getPath());
+ }
+
+ @Test
+ public void testAccessDetailLegacyScope() throws OseeCoreException {
+ AccessDetail<?> specificDetail =
+ MockDataFactory.createAccessDetails(relTypeSide1, PermissionEnum.DENY, "item 1 - deny",
+ new Scope().add("more").add("specific").add("scope"));
+ AccessDetail<?> lessSpecificDetail =
+ MockDataFactory.createAccessDetails(relTypeSide1, PermissionEnum.WRITE, "item 2 - write",
+ new Scope().add("less").add("specific"));
+ AccessDetail<?> legacyDetail =
+ MockDataFactory.createAccessDetails(relTypeSide1, PermissionEnum.WRITE, "item 2 - write",
+ Scope.createLegacyScope());
+
+ AccessData data = new AccessData();
+ data.add(branchToCheck1, specificDetail);
+ data.add(branchToCheck1, legacyDetail);
+ data.add(branchToCheck1, lessSpecificDetail);
+
+ Collection<AccessDetail<?>> details = data.getAccess(branchToCheck1);
+ Assert.assertTrue(details.size() == 1);
+ AccessDetail<?> actualDetail = details.iterator().next();
+ Assert.assertEquals(specificDetail, actualDetail);
+ Assert.assertEquals("/more/specific/scope", actualDetail.getScope().getPath());
+ Assert.assertEquals(PermissionEnum.DENY, actualDetail.getPermission());
+ }
+
+ @Test
+ public void testToString() throws OseeCoreException {
+ AccessDetail<?> detail1 =
+ MockDataFactory.createAccessDetails(relTypeSide1, PermissionEnum.DENY, "item 1 - deny",
+ new Scope().add("scope 1"));
+ AccessDetail<?> detail2 =
+ MockDataFactory.createAccessDetails(relTypeSide1, PermissionEnum.WRITE, "item 2 - write",
+ new Scope().add("scope 2"));
+
+ AccessData data = new AccessData();
+ Assert.assertEquals("accessData []", data.toString());
+ data.add(branchToCheck1, detail1);
+ data.add(branchToCheck2, detail2);
+
+ String message =
+ "accessData [\n" + //
+ "\tCommon - AccessDetail [permission=WRITE, scope=/scope_2, accessObject=RelationTypeSide [type=[sideA_2]<-[relType_2]->[sideB_2], side=SIDE_A], reason=item 2 - write],\n" + //
+ "\tSystem Root Branch - AccessDetail [permission=DENY, scope=/scope_1, accessObject=RelationTypeSide [type=[sideA_2]<-[relType_2]->[sideB_2], side=SIDE_A], reason=item 1 - deny],\n" + //
+ "]";
+ Assert.assertEquals(message, data.toString());
+ }
+
+ private static AccessDetail<?> findObject(AccessDetail<?> item, Collection<AccessDetail<?>> details) {
+ AccessDetail<?> toReturn = null;
+ for (AccessDetail<?> detail : details) {
+ if (item.equals(detail)) {
+ toReturn = detail;
+ break;
+ }
+ }
+ return toReturn;
+ }
+
+ private static AccessDetail<?> createDetail(int index, Object expAccessObject) {
+ PermissionEnum expPermission = PermissionEnum.values()[Math.abs(index % PermissionEnum.values().length)];
+ return MockDataFactory.createAccessDetails(expAccessObject, expPermission, "reason: " + index,
+ new Scope().add("scope: " + index));
+ }
+
+ private static void createTestObjects(Collection<AccessDetail<?>> expectedDetails, Object... objects) {
+ int cnt = 1;
+ for (Object expAccessObject : objects) {
+ AccessDetail<?> detail = createDetail(cnt++, expAccessObject);
+ expectedDetails.add(detail);
+ }
+ }
+}

Back to the top