Files
Omika/tests/Omika.Tests/Connection/SyncConnectionOptionsValidatorTests.cs
2026-10-23 18:46:50 +02:00

115 lines
3.3 KiB
C#

using Microsoft.Extensions.Options;
using Omika.Data.Configuration;
namespace Omika.Tests.Connection;
public class SyncConnectionOptionsValidatorTests
{
private static SyncConnectionOptions CreateValidOptions() => new()
{
Server = "127.0.0.1",
Port = 4900,
DatabaseName = "BASE_SYNC",
Login = "susana"
};
[Fact]
public void Validate_ValidOptions_ReturnsSuccess()
{
var result = SyncConnectionOptionsValidator.Validate(CreateValidOptions());
Assert.True(result.IsSuccess);
}
[Fact]
public void Validate_MissingServer_ReturnsFailure()
{
var options = CreateValidOptions();
options.Server = null;
var result = SyncConnectionOptionsValidator.Validate(options);
Assert.True(result.IsFailure);
Assert.Contains(result.Errors, e => e.Contains("serveur", StringComparison.OrdinalIgnoreCase));
}
[Fact]
public void Validate_InvalidPort_ReturnsFailure()
{
var options = CreateValidOptions();
options.Port = 0;
var result = SyncConnectionOptionsValidator.Validate(options);
Assert.True(result.IsFailure);
Assert.Contains(result.Errors, e => e.Contains("port", StringComparison.OrdinalIgnoreCase));
}
[Fact]
public void Validate_MissingDatabase_ReturnsFailure()
{
var options = CreateValidOptions();
options.DatabaseName = null;
var result = SyncConnectionOptionsValidator.Validate(options);
Assert.True(result.IsFailure);
Assert.Contains(result.Errors, e => e.Contains("base", StringComparison.OrdinalIgnoreCase));
}
[Fact]
public void Validate_MissingLogin_ReturnsFailure()
{
var options = CreateValidOptions();
options.Login = null;
var result = SyncConnectionOptionsValidator.Validate(options);
Assert.True(result.IsFailure);
Assert.Contains(result.Errors, e => e.Contains("compte", StringComparison.OrdinalIgnoreCase));
}
[Fact]
public void Validate_ImplementsIValidateOptions()
{
var validator = new SyncConnectionOptionsValidator();
Assert.IsAssignableFrom<IValidateOptions<SyncConnectionOptions>>(validator);
}
[Fact]
public void ValidateOptions_Valid_ReturnsSuccess()
{
IValidateOptions<SyncConnectionOptions> validator = new SyncConnectionOptionsValidator();
var result = validator.Validate(null, CreateValidOptions());
Assert.Equal(ValidateOptionsResult.Success, result);
}
[Fact]
public void ValidateOptions_Invalid_ReturnsFailure()
{
IValidateOptions<SyncConnectionOptions> validator = new SyncConnectionOptionsValidator();
var options = CreateValidOptions();
options.Server = null;
var result = validator.Validate(null, options);
Assert.True(result.Failed);
Assert.Contains(result.Failures, e => e.Contains("serveur", StringComparison.OrdinalIgnoreCase));
}
[Fact]
public void ToString_DoesNotExposePassword()
{
var options = CreateValidOptions();
options.Password = "secret";
options.FilePasswords.ProtectionStd = "secret-std";
var text = options.ToString();
Assert.DoesNotContain("secret", text, StringComparison.OrdinalIgnoreCase);
}
}