LocalAccessHandlerTests.cs 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. using System.Collections.Generic;
  2. using System.Threading.Tasks;
  3. using AutoFixture;
  4. using AutoFixture.AutoMoq;
  5. using Jellyfin.Api.Auth.LocalAccessPolicy;
  6. using Jellyfin.Api.Constants;
  7. using MediaBrowser.Common.Configuration;
  8. using MediaBrowser.Common.Net;
  9. using MediaBrowser.Controller.Library;
  10. using Microsoft.AspNetCore.Authorization;
  11. using Microsoft.AspNetCore.Http;
  12. using Moq;
  13. using Xunit;
  14. namespace Jellyfin.Api.Tests.Auth.LocalAccessPolicy
  15. {
  16. public class LocalAccessHandlerTests
  17. {
  18. private readonly Mock<IConfigurationManager> _configurationManagerMock;
  19. private readonly List<IAuthorizationRequirement> _requirements;
  20. private readonly LocalAccessHandler _sut;
  21. private readonly Mock<IUserManager> _userManagerMock;
  22. private readonly Mock<IHttpContextAccessor> _httpContextAccessor;
  23. private readonly Mock<INetworkManager> _networkManagerMock;
  24. public LocalAccessHandlerTests()
  25. {
  26. var fixture = new Fixture().Customize(new AutoMoqCustomization());
  27. _configurationManagerMock = fixture.Freeze<Mock<IConfigurationManager>>();
  28. _requirements = new List<IAuthorizationRequirement> { new LocalAccessRequirement() };
  29. _userManagerMock = fixture.Freeze<Mock<IUserManager>>();
  30. _httpContextAccessor = fixture.Freeze<Mock<IHttpContextAccessor>>();
  31. _networkManagerMock = fixture.Freeze<Mock<INetworkManager>>();
  32. _sut = fixture.Create<LocalAccessHandler>();
  33. }
  34. [Theory]
  35. [InlineData(true, true)]
  36. [InlineData(false, false)]
  37. public async Task LocalAccessOnly(bool isInLocalNetwork, bool shouldSucceed)
  38. {
  39. _networkManagerMock
  40. .Setup(n => n.IsInLocalNetwork(It.IsAny<string>()))
  41. .Returns(isInLocalNetwork);
  42. TestHelpers.SetupConfigurationManager(_configurationManagerMock, true);
  43. var claims = TestHelpers.SetupUser(
  44. _userManagerMock,
  45. _httpContextAccessor,
  46. UserRoles.User);
  47. var context = new AuthorizationHandlerContext(_requirements, claims, null);
  48. await _sut.HandleAsync(context);
  49. Assert.Equal(shouldSucceed, context.HasSucceeded);
  50. }
  51. }
  52. }