diff --git a/src/WireMock.Net.Testcontainers/Utils/TestcontainersUtils.cs b/src/WireMock.Net.Testcontainers/Utils/TestcontainersUtils.cs index ae1a7fc99..6e2eb0ca9 100644 --- a/src/WireMock.Net.Testcontainers/Utils/TestcontainersUtils.cs +++ b/src/WireMock.Net.Testcontainers/Utils/TestcontainersUtils.cs @@ -15,7 +15,7 @@ public static class TestcontainersUtils /// /// Get the OS platform of the Docker image. /// - public static Lazy> GetImageOSAsync = new(async () => + public static Lazy> GetDockerImageOSAsync = new(async () => { if (TestcontainersSettings.OS.DockerEndpointAuthConfig == null) { diff --git a/src/WireMock.Net.Testcontainers/WireMockContainer.cs b/src/WireMock.Net.Testcontainers/WireMockContainer.cs index 141f03a46..1f41971f8 100644 --- a/src/WireMock.Net.Testcontainers/WireMockContainer.cs +++ b/src/WireMock.Net.Testcontainers/WireMockContainer.cs @@ -164,7 +164,7 @@ protected override ValueTask DisposeAsyncCore() private static async Task PathStartsWithContainerMappingsPath(string value) { - var imageOs = await TestcontainersUtils.GetImageOSAsync.Value; + var imageOs = await TestcontainersUtils.GetDockerImageOSAsync.Value; return value.StartsWith(ContainerInfoProvider.Info[imageOs].MappingsPath); } diff --git a/src/WireMock.Net.Testcontainers/WireMockContainerBuilder.cs b/src/WireMock.Net.Testcontainers/WireMockContainerBuilder.cs index 9ec17b054..4e68acd6c 100644 --- a/src/WireMock.Net.Testcontainers/WireMockContainerBuilder.cs +++ b/src/WireMock.Net.Testcontainers/WireMockContainerBuilder.cs @@ -36,7 +36,7 @@ public WireMockContainerBuilder() : this(new WireMockConfiguration()) [PublicAPI] public WireMockContainerBuilder WithImage() { - _imageOS ??= TestcontainersUtils.GetImageOSAsync.Value.GetAwaiter().GetResult(); + _imageOS ??= TestcontainersUtils.GetDockerImageOSAsync.Value.GetAwaiter().GetResult(); return WithImage(_imageOS.Value); } diff --git a/test/WireMock.Net.Tests/Facts/RunOnDockerPlatformFact.cs b/test/WireMock.Net.Tests/Facts/RunOnDockerPlatformFact.cs index 9d479a0f7..ea8ca237e 100644 --- a/test/WireMock.Net.Tests/Facts/RunOnDockerPlatformFact.cs +++ b/test/WireMock.Net.Tests/Facts/RunOnDockerPlatformFact.cs @@ -10,7 +10,7 @@ public sealed class RunOnDockerPlatformFact : FactAttribute { public RunOnDockerPlatformFact(string platform) { - if (TestcontainersUtils.GetImageOSAsync.Value.Result != OSPlatform.Create(platform)) + if (TestcontainersUtils.GetDockerImageOSAsync.Value.Result != OSPlatform.Create(platform)) { Skip = $"Only run test when Docker OS Platform {platform} is used."; } diff --git a/test/WireMock.Net.Tests/Testcontainers/TestcontainersTests.cs b/test/WireMock.Net.Tests/Testcontainers/TestcontainersTests.cs index 1b0f1bc10..f241020ee 100644 --- a/test/WireMock.Net.Tests/Testcontainers/TestcontainersTests.cs +++ b/test/WireMock.Net.Tests/Testcontainers/TestcontainersTests.cs @@ -8,7 +8,7 @@ using FluentAssertions; using FluentAssertions.Execution; using WireMock.Net.Testcontainers; -using WireMock.Net.Tests.Facts; +using WireMock.Net.Testcontainers.Utils; using Xunit; namespace WireMock.Net.Tests.Testcontainers; @@ -30,15 +30,22 @@ public async Task WireMockContainer_Build_WithNoImage_And_StartAsync_and_StopAsy await StartTestAndStopAsync(wireMockContainer); } - // https://github.com/testcontainers/testcontainers-dotnet/issues/1322 - [RunOnDockerPlatformFact("Linux")] + + [Fact] public async Task WireMockContainer_Build_WithNoImageAndNetwork_And_StartAsync_and_StopAsync() { // Act - var dummyNetwork = new NetworkBuilder() + var dummyNetworkBuilder = new NetworkBuilder() .WithName("Dummy Network for TestcontainersTests") - .WithCleanUp(true) - .Build(); + .WithCleanUp(true); + + if (await IsDockerImageOSWindows()) + { + // https://github.com/testcontainers/testcontainers-dotnet/issues/1322 + dummyNetworkBuilder = dummyNetworkBuilder.WithCreateParameterModifier(m => m.Driver = "nat"); + } + + var dummyNetwork = dummyNetworkBuilder.Build(); var wireMockContainer = new WireMockContainerBuilder() .WithNetwork(dummyNetwork) @@ -61,7 +68,7 @@ public async Task WireMockContainer_Build_WithImage_And_StartAsync_and_StopAsync .WithCleanUp(true) .WithAdminUserNameAndPassword(adminUsername, adminPassword); - if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) + if (await IsDockerImageOSWindows()) { wireMockContainerBuilder = wireMockContainerBuilder.WithWindowsImage(); } @@ -86,7 +93,7 @@ public async Task WireMockContainer_Build_WithImageAsText_And_StartAsync_and_Sto .WithCleanUp(true) .WithAdminUserNameAndPassword(adminUsername, adminPassword); - if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) + if (await IsDockerImageOSWindows()) { wireMockContainerBuilder = wireMockContainerBuilder.WithImage("sheyenrath/wiremock.net-windows"); } @@ -123,5 +130,10 @@ private static async Task StartTestAndStopAsync(WireMockContainer wireMockContai await wireMockContainer.StopAsync(); } } + + private static async Task IsDockerImageOSWindows() + { + return (await TestcontainersUtils.GetDockerImageOSAsync.Value) == OSPlatform.Windows; + } } #endif \ No newline at end of file