From 1375e9b09a426e3e1531a38ab822efd6b28fcea1 Mon Sep 17 00:00:00 2001 From: Andre Hofmeister <9199345+HofmeisterAn@users.noreply.github.com> Date: Thu, 19 Sep 2024 20:17:11 +0200 Subject: [PATCH] test: Send Papercut smtp message non blocking --- .../PapercutContainerTest.cs | 8 +++++--- tests/Testcontainers.Papercut.Tests/Usings.cs | 1 + 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/tests/Testcontainers.Papercut.Tests/PapercutContainerTest.cs b/tests/Testcontainers.Papercut.Tests/PapercutContainerTest.cs index 6feba9c73..78491b758 100644 --- a/tests/Testcontainers.Papercut.Tests/PapercutContainerTest.cs +++ b/tests/Testcontainers.Papercut.Tests/PapercutContainerTest.cs @@ -23,23 +23,25 @@ public async Task ReceivesSentMessage() Message[] messages; + using var timeoutCts = new CancellationTokenSource(TimeSpan.FromSeconds(30)); + using var httpClient = new HttpClient(); httpClient.BaseAddress = new Uri(_papercutContainer.GetBaseAddress()); using var smtpClient = new SmtpClient(_papercutContainer.Hostname, _papercutContainer.SmtpPort); // When - smtpClient.Send("from@example.com", "to@example.com", subject, "A test message"); + smtpClient.SendAsync("from@example.com", "to@example.com", subject, "A test message", null); do { - var messagesJson = await httpClient.GetStringAsync("/api/messages") + var messagesJson = await httpClient.GetStringAsync("/api/messages", timeoutCts.Token) .ConfigureAwait(true); var jsonDocument = JsonDocument.Parse(messagesJson); messages = jsonDocument.RootElement.GetProperty("messages").Deserialize(); } - while (messages.Length == 0); + while (messages.Length == 0 && !timeoutCts.IsCancellationRequested); // Then Assert.NotEmpty(messages); diff --git a/tests/Testcontainers.Papercut.Tests/Usings.cs b/tests/Testcontainers.Papercut.Tests/Usings.cs index 763582fff..9a49cd267 100644 --- a/tests/Testcontainers.Papercut.Tests/Usings.cs +++ b/tests/Testcontainers.Papercut.Tests/Usings.cs @@ -3,6 +3,7 @@ global using System.Net.Mail; global using System.Text.Json; global using System.Text.Json.Serialization; +global using System.Threading; global using System.Threading.Tasks; global using DotNet.Testcontainers.Commons; global using Xunit; \ No newline at end of file