using NUnit.Framework; using System; using System.Collections.Generic; using System.Linq; namespace ln.identities.test { public class TestIdentityProvider : BaseIdentityProvider { List identities = new List(); List roleAssignments = new List(); public TestIdentityProvider() { } public override Identity CreateIdentity(string identityName) { Identity identity = new Identity(this, identityName); identities.Add(identity); return identity; } public override IEnumerable> GetIdentities() => identities.Select((Identity arg) => new KeyValuePair(arg.UniqueID, arg.IdentityName)); public override Identity GetIdentity(Guid uniqueID) { foreach (Identity identity in identities) if (identity.UniqueID.Equals(uniqueID)) return identity; throw new KeyNotFoundException(); } public override IEnumerable GetRoleAssignments(Identity identity) => roleAssignments.Where((RoleAssignment arg) => arg.Identity.Equals(identity)); public override bool Save(Identity identity) { throw new NotImplementedException(); } public void AddRoleAssignment(RoleAssignment roleAssignment) => roleAssignments.Add(roleAssignment); } [TestFixture()] public class IdentityTests { [Test()] public void TestCase() { TestIdentityProvider identityProvider = new TestIdentityProvider(); Identity idService = identityProvider.CreateIdentity("Service"); Identity idOrg = identityProvider.CreateIdentity("Organization"); Identity idManager = identityProvider.CreateIdentity("Manager"); Identity idEmpA = identityProvider.CreateIdentity("EmployeeA"); Identity idEmpB = identityProvider.CreateIdentity("EmployeeB"); Identity idEmpC = identityProvider.CreateIdentity("EmployeeC"); Identity idEmpD = identityProvider.CreateIdentity("EmployeeD"); identityProvider.AddRoleAssignment(new RoleAssignment(identityProvider,idOrg,idService,Role.OWN)); identityProvider.AddRoleAssignment(new RoleAssignment(identityProvider, idManager, idOrg, Role.OWN)); identityProvider.AddRoleAssignment(new RoleAssignment(identityProvider, idEmpA, idOrg, Role.IMPERSONATE | Role.CONTROL)); identityProvider.AddRoleAssignment(new RoleAssignment(identityProvider, idEmpB, idEmpA, Role.IMPERSONATE | Role.ADMIN)); identityProvider.AddRoleAssignment(new RoleAssignment(identityProvider, idEmpC, idOrg, Role.IMPERSONATE | Role.CONTROL)); identityProvider.AddRoleAssignment(new RoleAssignment(identityProvider, idEmpD, idEmpC, Role.ADMIN)); DumpRoleAssigments(idService); DumpRoleAssigments(idOrg); DumpRoleAssigments(idManager); DumpRoleAssigments(idEmpA); DumpRoleAssigments(idEmpB); DumpRoleAssigments(idEmpC); DumpRoleAssigments(idEmpD); } public void DumpRoleAssigments(Identity identity) { Console.WriteLine("Identity: {0}", identity.IdentityName); foreach (RoleAssignment roleAssignment in identity.RoleAssignments) { Console.WriteLine(" {0}", roleAssignment); } foreach (AssignedRole assignedRole in identity.AssignedRoles) { Console.WriteLine(" {0}", assignedRole); } } } }