Files
lmxopcua/tests/Core/ZB.MOM.WW.OtOpcUa.Cluster.Tests/RoleParserTests.cs
T
Joseph Doherty 64e3fbe035
v2-ci / build (push) Failing after 1m43s
v2-ci / unit-tests (tests/Core/ZB.MOM.WW.OtOpcUa.Cluster.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.ControlPlane.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.OpcUaServer.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.Runtime.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.Security.Tests) (push) Has been skipped
v2-ci / integration (tests/Server/ZB.MOM.WW.OtOpcUa.Host.IntegrationTests) (push) Has been skipped
v2-ci / integration (tests/Server/ZB.MOM.WW.OtOpcUa.OpcUaServer.IntegrationTests) (push) Has been skipped
docs: backfill XML documentation across 756 files
Adds <summary>, <param>, <typeparam>, and <inheritdoc/> tags to public
members surfaced by commentchecker — resolves 5,847 of 5,869 issues
(99.6%) across three /fixdocs passes.
2026-05-28 08:10:17 -04:00

61 lines
1.8 KiB
C#

using Shouldly;
using Xunit;
namespace ZB.MOM.WW.OtOpcUa.Cluster.Tests;
public sealed class RoleParserTests
{
/// <summary>Verifies that empty input yields an empty array.</summary>
/// <param name="raw">The raw input string to test (null, empty, or whitespace).</param>
[Theory]
[InlineData(null)]
[InlineData("")]
[InlineData(" ")]
public void Empty_input_yields_empty_array(string? raw)
{
RoleParser.Parse(raw).ShouldBeEmpty();
}
/// <summary>Verifies that a single role 'admin' is parsed correctly.</summary>
[Fact]
public void Single_role_admin()
{
RoleParser.Parse("admin").ShouldBe(new[] { "admin" });
}
/// <summary>Verifies that two roles separated by comma are parsed correctly.</summary>
[Fact]
public void Two_roles_csv()
{
RoleParser.Parse("admin,driver").ShouldBe(new[] { "admin", "driver" });
}
/// <summary>Verifies that parser tolerates surrounding whitespace.</summary>
[Fact]
public void Whitespace_tolerant()
{
RoleParser.Parse(" admin , driver ").ShouldBe(new[] { "admin", "driver" });
}
/// <summary>Verifies that parser is case-insensitive and normalizes to lowercase.</summary>
[Fact]
public void Case_insensitive_normalizes_to_lower()
{
RoleParser.Parse("ADMIN,Driver").ShouldBe(new[] { "admin", "driver" });
}
/// <summary>Verifies that duplicate roles are removed.</summary>
[Fact]
public void Duplicate_roles_deduped()
{
RoleParser.Parse("admin,admin,driver").ShouldBe(new[] { "admin", "driver" });
}
/// <summary>Verifies that parser throws for unknown roles.</summary>
[Fact]
public void Unknown_role_throws()
{
Should.Throw<ArgumentException>(() => RoleParser.Parse("admin,master"));
}
}