summaryrefslogtreecommitdiffstats
path: root/src/main.test
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.test')
-rw-r--r--src/main.test/Mock/Clients/IISClient.cs17
-rw-r--r--src/main.test/Mock/Services/InputService.cs26
-rw-r--r--src/main.test/Tests/BindingTests/Bindings.cs51
-rw-r--r--src/main.test/Tests/BindingTests/HelperPerformance.cs57
-rw-r--r--src/main.test/wacs.test.csproj6
5 files changed, 145 insertions, 12 deletions
diff --git a/src/main.test/Mock/Clients/IISClient.cs b/src/main.test/Mock/Clients/IISClient.cs
index c2a5898..f131434 100644
--- a/src/main.test/Mock/Clients/IISClient.cs
+++ b/src/main.test/Mock/Clients/IISClient.cs
@@ -164,7 +164,22 @@ namespace PKISharp.WACS.UnitTests.Mock.Clients
public string IP { get; set; }
public byte[] CertificateHash { get; set; }
public string CertificateStoreName { get; set; }
- public string BindingInformation => $"{IP}:{Port}:{Host}";
+ public string BindingInformation
+ {
+ get
+ {
+ if (_bindingInformation != null)
+ {
+ return _bindingInformation;
+ }
+ else
+ {
+ return $"{IP}:{Port}:{Host}";
+ }
+ }
+ set => _bindingInformation = value;
+ }
+ private string? _bindingInformation = null;
public SSLFlags SSLFlags { get; set; }
}
}
diff --git a/src/main.test/Mock/Services/InputService.cs b/src/main.test/Mock/Services/InputService.cs
index 3771cab..58e8d2b 100644
--- a/src/main.test/Mock/Services/InputService.cs
+++ b/src/main.test/Mock/Services/InputService.cs
@@ -43,25 +43,31 @@ namespace PKISharp.WACS.UnitTests.Mock.Services
FirstOrDefault(c => string.Equals(c.Command, input, StringComparison.CurrentCultureIgnoreCase)).Item);
}
- public Task<TResult> ChooseFromMenu<TResult>(string what, List<Choice<TResult>> choices)
- {
- var input = GetNextInput();
- return Task.
- FromResult(choices.
- FirstOrDefault(c => string.Equals(c.Command, input, StringComparison.CurrentCultureIgnoreCase)).Item);
- }
-
public string FormatDate(DateTime date) => "";
public Task<bool> PromptYesNo(string message, bool defaultOption)
{
var input = GetNextInput();
return Task.FromResult(string.Equals(input, "y", StringComparison.CurrentCultureIgnoreCase));
}
- public Task<string> ReadPassword(string what) => Task.FromResult(GetNextInput());
+ public Task<string?> ReadPassword(string what) => Task.FromResult(GetNextInput());
public Task<string> RequestString(string what) => Task.FromResult(GetNextInput());
public Task<string> RequestString(string[] what) => Task.FromResult(GetNextInput());
- public void Show(string label, string value = null, bool first = false, int level = 0) { }
+ public void Show(string? label, string? value = null, bool first = false, int level = 0) { }
public Task<bool> Wait(string message = "") => Task.FromResult(true);
public Task WritePagedList(IEnumerable<Choice> listItems) => Task.CompletedTask;
+ public Task<TResult> ChooseFromMenu<TResult>(string what, List<Choice<TResult>> choices, Func<string, Choice<TResult>>? unexpected = null)
+ {
+ var input = GetNextInput();
+ var choice = choices.FirstOrDefault(c => string.Equals(c.Command, input, StringComparison.CurrentCultureIgnoreCase));
+ if (choice == null && unexpected != null)
+ {
+ choice = unexpected(input);
+ }
+ if (choice != null)
+ {
+ return Task.FromResult(choice.Item);
+ }
+ throw new Exception();
+ }
}
}
diff --git a/src/main.test/Tests/BindingTests/Bindings.cs b/src/main.test/Tests/BindingTests/Bindings.cs
index 1343924..ac4a157 100644
--- a/src/main.test/Tests/BindingTests/Bindings.cs
+++ b/src/main.test/Tests/BindingTests/Bindings.cs
@@ -973,5 +973,56 @@ namespace PKISharp.WACS.UnitTests.Tests.BindingTests
Assert.AreEqual(iis.WebSites.First().Bindings.First().CertificateHash , newCert);
Assert.AreEqual(iis.WebSites.First().Bindings.Last().CertificateHash, newCert);
}
+
+ [TestMethod]
+ [DataRow("UPPERCASE.example.com", "UPPERCASE.example.com", "UPPERCASE.example.com")]
+ [DataRow("uppercase.example.com", "UPPERCASE.example.com", "UPPERCASE.example.com")]
+ [DataRow("UPPERCASE.example.com", "uppercase.example.com", "UPPERCASE.example.com")]
+ [DataRow("UPPERCASE.example.com", "UPPERCASE.example.com", "uppercase.example.com")]
+ [DataRow("UPPERCASE.example.com", "uppercase.example.com", "uppercase.example.com")]
+ [DataRow("uppercase.example.com", "UPPERCASE.example.com", "uppercase.example.com")]
+ [DataRow("uppercase.example.com", "uppercase.example.com", "UPPERCASE.example.com")]
+ [DataRow("uppercase.example.com", "uppercase.example.com", "uppercase.example.com")]
+ public void UppercaseBinding(string host, string bindingInfo, string newHost)
+ {
+ var mockBinding = new MockBinding()
+ {
+ IP = "*",
+ Port = 443,
+ Host = host,
+ Protocol = "https",
+ CertificateHash = oldCert1,
+ CertificateStoreName = DefaultStore
+ };
+ mockBinding.BindingInformation = $"*:443:{bindingInfo}";
+
+ var dup1 = new MockSite()
+ {
+ Id = 1,
+ Bindings = new List<MockBinding> {
+ mockBinding,
+ new MockBinding()
+ {
+ IP = "*",
+ Port = 80,
+ Host = host,
+ Protocol = "http"
+ }
+ }
+ };
+
+ var iis = new MockIISClient(log, 10)
+ {
+ MockSites = new[] { dup1 }
+ };
+
+ var bindingOptions = new BindingOptions().
+ WithSiteId(1).
+ WithStore(DefaultStore).
+ WithThumbprint(newCert);
+
+ iis.AddOrUpdateBindings(new[] { host, newHost }, bindingOptions, null);
+ Assert.AreEqual(2, iis.WebSites.First().Bindings.Count());
+ }
}
} \ No newline at end of file
diff --git a/src/main.test/Tests/BindingTests/HelperPerformance.cs b/src/main.test/Tests/BindingTests/HelperPerformance.cs
new file mode 100644
index 0000000..613c942
--- /dev/null
+++ b/src/main.test/Tests/BindingTests/HelperPerformance.cs
@@ -0,0 +1,57 @@
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+using PKISharp.WACS.Clients.IIS;
+using PKISharp.WACS.DomainObjects;
+using PKISharp.WACS.Services;
+using PKISharp.WACS.UnitTests.Mock.Clients;
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Text;
+
+namespace PKISharp.WACS.UnitTests.Tests.BindingTests
+{
+ [TestClass]
+ public class HelperPerformance
+ {
+ private readonly ILogService log;
+ public HelperPerformance() => log = new Mock.Services.LogService(false);
+
+ [TestMethod]
+ public void Speed()
+ {
+ var iis = new MockIISClient(log, 10);
+ var siteList = new List<MockSite>();
+ for (var i = 0; i < 5000; i++)
+ {
+ var bindingList = new List<MockBinding>();
+ for (var j = 0; j < 10; j++)
+ {
+ var randomBindingOptions = new BindingOptions();
+ var randomId = ShortGuid.NewGuid().ToString();
+ randomBindingOptions = randomBindingOptions.WithHost(randomId.ToLower());
+ bindingList.Add(new MockBinding(randomBindingOptions));
+ };
+ siteList.Add(new MockSite()
+ {
+ Id = i,
+ Bindings = bindingList
+ });
+ }
+ iis.MockSites = siteList.ToArray();
+ var helper = new IISHelper(log, iis);
+ var timer = new Stopwatch();
+ timer.Start();
+ helper.GetSites(false);
+ timer.Stop();
+ Assert.IsTrue(timer.ElapsedMilliseconds < 1000);
+
+ timer.Reset();
+ timer.Start();
+ helper.GetBindings();
+ timer.Stop();
+ Assert.IsTrue(timer.ElapsedMilliseconds < 1000);
+ }
+
+
+ }
+}
diff --git a/src/main.test/wacs.test.csproj b/src/main.test/wacs.test.csproj
index f691a52..bbbb8b4 100644
--- a/src/main.test/wacs.test.csproj
+++ b/src/main.test/wacs.test.csproj
@@ -9,7 +9,11 @@
<RootNamespace>PKISharp.WACS.UnitTests</RootNamespace>
</PropertyGroup>
-
+
+ <PropertyGroup>
+ <Nullable>enable</Nullable>
+ </PropertyGroup>
+
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.4.0" />
<PackageReference Include="MSTest.TestAdapter" Version="2.0.0" />