HdHomerunHostTests.cs 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. using System;
  2. using System.IO;
  3. using System.Net.Http;
  4. using System.Threading;
  5. using System.Threading.Tasks;
  6. using AutoFixture;
  7. using AutoFixture.AutoMoq;
  8. using Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun;
  9. using MediaBrowser.Model.LiveTv;
  10. using Moq;
  11. using Moq.Protected;
  12. using Xunit;
  13. namespace Jellyfin.Server.Implementations.Tests.LiveTv
  14. {
  15. public class HdHomerunHostTests
  16. {
  17. private const string TestIp = "http://192.168.1.182";
  18. private readonly Fixture _fixture;
  19. private readonly HdHomerunHost _hdHomerunHost;
  20. public HdHomerunHostTests()
  21. {
  22. var messageHandler = new Mock<HttpMessageHandler>();
  23. messageHandler.Protected()
  24. .Setup<Task<HttpResponseMessage>>("SendAsync", ItExpr.IsAny<HttpRequestMessage>(), ItExpr.IsAny<CancellationToken>())
  25. .Returns<HttpRequestMessage, CancellationToken>(
  26. (m, _) =>
  27. {
  28. return Task.FromResult(new HttpResponseMessage()
  29. {
  30. Content = new StreamContent(File.OpenRead("Test Data/LiveTv/" + m.RequestUri?.Segments[^1]))
  31. });
  32. });
  33. var http = new Mock<IHttpClientFactory>();
  34. http.Setup(x => x.CreateClient(It.IsAny<string>()))
  35. .Returns(new HttpClient(messageHandler.Object));
  36. _fixture = new Fixture();
  37. _fixture.Customize(new AutoMoqCustomization
  38. {
  39. ConfigureMembers = true
  40. }).Inject(http);
  41. _hdHomerunHost = _fixture.Create<HdHomerunHost>();
  42. }
  43. [Fact]
  44. public async Task GetModelInfo_Valid_Success()
  45. {
  46. var host = new TunerHostInfo()
  47. {
  48. Url = TestIp
  49. };
  50. var modelInfo = await _hdHomerunHost.GetModelInfo(host, true, CancellationToken.None).ConfigureAwait(false);
  51. Assert.Equal("HDHomeRun PRIME", modelInfo.FriendlyName);
  52. Assert.Equal("HDHR3-CC", modelInfo.ModelNumber);
  53. Assert.Equal("hdhomerun3_cablecard", modelInfo.FirmwareName);
  54. Assert.Equal("20160630atest2", modelInfo.FirmwareVersion);
  55. Assert.Equal("FFFFFFFF", modelInfo.DeviceID);
  56. Assert.Equal("FFFFFFFF", modelInfo.DeviceAuth);
  57. Assert.Equal(3, modelInfo.TunerCount);
  58. Assert.Equal("http://192.168.1.182:80", modelInfo.BaseURL);
  59. Assert.Equal("http://192.168.1.182:80/lineup.json", modelInfo.LineupURL);
  60. }
  61. [Fact]
  62. public async Task GetModelInfo_EmptyUrl_ArgumentException()
  63. {
  64. var host = new TunerHostInfo()
  65. {
  66. Url = string.Empty
  67. };
  68. await Assert.ThrowsAsync<ArgumentException>(() => _hdHomerunHost.GetModelInfo(host, true, CancellationToken.None));
  69. }
  70. [Fact]
  71. public async Task GetLineup_Valid_Success()
  72. {
  73. var host = new TunerHostInfo()
  74. {
  75. Url = TestIp
  76. };
  77. var channels = await _hdHomerunHost.GetLineup(host, CancellationToken.None).ConfigureAwait(false);
  78. Assert.Equal(6, channels.Count);
  79. Assert.Equal("4.1", channels[0].GuideNumber);
  80. Assert.Equal("WCMH-DT", channels[0].GuideName);
  81. Assert.True(channels[0].HD);
  82. Assert.True(channels[0].Favorite);
  83. Assert.Equal("http://192.168.1.111:5004/auto/v4.1", channels[0].URL);
  84. }
  85. [Fact]
  86. public async Task GetLineup_ImportFavoritesOnly_Success()
  87. {
  88. var host = new TunerHostInfo()
  89. {
  90. Url = TestIp,
  91. ImportFavoritesOnly = true
  92. };
  93. var channels = await _hdHomerunHost.GetLineup(host, CancellationToken.None).ConfigureAwait(false);
  94. Assert.Single(channels);
  95. Assert.Equal("4.1", channels[0].GuideNumber);
  96. Assert.Equal("WCMH-DT", channels[0].GuideName);
  97. Assert.True(channels[0].HD);
  98. Assert.True(channels[0].Favorite);
  99. Assert.Equal("http://192.168.1.111:5004/auto/v4.1", channels[0].URL);
  100. }
  101. [Fact]
  102. public async Task TryGetTunerHostInfo_Valid_Success()
  103. {
  104. var host = await _hdHomerunHost.TryGetTunerHostInfo(TestIp, CancellationToken.None).ConfigureAwait(false);
  105. Assert.Equal(_hdHomerunHost.Type, host.Type);
  106. Assert.Equal(TestIp, host.Url);
  107. Assert.Equal("HDHomeRun PRIME", host.FriendlyName);
  108. Assert.Equal("FFFFFFFF", host.DeviceId);
  109. Assert.Equal(3, host.TunerCount);
  110. }
  111. }
  112. }