Add unit tests for RabbitMq and Udp transport servers and clients
Some checks failed
Docs CI / lint-and-preview (push) Has been cancelled
Some checks failed
Docs CI / lint-and-preview (push) Has been cancelled
- Implemented comprehensive unit tests for RabbitMqTransportServer, covering constructor, disposal, connection management, event handlers, and exception handling. - Added configuration tests for RabbitMqTransportServer to validate SSL, durable queues, auto-recovery, and custom virtual host options. - Created unit tests for UdpFrameProtocol, including frame parsing and serialization, header size validation, and round-trip data preservation. - Developed tests for UdpTransportClient, focusing on connection handling, event subscriptions, and exception scenarios. - Established tests for UdpTransportServer, ensuring proper start/stop behavior, connection state management, and event handling. - Included tests for UdpTransportOptions to verify default values and modification capabilities. - Enhanced service registration tests for Udp transport services in the dependency injection container.
This commit is contained in:
@@ -37,6 +37,19 @@ public static class CryptoServiceCollectionExtensions
|
||||
services.Configure(configureRegistry);
|
||||
}
|
||||
|
||||
// Register compliance options with default profile
|
||||
services.TryAddSingleton<IOptionsMonitor<CryptoComplianceOptions>>(sp =>
|
||||
{
|
||||
var configuration = sp.GetService<IConfiguration>();
|
||||
var options = new CryptoComplianceOptions();
|
||||
configuration?.GetSection(CryptoComplianceOptions.SectionKey).Bind(options);
|
||||
options.ApplyEnvironmentOverrides();
|
||||
return new StaticComplianceOptionsMonitor(options);
|
||||
});
|
||||
|
||||
// Register compliance service
|
||||
services.TryAddSingleton<ICryptoComplianceService, CryptoComplianceService>();
|
||||
|
||||
services.TryAddSingleton<DefaultCryptoProvider>(sp =>
|
||||
{
|
||||
var provider = new DefaultCryptoProvider();
|
||||
@@ -64,6 +77,62 @@ public static class CryptoServiceCollectionExtensions
|
||||
return services;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Registers crypto services with compliance profile configuration.
|
||||
/// </summary>
|
||||
/// <param name="services">Service collection.</param>
|
||||
/// <param name="configuration">Configuration root.</param>
|
||||
/// <param name="configureCompliance">Optional compliance configuration.</param>
|
||||
/// <returns>The service collection.</returns>
|
||||
public static IServiceCollection AddStellaOpsCryptoWithCompliance(
|
||||
this IServiceCollection services,
|
||||
IConfiguration configuration,
|
||||
Action<CryptoComplianceOptions>? configureCompliance = null)
|
||||
{
|
||||
ArgumentNullException.ThrowIfNull(services);
|
||||
ArgumentNullException.ThrowIfNull(configuration);
|
||||
|
||||
// Bind compliance options from configuration
|
||||
services.Configure<CryptoComplianceOptions>(options =>
|
||||
{
|
||||
configuration.GetSection(CryptoComplianceOptions.SectionKey).Bind(options);
|
||||
configureCompliance?.Invoke(options);
|
||||
options.ApplyEnvironmentOverrides();
|
||||
});
|
||||
|
||||
// Register compliance service with options monitor
|
||||
services.TryAddSingleton<ICryptoComplianceService, CryptoComplianceService>();
|
||||
|
||||
// Register base crypto services
|
||||
services.AddStellaOpsCrypto();
|
||||
|
||||
return services;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Helper class for static options monitoring.
|
||||
/// </summary>
|
||||
private sealed class StaticComplianceOptionsMonitor : IOptionsMonitor<CryptoComplianceOptions>
|
||||
{
|
||||
private readonly CryptoComplianceOptions _options;
|
||||
|
||||
public StaticComplianceOptionsMonitor(CryptoComplianceOptions options)
|
||||
=> _options = options;
|
||||
|
||||
public CryptoComplianceOptions CurrentValue => _options;
|
||||
|
||||
public CryptoComplianceOptions Get(string? name) => _options;
|
||||
|
||||
public IDisposable OnChange(Action<CryptoComplianceOptions, string> listener)
|
||||
=> NullDisposable.Instance;
|
||||
|
||||
private sealed class NullDisposable : IDisposable
|
||||
{
|
||||
public static readonly NullDisposable Instance = new();
|
||||
public void Dispose() { }
|
||||
}
|
||||
}
|
||||
|
||||
public static IServiceCollection AddStellaOpsCryptoRu(
|
||||
this IServiceCollection services,
|
||||
IConfiguration configuration,
|
||||
|
||||
Reference in New Issue
Block a user