using DigitalData.Auth.Abstractions; using DigitalData.Auth.Client; using Microsoft.Extensions.DependencyInjection; namespace DigitalData.Auth.Tests.Client; [TestFixture] public class AuthClientTests { private static readonly string HubUrl = "https://localhost:7192/auth-hub"; private Func, ServiceProvider> Build; [SetUp] public void Setup() { Build = options => new ServiceCollection() .AddAuthHubClient(options) .BuildServiceProvider(); } [Test] public async Task StartAsync_ShouldConnectSuccessfully() { // Arrange using var provider = Build(opt => opt.Url = HubUrl); var client = provider.GetRequiredService(); // Act await client.TryStartAsync(); // Assert Assert.Multiple(() => { Assert.That(client.IsConnected); Assert.That(!client.IsConnectionFailed); Assert.That(client.ConnectionError, Is.Null); }); } [Test] public async Task ReceiveMessage_ShouldCallOnMessageReceived() { // Arrange string rcv_user = string.Empty; string rcv_msg = string.Empty; // Sender client using var provider_sender = Build(opt => opt.Url = HubUrl); var sender_client = provider_sender.GetRequiredService(); await sender_client.TryStartAsync(); // Receiver client using var provider_receiver = Build(opt => { opt.Url = HubUrl; opt.Events.OnMessageReceived = (user, message, logger) => { rcv_user = user; rcv_msg = message; }; }); var client_receiver = provider_receiver.GetRequiredService(); string user = "user"; string message = "message"; // Act await client_receiver.ReceiveMessageAsync(user, message); // Assert Assert.Multiple(() => { Assert.That(rcv_user, Is.EqualTo(user)); Assert.That(rcv_msg, Is.EqualTo(message)); }); } }