diff --git a/src/ScadaLink.CentralUI/Components/Forms/OpcUaEndpointEditor.razor b/src/ScadaLink.CentralUI/Components/Forms/OpcUaEndpointEditor.razor
index c2d2baa..e78e4fc 100644
--- a/src/ScadaLink.CentralUI/Components/Forms/OpcUaEndpointEditor.razor
+++ b/src/ScadaLink.CentralUI/Components/Forms/OpcUaEndpointEditor.razor
@@ -40,6 +40,61 @@
+
Authentication
+ @if (Config.UserIdentity is null)
+ {
+
+ }
+ else
+ {
+
+
+
+
+
+ @if (Config.UserIdentity.TokenType == OpcUaUserTokenType.UsernamePassword)
+ {
+
+
+
+ @RenderFieldError("UserIdentity.Username")
+
+
+
+
+
+ }
+ else if (Config.UserIdentity.TokenType == OpcUaUserTokenType.X509Certificate)
+ {
+
+
+
+ @RenderFieldError("UserIdentity.CertificatePath")
+
+
+
+
+
+ }
+
+
+
+
+ }
+
Timing
+ Advanced subscription
+
+
+
+
+ @RenderFieldError("SubscriptionDisplayName")
+
+
+
+
+
+
+
+
+
+
+
+
+ Deadband filter
+ @if (Config.Deadband is null)
+ {
+
+ }
+ else
+ {
+
+
+
+
+
+
+
+
+ @RenderFieldError("Deadband.Value")
+
+
+
+
+
+ }
+
Heartbeat
@if (Config.Heartbeat is null)
{
@@ -138,6 +256,12 @@
private void EnableHeartbeat() =>
Config.Heartbeat = new OpcUaHeartbeatConfig();
+ private void EnableAuthentication() =>
+ Config.UserIdentity = new OpcUaUserIdentityConfig();
+
+ private void EnableDeadband() =>
+ Config.Deadband = new OpcUaDeadbandConfig();
+
private RenderFragment? RenderFieldError(string field)
{
var match = Errors?.Errors.FirstOrDefault(e =>
diff --git a/tests/ScadaLink.CentralUI.Tests/Forms/OpcUaEndpointEditorTests.cs b/tests/ScadaLink.CentralUI.Tests/Forms/OpcUaEndpointEditorTests.cs
index b8b5f53..5c43676 100644
--- a/tests/ScadaLink.CentralUI.Tests/Forms/OpcUaEndpointEditorTests.cs
+++ b/tests/ScadaLink.CentralUI.Tests/Forms/OpcUaEndpointEditorTests.cs
@@ -136,9 +136,10 @@ public class OpcUaEndpointEditorTests : BunitContext
};
var cut = Render(p => p.Add(c => c.Config, config));
- Assert.Contains("Username", cut.Markup);
- Assert.Contains("Password", cut.Markup);
- Assert.DoesNotContain("Certificate path", cut.Markup);
+ // only renders for the UsernamePassword branch
+ Assert.Contains(">Username<", cut.Markup);
+ Assert.Contains(">Password<", cut.Markup);
+ Assert.DoesNotContain(">Certificate path<", cut.Markup);
}
[Fact]
@@ -153,9 +154,9 @@ public class OpcUaEndpointEditorTests : BunitContext
};
var cut = Render(p => p.Add(c => c.Config, config));
- Assert.Contains("Certificate path", cut.Markup);
- Assert.Contains("Certificate password", cut.Markup);
- Assert.DoesNotContain("Username", cut.Markup);
+ Assert.Contains(">Certificate path<", cut.Markup);
+ Assert.Contains(">Certificate password<", cut.Markup);
+ Assert.DoesNotContain(">Username<", cut.Markup);
}
[Fact]
@@ -167,8 +168,8 @@ public class OpcUaEndpointEditorTests : BunitContext
};
var cut = Render(p => p.Add(c => c.Config, config));
- Assert.DoesNotContain("Username", cut.Markup);
- Assert.DoesNotContain("Certificate path", cut.Markup);
+ Assert.DoesNotContain(">Username<", cut.Markup);
+ Assert.DoesNotContain(">Certificate path<", cut.Markup);
}
[Fact]