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, "Connected"); Assert.That(!client.IsConnectionFailed, "There is no fail"); Assert.That(client.ConnectionError, Is.Null); }); } [Test] public async Task ReceiveMessage_ShouldCallOnMessageReceived() { // Arrange bool wasCalled = false; // 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) => wasCalled = true; }); var client_receiver = provider_receiver.GetRequiredService(); string testUser = "TestUser"; string testMessage = "Hello, World!"; // Act await client_receiver.ReceiveMessageAsync(testUser, testMessage); // Assert Assert.That(wasCalled, Is.True, "OnMessageReceived was not called."); } }