public List <string> SimilarClaimsTest(bool useCache) { var principals = new IPrincipal[] { new MockPrincipal { ID = new Guid("11195E07-8D14-4DB9-BD79-C0C3E8407FEB"), Name = "pr0" }, new MockPrincipal { ID = new Guid("22295E07-8D14-4DB9-BD79-C0C3E8407FEB"), Name = "pr1" } }; var roles = new IRole[] { new MockRole { ID = new Guid("33395E07-8D14-4DB9-BD79-C0C3E8407FEB"), Name = "r0" }, new MockRole { ID = new Guid("44495E07-8D14-4DB9-BD79-C0C3E8407FEB"), Name = "r1" } }; var principalRoles = new IPrincipalHasRole[] { new MockPrincipalHasRole(principals[0], roles[0]), new MockPrincipalHasRole(principals[1], roles[1]) }; var roleRoles = new IRoleInheritsRole[] { new MockRoleInheritsRole(usersFrom: roles[0], permissionsFrom: roles[1]) }; var claims = new Claim[] { new Claim("a.b", "c"), new Claim("a", "b.c"), new Claim("a2.b", "c"), new Claim("a2", "b.c"), new Claim("a4.b", "c"), new Claim("a4", "b.c"), new Claim("a6", "b"), // index 6, commonClaims[6] new Claim("A6", "B"), // index 7 new Claim("A8", "B"), // commonClaims[7] new Claim("a8", "b"), // index 9 }; var commonClaims = claims .Where((claim, index) => index != 7 && index != 9) .Select(c => new MockClaim(c.Resource, c.Right, true)) .ToArray <ICommonClaim>(); var rolePermissions = new IRolePermission[] { new MockRolePermission(roles[0], commonClaims[0], true), new MockRolePermission(roles[1], commonClaims[1], true), new MockRolePermission(roles[0], commonClaims[2], true), new MockRolePermission(roles[1], commonClaims[3], false), new MockRolePermission(roles[0], commonClaims[4], true), new MockRolePermission(roles[0], commonClaims[6], true), new MockRolePermission(roles[1], commonClaims[7], true), }; var principalPermissions = new IPrincipalPermission[] { }; var authorizationContext = NewAuthorizationContext(principals, roles, principalRoles, roleRoles, commonClaims, rolePermissions, principalPermissions, useCache); var provider = authorizationContext.CommonAuthorizationProvider; Assert.AreEqual("True, True, True, False, True, False, True, True, True, True", TestUtility.Dump(provider.GetAuthorizations(new TestUserInfo("pr0"), claims))); Assert.AreEqual("False, True, False, False, False, False, False, False, True, True", TestUtility.Dump(provider.GetAuthorizations(new TestUserInfo("pr1"), claims))); return(authorizationContext.Log); }
public List <string> ClearCachePrincipalsRoles_GetAuthorization(bool editSystemRole = false) { var principals = new IPrincipal[] { new MockPrincipal { ID = new Guid("11195E07-8D14-4DB9-BD79-C0C3E8407FEB"), Name = "pr0" }, new MockPrincipal { ID = new Guid("22295E07-8D14-4DB9-BD79-C0C3E8407FEB"), Name = "pr1" } }; var roles = new IRole[] { new MockRole { ID = new Guid("33395E07-8D14-4DB9-BD79-C0C3E8407FEB"), Name = "r0" }, new MockRole { ID = new Guid("44495E07-8D14-4DB9-BD79-C0C3E8407FEB"), Name = "r1" }, new MockRole { ID = new Guid("55595E07-8D14-4DB9-BD79-C0C3E8407FEB"), Name = SystemRole.AllPrincipals.ToString() } }; var principalRoles = new IPrincipalHasRole[] { new MockPrincipalHasRole(principals[0], roles[0]), new MockPrincipalHasRole(principals[1], roles[1]) }; var roleRoles = new IRoleInheritsRole[] { new MockRoleInheritsRole(usersFrom: roles[0], permissionsFrom: roles[1]) }; var claims = new Claim[] { new Claim("c0", "c0ri"), new Claim("c1", "c1ri"), new Claim("c2", "c2ri"), new Claim("c3", "c3ri"), new Claim("c4", "c4ri"), new Claim("c5", "c5ri"), new Claim("c6", "c6ri"), new Claim("c7", "c7ri"), }; var commonClaims = claims .Where(c => c.Resource != "c7") .Select(c => new MockClaim(c.Resource, c.Right, true)) .ToArray <ICommonClaim>(); commonClaims[3].Active = false; commonClaims[4].Active = null; var rolePermissions = new IRolePermission[] { new MockRolePermission(roles[0], commonClaims[0], true), new MockRolePermission(roles[1], commonClaims[1], true), // Also inherited to role0. new MockRolePermission(roles[0], commonClaims[2], true), new MockRolePermission(roles[1], commonClaims[2], false), // Also denied to role0. new MockRolePermission(roles[0], commonClaims[3], true), // Inactive claim (active = null) new MockRolePermission(roles[0], commonClaims[4], true), // Inactive claim. new MockRolePermission(roles[1], commonClaims[6], true), }; var principalPermissions = new IPrincipalPermission[] { new MockPrincipalPermission(principals[0], commonClaims[5], true), new MockPrincipalPermission(principals[0], commonClaims[6], false), }; var authorizationContext = NewAuthorizationContext(principals, roles, principalRoles, roleRoles, commonClaims, rolePermissions, principalPermissions, useCache: true); var cache = authorizationContext.AuthorizationDataCache; cache.ClearCachePrincipals(new[] { principals[0] }); cache.ClearCacheRoles(new[] { roles[0].ID }); if (editSystemRole) { cache.ClearCacheRoles(new[] { roles[2].ID }); } var provider = authorizationContext.CommonAuthorizationProvider; Assert.AreEqual("True, True, False, False, False, True, False, False", TestUtility.Dump(provider.GetAuthorizations(new TestUserInfo("pr0"), claims))); Assert.AreEqual("False, True, False, False, False, False, True, False", TestUtility.Dump(provider.GetAuthorizations(new TestUserInfo("pr1"), claims))); return(authorizationContext.Log); }
public List <string> SimpleTest(bool useCache) { var principals = new IPrincipal[] { new MockPrincipal { ID = new Guid("11195e07-8d14-4db9-bd79-c0c3e8407feb"), Name = "pr0" }, new MockPrincipal { ID = new Guid("22295e07-8d14-4db9-bd79-c0c3e8407feb"), Name = "pr1" } }; var roles = new IRole[] { new MockRole { ID = new Guid("33395e07-8d14-4db9-bd79-c0c3e8407feb"), Name = "r0" }, new MockRole { ID = new Guid("44495e07-8d14-4db9-bd79-c0c3e8407feb"), Name = "r1" }, new MockRole { ID = new Guid("55595e07-8d14-4db9-bd79-c0c3e8407feb"), Name = "r2" } }; var principalRoles = new IPrincipalHasRole[] { new MockPrincipalHasRole(principals[0], roles[0]), new MockPrincipalHasRole(principals[1], roles[1]), new MockPrincipalHasRole(principals[1], roles[2]) }; var roleRoles = new IRoleInheritsRole[] { new MockRoleInheritsRole(usersFrom: roles[0], permissionsFrom: roles[1]) }; var claims = new Claim[] { new Claim("c0", "c0ri"), new Claim("c1", "c1ri"), new Claim("c2", "c2ri"), new Claim("c3", "c3ri"), new Claim("c4", "c4ri"), new Claim("c5", "c5ri"), new Claim("c6", "c6ri"), new Claim("c7", "c7ri"), }; var commonClaims = claims .Where(c => c.Resource != "c7") .Select(c => new MockClaim(c.Resource, c.Right, true)) .ToArray <ICommonClaim>(); commonClaims[3].Active = false; commonClaims[4].Active = null; var rolePermissions = new IRolePermission[] { new MockRolePermission(roles[0], commonClaims[0], true), new MockRolePermission(roles[1], commonClaims[1], true), // Also inherited to role0. new MockRolePermission(roles[0], commonClaims[2], true), new MockRolePermission(roles[1], commonClaims[2], false), // Also denied to role0. new MockRolePermission(roles[0], commonClaims[3], true), // Inactive claim (active = null) new MockRolePermission(roles[0], commonClaims[4], true), // Inactive claim. new MockRolePermission(roles[1], commonClaims[6], true), }; var principalPermissions = new IPrincipalPermission[] { new MockPrincipalPermission(principals[0], commonClaims[5], true), new MockPrincipalPermission(principals[0], commonClaims[6], false), }; var authorizationContext = NewAuthorizationContext(principals, roles, principalRoles, roleRoles, commonClaims, rolePermissions, principalPermissions, useCache); var provider = authorizationContext.CommonAuthorizationProvider; Assert.AreEqual("True, True, False, False, False, True, False, False", TestUtility.Dump(provider.GetAuthorizations(new TestUserInfo("pr0"), claims))); Assert.AreEqual("False, True, False, False, False, False, True, False", TestUtility.Dump(provider.GetAuthorizations(new TestUserInfo("pr1"), claims))); return(authorizationContext.Log); }