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
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.
47 lines
1.8 KiB
C#
47 lines
1.8 KiB
C#
using Shouldly;
|
|
using Xunit;
|
|
using ZB.MOM.WW.OtOpcUa.Security.Ldap;
|
|
|
|
namespace ZB.MOM.WW.OtOpcUa.Security.Tests;
|
|
|
|
public sealed class LdapHelperTests
|
|
{
|
|
/// <summary>Verifies that LDAP filter special characters are properly escaped.</summary>
|
|
/// <param name="input">The input string.</param>
|
|
/// <param name="expected">The expected escaped output.</param>
|
|
[Theory]
|
|
[InlineData("joe", "joe")]
|
|
[InlineData("jo*e", "jo\\2ae")]
|
|
[InlineData("jo(e", "jo\\28e")]
|
|
[InlineData("jo)e", "jo\\29e")]
|
|
[InlineData("jo\\e", "jo\\5ce")]
|
|
public void EscapeLdapFilter_escapes_special_chars(string input, string expected)
|
|
{
|
|
LdapAuthService.EscapeLdapFilter(input).ShouldBe(expected);
|
|
}
|
|
|
|
/// <summary>Verifies that the first organizational unit segment is correctly extracted from a DN.</summary>
|
|
/// <param name="dn">The distinguished name.</param>
|
|
/// <param name="expected">The expected organizational unit value.</param>
|
|
[Theory]
|
|
[InlineData("cn=joe,ou=Admins,dc=lmxopcua,dc=local", "Admins")]
|
|
[InlineData("cn=alice,dc=lmxopcua,dc=local", null)]
|
|
[InlineData("ou=Admins,dc=lmxopcua,dc=local", "Admins")]
|
|
public void ExtractOuSegment_returns_first_ou(string dn, string? expected)
|
|
{
|
|
LdapAuthService.ExtractOuSegment(dn).ShouldBe(expected);
|
|
}
|
|
|
|
/// <summary>Verifies that the first RDN value is correctly extracted from various DN formats.</summary>
|
|
/// <param name="dn">The distinguished name.</param>
|
|
/// <param name="expected">The expected RDN value.</param>
|
|
[Theory]
|
|
[InlineData("cn=Admins,dc=lmxopcua,dc=local", "Admins")]
|
|
[InlineData("cn=Admins", "Admins")]
|
|
[InlineData("Admins", "Admins")]
|
|
public void ExtractFirstRdnValue_handles_full_and_short_dns(string dn, string expected)
|
|
{
|
|
LdapAuthService.ExtractFirstRdnValue(dn).ShouldBe(expected);
|
|
}
|
|
}
|