diff --git a/src/WireMock.Net.OpenApiParser/Extensions/OpenApiSchemaExtensions.cs b/src/WireMock.Net.OpenApiParser/Extensions/OpenApiSchemaExtensions.cs
index 51da19f3..dc17200c 100644
--- a/src/WireMock.Net.OpenApiParser/Extensions/OpenApiSchemaExtensions.cs
+++ b/src/WireMock.Net.OpenApiParser/Extensions/OpenApiSchemaExtensions.cs
@@ -5,9 +5,7 @@ using System.Linq;
using System.Reflection;
using System.Text.Json;
using System.Text.Json.Nodes;
-using Microsoft.OpenApi.Interfaces;
-using Microsoft.OpenApi.Models;
-using Microsoft.OpenApi.Models.Interfaces;
+using Microsoft.OpenApi;
using WireMock.Net.OpenApiParser.Types;
namespace WireMock.Net.OpenApiParser.Extensions;
diff --git a/src/WireMock.Net.OpenApiParser/Mappers/OpenApiPathsMapper.cs b/src/WireMock.Net.OpenApiParser/Mappers/OpenApiPathsMapper.cs
index 2a8616f0..2c922363 100644
--- a/src/WireMock.Net.OpenApiParser/Mappers/OpenApiPathsMapper.cs
+++ b/src/WireMock.Net.OpenApiParser/Mappers/OpenApiPathsMapper.cs
@@ -6,8 +6,7 @@ using System.Diagnostics.CodeAnalysis;
using System.Linq;
using System.Text.Json;
using System.Text.Json.Nodes;
-using Microsoft.OpenApi.Models;
-using Microsoft.OpenApi.Models.Interfaces;
+using Microsoft.OpenApi;
using Newtonsoft.Json;
using Stef.Validation;
using WireMock.Admin.Mappings;
diff --git a/src/WireMock.Net.OpenApiParser/Settings/IWireMockOpenApiParserExampleValues.cs b/src/WireMock.Net.OpenApiParser/Settings/IWireMockOpenApiParserExampleValues.cs
index 5d335144..6c3b3953 100644
--- a/src/WireMock.Net.OpenApiParser/Settings/IWireMockOpenApiParserExampleValues.cs
+++ b/src/WireMock.Net.OpenApiParser/Settings/IWireMockOpenApiParserExampleValues.cs
@@ -1,7 +1,7 @@
// Copyright © WireMock.Net
using System;
-using Microsoft.OpenApi.Models.Interfaces;
+using Microsoft.OpenApi;
namespace WireMock.Net.OpenApiParser.Settings;
diff --git a/src/WireMock.Net.OpenApiParser/Settings/WireMockOpenApiParserDynamicExampleValues.cs b/src/WireMock.Net.OpenApiParser/Settings/WireMockOpenApiParserDynamicExampleValues.cs
index 194762c5..0f27bf31 100644
--- a/src/WireMock.Net.OpenApiParser/Settings/WireMockOpenApiParserDynamicExampleValues.cs
+++ b/src/WireMock.Net.OpenApiParser/Settings/WireMockOpenApiParserDynamicExampleValues.cs
@@ -1,7 +1,7 @@
// Copyright © WireMock.Net
using System;
-using Microsoft.OpenApi.Models.Interfaces;
+using Microsoft.OpenApi;
using RandomDataGenerator.FieldOptions;
using RandomDataGenerator.Randomizers;
diff --git a/src/WireMock.Net.OpenApiParser/Settings/WireMockOpenApiParserExampleValues.cs b/src/WireMock.Net.OpenApiParser/Settings/WireMockOpenApiParserExampleValues.cs
index 3b3c6fea..5acec53a 100644
--- a/src/WireMock.Net.OpenApiParser/Settings/WireMockOpenApiParserExampleValues.cs
+++ b/src/WireMock.Net.OpenApiParser/Settings/WireMockOpenApiParserExampleValues.cs
@@ -1,8 +1,7 @@
// Copyright © WireMock.Net
using System;
-using Microsoft.OpenApi.Models;
-using Microsoft.OpenApi.Models.Interfaces;
+using Microsoft.OpenApi;
namespace WireMock.Net.OpenApiParser.Settings;
diff --git a/src/WireMock.Net.OpenApiParser/Utils/ExampleValueGenerator.cs b/src/WireMock.Net.OpenApiParser/Utils/ExampleValueGenerator.cs
index 153d4c67..2560873f 100644
--- a/src/WireMock.Net.OpenApiParser/Utils/ExampleValueGenerator.cs
+++ b/src/WireMock.Net.OpenApiParser/Utils/ExampleValueGenerator.cs
@@ -3,8 +3,7 @@
using System;
using System.Linq;
using System.Text.Json.Nodes;
-using Microsoft.OpenApi.Models;
-using Microsoft.OpenApi.Models.Interfaces;
+using Microsoft.OpenApi;
using Stef.Validation;
using WireMock.Net.OpenApiParser.Extensions;
using WireMock.Net.OpenApiParser.Settings;
diff --git a/src/WireMock.Net.OpenApiParser/WireMock.Net.OpenApiParser.csproj b/src/WireMock.Net.OpenApiParser/WireMock.Net.OpenApiParser.csproj
index fb454756..0d1cfad9 100644
--- a/src/WireMock.Net.OpenApiParser/WireMock.Net.OpenApiParser.csproj
+++ b/src/WireMock.Net.OpenApiParser/WireMock.Net.OpenApiParser.csproj
@@ -27,22 +27,22 @@
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
-
+
+
-
+
-
-
+
+
-
+
diff --git a/src/WireMock.Net.OpenApiParser/WireMockOpenApiParser.cs b/src/WireMock.Net.OpenApiParser/WireMockOpenApiParser.cs
index c4f16dcd..3ef51247 100644
--- a/src/WireMock.Net.OpenApiParser/WireMockOpenApiParser.cs
+++ b/src/WireMock.Net.OpenApiParser/WireMockOpenApiParser.cs
@@ -5,7 +5,7 @@ using System.Collections.Generic;
using System.IO;
using System.Text;
using JetBrains.Annotations;
-using Microsoft.OpenApi.Models;
+using Microsoft.OpenApi;
using Microsoft.OpenApi.Reader;
using Microsoft.OpenApi.YamlReader;
using RamlToOpenApiConverter;
diff --git a/test/WireMock.Net.Tests/Testcontainers/TestcontainersTests.Grpc.cs b/test/WireMock.Net.Tests/Testcontainers/TestcontainersTests.Grpc.cs
index f27843ce..9bff12f3 100644
--- a/test/WireMock.Net.Tests/Testcontainers/TestcontainersTests.Grpc.cs
+++ b/test/WireMock.Net.Tests/Testcontainers/TestcontainersTests.Grpc.cs
@@ -3,6 +3,7 @@
#if NET6_0_OR_GREATER
using System;
using System.IO;
+using System.Linq;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
@@ -12,6 +13,7 @@ using Greet;
using Grpc.Net.Client;
using WireMock.Constants;
using WireMock.Net.Testcontainers;
+using WireMock.Util;
using Xunit;
namespace WireMock.Net.Tests.Testcontainers;
@@ -21,19 +23,22 @@ public partial class TestcontainersTests
[Fact]
public async Task WireMockContainer_Build_Grpc_TestPortsAndUrls1()
{
- // Act
+ // Arrange
var adminUsername = $"username_{Guid.NewGuid()}";
var adminPassword = $"password_{Guid.NewGuid()}";
+ var port = PortUtils.FindFreeTcpPort();
+
+ // Act
var wireMockContainer = new WireMockContainerBuilder()
.WithAdminUserNameAndPassword(adminUsername, adminPassword)
.WithCommand("--UseHttp2")
- .WithCommand("--Urls", "http://*:80 grpc://*:9090")
- .WithPortBinding(9090, true)
+ .WithCommand("--Urls", $"http://*:80 grpc://*:{port}")
+ .WithPortBinding(port, true)
.Build();
-
+
try
{
- await wireMockContainer.StartAsync().ConfigureAwait(false);
+ await wireMockContainer.StartAsync();
// Assert
using (new AssertionScope())
@@ -53,10 +58,10 @@ public partial class TestcontainersTests
var httpUrl = wireMockContainer.GetMappedPublicUrl(80);
httpUrl.Should().StartWith("http://");
- var grpcPort = wireMockContainer.GetMappedPublicPort(9090);
+ var grpcPort = wireMockContainer.GetMappedPublicPort(port);
grpcPort.Should().BeGreaterThan(0);
- var grpcUrl = wireMockContainer.GetMappedPublicUrl(9090);
+ var grpcUrl = wireMockContainer.GetMappedPublicUrl(port);
grpcUrl.Should().StartWith("http://");
var adminClient = wireMockContainer.CreateWireMockAdminClient();
@@ -74,19 +79,22 @@ public partial class TestcontainersTests
[Fact]
public async Task WireMockContainer_Build_Grpc_TestPortsAndUrls2()
{
- // Act
+ // Arrange
var adminUsername = $"username_{Guid.NewGuid()}";
var adminPassword = $"password_{Guid.NewGuid()}";
+ var ports = PortUtils.FindFreeTcpPorts(3);
+
+ // Act
var wireMockContainer = new WireMockContainerBuilder()
.WithAdminUserNameAndPassword(adminUsername, adminPassword)
- .AddUrl("http://*:8080")
- .AddUrl("grpc://*:9090")
- .AddUrl("grpc://*:9091")
+ .AddUrl($"http://*:{ports[0]}")
+ .AddUrl($"grpc://*:{ports[1]}")
+ .AddUrl($"grpc://*:{ports[2]}")
.Build();
try
{
- await wireMockContainer.StartAsync().ConfigureAwait(false);
+ await wireMockContainer.StartAsync();
// Assert
using (new AssertionScope())
@@ -100,7 +108,7 @@ public partial class TestcontainersTests
var urls = wireMockContainer.GetPublicUrls();
urls.Should().HaveCount(4);
- foreach (var internalPort in new[] { 80, 8080, 9090, 9091 })
+ foreach (var internalPort in new[] { ports[0], ports[1], ports[2], 80 })
{
var publicPort = wireMockContainer.GetMappedPublicPort(internalPort);
publicPort.Should().BeGreaterThan(0);
@@ -163,8 +171,9 @@ public partial class TestcontainersTests
private static async Task Given_WireMockContainerIsStartedForHttpAndGrpcAsync()
{
+ var port = PortUtils.FindFreeTcpPort();
var wireMockContainer = new WireMockContainerBuilder()
- .AddUrl("grpc://*:9090")
+ .AddUrl($"grpc://*:{port}")
.Build();
await wireMockContainer.StartAsync();
@@ -174,8 +183,9 @@ public partial class TestcontainersTests
private static async Task Given_WireMockContainerWithProtoDefinitionAtServerLevelIsStartedForHttpAndGrpcAsync()
{
+ var port = PortUtils.FindFreeTcpPort();
var wireMockContainer = new WireMockContainerBuilder()
- .AddUrl("grpc://*:9090")
+ .AddUrl($"grpc://*:{port}")
.AddProtoDefinition("my-greeter", ReadFile("greet.proto"))
.Build();
@@ -186,8 +196,9 @@ public partial class TestcontainersTests
private static async Task Given_WireMockContainerWithProtoDefinitionAtServerLevelWithWatchStaticMappingsIsStartedForHttpAndGrpcAsync()
{
+ var port = PortUtils.FindFreeTcpPort();
var wireMockContainer = new WireMockContainerBuilder()
- .AddUrl("grpc://*:9090")
+ .AddUrl($"grpc://*:{port}")
.AddProtoDefinition("my-greeter", ReadFile("greet.proto"))
.WithMappings(Path.Combine(Directory.GetCurrentDirectory(), "__admin", "mappings"))
.Build();
@@ -206,12 +217,12 @@ public partial class TestcontainersTests
var result = await httpClient.PostAsync("/__admin/mappings", new StringContent(mappingsJson, Encoding.UTF8, WireMockConstants.ContentTypeJson));
result.EnsureSuccessStatusCode();
- await Task.Delay(1000);
+ await Task.Delay(5000);
}
private static async Task When_GrpcClient_Calls_SayHelloAsync(WireMockContainer wireMockContainer)
{
- var address = wireMockContainer.GetPublicUrls()[9090];
+ var address = wireMockContainer.GetPublicUrls().First(x => x.Key != 80).Value;
var channel = GrpcChannel.ForAddress(address);
var client = new Greeter.GreeterClient(channel);
diff --git a/test/WireMock.Net.Tests/WireMockServerTests.cs b/test/WireMock.Net.Tests/WireMockServerTests.cs
index acd4d44d..a79fe92e 100644
--- a/test/WireMock.Net.Tests/WireMockServerTests.cs
+++ b/test/WireMock.Net.Tests/WireMockServerTests.cs
@@ -235,7 +235,7 @@ public partial class WireMockServerTests
}
#if NET8_0_OR_GREATER
- [IgnoreOnContinuousIntegrationFact]
+ [Fact(Skip = "Does not work on local and pipeline")]
public async Task WireMockServer_WithUrl0000_Should_Listen_On_All_IPs_IPv6()
{
// Arrange