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