6e2decd21f
Implement LdapFormViewModel for editing LDAP configuration section with properties for ServerUrlsText, GroupDn, SearchBase, ConnectionTimeoutSeconds, UseFakeAuth, and AdminBypassUsersText. Array properties use newline-separated text with StringSplitOptions.RemoveEmptyEntries | TrimEntries for splitting.
61 lines
1.7 KiB
C#
61 lines
1.7 KiB
C#
using JdeScoping.ConfigManager.Models;
|
|
using JdeScoping.ConfigManager.ViewModels.Forms;
|
|
|
|
namespace JdeScoping.ConfigManager.Tests.ViewModels.Forms;
|
|
|
|
public class LdapFormViewModelTests
|
|
{
|
|
[Fact]
|
|
public void Constructor_InitializesFromModel()
|
|
{
|
|
// Arrange
|
|
var model = new LdapSection
|
|
{
|
|
ServerUrls = ["ldap://server1.local", "ldap://server2.local"],
|
|
GroupDn = "CN=Admins,DC=corp",
|
|
SearchBase = "DC=corp,DC=local",
|
|
UseFakeAuth = true
|
|
};
|
|
|
|
// Act
|
|
var sut = new LdapFormViewModel(model, () => { });
|
|
|
|
// Assert
|
|
sut.ServerUrlsText.ShouldBe("ldap://server1.local\nldap://server2.local");
|
|
sut.GroupDn.ShouldBe("CN=Admins,DC=corp");
|
|
sut.SearchBase.ShouldBe("DC=corp,DC=local");
|
|
sut.UseFakeAuth.ShouldBeTrue();
|
|
}
|
|
|
|
[Fact]
|
|
public void ServerUrlsText_SplitsIntoArray()
|
|
{
|
|
// Arrange
|
|
var model = new LdapSection();
|
|
var sut = new LdapFormViewModel(model, () => { });
|
|
|
|
// Act
|
|
sut.ServerUrlsText = "ldap://a.local\nldap://b.local\nldap://c.local";
|
|
|
|
// Assert
|
|
model.ServerUrls.Length.ShouldBe(3);
|
|
model.ServerUrls[0].ShouldBe("ldap://a.local");
|
|
model.ServerUrls[2].ShouldBe("ldap://c.local");
|
|
}
|
|
|
|
[Fact]
|
|
public void AdminBypassUsersText_SplitsIntoArray()
|
|
{
|
|
// Arrange
|
|
var model = new LdapSection();
|
|
var sut = new LdapFormViewModel(model, () => { });
|
|
|
|
// Act
|
|
sut.AdminBypassUsersText = "admin\nservice_account";
|
|
|
|
// Assert
|
|
model.AdminBypassUsers.Length.ShouldBe(2);
|
|
model.AdminBypassUsers[0].ShouldBe("admin");
|
|
}
|
|
}
|