public void VerifyThatExceptionIsThrownWhenSetAccessRightIsNotValid() { var participantPermission = new ParticipantPermission(Guid.NewGuid(), 1) { ObjectClass = ClassKind.DiagramCanvas, AccessRight = ParticipantAccessRightKind.MODIFY_IF_OWNER }; this.sideEffect = new ParticipantPermissionSideEffect() { AccessRightKindValidationService = this.denyingAccessRightKindValidationService.Object }; Assert.Throws <InvalidOperationException>( () => this.sideEffect.BeforeCreate( participantPermission, null, this.npgsqlTransaction, "partition", this.securityContext.Object)); Assert.Throws <InvalidOperationException>( () => this.sideEffect.AfterUpdate( participantPermission, null, null, this.npgsqlTransaction, "partition", this.securityContext.Object)); }
/// <summary> /// Find and create missing <see cref="ParticipantPermission"/> /// </summary> /// <param name="participantRole"> /// The <see cref="ParticipantRole"/> to find and create <see cref="ParticipantPermission"/>s for. /// </param> /// <param name="transaction"> /// The current transaction to the database. /// </param> private void FindAndCreateMissingParticipantPermissions(ParticipantRole participantRole, NpgsqlTransaction transaction) { var participantPermissions = this.ParticipantPermissionService.GetShallow( transaction, TopContainer, participantRole.ParticipantPermission, new RequestSecurityContext { ContainerReadAllowed = true }).OfType <ParticipantPermission>().ToList(); foreach (var classKind in Enum.GetValues(typeof(ClassKind)).Cast <ClassKind>()) { var defaultPermission = this.DefaultPermissionProvider.GetDefaultParticipantPermission(classKind); if (defaultPermission == ParticipantAccessRightKind.NONE) { var participantPermission = participantPermissions.Find(x => x.ObjectClass == classKind); if (participantPermission == null) { Logger.Debug("Create ParticipantPermission for class {0} for ParticipantRole {1}", classKind, participantRole.Iid); var permission = new ParticipantPermission(Guid.NewGuid(), 0) { ObjectClass = classKind, AccessRight = defaultPermission }; participantRole.ParticipantPermission.Add(permission.Iid); this.ParticipantPermissionService.CreateConcept(transaction, TopContainer, permission, participantRole); } } } }
public void VerifyThatSideEffectPassedWhenSetAccessRightIsValid() { var participantPermission = new ParticipantPermission(Guid.NewGuid(), 1) { ObjectClass = ClassKind.Book, AccessRight = ParticipantAccessRightKind.MODIFY_IF_OWNER }; this.sideEffect = new ParticipantPermissionSideEffect() { AccessRightKindValidationService = this.permissiveAccessRightKindValidationService.Object }; this.sideEffect.BeforeCreate( participantPermission, null, this.npgsqlTransaction, "partition", this.securityContext.Object); this.sideEffect.AfterUpdate( participantPermission, null, null, this.npgsqlTransaction, "partition", this.securityContext.Object); this.permissiveAccessRightKindValidationService.Verify( x => x.IsParticipantPermissionValid(It.IsAny <ParticipantPermission>()), Times.Exactly(2)); }
public void Verify_that_ParticipantPermission_is_included_when_classkind_version_eaual_or_lower_than_requested_model_version() { var participantPermission = new ParticipantPermission(Guid.NewGuid(), 1); participantPermission.ObjectClass = ClassKind.ActionItem; Assert.That(this.thingConverterExtensions.AssertSerialization(participantPermission, this.metaDataProvider, new Version(1, 1, 0)), Is.True); }
public void SetUp() { this.participantRoleRuleChecker = new ParticipantRoleRuleChecker(); this.participantRole = new ParticipantRole(); this.participantPermission = new ParticipantPermission { Iid = Guid.Parse("450ef9fb-fc60-4dab-a203-4340f0181102"), ObjectClass = ClassKind.Person }; this.participantRole.ParticipantPermission.Add(this.participantPermission); }
public void VerifyThatRoleAndPermissionAreFilteredCorrectly() { var personRole = new PersonRole(Guid.NewGuid(), 0); var participantRole = new ParticipantRole(Guid.NewGuid(), 0); this.personPermission1 = new PersonPermission(Guid.NewGuid(), 0); this.personPermission1.ObjectClass = ClassKind.ActionItem; this.personPermission2 = new PersonPermission(Guid.NewGuid(), 0); this.personPermission2.ObjectClass = ClassKind.SiteDirectory; this.personPermission3 = new PersonPermission(Guid.NewGuid(), 0); this.personPermission3.ObjectClass = ClassKind.ActualFiniteState; this.participantPermission1 = new ParticipantPermission(Guid.NewGuid(), 0); this.participantPermission1.ObjectClass = ClassKind.DiagramCanvas; this.participantPermission2 = new ParticipantPermission(Guid.NewGuid(), 0); this.participantPermission2.ObjectClass = ClassKind.EngineeringModel; this.participantPermission3 = new ParticipantPermission(Guid.NewGuid(), 0); this.participantPermission3.ObjectClass = ClassKind.ElementDefinition; personRole.PersonPermission.Add(this.personPermission3.Iid); personRole.PersonPermission.Add(this.personPermission2.Iid); personRole.PersonPermission.Add(this.personPermission1.Iid); participantRole.ParticipantPermission.Add(this.participantPermission1.Iid); participantRole.ParticipantPermission.Add(this.participantPermission2.Iid); participantRole.ParticipantPermission.Add(this.participantPermission3.Iid); var input = new List <Thing> { personRole, participantRole, this.personPermission1, this.personPermission2, this.personPermission3, this.participantPermission1, this.participantPermission2, this.participantPermission3 }; var result = this.service.FilterOutPermissions( input, new Version(1, 0)).ToArray(); Assert.IsFalse(result.Contains(this.personPermission1)); Assert.IsFalse(result.Contains(this.participantPermission1)); Assert.AreEqual(personRole.PersonPermission.Count, 2); Assert.AreEqual(participantRole.ParticipantPermission.Count, 2); }
/// <summary> /// Serialize the <see cref="ParticipantPermission"/> /// </summary> /// <param name="participantPermission">The <see cref="ParticipantPermission"/> to serialize</param> /// <returns>The <see cref="JObject"/></returns> private JObject Serialize(ParticipantPermission participantPermission) { var jsonObject = new JObject(); jsonObject.Add("accessRight", this.PropertySerializerMap["accessRight"](Enum.GetName(typeof(CDP4Common.CommonData.ParticipantAccessRightKind), participantPermission.AccessRight))); jsonObject.Add("classKind", this.PropertySerializerMap["classKind"](Enum.GetName(typeof(CDP4Common.CommonData.ClassKind), participantPermission.ClassKind))); jsonObject.Add("excludedDomain", this.PropertySerializerMap["excludedDomain"](participantPermission.ExcludedDomain.OrderBy(x => x, this.guidComparer))); jsonObject.Add("excludedPerson", this.PropertySerializerMap["excludedPerson"](participantPermission.ExcludedPerson.OrderBy(x => x, this.guidComparer))); jsonObject.Add("iid", this.PropertySerializerMap["iid"](participantPermission.Iid)); jsonObject.Add("isDeprecated", this.PropertySerializerMap["isDeprecated"](participantPermission.IsDeprecated)); jsonObject.Add("modifiedOn", this.PropertySerializerMap["modifiedOn"](participantPermission.ModifiedOn)); jsonObject.Add("objectClass", this.PropertySerializerMap["objectClass"](Enum.GetName(typeof(CDP4Common.CommonData.ClassKind), participantPermission.ObjectClass))); jsonObject.Add("revisionNumber", this.PropertySerializerMap["revisionNumber"](participantPermission.RevisionNumber)); jsonObject.Add("thingPreference", this.PropertySerializerMap["thingPreference"](participantPermission.ThingPreference)); return(jsonObject); }
public void TestRow() { var permission = new ParticipantPermission(Guid.NewGuid(), this.cache, this.uri) { ObjectClass = ClassKind.Alias, AccessRight = ParticipantAccessRightKind.MODIFY }; this.role.ParticipantPermission.Add(permission); this.cache.TryAdd(new CacheKey(permission.Iid, null), new Lazy <Thing>(() => permission)); var row = new ParticipantPermissionRowViewModel(permission, this.session.Object, null); Assert.AreEqual(row.ObjectClass, permission.ObjectClass); Assert.AreEqual(row.AccessRight, permission.AccessRight); Assert.That(row.Name, Is.Not.Null.Or.Empty); Assert.IsNotNull(row.ShortName); }
public void VerifyThatModifyIfOwnerCanBeSetOnlyForOwnedObjectClass() { var participantPermission1 = new ParticipantPermission(Guid.NewGuid(), 1) { ObjectClass = ClassKind.DiagramCanvas, AccessRight = ParticipantAccessRightKind .MODIFY_IF_OWNER }; var participantPermission2 = new ParticipantPermission(Guid.NewGuid(), 1) { ObjectClass = ClassKind.Book, AccessRight = ParticipantAccessRightKind .MODIFY_IF_OWNER }; Assert.False(this.service.IsParticipantPermissionValid(participantPermission1)); Assert.True(this.service.IsParticipantPermissionValid(participantPermission2)); }
/// <summary> /// Initializes a new instance of the <see cref="ParticipantPermissionRowViewModel"/> class. /// </summary> /// <param name="permission">The <see cref="ParticipantPermission"/> that is represented by the current row</param> /// <param name="session">The session</param> /// <param name="containerViewModel">The container <see cref="IViewModelBase{T}"/></param> public ParticipantPermissionRowViewModel(ParticipantPermission permission, ISession session, IViewModelBase <Thing> containerViewModel) : base(permission, session, containerViewModel) { this.UpdatePermission(); this.WhenAnyValue(x => x.AccessRight).Subscribe(_ => this.ExecuteUpdatePermission()); }
/// <summary> /// Initializes a new instance of the <see cref="ParticipantPermissionRowViewModel"/> class. /// </summary> /// <param name="permission">The <see cref="ParticipantPermission"/> that is represented by the current row</param> /// <param name="session">The session</param> /// <param name="containerViewModel">The container <see cref="IViewModelBase{T}"/></param> public ParticipantPermissionRowViewModel(ParticipantPermission permission, ISession session, IViewModelBase <Thing> containerViewModel) : base(permission, session, containerViewModel) { this.UpdateIsDeprecatedDerivedFromContainerRowViewModel(); }
public void Setup() { this.npgsqlTransaction = null; this.metaInfoProvider = new MetaInfoProvider { DomainOfExpertiseMetaInfo = new DomainOfExpertiseMetaInfo(), IterationSetupMetaInfo = new IterationSetupMetaInfo(), SiteDirectoryDataAnnotationMetaInfo = new SiteDirectoryDataAnnotationMetaInfo(), ElementDefinitionMetaInfo = new ElementDefinitionMetaInfo(), ElementUsageMetaInfo = new ElementUsageMetaInfo(), BookMetaInfo = new BookMetaInfo(), ActionItemMetaInfo = new ActionItemMetaInfo(), SiteDirectoryMetaInfo = new SiteDirectoryMetaInfo(), ActualFiniteStateMetaInfo = new ActualFiniteStateMetaInfo(), DiagramCanvasMetaInfo = new DiagramCanvasMetaInfo(), EngineeringModelMetaInfo = new EngineeringModelMetaInfo(), }; this.personRoles = new List <PersonRole> { new PersonRole { Iid = Guid.NewGuid(), RevisionNumber = 1, PersonPermission = new List <Guid> { this .personPermission1id, this .personPermission2id, this .personPermission3id } } }; this.participantRoles = new List <ParticipantRole> { new ParticipantRole { Iid = Guid.NewGuid(), RevisionNumber = 1, ParticipantPermission = new List <Guid> { this .participantPermission1id, this .participantPermission2id, this .participantPermission3id } } }; this.transactionManager = new Mock <ICdp4TransactionManager>(); NpgsqlConnection connection = null; this.transactionManager.Setup(x => x.SetupTransaction(ref connection, null)) .Returns(this.npgsqlTransaction); this.participantPermission1 = new ParticipantPermission(this.participantPermission1id, 1); this.participantPermission1.ObjectClass = ClassKind.DomainOfExpertise; this.participantPermission2 = new ParticipantPermission(this.participantPermission2id, 1); this.participantPermission2.ObjectClass = ClassKind.IterationSetup; this.participantPermission3 = new ParticipantPermission(this.participantPermission3id, 1); this.participantPermission3.ObjectClass = ClassKind.SiteDirectoryDataAnnotation; this.participantPermissionDao = new Mock <IParticipantPermissionDao>(); this.participantPermissionDao.Setup(x => x.Read(this.npgsqlTransaction, SiteDirectoryData, It.IsAny <IEnumerable <Guid> >(), true)) .Returns( new List <ParticipantPermission> { this.participantPermission1, this.participantPermission2, this.participantPermission3 }); this.personPermission1 = new PersonPermission(this.personPermission1id, 1); this.personPermission1.ObjectClass = ClassKind.DomainOfExpertise; this.personPermission2 = new PersonPermission(this.personPermission2id, 1); this.personPermission2.ObjectClass = ClassKind.IterationSetup; this.personPermission3 = new PersonPermission(this.personPermission3id, 1); this.personPermission3.ObjectClass = ClassKind.SiteDirectoryDataAnnotation; this.personPermissionDao = new Mock <IPersonPermissionDao>(); this.personPermissionDao.Setup(x => x.Read(this.npgsqlTransaction, SiteDirectoryData, It.IsAny <IEnumerable <Guid> >(), true)).Returns( new List <PersonPermission> { this.personPermission1, this.personPermission2, this.personPermission3 }); this.service = new PermissionInstanceFilterService { MetadataProvider = this.metaInfoProvider, TransactionManager = this.transactionManager.Object, ParticipantPermissionDao = this.participantPermissionDao.Object, PersonPermissionDao = this.personPermissionDao.Object }; }
/// <summary> /// Add an Participant Permission row view model to the list of <see cref="ParticipantPermission"/> /// </summary> /// <param name="participantPermission"> /// The <see cref="ParticipantPermission"/> that is to be added /// </param> private ParticipantPermissionRowViewModel AddParticipantPermissionRowViewModel(ParticipantPermission participantPermission) { return(new ParticipantPermissionRowViewModel(participantPermission, this.Session, this)); }