mirror of
https://github.com/jellyfin/jellyfin.git
synced 2024-07-22 21:50:36 +02:00
Add tests for IsInNetwork
This commit is contained in:
parent
19e4ef82dd
commit
c2af50c51d
63
tests/Jellyfin.Networking.Tests/NetworkManagerTests.cs
Normal file
63
tests/Jellyfin.Networking.Tests/NetworkManagerTests.cs
Normal file
|
@ -0,0 +1,63 @@
|
||||||
|
using System.Net;
|
||||||
|
using Jellyfin.Networking.Configuration;
|
||||||
|
using Jellyfin.Networking.Manager;
|
||||||
|
using Microsoft.Extensions.Logging.Abstractions;
|
||||||
|
using Xunit;
|
||||||
|
|
||||||
|
namespace Jellyfin.Networking.Tests
|
||||||
|
{
|
||||||
|
public class NetworkManagerTests
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Checks that the given IP address is in the specified network(s).
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="network">Network address(es).</param>
|
||||||
|
/// <param name="value">The IP to check.</param>
|
||||||
|
[Theory]
|
||||||
|
[InlineData("192.168.2.1/24", "192.168.2.123")]
|
||||||
|
[InlineData("192.168.2.1/24, !192.168.2.122/32", "192.168.2.123")]
|
||||||
|
[InlineData("fd23:184f:2029:0::/56", "fd23:184f:2029:0:3139:7386:67d7:d517")]
|
||||||
|
[InlineData("fd23:184f:2029:0::/56, !fd23:184f:2029:0:3139:7386:67d7:d518/128", "fd23:184f:2029:0:3139:7386:67d7:d517")]
|
||||||
|
public void InNetwork_True_Success(string network, string value)
|
||||||
|
{
|
||||||
|
var ip = IPAddress.Parse(value);
|
||||||
|
var conf = new NetworkConfiguration()
|
||||||
|
{
|
||||||
|
EnableIPV6 = true,
|
||||||
|
EnableIPV4 = true,
|
||||||
|
LocalNetworkSubnets = network.Split(',')
|
||||||
|
};
|
||||||
|
|
||||||
|
using var networkManager = new NetworkManager(NetworkParseTests.GetMockConfig(conf), new NullLogger<NetworkManager>());
|
||||||
|
|
||||||
|
Assert.True(networkManager.IsInLocalNetwork(ip));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Checks that thge given IP address is not in the network provided.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="network">Network address(es).</param>
|
||||||
|
/// <param name="value">The IP to check.</param>
|
||||||
|
[Theory]
|
||||||
|
[InlineData("192.168.10.0/24", "192.168.11.1")]
|
||||||
|
[InlineData("192.168.10.0/24, !192.168.10.60/32", "192.168.10.60")]
|
||||||
|
[InlineData("192.168.10.0/24", "fd23:184f:2029:0:3139:7386:67d7:d517")]
|
||||||
|
[InlineData("fd23:184f:2029:0::/56", "fd24:184f:2029:0:3139:7386:67d7:d517")]
|
||||||
|
[InlineData("fd23:184f:2029:0::/56, !fd23:184f:2029:0:3139:7386:67d7:d500/120", "fd23:184f:2029:0:3139:7386:67d7:d517")]
|
||||||
|
[InlineData("fd23:184f:2029:0::/56", "192.168.10.60")]
|
||||||
|
public void InNetwork_False_Success(string network, string value)
|
||||||
|
{
|
||||||
|
var ip = IPAddress.Parse(value);
|
||||||
|
var conf = new NetworkConfiguration()
|
||||||
|
{
|
||||||
|
EnableIPV6 = true,
|
||||||
|
EnableIPV4 = true,
|
||||||
|
LocalNetworkSubnets = network.Split(',')
|
||||||
|
};
|
||||||
|
|
||||||
|
using var nm = new NetworkManager(NetworkParseTests.GetMockConfig(conf), new NullLogger<NetworkManager>());
|
||||||
|
|
||||||
|
Assert.False(nm.IsInLocalNetwork(ip));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -13,7 +13,7 @@ namespace Jellyfin.Networking.Tests
|
||||||
{
|
{
|
||||||
public class NetworkParseTests
|
public class NetworkParseTests
|
||||||
{
|
{
|
||||||
private static IConfigurationManager GetMockConfig(NetworkConfiguration conf)
|
internal static IConfigurationManager GetMockConfig(NetworkConfiguration conf)
|
||||||
{
|
{
|
||||||
var configManager = new Mock<IConfigurationManager>
|
var configManager = new Mock<IConfigurationManager>
|
||||||
{
|
{
|
||||||
|
@ -54,32 +54,6 @@ namespace Jellyfin.Networking.Tests
|
||||||
Assert.Equal(nm.GetInternalBindAddresses().AsString(), value);
|
Assert.Equal(nm.GetInternalBindAddresses().AsString(), value);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Check that the value given is in the network provided.
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="network">Network address.</param>
|
|
||||||
/// <param name="value">Value to check.</param>
|
|
||||||
[Theory]
|
|
||||||
[InlineData("192.168.10.0/24, !192.168.10.60/32", "192.168.10.60")]
|
|
||||||
public void IsInNetwork(string network, string value)
|
|
||||||
{
|
|
||||||
if (network == null)
|
|
||||||
{
|
|
||||||
throw new ArgumentNullException(nameof(network));
|
|
||||||
}
|
|
||||||
|
|
||||||
var conf = new NetworkConfiguration()
|
|
||||||
{
|
|
||||||
EnableIPV6 = true,
|
|
||||||
EnableIPV4 = true,
|
|
||||||
LocalNetworkSubnets = network.Split(',')
|
|
||||||
};
|
|
||||||
|
|
||||||
using var nm = new NetworkManager(GetMockConfig(conf), new NullLogger<NetworkManager>());
|
|
||||||
|
|
||||||
Assert.False(nm.IsInLocalNetwork(value));
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Checks IP address formats.
|
/// Checks IP address formats.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
Loading…
Reference in a new issue