summaryrefslogtreecommitdiff
path: root/wrappers/csharp/EduVpnCommonTests
diff options
context:
space:
mode:
authorStevenWdV <stevenwdv@gmail.com>2021-11-20 18:09:09 +0100
committerStevenWdV <stevenwdv@gmail.com>2021-11-22 12:37:33 +0100
commit8878d8705f0b0fcddb3979194340ca39df897580 (patch)
tree6c920d0b9d40584dfe6bf7e5b2e865acff72e72f /wrappers/csharp/EduVpnCommonTests
parentb8d368b93479233a8ecbeba3daf4b10bee8f0a4a (diff)
Add C bindings and a C# wrapper
Diffstat (limited to 'wrappers/csharp/EduVpnCommonTests')
-rw-r--r--wrappers/csharp/EduVpnCommonTests/EduVpnCommonTests.csproj19
-rw-r--r--wrappers/csharp/EduVpnCommonTests/VerifyTests.cs72
2 files changed, 91 insertions, 0 deletions
diff --git a/wrappers/csharp/EduVpnCommonTests/EduVpnCommonTests.csproj b/wrappers/csharp/EduVpnCommonTests/EduVpnCommonTests.csproj
new file mode 100644
index 0000000..cf58249
--- /dev/null
+++ b/wrappers/csharp/EduVpnCommonTests/EduVpnCommonTests.csproj
@@ -0,0 +1,19 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+ <PropertyGroup>
+ <TargetFramework>net5.0</TargetFramework>
+ <IsPackable>false</IsPackable>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.0.0" />
+ <PackageReference Include="NUnit" Version="3.13.1" />
+ <PackageReference Include="NUnit3TestAdapter" Version="3.17.0" />
+ <PackageReference Include="coverlet.collector" Version="3.0.2" />
+ </ItemGroup>
+
+ <ItemGroup>
+ <ProjectReference Include="../EduVpnCommon.csproj" />
+ </ItemGroup>
+
+</Project>
diff --git a/wrappers/csharp/EduVpnCommonTests/VerifyTests.cs b/wrappers/csharp/EduVpnCommonTests/VerifyTests.cs
new file mode 100644
index 0000000..933f2bc
--- /dev/null
+++ b/wrappers/csharp/EduVpnCommonTests/VerifyTests.cs
@@ -0,0 +1,72 @@
+using System;
+using System.IO;
+using System.Linq;
+using EduVpnCommon;
+using NUnit.Framework;
+
+namespace EduVpnCommonTests
+{
+ [TestFixture(TestOf = typeof(Discovery)), Parallelizable]
+ public class VerifyTests
+ {
+ // Relative to e.g. EduVpnCommonTests/bin/Debug/net5.0
+ readonly string testDataDir_ = $"{TestContext.CurrentContext.TestDirectory}/../../../../../../test_data";
+
+ [OneTimeSetUp]
+ public void OneTimeSetUp() =>
+ Discovery.InsecureTestingSetExtraKey(File.ReadLines($"{testDataDir_}/dummy/public.key").Last());
+
+ [Test]
+ [TestCase("dummy/server_list.json.minisig", "dummy/server_list.json", "server_list.json")]
+ [TestCase("dummy/organization_list.json.minisig", "dummy/organization_list.json", "organization_list.json")]
+ public void TestValid(string sigFile, string jsonFile, string expectedFileName) =>
+ Discovery.Verify(
+ File.ReadAllBytes($"{testDataDir_}/{sigFile}"),
+ File.ReadAllBytes($"{testDataDir_}/{jsonFile}"),
+ expectedFileName,
+ DateTimeOffset.UnixEpoch);
+
+ [Test]
+ [TestCase("dummy/random.txt", "dummy/server_list.json", "server_list.json")]
+ public void TestInvalidSignature(string sigFile, string jsonFile, string expectedFileName) =>
+ Assert.Throws(Is.TypeOf<VerifyException>()
+ .And.Property(nameof(VerifyException.Code)).EqualTo(VerifyErrorCode.ErrInvalidSignature),
+ () => Discovery.Verify(
+ File.ReadAllBytes($"{testDataDir_}/{sigFile}"),
+ File.ReadAllBytes($"{testDataDir_}/{jsonFile}"),
+ expectedFileName,
+ DateTimeOffset.UnixEpoch));
+
+ [Test]
+ [TestCase("dummy/server_list.json.wrong_key.minisig", "dummy/server_list.json", "server_list.json")]
+ public void TestWrongKey(string sigFile, string jsonFile, string expectedFileName) =>
+ Assert.Throws(Is.TypeOf<VerifyException>()
+ .And.Property(nameof(VerifyException.Code)).EqualTo(VerifyErrorCode.ErrInvalidSignatureUnknownKey),
+ () => Discovery.Verify(
+ File.ReadAllBytes($"{testDataDir_}/{sigFile}"),
+ File.ReadAllBytes($"{testDataDir_}/{jsonFile}"),
+ expectedFileName,
+ DateTimeOffset.UnixEpoch));
+
+ [Test]
+ [TestCase("dummy/server_list.json.minisig", "dummy/server_list.json", "server_list.json")]
+ public void TestOldSignature(string sigFile, string jsonFile, string expectedFileName) =>
+ Assert.Throws(Is.TypeOf<VerifyException>()
+ .And.Property(nameof(VerifyException.Code)).EqualTo(VerifyErrorCode.ErrTooOld),
+ () => Discovery.Verify(
+ File.ReadAllBytes($"{testDataDir_}/{sigFile}"),
+ File.ReadAllBytes($"{testDataDir_}/{jsonFile}"),
+ expectedFileName,
+ DateTimeOffset.MaxValue));
+
+ [Test]
+ [TestCase("dummy/other_list.json.minisig", "dummy/other_list.json", "other_list.json")]
+ public void TestUnknownExpectedFile(string sigFile, string jsonFile, string expectedFileName) =>
+ Assert.Throws<ArgumentException>(
+ () => Discovery.Verify(
+ File.ReadAllBytes($"{testDataDir_}/{sigFile}"),
+ File.ReadAllBytes($"{testDataDir_}/{jsonFile}"),
+ expectedFileName,
+ DateTimeOffset.UnixEpoch));
+ }
+} \ No newline at end of file