mirror of
https://github.com/wiremock/WireMock.Net.git
synced 2026-04-20 16:01:39 +02:00
up
This commit is contained in:
@@ -16,7 +16,7 @@ internal class WebSocketMessageConditionBuilder : IWebSocketMessageConditionBuil
|
|||||||
_matcher = Guard.NotNull(matcher);
|
_matcher = Guard.NotNull(matcher);
|
||||||
}
|
}
|
||||||
|
|
||||||
public IWebSocketBuilder SendMessage(Action<IWebSocketMessageBuilder> configure)
|
public IWebSocketBuilder ThenSendMessage(Action<IWebSocketMessageBuilder> configure)
|
||||||
{
|
{
|
||||||
Guard.NotNull(configure);
|
Guard.NotNull(configure);
|
||||||
var messageBuilder = new WebSocketMessageBuilder();
|
var messageBuilder = new WebSocketMessageBuilder();
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ public interface IWebSocketMessageConditionBuilder
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="configure">Action to configure the message</param>
|
/// <param name="configure">Action to configure the message</param>
|
||||||
[PublicAPI]
|
[PublicAPI]
|
||||||
IWebSocketBuilder SendMessage(Action<IWebSocketMessageBuilder> configure);
|
IWebSocketBuilder ThenSendMessage(Action<IWebSocketMessageBuilder> configure);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Configure and send multiple messages when the condition matches
|
/// Configure and send multiple messages when the condition matches
|
||||||
|
|||||||
@@ -28,7 +28,7 @@
|
|||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.4" />
|
<PackageReference Include="Newtonsoft.Json" Version="13.0.4" />
|
||||||
<PackageReference Include="Stef.Validation" Version="0.2.0" />
|
<PackageReference Include="Stef.Validation" Version="0.2.0" />
|
||||||
<PackageReference Include="TUnit.Core" Version="0.57.1" />
|
<PackageReference Include="TUnit.Core" Version="1.13.60" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|||||||
@@ -19,7 +19,7 @@
|
|||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Aspire.Hosting.AppHost" Version="13.1.0" />
|
<PackageReference Include="Aspire.Hosting.AppHost" Version="13.1.1" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|||||||
@@ -13,9 +13,9 @@
|
|||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Aspire.Hosting.Testing" Version="13.1.0" />
|
<PackageReference Include="Aspire.Hosting.Testing" Version="13.1.1" />
|
||||||
<PackageReference Include="Codecov" Version="1.13.0" />
|
<PackageReference Include="Codecov" Version="1.13.0" />
|
||||||
<PackageReference Include="coverlet.msbuild" Version="6.0.2">
|
<PackageReference Include="coverlet.msbuild" Version="6.0.4">
|
||||||
<PrivateAssets>all</PrivateAssets>
|
<PrivateAssets>all</PrivateAssets>
|
||||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
@@ -23,11 +23,11 @@
|
|||||||
<PrivateAssets>all</PrivateAssets>
|
<PrivateAssets>all</PrivateAssets>
|
||||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
<PackageReference Include="AwesomeAssertions" Version="9.1.0" />
|
<PackageReference Include="AwesomeAssertions" Version="9.3.0" />
|
||||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.14.1" />
|
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="18.0.1" />
|
||||||
<PackageReference Include="Moq" Version="4.20.72" />
|
<PackageReference Include="Moq" Version="4.20.72" />
|
||||||
<PackageReference Include="xunit" Version="2.9.3" />
|
<PackageReference Include="xunit" Version="2.9.3" />
|
||||||
<PackageReference Include="xunit.runner.visualstudio" Version="3.1.4">
|
<PackageReference Include="xunit.runner.visualstudio" Version="3.1.5">
|
||||||
<PrivateAssets>all</PrivateAssets>
|
<PrivateAssets>all</PrivateAssets>
|
||||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
|
|||||||
@@ -14,14 +14,14 @@
|
|||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="AwesomeAssertions" Version="9.1.0" />
|
<PackageReference Include="AwesomeAssertions" Version="9.3.0" />
|
||||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.14.1" />
|
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="18.0.1" />
|
||||||
<PackageReference Include="coverlet.collector" Version="6.0.4">
|
<PackageReference Include="coverlet.collector" Version="6.0.4">
|
||||||
<PrivateAssets>all</PrivateAssets>
|
<PrivateAssets>all</PrivateAssets>
|
||||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
<PackageReference Include="xunit" Version="2.9.3" />
|
<PackageReference Include="xunit" Version="2.9.3" />
|
||||||
<PackageReference Include="xunit.runner.visualstudio" Version="3.1.4">
|
<PackageReference Include="xunit.runner.visualstudio" Version="3.1.5">
|
||||||
<PrivateAssets>all</PrivateAssets>
|
<PrivateAssets>all</PrivateAssets>
|
||||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
|
|||||||
@@ -13,7 +13,7 @@
|
|||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Codecov" Version="1.13.0" />
|
<PackageReference Include="Codecov" Version="1.13.0" />
|
||||||
<PackageReference Include="coverlet.msbuild" Version="6.0.2">
|
<PackageReference Include="coverlet.msbuild" Version="6.0.4">
|
||||||
<PrivateAssets>all</PrivateAssets>
|
<PrivateAssets>all</PrivateAssets>
|
||||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
@@ -21,12 +21,12 @@
|
|||||||
<PrivateAssets>all</PrivateAssets>
|
<PrivateAssets>all</PrivateAssets>
|
||||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
<PackageReference Include="AwesomeAssertions" Version="9.1.0" />
|
<PackageReference Include="AwesomeAssertions" Version="9.3.0" />
|
||||||
<PackageReference Include="Microsoft.AspNetCore.Mvc.Testing" Version="8.0.8" />
|
<PackageReference Include="Microsoft.AspNetCore.Mvc.Testing" Version="8.0.8" />
|
||||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.14.1" />
|
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="18.0.1" />
|
||||||
<PackageReference Include="Moq" Version="4.20.72" />
|
<PackageReference Include="Moq" Version="4.20.72" />
|
||||||
<PackageReference Include="xunit" Version="2.9.3" />
|
<PackageReference Include="xunit" Version="2.9.3" />
|
||||||
<PackageReference Include="xunit.runner.visualstudio" Version="3.1.4">
|
<PackageReference Include="xunit.runner.visualstudio" Version="3.1.5">
|
||||||
<PrivateAssets>all</PrivateAssets>
|
<PrivateAssets>all</PrivateAssets>
|
||||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="TUnit" Version="0.57.1" />
|
<PackageReference Include="TUnit" Version="1.13.60" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|||||||
@@ -474,11 +474,11 @@ public class WebSocketIntegrationTests(ITestOutputHelper output)
|
|||||||
.RespondWith(Response.Create()
|
.RespondWith(Response.Create()
|
||||||
.WithWebSocket(ws => ws
|
.WithWebSocket(ws => ws
|
||||||
.WithCloseTimeout(TimeSpan.FromSeconds(3))
|
.WithCloseTimeout(TimeSpan.FromSeconds(3))
|
||||||
.WhenMessage("/help").SendMessage(m => m.WithText("Available commands"))
|
.WhenMessage("/help").ThenSendMessage(m => m.WithText("Available commands"))
|
||||||
.WhenMessage("/time").SendMessage(m => m.WithText($"Server time: {DateTime.UtcNow:yyyy-MM-dd HH:mm:ss} UTC"))
|
.WhenMessage("/time").ThenSendMessage(m => m.WithText($"Server time: {DateTime.UtcNow:yyyy-MM-dd HH:mm:ss} UTC"))
|
||||||
.WhenMessage("/echo *").SendMessage(m => m.WithText("echo response"))
|
.WhenMessage("/echo *").ThenSendMessage(m => m.WithText("echo response"))
|
||||||
.WhenMessage(new ExactMatcher("/exact")).SendMessage(m => m.WithText("is exact"))
|
.WhenMessage(new ExactMatcher("/exact")).ThenSendMessage(m => m.WithText("is exact"))
|
||||||
.WhenMessage(new FuncMatcher(s => s == "/func")).SendMessage(m => m.WithText("is func"))
|
.WhenMessage(new FuncMatcher(s => s == "/func")).ThenSendMessage(m => m.WithText("is func"))
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -508,6 +508,60 @@ public class WebSocketIntegrationTests(ITestOutputHelper output)
|
|||||||
await client.CloseAsync(WebSocketCloseStatus.NormalClosure, "Test complete", CancellationToken.None);
|
await client.CloseAsync(WebSocketCloseStatus.NormalClosure, "Test complete", CancellationToken.None);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public async Task WhenMessage_NoMatch_Should_Return404()
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
using var server = WireMockServer.Start(new WireMockServerSettings
|
||||||
|
{
|
||||||
|
Logger = new TestOutputHelperWireMockLogger(output),
|
||||||
|
Urls = ["ws://localhost:0"]
|
||||||
|
});
|
||||||
|
|
||||||
|
server
|
||||||
|
.Given(Request.Create()
|
||||||
|
.WithPath("/ws/test")
|
||||||
|
.WithWebSocketUpgrade()
|
||||||
|
)
|
||||||
|
.RespondWith(Response.Create()
|
||||||
|
.WithWebSocket(ws => ws
|
||||||
|
.WhenMessage("/close")
|
||||||
|
.ThenSendMessage(m => m.WithText("Closing connection")
|
||||||
|
.AndClose()
|
||||||
|
))
|
||||||
|
);
|
||||||
|
|
||||||
|
using var client = new ClientWebSocket();
|
||||||
|
var uri = new Uri($"{server.Url}/ws/test");
|
||||||
|
await client.ConnectAsync(uri, CancellationToken.None);
|
||||||
|
|
||||||
|
// Act
|
||||||
|
await client.SendAsync("/close");
|
||||||
|
|
||||||
|
var received = await client.ReceiveAsTextAsync();
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
received.Should().Contain("Closing connection");
|
||||||
|
|
||||||
|
// Try to receive again - this will complete the close handshake
|
||||||
|
// and update the client state to Closed
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var receiveBuffer = new byte[1024];
|
||||||
|
var result = await client.ReceiveAsync(new ArraySegment<byte>(receiveBuffer), CancellationToken.None);
|
||||||
|
|
||||||
|
// If we get here, the message type should be Close
|
||||||
|
result.MessageType.Should().Be(WebSocketMessageType.Close);
|
||||||
|
}
|
||||||
|
catch (WebSocketException)
|
||||||
|
{
|
||||||
|
// Connection was closed, which is expected
|
||||||
|
}
|
||||||
|
|
||||||
|
// Verify the connection is CloseReceived
|
||||||
|
client.State.Should().Be(WebSocketState.CloseReceived);
|
||||||
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task WhenMessage_Should_Close_Connection_When_AndClose_Is_Used()
|
public async Task WhenMessage_Should_Close_Connection_When_AndClose_Is_Used()
|
||||||
{
|
{
|
||||||
@@ -525,8 +579,10 @@ public class WebSocketIntegrationTests(ITestOutputHelper output)
|
|||||||
)
|
)
|
||||||
.RespondWith(Response.Create()
|
.RespondWith(Response.Create()
|
||||||
.WithWebSocket(ws => ws
|
.WithWebSocket(ws => ws
|
||||||
.WhenMessage("/close").SendMessage(m => m.WithText("Closing connection").AndClose())
|
.WhenMessage("/close")
|
||||||
)
|
.ThenSendMessage(m => m.WithText("Closing connection")
|
||||||
|
.AndClose()
|
||||||
|
))
|
||||||
);
|
);
|
||||||
|
|
||||||
using var client = new ClientWebSocket();
|
using var client = new ClientWebSocket();
|
||||||
|
|||||||
@@ -56,18 +56,20 @@
|
|||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Codecov" Version="1.13.0" />
|
<PackageReference Include="Codecov" Version="1.13.0" />
|
||||||
<PackageReference Include="coverlet.msbuild" Version="6.0.2">
|
<PackageReference Include="coverlet.msbuild" Version="6.0.4">
|
||||||
<PrivateAssets>all</PrivateAssets>
|
<PrivateAssets>all</PrivateAssets>
|
||||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
|
<PackageReference Include="Meziantou.Extensions.Logging.Xunit" Version="1.0.23" />
|
||||||
|
<PackageReference Include="Verify.Xunit" Version="19.6.0" />
|
||||||
<PackageReference Include="xunit" Version="2.9.3" />
|
<PackageReference Include="xunit" Version="2.9.3" />
|
||||||
<PackageReference Include="xunit.core" Version="2.9.3" />
|
<PackageReference Include="xunit.core" Version="2.9.3" />
|
||||||
<PackageReference Include="xunit.runner.visualstudio" Version="3.1.4">
|
<PackageReference Include="xunit.runner.visualstudio" Version="3.1.5">
|
||||||
<PrivateAssets>all</PrivateAssets>
|
<PrivateAssets>all</PrivateAssets>
|
||||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
<PackageReference Include="CultureAwareTesting.xUnit" Version="0.0.1.1" />
|
<PackageReference Include="CultureAwareTesting.xUnit" Version="0.0.1.1" />
|
||||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.14.1" />
|
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="18.0.1" />
|
||||||
<PackageReference Include="coverlet.collector" Version="6.0.4">
|
<PackageReference Include="coverlet.collector" Version="6.0.4">
|
||||||
<PrivateAssets>all</PrivateAssets>
|
<PrivateAssets>all</PrivateAssets>
|
||||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
@@ -75,12 +77,10 @@
|
|||||||
<PackageReference Include="Moq" Version="4.20.72" />
|
<PackageReference Include="Moq" Version="4.20.72" />
|
||||||
<PackageReference Include="NFluent" Version="3.1.0" />
|
<PackageReference Include="NFluent" Version="3.1.0" />
|
||||||
<PackageReference Include="SimMetrics.Net" Version="1.0.5" />
|
<PackageReference Include="SimMetrics.Net" Version="1.0.5" />
|
||||||
|
<PackageReference Include="JsonConverter.System.Text.Json" Version="0.8.0" />
|
||||||
<PackageReference Include="Verify.Xunit" Version="19.6.0" />
|
<PackageReference Include="Google.Protobuf" Version="3.33.5" />
|
||||||
<PackageReference Include="JsonConverter.System.Text.Json" Version="0.7.2" />
|
<PackageReference Include="Grpc.Net.Client" Version="2.76.0" />
|
||||||
<PackageReference Include="Google.Protobuf" Version="3.25.1" />
|
<PackageReference Include="Grpc.Tools" Version="2.78.0">
|
||||||
<PackageReference Include="Grpc.Net.Client" Version="2.60.0" />
|
|
||||||
<PackageReference Include="Grpc.Tools" Version="2.60.0">
|
|
||||||
<PrivateAssets>all</PrivateAssets>
|
<PrivateAssets>all</PrivateAssets>
|
||||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
@@ -91,7 +91,6 @@
|
|||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ProjectReference Include="..\..\src\WireMock.Net.Testcontainers\WireMock.Net.Testcontainers.csproj" />
|
<ProjectReference Include="..\..\src\WireMock.Net.Testcontainers\WireMock.Net.Testcontainers.csproj" />
|
||||||
<PackageReference Include="Meziantou.Extensions.Logging.Xunit" Version="1.0.21" />
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|||||||
Reference in New Issue
Block a user