fix(DIExtensions): ConsumerOptions-Eingabe in AddAuthService-Methode hinzugefügt, um Konsuemrn nach der Übernahme aus der Config arrangieren zu können.
- Standardiezd consumerKey Benennung
This commit is contained in:
parent
6694e4b626
commit
7873542aca
@ -5,7 +5,6 @@ using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.Hosting;
|
||||
using DigitalData.Auth.API.Services;
|
||||
using DigitalData.Auth.API.Services.Contracts;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
|
||||
namespace DigitalData.Auth.Tests.API;
|
||||
|
||||
@ -17,7 +16,7 @@ public class AuthHubTests
|
||||
|
||||
private Func<Action<ClientParams>, ServiceProvider> Build;
|
||||
|
||||
private WebApplication? _app = null;
|
||||
private readonly WebApplication? _app = null;
|
||||
|
||||
private readonly Queue<IAsyncDisposable> _disposableAsync = new();
|
||||
|
||||
@ -52,13 +51,12 @@ public class AuthHubTests
|
||||
// Create and run test server
|
||||
// Create builder and add SignalR service
|
||||
var builder = WebApplication.CreateBuilder();
|
||||
builder.Configuration.AddInMemoryCollection(new Dictionary<string, string?>()
|
||||
{
|
||||
{ "Consumers", null }
|
||||
});
|
||||
var config = builder.Configuration;
|
||||
builder.Services.AddSignalR();
|
||||
builder.Services.AddAuthService(config);
|
||||
builder.Services.AddAuthService(
|
||||
config,
|
||||
consumers => consumers.Add(new(0, "mock", "123", "client.mock")) // Set mock consumer
|
||||
);
|
||||
|
||||
// Listen AvailablePort and map hub
|
||||
var _app = builder.Build();
|
||||
@ -69,8 +67,6 @@ public class AuthHubTests
|
||||
_app.MapHub<Auth.API.Hubs.AuthHub>(hubRoute);
|
||||
_app.Start();
|
||||
|
||||
_disposableAsync.Enqueue(_app);
|
||||
|
||||
// Create notifier by app services
|
||||
_notifier = _app.Services.GetRequiredService<INotifier>();
|
||||
}
|
||||
@ -82,6 +78,7 @@ public class AuthHubTests
|
||||
if (_app is not null)
|
||||
{
|
||||
await _app.StopAsync();
|
||||
await _app.DisposeAsync();
|
||||
Console.WriteLine("Test server stopped.");
|
||||
}
|
||||
|
||||
|
||||
@ -13,17 +13,8 @@
|
||||
<None Remove="API\appsettings.json" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Content Include="API\appsettings.json">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
<ExcludeFromSingleFile>true</ExcludeFromSingleFile>
|
||||
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
|
||||
</Content>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="coverlet.collector" Version="6.0.0" />
|
||||
<PackageReference Include="Microsoft.Extensions.Configuration" Version="9.0.1" />
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0" />
|
||||
<PackageReference Include="NUnit" Version="3.14.0" />
|
||||
<PackageReference Include="NUnit.Analyzers" Version="3.9.0" />
|
||||
|
||||
@ -6,9 +6,19 @@ namespace DigitalData.Auth.API.Services;
|
||||
|
||||
public static class DIExtensions
|
||||
{
|
||||
public static IServiceCollection AddAuthService(this IServiceCollection services, IConfiguration configuration, string key = "Consumers")
|
||||
public static IServiceCollection AddAuthService(this IServiceCollection services, IConfiguration configuration, Action<List<Consumer>>? consumerOptions = null)
|
||||
{
|
||||
var consumers = configuration.GetSection(key).Get<IEnumerable<Consumer>>() ?? throw new InvalidOperationException($"No Consumer list found in {key} in configuration.");
|
||||
List<Consumer> consumers = new();
|
||||
|
||||
var consumerKey = $"{nameof(Consumer)}s";
|
||||
if (configuration.GetSection(consumerKey).Get<IEnumerable<Consumer>>() is IEnumerable<Consumer> consumersFromConfig)
|
||||
consumers.AddRange(consumersFromConfig);
|
||||
|
||||
consumerOptions?.Invoke(consumers);
|
||||
|
||||
if(consumers.Count == 0)
|
||||
throw new InvalidOperationException($"No Consumer list found in {consumerKey} in configuration.");
|
||||
|
||||
services.AddSingleton(Options.Create(consumers));
|
||||
services.AddSingleton<IConsumerService, ConfiguredConsumerService>();
|
||||
services.AddSingleton<INotifier, Notifier>();
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user