public void Test_CheckTypeAccess_SingleSpecificType(bool grant) { var entityType = Entity.Create <EntityType>(); entityType.Save(); var userAccount = Entity.Create <UserAccount>(); userAccount.Save(); IDictionary <SubjectPermissionTuple, IList <AccessRuleQuery> > rules = new Dictionary <SubjectPermissionTuple, IList <AccessRuleQuery> >(); if (grant) { rules.Add(new SubjectPermissionTuple(userAccount.Id, Permissions.Create.Id), new List <AccessRuleQuery> { new AccessRuleQuery(100, 101, entityType.Id, new StructuredQuery(), false) }); } var mockRepo = new MockRepository(MockBehavior.Strict); var accessQueryFactoryMock = mockRepo.Create <IAccessRuleQueryFactory>(); accessQueryFactoryMock.Setup(f => f.GetQueries()).Returns(rules); var checker = new SystemEntityAccessControlChecker(new UserRoleRepository(), new SystemAccessRuleQueryRepository(accessQueryFactoryMock.Object), new EntityTypeRepository()); var entityTypes = new [] { entityType }; Assert.AreEqual(grant, checker.CheckTypeAccess(entityTypes, Permissions.Create, userAccount)[entityType.Id], "CheckTypeAccess returned incorrect result"); }
public void Test_Creation() { SystemEntityAccessControlChecker entityAccessControlChecker; entityAccessControlChecker = null; Assert.That(() => entityAccessControlChecker = new SystemEntityAccessControlChecker(), Throws.Nothing); Assert.That(entityAccessControlChecker, Has.Property("RoleRepository").Not.Null); Assert.That(entityAccessControlChecker, Has.Property("QueryRepository").Not.Null); Assert.That(entityAccessControlChecker, Has.Property("EntityTypeRepository").Not.Null); }
public void Test_CheckTypeAccess_CreateSingleInheritedType(bool grant) { var derivedEntityType = new EntityType { Name = "Derived Type " + Guid.NewGuid() }; derivedEntityType.Save(); var baseEntityType = new EntityType { Name = "Base Type " + Guid.NewGuid() }; baseEntityType.DerivedTypes.Add(derivedEntityType); baseEntityType.Save(); var userAccount = Entity.Create <UserAccount>(); userAccount.Save(); IDictionary <SubjectPermissionTuple, IList <AccessRuleQuery> > rules = new Dictionary <SubjectPermissionTuple, IList <AccessRuleQuery> >(); if (grant) { // Grant access to base type rules.Add(new SubjectPermissionTuple(userAccount.Id, Permissions.Create.Id), new List <AccessRuleQuery> { new AccessRuleQuery(100, 101, baseEntityType.Id, new StructuredQuery(), false) }); } var mockRepo = new MockRepository(MockBehavior.Strict); var accessQueryFactoryMock = mockRepo.Create <IAccessRuleQueryFactory>(); accessQueryFactoryMock.Setup(f => f.GetQueries()).Returns(rules); var checker = new SystemEntityAccessControlChecker(new UserRoleRepository(), new SystemAccessRuleQueryRepository(accessQueryFactoryMock.Object), new EntityTypeRepository()); // Check derived type var derivedEntityTypes = new [] { derivedEntityType }; var baseEntityTypes = new [] { baseEntityType }; Assert.AreEqual(grant, checker.CheckTypeAccess(derivedEntityTypes, Permissions.Create, userAccount)[derivedEntityType.Id], "CheckTypeAccess returned incorrect result"); Assert.AreEqual(grant, checker.CheckTypeAccess(baseEntityTypes, Permissions.Create, userAccount)[baseEntityType.Id], "CheckTypeAccess returned incorrect result"); }