FirstTimeSetupOrElevatedHandlerTests.cs 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. using System.Collections.Generic;
  2. using System.Security.Claims;
  3. using System.Threading.Tasks;
  4. using AutoFixture;
  5. using AutoFixture.AutoMoq;
  6. using Jellyfin.Api.Auth.FirstTimeSetupOrElevatedPolicy;
  7. using Jellyfin.Api.Constants;
  8. using MediaBrowser.Common.Configuration;
  9. using MediaBrowser.Model.Configuration;
  10. using Microsoft.AspNetCore.Authorization;
  11. using Moq;
  12. using Xunit;
  13. namespace Jellyfin.Api.Tests.Auth.FirstTimeSetupOrElevatedPolicy
  14. {
  15. public class FirstTimeSetupOrElevatedHandlerTests
  16. {
  17. private readonly Mock<IConfigurationManager> _configurationManagerMock;
  18. private readonly List<IAuthorizationRequirement> _requirements;
  19. private readonly FirstTimeSetupOrElevatedHandler _sut;
  20. public FirstTimeSetupOrElevatedHandlerTests()
  21. {
  22. var fixture = new Fixture().Customize(new AutoMoqCustomization());
  23. _configurationManagerMock = fixture.Freeze<Mock<IConfigurationManager>>();
  24. _requirements = new List<IAuthorizationRequirement> { new FirstTimeSetupOrElevatedRequirement() };
  25. _sut = fixture.Create<FirstTimeSetupOrElevatedHandler>();
  26. }
  27. [Theory]
  28. [InlineData(UserRoles.Administrator)]
  29. [InlineData(UserRoles.Guest)]
  30. [InlineData(UserRoles.User)]
  31. public async Task ShouldSucceedIfStartupWizardIncomplete(string userRole)
  32. {
  33. SetupConfigurationManager(false);
  34. var user = SetupUser(userRole);
  35. var context = new AuthorizationHandlerContext(_requirements, user, null);
  36. await _sut.HandleAsync(context);
  37. Assert.True(context.HasSucceeded);
  38. }
  39. [Theory]
  40. [InlineData(UserRoles.Administrator, true)]
  41. [InlineData(UserRoles.Guest, false)]
  42. [InlineData(UserRoles.User, false)]
  43. public async Task ShouldRequireAdministratorIfStartupWizardComplete(string userRole, bool shouldSucceed)
  44. {
  45. SetupConfigurationManager(true);
  46. var user = SetupUser(userRole);
  47. var context = new AuthorizationHandlerContext(_requirements, user, null);
  48. await _sut.HandleAsync(context);
  49. Assert.Equal(shouldSucceed, context.HasSucceeded);
  50. }
  51. private static ClaimsPrincipal SetupUser(string role)
  52. {
  53. var claims = new[] { new Claim(ClaimTypes.Role, role) };
  54. var identity = new ClaimsIdentity(claims);
  55. return new ClaimsPrincipal(identity);
  56. }
  57. private void SetupConfigurationManager(bool startupWizardCompleted)
  58. {
  59. var commonConfiguration = new BaseApplicationConfiguration
  60. {
  61. IsStartupWizardCompleted = startupWizardCompleted
  62. };
  63. _configurationManagerMock.Setup(c => c.CommonConfiguration)
  64. .Returns(commonConfiguration);
  65. }
  66. }
  67. }