FirstTimeSetupHandlerTests.cs 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. using System.Collections.Generic;
  2. using System.Threading.Tasks;
  3. using AutoFixture;
  4. using AutoFixture.AutoMoq;
  5. using Jellyfin.Api.Auth.FirstTimeSetupPolicy;
  6. using Jellyfin.Api.Constants;
  7. using MediaBrowser.Common.Configuration;
  8. using MediaBrowser.Controller.Library;
  9. using Microsoft.AspNetCore.Authorization;
  10. using Microsoft.AspNetCore.Http;
  11. using Moq;
  12. using Xunit;
  13. namespace Jellyfin.Api.Tests.Auth.FirstTimeSetupPolicy
  14. {
  15. public class FirstTimeSetupHandlerTests
  16. {
  17. private readonly Mock<IConfigurationManager> _configurationManagerMock;
  18. private readonly List<IAuthorizationRequirement> _requirements;
  19. private readonly FirstTimeSetupHandler _firstTimeSetupHandler;
  20. private readonly Mock<IUserManager> _userManagerMock;
  21. private readonly Mock<IHttpContextAccessor> _httpContextAccessor;
  22. public FirstTimeSetupHandlerTests()
  23. {
  24. var fixture = new Fixture().Customize(new AutoMoqCustomization());
  25. _configurationManagerMock = fixture.Freeze<Mock<IConfigurationManager>>();
  26. _requirements = new List<IAuthorizationRequirement> { new FirstTimeSetupRequirement() };
  27. _userManagerMock = fixture.Freeze<Mock<IUserManager>>();
  28. _httpContextAccessor = fixture.Freeze<Mock<IHttpContextAccessor>>();
  29. _firstTimeSetupHandler = fixture.Create<FirstTimeSetupHandler>();
  30. }
  31. [Theory]
  32. [InlineData(UserRoles.Administrator)]
  33. [InlineData(UserRoles.Guest)]
  34. [InlineData(UserRoles.User)]
  35. public async Task ShouldSucceedIfStartupWizardIncomplete(string userRole)
  36. {
  37. TestHelpers.SetupConfigurationManager(_configurationManagerMock, false);
  38. var claims = TestHelpers.SetupUser(
  39. _userManagerMock,
  40. _httpContextAccessor,
  41. userRole);
  42. var context = new AuthorizationHandlerContext(_requirements, claims, null);
  43. await _firstTimeSetupHandler.HandleAsync(context);
  44. Assert.True(context.HasSucceeded);
  45. }
  46. [Theory]
  47. [InlineData(UserRoles.Administrator, true)]
  48. [InlineData(UserRoles.Guest, false)]
  49. [InlineData(UserRoles.User, false)]
  50. public async Task ShouldRequireAdministratorIfStartupWizardComplete(string userRole, bool shouldSucceed)
  51. {
  52. TestHelpers.SetupConfigurationManager(_configurationManagerMock, true);
  53. var claims = TestHelpers.SetupUser(
  54. _userManagerMock,
  55. _httpContextAccessor,
  56. userRole);
  57. var context = new AuthorizationHandlerContext(_requirements, claims, null);
  58. await _firstTimeSetupHandler.HandleAsync(context);
  59. Assert.Equal(shouldSucceed, context.HasSucceeded);
  60. }
  61. }
  62. }