Files
lmxopcua/tests/Core/ZB.MOM.WW.OtOpcUa.Cluster.Tests/RoleParserTests.cs
2026-05-26 04:31:08 -04:00

53 lines
1.1 KiB
C#

using Shouldly;
using Xunit;
namespace ZB.MOM.WW.OtOpcUa.Cluster.Tests;
public sealed class RoleParserTests
{
[Theory]
[InlineData(null)]
[InlineData("")]
[InlineData(" ")]
public void Empty_input_yields_empty_array(string? raw)
{
RoleParser.Parse(raw).ShouldBeEmpty();
}
[Fact]
public void Single_role_admin()
{
RoleParser.Parse("admin").ShouldBe(new[] { "admin" });
}
[Fact]
public void Two_roles_csv()
{
RoleParser.Parse("admin,driver").ShouldBe(new[] { "admin", "driver" });
}
[Fact]
public void Whitespace_tolerant()
{
RoleParser.Parse(" admin , driver ").ShouldBe(new[] { "admin", "driver" });
}
[Fact]
public void Case_insensitive_normalizes_to_lower()
{
RoleParser.Parse("ADMIN,Driver").ShouldBe(new[] { "admin", "driver" });
}
[Fact]
public void Duplicate_roles_deduped()
{
RoleParser.Parse("admin,admin,driver").ShouldBe(new[] { "admin", "driver" });
}
[Fact]
public void Unknown_role_throws()
{
Should.Throw<ArgumentException>(() => RoleParser.Parse("admin,master"));
}
}