RequiresElevationHandlerTests.cs 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. using System.Collections.Generic;
  2. using System.Security.Claims;
  3. using System.Threading.Tasks;
  4. using Jellyfin.Api.Auth.RequiresElevationPolicy;
  5. using Jellyfin.Api.Constants;
  6. using Microsoft.AspNetCore.Authorization;
  7. using Xunit;
  8. namespace Jellyfin.Api.Tests.Auth.RequiresElevationPolicy
  9. {
  10. public class RequiresElevationHandlerTests
  11. {
  12. private readonly RequiresElevationHandler _sut;
  13. public RequiresElevationHandlerTests()
  14. {
  15. _sut = new RequiresElevationHandler();
  16. }
  17. [Theory]
  18. [InlineData(UserRoles.Administrator, true)]
  19. [InlineData(UserRoles.User, false)]
  20. [InlineData(UserRoles.Guest, false)]
  21. public async Task ShouldHandleRolesCorrectly(string role, bool shouldSucceed)
  22. {
  23. var requirements = new List<IAuthorizationRequirement> { new RequiresElevationRequirement() };
  24. var claims = new[] { new Claim(ClaimTypes.Role, role) };
  25. var identity = new ClaimsIdentity(claims);
  26. var user = new ClaimsPrincipal(identity);
  27. var context = new AuthorizationHandlerContext(requirements, user, null);
  28. await _sut.HandleAsync(context);
  29. Assert.Equal(shouldSucceed, context.HasSucceeded);
  30. }
  31. }
  32. }