Add ProtoDefinition to WireMockContainer (#1250)

* AddProtoDefinitionAsync

* ...

* Body

* "

* .

* .

* .

* [Fact(Skip = "new docker is needed")]

* x
This commit is contained in:
Stef Heyenrath
2025-02-12 06:08:55 +01:00
committed by GitHub
parent a02ff47db6
commit e8de5aa73c
17 changed files with 203 additions and 37 deletions

View File

@@ -3,7 +3,6 @@
#if NET6_0_OR_GREATER
using System;
using System.IO;
using System.Linq;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
@@ -129,9 +128,9 @@ public partial class TestcontainersTests
[Fact]
public async Task WireMockContainer_Build_Grpc_ProtoDefinitionFromJson_UsingGrpcGeneratedClient()
{
var wireMockContainer = await Given_WireMockContainerIsStartedForHttpAndGrpc();
var wireMockContainer = await Given_WireMockContainerIsStartedForHttpAndGrpcAsync();
await Given_ProtoBufMappingIsAddedViaAdminInterfaceAsync(wireMockContainer);
await Given_ProtoBufMappingIsAddedViaAdminInterfaceAsync(wireMockContainer, "protobuf-mapping-1.json");
var reply = await When_GrpcClient_Calls_SayHelloAsync(wireMockContainer);
@@ -140,7 +139,21 @@ public partial class TestcontainersTests
await wireMockContainer.StopAsync();
}
private static async Task<WireMockContainer> Given_WireMockContainerIsStartedForHttpAndGrpc()
[Fact]
public async Task WireMockContainer_Build_Grpc_ProtoDefinitionAtServerLevel_UsingGrpcGeneratedClient()
{
var wireMockContainer = await Given_WireMockContainerWithProtoDefinitionAtServerLevelIsStartedForHttpAndGrpcAsync();
await Given_ProtoBufMappingIsAddedViaAdminInterfaceAsync(wireMockContainer, "protobuf-mapping-4.json");
var reply = await When_GrpcClient_Calls_SayHelloAsync(wireMockContainer);
Then_ReplyMessage_Should_BeCorrect(reply);
await wireMockContainer.StopAsync();
}
private static async Task<WireMockContainer> Given_WireMockContainerIsStartedForHttpAndGrpcAsync()
{
var wireMockContainer = new WireMockContainerBuilder()
.WithAutoRemove(true)
@@ -153,9 +166,23 @@ public partial class TestcontainersTests
return wireMockContainer;
}
private static async Task Given_ProtoBufMappingIsAddedViaAdminInterfaceAsync(WireMockContainer wireMockContainer)
private static async Task<WireMockContainer> Given_WireMockContainerWithProtoDefinitionAtServerLevelIsStartedForHttpAndGrpcAsync()
{
var mappingsJson = ReadMappingFile("protobuf-mapping-1.json");
var wireMockContainer = new WireMockContainerBuilder()
.WithAutoRemove(true)
.WithCleanUp(true)
.AddUrl("grpc://*:9090")
.AddProtoDefinition("my-greeter", ReadFile("greet.proto"))
.Build();
await wireMockContainer.StartAsync();
return wireMockContainer;
}
private static async Task Given_ProtoBufMappingIsAddedViaAdminInterfaceAsync(WireMockContainer wireMockContainer, string filename)
{
var mappingsJson = ReadFile(filename);
using var httpClient = wireMockContainer.CreateClient();
@@ -178,7 +205,7 @@ public partial class TestcontainersTests
reply.Message.Should().Be("hello stef POST");
}
private static string ReadMappingFile(string filename)
private static string ReadFile(string filename)
{
return File.ReadAllText(Path.Combine(Directory.GetCurrentDirectory(), "__admin", "mappings", filename));
}