mirror of
https://github.com/jellyfin/jellyfin.git
synced 2026-07-01 03:42:51 +01:00
Merge branch 'master' into TVFix
This commit is contained in:
53
tests/Jellyfin.Networking.Tests/IPHostTests.cs
Normal file
53
tests/Jellyfin.Networking.Tests/IPHostTests.cs
Normal file
@@ -0,0 +1,53 @@
|
||||
using FsCheck;
|
||||
using FsCheck.Xunit;
|
||||
using MediaBrowser.Common.Net;
|
||||
using Xunit;
|
||||
|
||||
namespace Jellyfin.Networking.Tests
|
||||
{
|
||||
public static class IPHostTests
|
||||
{
|
||||
/// <summary>
|
||||
/// Checks IP address formats.
|
||||
/// </summary>
|
||||
/// <param name="address">IP Address.</param>
|
||||
[Theory]
|
||||
[InlineData("127.0.0.1")]
|
||||
[InlineData("127.0.0.1:123")]
|
||||
[InlineData("localhost")]
|
||||
[InlineData("localhost:1345")]
|
||||
[InlineData("www.google.co.uk")]
|
||||
[InlineData("fd23:184f:2029:0:3139:7386:67d7:d517")]
|
||||
[InlineData("fd23:184f:2029:0:3139:7386:67d7:d517/56")]
|
||||
[InlineData("[fd23:184f:2029:0:3139:7386:67d7:d517]:124")]
|
||||
[InlineData("fe80::7add:12ff:febb:c67b%16")]
|
||||
[InlineData("[fe80::7add:12ff:febb:c67b%16]:123")]
|
||||
[InlineData("fe80::7add:12ff:febb:c67b%16:123")]
|
||||
[InlineData("[fe80::7add:12ff:febb:c67b%16]")]
|
||||
[InlineData("192.168.1.2/255.255.255.0")]
|
||||
[InlineData("192.168.1.2/24")]
|
||||
public static void TryParse_ValidHostStrings_True(string address)
|
||||
=> Assert.True(IPHost.TryParse(address, out _));
|
||||
|
||||
[Property]
|
||||
public static Property TryParse_IPv4Address_True(IPv4Address address)
|
||||
=> IPHost.TryParse(address.Item.ToString(), out _).ToProperty();
|
||||
|
||||
[Property]
|
||||
public static Property TryParse_IPv6Address_True(IPv6Address address)
|
||||
=> IPHost.TryParse(address.Item.ToString(), out _).ToProperty();
|
||||
|
||||
/// <summary>
|
||||
/// All should be invalid address strings.
|
||||
/// </summary>
|
||||
/// <param name="address">Invalid address strings.</param>
|
||||
[Theory]
|
||||
[InlineData("256.128.0.0.0.1")]
|
||||
[InlineData("127.0.0.1#")]
|
||||
[InlineData("localhost!")]
|
||||
[InlineData("fd23:184f:2029:0:3139:7386:67d7:d517:1231")]
|
||||
[InlineData("[fd23:184f:2029:0:3139:7386:67d7:d517:1231]")]
|
||||
public static void TryParse_InvalidAddressString_False(string address)
|
||||
=> Assert.False(IPHost.TryParse(address, out _));
|
||||
}
|
||||
}
|
||||
49
tests/Jellyfin.Networking.Tests/IPNetAddressTests.cs
Normal file
49
tests/Jellyfin.Networking.Tests/IPNetAddressTests.cs
Normal file
@@ -0,0 +1,49 @@
|
||||
using FsCheck;
|
||||
using FsCheck.Xunit;
|
||||
using MediaBrowser.Common.Net;
|
||||
using Xunit;
|
||||
|
||||
namespace Jellyfin.Networking.Tests
|
||||
{
|
||||
public static class IPNetAddressTests
|
||||
{
|
||||
/// <summary>
|
||||
/// Checks IP address formats.
|
||||
/// </summary>
|
||||
/// <param name="address">IP Address.</param>
|
||||
[Theory]
|
||||
[InlineData("127.0.0.1")]
|
||||
[InlineData("fd23:184f:2029:0:3139:7386:67d7:d517")]
|
||||
[InlineData("fd23:184f:2029:0:3139:7386:67d7:d517/56")]
|
||||
[InlineData("[fd23:184f:2029:0:3139:7386:67d7:d517]")]
|
||||
[InlineData("fe80::7add:12ff:febb:c67b%16")]
|
||||
[InlineData("[fe80::7add:12ff:febb:c67b%16]:123")]
|
||||
[InlineData("fe80::7add:12ff:febb:c67b%16:123")]
|
||||
[InlineData("[fe80::7add:12ff:febb:c67b%16]")]
|
||||
[InlineData("192.168.1.2/255.255.255.0")]
|
||||
[InlineData("192.168.1.2/24")]
|
||||
public static void TryParse_ValidIPStrings_True(string address)
|
||||
=> Assert.True(IPNetAddress.TryParse(address, out _));
|
||||
|
||||
[Property]
|
||||
public static Property TryParse_IPv4Address_True(IPv4Address address)
|
||||
=> IPNetAddress.TryParse(address.Item.ToString(), out _).ToProperty();
|
||||
|
||||
[Property]
|
||||
public static Property TryParse_IPv6Address_True(IPv6Address address)
|
||||
=> IPNetAddress.TryParse(address.Item.ToString(), out _).ToProperty();
|
||||
|
||||
/// <summary>
|
||||
/// All should be invalid address strings.
|
||||
/// </summary>
|
||||
/// <param name="address">Invalid address strings.</param>
|
||||
[Theory]
|
||||
[InlineData("256.128.0.0.0.1")]
|
||||
[InlineData("127.0.0.1#")]
|
||||
[InlineData("localhost!")]
|
||||
[InlineData("fd23:184f:2029:0:3139:7386:67d7:d517:1231")]
|
||||
[InlineData("[fd23:184f:2029:0:3139:7386:67d7:d517:1231]")]
|
||||
public static void TryParse_InvalidAddressString_False(string address)
|
||||
=> Assert.False(IPNetAddress.TryParse(address, out _));
|
||||
}
|
||||
}
|
||||
@@ -8,17 +8,15 @@
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net5.0</TargetFramework>
|
||||
<IsPackable>false</IsPackable>
|
||||
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
|
||||
<Nullable>enable</Nullable>
|
||||
<AnalysisMode>AllEnabledByDefault</AnalysisMode>
|
||||
<CodeAnalysisRuleSet>../jellyfin-tests.ruleset</CodeAnalysisRuleSet>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.9.4" />
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.11.0" />
|
||||
<PackageReference Include="xunit" Version="2.4.1" />
|
||||
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.1" />
|
||||
<PackageReference Include="coverlet.collector" Version="3.0.3" />
|
||||
<PackageReference Include="coverlet.collector" Version="3.1.0" />
|
||||
<PackageReference Include="FsCheck.Xunit" Version="2.16.1" />
|
||||
<PackageReference Include="Moq" Version="4.16.1" />
|
||||
</ItemGroup>
|
||||
|
||||
|
||||
@@ -56,66 +56,6 @@ namespace Jellyfin.Networking.Tests
|
||||
Assert.Equal(nm.GetInternalBindAddresses().AsString(), value);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Checks IP address formats.
|
||||
/// </summary>
|
||||
/// <param name="address">IP Address.</param>
|
||||
[Theory]
|
||||
[InlineData("127.0.0.1")]
|
||||
[InlineData("127.0.0.1:123")]
|
||||
[InlineData("localhost")]
|
||||
[InlineData("localhost:1345")]
|
||||
[InlineData("www.google.co.uk")]
|
||||
[InlineData("fd23:184f:2029:0:3139:7386:67d7:d517")]
|
||||
[InlineData("fd23:184f:2029:0:3139:7386:67d7:d517/56")]
|
||||
[InlineData("[fd23:184f:2029:0:3139:7386:67d7:d517]:124")]
|
||||
[InlineData("fe80::7add:12ff:febb:c67b%16")]
|
||||
[InlineData("[fe80::7add:12ff:febb:c67b%16]:123")]
|
||||
[InlineData("fe80::7add:12ff:febb:c67b%16:123")]
|
||||
[InlineData("[fe80::7add:12ff:febb:c67b%16]")]
|
||||
[InlineData("192.168.1.2/255.255.255.0")]
|
||||
[InlineData("192.168.1.2/24")]
|
||||
public void ValidHostStrings(string address)
|
||||
{
|
||||
Assert.True(IPHost.TryParse(address, out _));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Checks IP address formats.
|
||||
/// </summary>
|
||||
/// <param name="address">IP Address.</param>
|
||||
[Theory]
|
||||
[InlineData("127.0.0.1")]
|
||||
[InlineData("fd23:184f:2029:0:3139:7386:67d7:d517")]
|
||||
[InlineData("fd23:184f:2029:0:3139:7386:67d7:d517/56")]
|
||||
[InlineData("[fd23:184f:2029:0:3139:7386:67d7:d517]")]
|
||||
[InlineData("fe80::7add:12ff:febb:c67b%16")]
|
||||
[InlineData("[fe80::7add:12ff:febb:c67b%16]:123")]
|
||||
[InlineData("fe80::7add:12ff:febb:c67b%16:123")]
|
||||
[InlineData("[fe80::7add:12ff:febb:c67b%16]")]
|
||||
[InlineData("192.168.1.2/255.255.255.0")]
|
||||
[InlineData("192.168.1.2/24")]
|
||||
public void ValidIPStrings(string address)
|
||||
{
|
||||
Assert.True(IPNetAddress.TryParse(address, out _));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// All should be invalid address strings.
|
||||
/// </summary>
|
||||
/// <param name="address">Invalid address strings.</param>
|
||||
[Theory]
|
||||
[InlineData("256.128.0.0.0.1")]
|
||||
[InlineData("127.0.0.1#")]
|
||||
[InlineData("localhost!")]
|
||||
[InlineData("fd23:184f:2029:0:3139:7386:67d7:d517:1231")]
|
||||
[InlineData("[fd23:184f:2029:0:3139:7386:67d7:d517:1231]")]
|
||||
public void InvalidAddressString(string address)
|
||||
{
|
||||
Assert.False(IPNetAddress.TryParse(address, out _));
|
||||
Assert.False(IPHost.TryParse(address, out _));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Test collection parsing.
|
||||
/// </summary>
|
||||
@@ -384,6 +324,9 @@ namespace Jellyfin.Networking.Tests
|
||||
[InlineData("jellyfin.org", "eth16", false, "eth16")]
|
||||
// User on external network, no binding - so result is the 1st external.
|
||||
[InlineData("jellyfin.org", "", false, "eth11")]
|
||||
// Dns failure - should skip the test.
|
||||
// https://en.wikipedia.org/wiki/.test
|
||||
[InlineData("invalid.domain.test", "", false, "eth11")]
|
||||
// User assumed to be internal, no binding - so result is the 1st internal.
|
||||
[InlineData("", "", false, "eth16")]
|
||||
public void TestBindInterfaces(string source, string bindAddresses, bool ipv6enabled, string result)
|
||||
@@ -416,10 +359,13 @@ namespace Jellyfin.Networking.Tests
|
||||
|
||||
_ = nm.TryParseInterface(result, out Collection<IPObject>? resultObj);
|
||||
|
||||
if (resultObj != null)
|
||||
// Check to see if dns resolution is working. If not, skip test.
|
||||
_ = IPHost.TryParse(source, out var host);
|
||||
|
||||
if (resultObj != null && host?.HasAddress == true)
|
||||
{
|
||||
result = ((IPNetAddress)resultObj[0]).ToString(true);
|
||||
var intf = nm.GetBindInterface(source, out int? _);
|
||||
var intf = nm.GetBindInterface(source, out _);
|
||||
|
||||
Assert.Equal(intf, result);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user