using Omika.Core.Contracts.Security; namespace Omika.Tests.Contracts.Security; /// /// Tests de sécurité du contrat : le mot de passe /// ne doit jamais être exposé par . /// public class LoginRequestTests { [Fact] public void ToString_NeverExposesPassword() { const string password = "MotDePasseUltraSecret123!"; var request = new LoginRequest { Login = "jean.dupont", Password = password }; string text = request.ToString(); Assert.DoesNotContain(password, text, StringComparison.Ordinal); Assert.Contains(request.Login, text, StringComparison.Ordinal); } [Fact] public void ToString_IndicatesWhetherPasswordIsPresent() { var withPassword = new LoginRequest { Login = "jean.dupont", Password = "secret" }; var withoutPassword = new LoginRequest { Login = "jean.dupont", Password = null }; Assert.Contains("HasPassword = True", withPassword.ToString(), StringComparison.Ordinal); Assert.Contains("HasPassword = False", withoutPassword.ToString(), StringComparison.Ordinal); } [Fact] public void ToString_EmptyPasswordIsTreatedAsAbsent() { var request = new LoginRequest { Login = "jean.dupont", Password = string.Empty }; Assert.Contains("HasPassword = False", request.ToString(), StringComparison.Ordinal); } }