using JdeScoping.Infrastructure.Auth; using Shouldly; namespace JdeScoping.Api.Tests.Services; public class FakeAuthServiceTests { private readonly FakeAuthService _service; public FakeAuthServiceTests() { _service = new FakeAuthService(); } [Fact] public async Task AuthenticateAsync_AnyCredentials_ReturnsSuccess() { // Act var result = await _service.AuthenticateAsync("anyuser", "anypassword"); // Assert result.Success.ShouldBeTrue(); result.User.ShouldNotBeNull(); result.ErrorMessage.ShouldBeNull(); } [Fact] public async Task AuthenticateAsync_UserInfoPopulatedCorrectly() { // Act var result = await _service.AuthenticateAsync("testuser", "password"); // Assert result.User.ShouldNotBeNull(); result.User.Username.ShouldBe("testuser"); // lowercase result.User.FirstName.ShouldBe("Dev"); result.User.LastName.ShouldBe("User"); result.User.EmailAddress.ShouldBe("testuser@example.com"); result.User.Title.ShouldBe("Developer"); result.User.Dn.ShouldBe("CN=testuser,OU=Users,DC=example,DC=com"); } [Fact] public async Task AuthenticateAsync_UsernameIsLowercased() { // Act var result = await _service.AuthenticateAsync("TestUser", "password"); // Assert result.User.ShouldNotBeNull(); result.User.Username.ShouldBe("testuser"); } [Fact] public async Task GetUserInfoAsync_ReturnsUserInfo() { // Act var result = await _service.GetUserInfoAsync("testuser"); // Assert result.ShouldNotBeNull(); result.Username.ShouldBe("testuser"); result.FirstName.ShouldBe("Dev"); result.LastName.ShouldBe("User"); } [Fact] public async Task AuthenticateAsync_DisplayNameComputedCorrectly() { // Act var result = await _service.AuthenticateAsync("testuser", "password"); // Assert result.User.ShouldNotBeNull(); result.User.DisplayName.ShouldBe("Dev User"); } }