2
0

QuickConnectManagerTests.cs 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. using System;
  2. using System.Linq;
  3. using System.Threading.Tasks;
  4. using AutoFixture;
  5. using AutoFixture.AutoMoq;
  6. using Emby.Server.Implementations.QuickConnect;
  7. using MediaBrowser.Controller.Authentication;
  8. using MediaBrowser.Controller.Configuration;
  9. using MediaBrowser.Controller.Net;
  10. using MediaBrowser.Model.Configuration;
  11. using Moq;
  12. using Xunit;
  13. namespace Jellyfin.Server.Implementations.Tests.QuickConnect
  14. {
  15. public class QuickConnectManagerTests
  16. {
  17. private static readonly AuthorizationInfo _quickConnectAuthInfo = new AuthorizationInfo
  18. {
  19. Device = "Device",
  20. DeviceId = "DeviceId",
  21. Client = "Client",
  22. Version = "1.0.0"
  23. };
  24. private readonly Fixture _fixture;
  25. private readonly ServerConfiguration _config;
  26. private readonly QuickConnectManager _quickConnectManager;
  27. public QuickConnectManagerTests()
  28. {
  29. _config = new ServerConfiguration();
  30. var configManager = new Mock<IServerConfigurationManager>();
  31. configManager.Setup(x => x.Configuration).Returns(_config);
  32. _fixture = new Fixture();
  33. _fixture.Customize(new AutoMoqCustomization
  34. {
  35. ConfigureMembers = true
  36. }).Inject(configManager.Object);
  37. // User object contains circular references.
  38. _fixture.Behaviors.OfType<ThrowingRecursionBehavior>().ToList()
  39. .ForEach(b => _fixture.Behaviors.Remove(b));
  40. _fixture.Behaviors.Add(new OmitOnRecursionBehavior());
  41. _quickConnectManager = _fixture.Create<QuickConnectManager>();
  42. }
  43. [Fact]
  44. public void IsEnabled_QuickConnectUnavailable_False()
  45. => Assert.False(_quickConnectManager.IsEnabled);
  46. [Fact]
  47. public void TryConnect_QuickConnectUnavailable_ThrowsAuthenticationException()
  48. => Assert.Throws<AuthenticationException>(() => _quickConnectManager.TryConnect(_quickConnectAuthInfo));
  49. [Fact]
  50. public void CheckRequestStatus_QuickConnectUnavailable_ThrowsAuthenticationException()
  51. => Assert.Throws<AuthenticationException>(() => _quickConnectManager.CheckRequestStatus(string.Empty));
  52. [Fact]
  53. public void AuthorizeRequest_QuickConnectUnavailable_ThrowsAuthenticationException()
  54. => Assert.ThrowsAsync<AuthenticationException>(() => _quickConnectManager.AuthorizeRequest(Guid.Empty, string.Empty));
  55. [Fact]
  56. public void IsEnabled_QuickConnectAvailable_True()
  57. {
  58. _config.QuickConnectAvailable = true;
  59. Assert.True(_quickConnectManager.IsEnabled);
  60. }
  61. [Fact]
  62. public void CheckRequestStatus_QuickConnectAvailable_Success()
  63. {
  64. _config.QuickConnectAvailable = true;
  65. var res1 = _quickConnectManager.TryConnect(_quickConnectAuthInfo);
  66. var res2 = _quickConnectManager.CheckRequestStatus(res1.Secret);
  67. Assert.Equal(res1, res2);
  68. }
  69. [Fact]
  70. public async Task AuthorizeRequest_QuickConnectAvailable_Success()
  71. {
  72. _config.QuickConnectAvailable = true;
  73. var res = _quickConnectManager.TryConnect(_quickConnectAuthInfo);
  74. Assert.True(await _quickConnectManager.AuthorizeRequest(Guid.Empty, res.Code));
  75. }
  76. }
  77. }