62 lines
2.2 KiB
C#
62 lines
2.2 KiB
C#
using Microsoft.AspNetCore.Http;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using System.Collections.Generic;
|
|
using System.Security.Claims;
|
|
|
|
namespace ManagerService.Tests.Infrastructure
|
|
{
|
|
// Constantes reproduisant ManagerService.Service.Security (internal)
|
|
public static class Permissions
|
|
{
|
|
public const string SuperAdmin = "Manager.superadmin";
|
|
public const string InstanceAdmin = "Manager.instanceadmin";
|
|
public const string ContentEditor = "Manager.contenteditor";
|
|
public const string Viewer = "Manager.viewer";
|
|
}
|
|
|
|
public static class ClaimTypeKeys
|
|
{
|
|
public const string Permission = "Permission";
|
|
public const string InstanceId = "InstanceId";
|
|
}
|
|
|
|
public static class FakeUser
|
|
{
|
|
public static ClaimsPrincipal Create(string role, string instanceId = "inst-test")
|
|
{
|
|
var claims = new List<Claim>
|
|
{
|
|
new Claim(ClaimTypeKeys.Permission, role),
|
|
new Claim(ClaimTypeKeys.InstanceId, instanceId)
|
|
};
|
|
|
|
// Rôles cumulatifs : SuperAdmin hérite de tout
|
|
if (role == Permissions.SuperAdmin)
|
|
{
|
|
claims.Add(new Claim(ClaimTypeKeys.Permission, Permissions.InstanceAdmin));
|
|
claims.Add(new Claim(ClaimTypeKeys.Permission, Permissions.ContentEditor));
|
|
claims.Add(new Claim(ClaimTypeKeys.Permission, Permissions.Viewer));
|
|
}
|
|
else if (role == Permissions.InstanceAdmin)
|
|
{
|
|
claims.Add(new Claim(ClaimTypeKeys.Permission, Permissions.ContentEditor));
|
|
claims.Add(new Claim(ClaimTypeKeys.Permission, Permissions.Viewer));
|
|
}
|
|
else if (role == Permissions.ContentEditor)
|
|
{
|
|
claims.Add(new Claim(ClaimTypeKeys.Permission, Permissions.Viewer));
|
|
}
|
|
|
|
return new ClaimsPrincipal(new ClaimsIdentity(claims, "test"));
|
|
}
|
|
|
|
public static void SetUser(ControllerBase controller, ClaimsPrincipal user)
|
|
{
|
|
controller.ControllerContext = new ControllerContext
|
|
{
|
|
HttpContext = new DefaultHttpContext { User = user }
|
|
};
|
|
}
|
|
}
|
|
}
|