From 8e979fa14df3231ce1cfd215e84d1630747ce38d Mon Sep 17 00:00:00 2001 From: Developer 02 Date: Tue, 4 Feb 2025 10:11:34 +0100 Subject: [PATCH] =?UTF-8?q?feat(AuthClientTests):=20Testserver=20hinzugef?= =?UTF-8?q?=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Client/AuthClientTests.cs | 51 +++++++++++++++++-- 1 file changed, 47 insertions(+), 4 deletions(-) diff --git a/DigitalData.Auth.Tests/Client/AuthClientTests.cs b/DigitalData.Auth.Tests/Client/AuthClientTests.cs index fdd80c9..63aac1f 100644 --- a/DigitalData.Auth.Tests/Client/AuthClientTests.cs +++ b/DigitalData.Auth.Tests/Client/AuthClientTests.cs @@ -1,29 +1,72 @@ using DigitalData.Auth.Abstractions; +using DigitalData.Auth.API.Hubs; using DigitalData.Auth.Client; +using Microsoft.AspNetCore.Builder; using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Hosting; namespace DigitalData.Auth.Tests.Client; [TestFixture] public class AuthClientTests { - private static readonly string HubUrl = "https://localhost:7192/auth-hub"; + private string _hubUrl; private Func, ServiceProvider> Build; + private WebApplication? _app = null; + + private static int AvailablePort + { + get + { + using var listener = new System.Net.Sockets.TcpListener(System.Net.IPAddress.Loopback, 0); + listener.Start(); + int port = ((System.Net.IPEndPoint)listener.LocalEndpoint).Port; + listener.Stop(); + return port; + } + } + [SetUp] public void Setup() { Build = options => new ServiceCollection() .AddAuthHubClient(options) .BuildServiceProvider(); + + // Create and run test server + // Create builder and add SignalR service + var builder = WebApplication.CreateBuilder(); + builder.Services.AddSignalR(); + + // Listen AvailablePort and map hub + var _app = builder.Build(); + var url = $"http://localhost:{AvailablePort}"; + var hubRoute = "/auth-hub"; + _hubUrl = url + hubRoute; + _app.Urls.Add(url); + _app.MapHub(hubRoute); + _app.Start(); + } + + [TearDown] + public async Task TearDown() + { + // Stop test server + if (_app is not null) + { + await _app.StopAsync(); + await _app.DisposeAsync(); + Console.WriteLine("Test server stopped."); + } } [Test] public async Task StartAsync_ShouldConnectSuccessfully() { // Arrange - using var provider = Build(opt => opt.Url = HubUrl); + using var provider = Build(opt => opt.Url = _hubUrl); var client = provider.GetRequiredService(); // Act @@ -46,14 +89,14 @@ public class AuthClientTests string rcv_msg = string.Empty; // Sender client - using var provider_sender = Build(opt => opt.Url = HubUrl); + 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.Url = _hubUrl; opt.Events.OnMessageReceived = (user, message, logger) => { rcv_user = user;