@Test public void testProcessDataRelationTypeMatchSideANoMatch() throws OseeCoreException { IRelationType relationType = CoreRelationTypes.Default_Hierarchical__Child; XRelationType relationTypeRef = MockModel.createXRelationType(relationType.getGuid(), relationType.getName()); RelationTypeRestriction restriction = MockModel.createRelationTypeRestriction(); restriction.setPermission(AccessPermissionEnum.ALLOW); restriction.setRelationTypeRef(relationTypeRef); restriction.setRestrictedToSide(XRelationSideEnum.SIDE_A); RelationType testRelationType = getTestRelationType( relationType, CoreArtifactTypes.Artifact, CoreArtifactTypes.SoftwareRequirement); IArtifactType artTypeToken1 = CoreArtifactTypes.SoftwareRequirement; ArtifactType artArtType = new ArtifactType(artTypeToken1.getGuid(), artTypeToken1.getName(), false); MockArtifactProxy artData = new MockArtifactProxy( GUID.create(), artArtType, null, null, Collections.singleton(testRelationType)); RelationTypeSide expectedObject = new RelationTypeSide(testRelationType, RelationSide.SIDE_A); Scope expectedScope = new Scope(); DslAsserts.assertAccessDetail( getRestrictionHandler(), restriction, artData, expectedObject, PermissionEnum.WRITE, expectedScope); }
@Test public void testProcessDataArtifactTypeMatch() throws OseeCoreException { IRelationType relationType = CoreRelationTypes.Default_Hierarchical__Child; IArtifactType artifactType = CoreArtifactTypes.AbstractSoftwareRequirement; XArtifactType artifactTypeRef = MockModel.createXArtifactType(artifactType.getGuid(), artifactType.getName()); RelationTypeRestriction restriction = MockModel.createRelationTypeRestriction(); restriction.setPermission(AccessPermissionEnum.ALLOW); restriction.setRelationTypeMatch(true); RelationTypeArtifactTypePredicate predicate = OseeDslFactory.eINSTANCE.createRelationTypeArtifactTypePredicate(); predicate.setArtifactTypeRef(artifactTypeRef); restriction.setPredicate(predicate); restriction.setRestrictedToSide(XRelationSideEnum.SIDE_B); RelationType testRelationType = getTestRelationType( relationType, CoreArtifactTypes.SoftwareRequirement, CoreArtifactTypes.Artifact); IArtifactType artTypeToken1 = CoreArtifactTypes.SoftwareRequirement; ArtifactType artArtType = new ArtifactType(artTypeToken1.getGuid(), artTypeToken1.getName(), false); Set<ArtifactType> superTypes = new HashSet<>(); superTypes.add( new ArtifactType( CoreArtifactTypes.AbstractSoftwareRequirement.getGuid(), CoreArtifactTypes.AbstractSoftwareRequirement.getName(), false)); artArtType.setSuperTypes(superTypes); DefaultBasicArtifact expectedAccessObject = new DefaultBasicArtifact(1, GUID.create(), "Another Artifact"); MockArtifactProxy artData = new MockArtifactProxy( expectedAccessObject.getGuid(), artArtType, expectedAccessObject, null, Collections.singleton(testRelationType)); RelationTypeSide expectedObject = new RelationTypeSide(testRelationType, RelationSide.SIDE_B); Scope expectedScope = new Scope(); expectedScope.addSubPath(artData.getName()); DslAsserts.assertAccessDetail( getRestrictionHandler(), restriction, artData, expectedObject, PermissionEnum.WRITE, expectedScope); }
@Test public void testProcessDataRelationTypeNoMatch() throws OseeCoreException { IRelationType relationType = CoreRelationTypes.Default_Hierarchical__Child; XRelationType relationTypeRef = MockModel.createXRelationType(relationType.getGuid(), relationType.getName()); RelationTypeRestriction restriction = MockModel.createRelationTypeRestriction(); restriction.setPermission(AccessPermissionEnum.ALLOW); restriction.setRelationTypeRef(relationTypeRef); // Artifact Data has no relation types therefore relation type will not match MockArtifactProxy artData = new MockArtifactProxy(GUID.create(), null); Scope expectedScope = new Scope().add("fail"); DslAsserts.assertNullAccessDetail(getRestrictionHandler(), restriction, artData, expectedScope); }
private void testProcessRelationWithArtifactHelper( String artifactName, String matcherArtifactName, Scope expectedScope) throws OseeCoreException { IRelationType relationType = CoreRelationTypes.Default_Hierarchical__Child; XRelationType relationTypeRef = MockModel.createXRelationType(relationType.getGuid(), relationType.getName()); RelationTypeRestriction restriction = MockModel.createRelationTypeRestriction(); restriction.setPermission(AccessPermissionEnum.ALLOW); restriction.setRelationTypeRef(relationTypeRef); restriction.setRestrictedToSide(XRelationSideEnum.SIDE_B); XArtifactMatcher matcher = MockModel.createMatcher( "artifactMatcher \"Test\" where artifactName EQ \"" + matcherArtifactName + "\";"); RelationTypeArtifactPredicate predicate = OseeDslFactory.eINSTANCE.createRelationTypeArtifactPredicate(); predicate.setArtifactMatcherRef(matcher); restriction.setPredicate(predicate); RelationType testRelationType = getTestRelationType( relationType, CoreArtifactTypes.SoftwareRequirement, CoreArtifactTypes.Artifact); IArtifactType artTypeToken1 = CoreArtifactTypes.SoftwareRequirement; ArtifactType artArtType = new ArtifactType(artTypeToken1.getGuid(), artTypeToken1.getName(), false); Set<ArtifactType> superTypes = new HashSet<>(); superTypes.add( new ArtifactType( CoreArtifactTypes.Artifact.getGuid(), CoreArtifactTypes.Artifact.getName(), false)); artArtType.setSuperTypes(superTypes); IBasicArtifact<Object> dummy = new DefaultBasicArtifact(43, GUID.create(), artifactName); MockArtifactProxy artData = new MockArtifactProxy( GUID.create(), artArtType, dummy, null, Collections.singleton(testRelationType)); RelationTypeSide expectedObject = new RelationTypeSide(testRelationType, RelationSide.SIDE_B); DslAsserts.assertAccessDetail( getRestrictionHandler(), restriction, artData, expectedObject, PermissionEnum.WRITE, expectedScope); }