refactor: IAuthListenHandler und IAuthSenderHandler aktualisiert, um Issuer und Audiance anstelle von Name zu verwenden

This commit is contained in:
Developer 02 2025-03-04 12:20:26 +01:00
parent d21da5028e
commit 1fe3fb9008
9 changed files with 37 additions and 29 deletions

View File

@ -2,5 +2,5 @@
public interface IAuthListenHandler
{
Task ReceiveKeyAsync(string name, string value);
Task ReceivePublicKeyAsync(string issuer, string audience, string value);
}

View File

@ -2,5 +2,5 @@
public interface IAuthSenderHandler
{
Task SendKeyAsync(string name, string key);
Task SendPublicKeyAsync(string issuer, string audience, string key);
}

View File

@ -27,7 +27,7 @@ public class AuthClient : IAuthClient, IAsyncDisposable
_connection = cnnBuilder.Build();
_connection.On<string, string>(nameof(ReceiveKeyAsync), ReceiveKeyAsync);
_connection.On<string, string, string>(nameof(ReceivePublicKeyAsync), ReceivePublicKeyAsync);
_logger = logger;
@ -65,9 +65,9 @@ public class AuthClient : IAuthClient, IAsyncDisposable
}
}
public Task ReceiveKeyAsync(string name, string message) => Task.Run(() => _params.Events.OnMessageReceived(name, message, _logger));
public Task ReceivePublicKeyAsync(string issuer, string audience, string message) => Task.Run(() => _params.Events.OnMessageReceived(issuer, audience, message, _logger));
public Task SendKeyAsync(string name, string message) => _connection.InvokeAsync(nameof(SendKeyAsync), name, message);
public Task SendPublicKeyAsync(string issuer, string audience, string message) => _connection.InvokeAsync(nameof(SendPublicKeyAsync), issuer, audience, message);
public virtual async ValueTask DisposeAsync()
{

View File

@ -4,7 +4,7 @@ namespace DigitalData.Auth.Client
{
public class ClientEvents
{
public Action<string, string, ILogger?> OnMessageReceived { get; set; } = (user, message, logger)
=> logger?.LogInformation("{user}: {message}", user, message);
public Action<string, string, string, ILogger?> OnMessageReceived { get; set; } = (issuer, audience, key, logger)
=> logger?.LogInformation("Public key value has been updated. Issuer: {Issuer}, Audience: {Audience}, New Key: {Key}", issuer, audience, key);
}
}

View File

@ -90,27 +90,30 @@ public class AuthHubTests
public async Task ReceiveMessage_ShouldCallOnMessageReceived()
{
// Arrange
string rcv_name = string.Empty;
string rcv_value = string.Empty;
string rcv_issuer = string.Empty;
string rcv_audience = string.Empty;
string rcv_key = string.Empty;
// Receiver client
var provider_receiver = Build(opt =>
{
opt.Url = _hubUrl;
opt.Events.OnMessageReceived = (name, value, logger) =>
opt.Events.OnMessageReceived = (issuer, audience, key, logger) =>
{
rcv_name = name;
rcv_value = value;
rcv_issuer = issuer;
rcv_audience = audience;
rcv_key = key;
};
});
var client_receiver = provider_receiver.GetRequiredService<IAuthClient>();
await client_receiver.StartAsync();
string name = "name";
string value = "value";
string issuer = "issuer";
string audience = "audience";
string key = "key";
// Act
await _notifier.UpdateKeyAsync(name, value);
await _notifier.UpdateKeyAsync(issuer, audience, key);
// delay fort getting answer
await Task.Delay(2000);
@ -118,8 +121,9 @@ public class AuthHubTests
// Assert
Assert.Multiple(() =>
{
Assert.That(rcv_name, Is.EqualTo(name));
Assert.That(rcv_value, Is.EqualTo(value));
Assert.That(rcv_issuer, Is.EqualTo(issuer));
Assert.That(rcv_audience, Is.EqualTo(audience));
Assert.That(rcv_key, Is.EqualTo(key));
});
}
}

View File

@ -99,7 +99,8 @@ public class AuthClientTests
public async Task ReceiveMessage_ShouldCallOnMessageReceived()
{
// Arrange
string rcv_name = string.Empty;
string rcv_issuer = string.Empty;
string rcv_audience = string.Empty;
string rcv_key = string.Empty;
// Sender client
@ -111,20 +112,22 @@ public class AuthClientTests
var provider_receiver = Build(opt =>
{
opt.Url = _hubUrl;
opt.Events.OnMessageReceived = (topic, key, logger) =>
opt.Events.OnMessageReceived = (issuer, audience, key, logger) =>
{
rcv_name = topic;
rcv_issuer = issuer;
rcv_audience = audience;
rcv_key = key;
};
});
var client_receiver = provider_receiver.GetRequiredService<IAuthClient>();
await client_receiver.StartAsync();
string name = "name";
string issuer = "issuer";
string audience = "audience";
string key = "key";
// Act
await sender_client.SendKeyAsync(name, key);
await sender_client.SendPublicKeyAsync(issuer, audience, key);
// delay fort getting answer
await Task.Delay(2000);
@ -132,7 +135,8 @@ public class AuthClientTests
// Assert
Assert.Multiple(() =>
{
Assert.That(rcv_name, Is.EqualTo(name));
Assert.That(rcv_issuer, Is.EqualTo(issuer));
Assert.That(rcv_audience, Is.EqualTo(audience));
Assert.That(rcv_key, Is.EqualTo(key));
});
}

View File

@ -5,6 +5,6 @@ namespace DigitalData.Auth.API.Hubs;
public class AuthHub : Hub<IAuthListenHandler>, IAuthSenderHandler
{
public async Task SendKeyAsync(string name, string value)
=> await Clients.All.ReceiveKeyAsync(name, value);
public async Task SendPublicKeyAsync(string issuer, string audience, string value)
=> await Clients.All.ReceivePublicKeyAsync(issuer, audience, value);
}

View File

@ -2,5 +2,5 @@
public interface INotifier
{
Task UpdateKeyAsync(string name, string value);
Task UpdateKeyAsync(string issuer, string audience, string value);
}

View File

@ -14,8 +14,8 @@ public class Notifier : INotifier
_hubContext = hubContext;
}
public async Task UpdateKeyAsync(string name, string value)
public async Task UpdateKeyAsync(string issuer, string audience, string value)
{
await _hubContext.Clients.All.ReceiveKeyAsync(name, value);
await _hubContext.Clients.All.ReceivePublicKeyAsync(issuer, audience, value);
}
}