Premiere commit - Omika
This commit is contained in:
@@ -0,0 +1,114 @@
|
||||
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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user