You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
39 lines
1.2 KiB
39 lines
1.2 KiB
5 years ago
|
using System.Collections.Generic;
|
||
|
using System.Security.Claims;
|
||
|
using System.Threading.Tasks;
|
||
|
using Jellyfin.Api.Auth.RequiresElevationPolicy;
|
||
|
using Jellyfin.Api.Constants;
|
||
|
using Microsoft.AspNetCore.Authorization;
|
||
|
using Xunit;
|
||
|
|
||
|
namespace Jellyfin.Api.Tests.Auth.RequiresElevationPolicy
|
||
|
{
|
||
|
public class RequiresElevationHandlerTests
|
||
|
{
|
||
|
private readonly RequiresElevationHandler _sut;
|
||
|
|
||
|
public RequiresElevationHandlerTests()
|
||
|
{
|
||
|
_sut = new RequiresElevationHandler();
|
||
|
}
|
||
|
|
||
|
[Theory]
|
||
|
[InlineData(UserRoles.Administrator, true)]
|
||
|
[InlineData(UserRoles.User, false)]
|
||
|
[InlineData(UserRoles.Guest, false)]
|
||
|
public async Task ShouldHandleRolesCorrectly(string role, bool shouldSucceed)
|
||
|
{
|
||
|
var requirements = new List<IAuthorizationRequirement> {new RequiresElevationRequirement()};
|
||
|
|
||
|
var claims = new[] {new Claim(ClaimTypes.Role, role)};
|
||
|
var identity = new ClaimsIdentity(claims);
|
||
|
var user = new ClaimsPrincipal(identity);
|
||
|
|
||
|
var context = new AuthorizationHandlerContext(requirements, user, null);
|
||
|
|
||
|
await _sut.HandleAsync(context);
|
||
|
Assert.Equal(shouldSucceed, context.HasSucceeded);
|
||
|
}
|
||
|
}
|
||
|
}
|