Adding
This commit is contained in:
+103
@@ -0,0 +1,103 @@
|
||||
using System;
|
||||
using System.Linq;
|
||||
using System.Security.Claims;
|
||||
using System.Threading.Tasks;
|
||||
using LCU.API.Internal.DocumentIngestor.Security;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using NUnit.Framework;
|
||||
|
||||
namespace LCU.API.Internal.DocumentIngestorTests.Security;
|
||||
|
||||
public class GroupMembershipRequirementHandlerTest
|
||||
{
|
||||
private readonly IAuthorizationHandler _handler = new GroupMembershipRequirementHandler();
|
||||
|
||||
private readonly GroupMembershipRequirement _requirement = new
|
||||
(
|
||||
Guid.NewGuid().ToString(),
|
||||
Guid.NewGuid().ToString(),
|
||||
Guid.NewGuid().ToString()
|
||||
);
|
||||
|
||||
[Test]
|
||||
public async Task HandleRequirementAsync_NoRolesOrGroups_RequirementNotSucceeded()
|
||||
{
|
||||
var principal = new ClaimsPrincipal();
|
||||
var context = new AuthorizationHandlerContext(new[] { _requirement }, principal, null);
|
||||
|
||||
await _handler.HandleAsync(context);
|
||||
|
||||
Assert.IsFalse(context.HasSucceeded);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public async Task HandleRequirementAsync_RolesAndGroupsDoesNotIncludeAnyRequirementGroups_RequirementNotSucceeded()
|
||||
{
|
||||
var roles = new[]
|
||||
{
|
||||
new Claim("roles", Guid.NewGuid().ToString()),
|
||||
new Claim("roles", Guid.NewGuid().ToString()),
|
||||
new Claim("roles", Guid.NewGuid().ToString()),
|
||||
};
|
||||
var groups = new[]
|
||||
{
|
||||
new Claim("groups", Guid.NewGuid().ToString()),
|
||||
new Claim("groups", Guid.NewGuid().ToString()),
|
||||
new Claim("groups", Guid.NewGuid().ToString()),
|
||||
};
|
||||
var principal = new ClaimsPrincipal(new ClaimsIdentity(roles.Concat(groups)));
|
||||
var context = new AuthorizationHandlerContext(new[] { _requirement }, principal, null);
|
||||
|
||||
await _handler.HandleAsync(context);
|
||||
|
||||
Assert.IsFalse(context.HasSucceeded);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public async Task HandleRequirementAsync_OneRoleIncludedInRequirementGroups_RequirementSucceeded()
|
||||
{
|
||||
var includedRole = _requirement.Groups.Skip(DateTime.Now.Millisecond % _requirement.Groups.Count).First();
|
||||
var roles = new[]
|
||||
{
|
||||
new Claim("roles", Guid.NewGuid().ToString()),
|
||||
new Claim("roles", includedRole),
|
||||
new Claim("roles", Guid.NewGuid().ToString()),
|
||||
};
|
||||
var groups = new[]
|
||||
{
|
||||
new Claim("groups", Guid.NewGuid().ToString()),
|
||||
new Claim("groups", Guid.NewGuid().ToString()),
|
||||
new Claim("groups", Guid.NewGuid().ToString()),
|
||||
};
|
||||
var principal = new ClaimsPrincipal(new ClaimsIdentity(roles.Concat(groups)));
|
||||
var context = new AuthorizationHandlerContext(new[] { _requirement }, principal, null);
|
||||
|
||||
await _handler.HandleAsync(context);
|
||||
|
||||
Assert.IsTrue(context.HasSucceeded);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public async Task HandleRequirementAsync_OneGroupIncludedInRequirementGroups_RequirementSucceeded()
|
||||
{
|
||||
var includedRole = _requirement.Groups.Skip(DateTime.Now.Millisecond % _requirement.Groups.Count).First();
|
||||
var roles = new[]
|
||||
{
|
||||
new Claim("roles", Guid.NewGuid().ToString()),
|
||||
new Claim("roles", includedRole),
|
||||
new Claim("roles", Guid.NewGuid().ToString())
|
||||
};
|
||||
var groups = new[]
|
||||
{
|
||||
new Claim("groups", Guid.NewGuid().ToString()),
|
||||
new Claim("groups", includedRole),
|
||||
new Claim("groups", Guid.NewGuid().ToString())
|
||||
};
|
||||
var principal = new ClaimsPrincipal(new ClaimsIdentity(roles.Concat(groups)));
|
||||
var context = new AuthorizationHandlerContext(new[] { _requirement }, principal, null);
|
||||
|
||||
await _handler.HandleAsync(context);
|
||||
|
||||
Assert.IsTrue(context.HasSucceeded);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user