public void TestNetworks(bool ip4, bool ip6, string[] hostList, IPAddress[] knownProxies, IPNetwork[] knownNetworks) { using var nm = CreateNetworkManager(); var settings = new NetworkConfiguration { EnableIPV4 = ip4, EnableIPV6 = ip6 }; 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, options); Assert.Equal(knownProxies.Length, options.KnownProxies.Count); foreach (var item in knownProxies) { Assert.True(options.KnownProxies.Contains(item)); } Assert.Equal(knownNetworks.Length, options.KnownNetworks.Count); foreach (var item in knownNetworks) { Assert.NotNull(options.KnownNetworks.FirstOrDefault(x => x.Prefix.Equals(item.Prefix) && x.PrefixLength == item.PrefixLength)); } }
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) .Append(','); } foreach (var item in options.KnownNetworks) { sb.Append(item.Prefix) .Append('/') .Append(item.PrefixLength.ToString(CultureInfo.InvariantCulture)) .Append(','); } Assert.Equal(sb.ToString(), result); }