mirror of
https://github.com/wiremock/WireMock.Net.git
synced 2026-01-11 21:10:32 +01:00
Merge branch 'master' into mime-part-matcher
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
// Copyright © WireMock.Net
|
||||
|
||||
using System;
|
||||
using Microsoft.OpenApi.Models.Interfaces;
|
||||
using Microsoft.OpenApi;
|
||||
|
||||
namespace WireMock.Net.OpenApiParser.Settings;
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
// Copyright © WireMock.Net
|
||||
|
||||
using System;
|
||||
using Microsoft.OpenApi.Models.Interfaces;
|
||||
using Microsoft.OpenApi;
|
||||
using RandomDataGenerator.FieldOptions;
|
||||
using RandomDataGenerator.Randomizers;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -27,22 +27,22 @@
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
</PackageReference>
|
||||
<PackageReference Include="RamlToOpenApiConverter.SourceOnly" Version="0.8.0" />
|
||||
<PackageReference Include="YamlDotNet" Version="8.1.0" />
|
||||
<PackageReference Include="RamlToOpenApiConverter.SourceOnly" Version="0.11.0" />
|
||||
<PackageReference Include="YamlDotNet" Version="16.3.0" />
|
||||
<PackageReference Include="RandomDataGenerator.Net" Version="1.0.19" />
|
||||
<PackageReference Include="Stef.Validation" Version="0.1.1" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup Condition="'$(Configuration)' == 'Debug'">
|
||||
<PackageReference Include="Microsoft.OpenApi.YamlReader" Version="2.0.0-preview.17" />
|
||||
<PackageReference Include="Microsoft.OpenApi.YamlReader" Version="2.3.0" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup Condition="'$(Configuration)' == 'Release'">
|
||||
<PackageReference Include="ILRepack.Lib.MSBuild.Task" Version="2.0.40" PrivateAssets="All" />
|
||||
<PackageReference Include="Microsoft.OpenApi" Version="2.0.0-preview.17" PrivateAssets="All" />
|
||||
<PackageReference Include="Microsoft.OpenApi.YamlReader" Version="2.0.0-preview.17" PrivateAssets="All" />
|
||||
<PackageReference Include="Microsoft.OpenApi" Version="2.3.0" PrivateAssets="All" />
|
||||
<PackageReference Include="Microsoft.OpenApi.YamlReader" Version="2.3.0" PrivateAssets="All" />
|
||||
<PackageReference Include="System.Text.Json" Version="8.0.5" />
|
||||
<PackageReference Include="SharpYaml" Version="2.1.1" />
|
||||
<PackageReference Include="SharpYaml" Version="2.1.3" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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<WireMockContainer> 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<WireMockContainer> 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<WireMockContainer> 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<HelloReply> 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);
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user