ln.identities/test/IdentityTests.cs

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);
}
}
}
}