| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 | 
							- using System;
 
- using System.Globalization;
 
- using System.Text;
 
- using Jellyfin.Networking.Configuration;
 
- using Jellyfin.Networking.Manager;
 
- using Jellyfin.Server.Extensions;
 
- using MediaBrowser.Common.Configuration;
 
- using Microsoft.AspNetCore.Builder;
 
- using Microsoft.Extensions.Logging.Abstractions;
 
- using Moq;
 
- using Xunit;
 
- namespace Jellyfin.Api.Tests
 
- {
 
-     public class ParseNetworkTests
 
-     {
 
-         /// <summary>
 
-         /// Order of the result has always got to be hosts, then networks.
 
-         /// </summary>
 
-         /// <param name="ip4">IP4 enabled.</param>
 
-         /// <param name="ip6">IP6 enabled.</param>
 
-         /// <param name="hostList">List to parse.</param>
 
-         /// <param name="match">What it should match.</param>
 
-         [Theory]
 
-         // [InlineData(true, true, "192.168.0.0/16,www.yahoo.co.uk", "::ffff:212.82.100.150,::ffff:192.168.0.0/16")]  <- fails on Max. www.yahoo.co.uk resolves to a different ip address.
 
-         // [InlineData(true, false, "192.168.0.0/16,www.yahoo.co.uk", "212.82.100.150,192.168.0.0/16")]
 
-         [InlineData(true, true, "192.168.t,127.0.0.1,1234.1232.12.1234", "::ffff:127.0.0.1")]
 
-         [InlineData(true, false, "192.168.x,127.0.0.1,1234.1232.12.1234", "127.0.0.1")]
 
-         [InlineData(true, true, "::1", "::1/128")]
 
-         public void TestNetworks(bool ip4, bool ip6, string hostList, string match)
 
-         {
 
-             using var nm = CreateNetworkManager();
 
-             var settings = new NetworkConfiguration
 
-             {
 
-                 EnableIPV4 = ip4,
 
-                 EnableIPV6 = ip6
 
-             };
 
-             var result = match + ',';
 
-             ForwardedHeadersOptions options = new ForwardedHeadersOptions();
 
-             // Need this here as ::1 and 127.0.0.1 are in them by default.
 
-             options.KnownProxies.Clear();
 
-             options.KnownNetworks.Clear();
 
-             ApiServiceCollectionExtensions.AddProxyAddresses(settings, hostList.Split(","), options);
 
-             var sb = new StringBuilder();
 
-             foreach (var item in options.KnownProxies)
 
-             {
 
-                 sb.Append(item);
 
-                 sb.Append(',');
 
-             }
 
-             foreach (var item in options.KnownNetworks)
 
-             {
 
-                 sb.Append(item.Prefix);
 
-                 sb.Append('/');
 
-                 sb.Append(item.PrefixLength.ToString(CultureInfo.InvariantCulture));
 
-                 sb.Append(',');
 
-             }
 
-             Assert.Equal(sb.ToString(), result);
 
-         }
 
-         private static IConfigurationManager GetMockConfig(NetworkConfiguration conf)
 
-         {
 
-             var configManager = new Mock<IConfigurationManager>
 
-             {
 
-                 CallBase = true
 
-             };
 
-             configManager.Setup(x => x.GetConfiguration(It.IsAny<string>())).Returns(conf);
 
-             return configManager.Object;
 
-         }
 
-         private static NetworkManager CreateNetworkManager()
 
-         {
 
-             var conf = new NetworkConfiguration()
 
-             {
 
-                 EnableIPV6 = true,
 
-                 EnableIPV4 = true,
 
-             };
 
-             return new NetworkManager(GetMockConfig(conf), new NullLogger<NetworkManager>());
 
-         }
 
-     }
 
- }
 
 
  |