using Shouldly; using Xunit; using ZB.MOM.WW.OtOpcUa.Security.Ldap; namespace ZB.MOM.WW.OtOpcUa.Security.Tests; public sealed class RoleMapperTests { /// /// Verifies that empty mapping returns no roles. /// [Fact] public void Empty_mapping_returns_empty() { RoleMapper.Map(new[] { "Admins" }, new Dictionary()) .ShouldBeEmpty(); } /// /// Verifies that RoleMapper maps a group to its corresponding role. /// [Fact] public void Maps_group_to_role() { RoleMapper.Map( new[] { "AdminGroup" }, new Dictionary { ["AdminGroup"] = "FleetAdmin" }) .ShouldBe(new[] { "FleetAdmin" }); } /// /// Verifies that group matching is case-insensitive. /// [Fact] public void Case_insensitive_group_match() { RoleMapper.Map( new[] { "admingroup" }, new Dictionary(StringComparer.OrdinalIgnoreCase) { ["AdminGroup"] = "FleetAdmin", }) .ShouldBe(new[] { "FleetAdmin" }); } /// /// Verifies that multiple groups are deduplicated to unique roles. /// [Fact] public void Multiple_groups_dedup_roles() { var roles = RoleMapper.Map( new[] { "AdminGroup", "AlsoAdmin" }, new Dictionary { ["AdminGroup"] = "FleetAdmin", ["AlsoAdmin"] = "FleetAdmin", }); roles.ShouldBe(new[] { "FleetAdmin" }); } }