89 lines
3.6 KiB
C#
89 lines
3.6 KiB
C#
|
using NUnit.Framework;
|
|||
|
using System;
|
|||
|
using System.Collections.Generic;
|
|||
|
using System.Linq;
|
|||
|
|
|||
|
namespace ln.identities.test
|
|||
|
{
|
|||
|
|
|||
|
public class TestIdentityProvider : BaseIdentityProvider
|
|||
|
{
|
|||
|
List<Identity> identities = new List<Identity>();
|
|||
|
List<RoleAssignment> roleAssignments = new List<RoleAssignment>();
|
|||
|
|
|||
|
public TestIdentityProvider()
|
|||
|
{
|
|||
|
}
|
|||
|
|
|||
|
public override Identity CreateIdentity(string identityName)
|
|||
|
{
|
|||
|
Identity identity = new Identity(this, identityName);
|
|||
|
identities.Add(identity);
|
|||
|
return identity;
|
|||
|
}
|
|||
|
|
|||
|
public override IEnumerable<KeyValuePair<Guid, string>> GetIdentities() => identities.Select((Identity arg) => new KeyValuePair<Guid, string>(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<RoleAssignment> 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);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
}
|