mirror of
https://github.com/wiremock/WireMock.Net.git
synced 2026-03-30 14:22:20 +02:00
await Task.Delay(100, _ct);
This commit is contained in:
@@ -673,16 +673,16 @@ public class WebSocketIntegrationTests(ITestOutputHelper output, ITestContextAcc
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task WithWebSocketProxy_Should_Proxy_Messages_To_Target_Server()
|
public async Task WithWebSocketProxy_Should_Proxy_Multiple_TextMessages()
|
||||||
{
|
{
|
||||||
// Arrange - Start target echo server
|
// Arrange - Start target echo server
|
||||||
var targetServer = WireMockServer.Start(new WireMockServerSettings
|
using var exampleEchoServer = WireMockServer.Start(new WireMockServerSettings
|
||||||
{
|
{
|
||||||
Logger = new TestOutputHelperWireMockLogger(output),
|
Logger = new TestOutputHelperWireMockLogger(output),
|
||||||
Urls = ["ws://localhost:0"]
|
Urls = ["ws://localhost:0"]
|
||||||
});
|
});
|
||||||
|
|
||||||
targetServer
|
exampleEchoServer
|
||||||
.Given(Request.Create()
|
.Given(Request.Create()
|
||||||
.WithPath("/ws/target")
|
.WithPath("/ws/target")
|
||||||
.WithWebSocketUpgrade()
|
.WithWebSocketUpgrade()
|
||||||
@@ -692,79 +692,23 @@ public class WebSocketIntegrationTests(ITestOutputHelper output, ITestContextAcc
|
|||||||
);
|
);
|
||||||
|
|
||||||
// Arrange - Start proxy server
|
// Arrange - Start proxy server
|
||||||
using var proxyServer = WireMockServer.Start(new WireMockServerSettings
|
using var sut = WireMockServer.Start(new WireMockServerSettings
|
||||||
{
|
{
|
||||||
Logger = new TestOutputHelperWireMockLogger(output),
|
Logger = new TestOutputHelperWireMockLogger(output),
|
||||||
Urls = ["ws://localhost:0"]
|
Urls = ["ws://localhost:0"]
|
||||||
});
|
});
|
||||||
|
|
||||||
proxyServer
|
sut
|
||||||
.Given(Request.Create()
|
.Given(Request.Create()
|
||||||
.WithPath("/ws/proxy")
|
.WithPath("/ws/proxy")
|
||||||
.WithWebSocketUpgrade()
|
.WithWebSocketUpgrade()
|
||||||
)
|
)
|
||||||
.RespondWith(Response.Create()
|
.RespondWith(Response.Create()
|
||||||
.WithWebSocketProxy(targetServer.Url!)
|
.WithWebSocketProxy(exampleEchoServer.Url!)
|
||||||
);
|
);
|
||||||
|
|
||||||
using var client = new ClientWebSocket();
|
using var client = new ClientWebSocket();
|
||||||
var proxyUri = new Uri($"{proxyServer.Url}/ws/proxy");
|
var proxyUri = new Uri($"{sut.Url}/ws/proxy");
|
||||||
|
|
||||||
// Act
|
|
||||||
await client.ConnectAsync(proxyUri, _ct);
|
|
||||||
client.State.Should().Be(WebSocketState.Open);
|
|
||||||
|
|
||||||
var testMessage = "Hello through proxy!";
|
|
||||||
await client.SendAsync(testMessage, cancellationToken: _ct);
|
|
||||||
|
|
||||||
// Assert
|
|
||||||
var received = await client.ReceiveAsTextAsync(cancellationToken: _ct);
|
|
||||||
received.Should().Be(testMessage, "message should be proxied to target echo server and echoed back");
|
|
||||||
|
|
||||||
await client.CloseAsync(WebSocketCloseStatus.NormalClosure, "Test complete", _ct);
|
|
||||||
|
|
||||||
targetServer.Stop();
|
|
||||||
targetServer.Dispose();
|
|
||||||
}
|
|
||||||
|
|
||||||
[Fact]
|
|
||||||
public async Task WithWebSocketProxy_Should_Proxy_Multiple_Messages()
|
|
||||||
{
|
|
||||||
// Arrange - Start target echo server
|
|
||||||
var targetServer = WireMockServer.Start(new WireMockServerSettings
|
|
||||||
{
|
|
||||||
Logger = new TestOutputHelperWireMockLogger(output),
|
|
||||||
Urls = ["ws://localhost:0"]
|
|
||||||
});
|
|
||||||
|
|
||||||
targetServer
|
|
||||||
.Given(Request.Create()
|
|
||||||
.WithPath("/ws/target")
|
|
||||||
.WithWebSocketUpgrade()
|
|
||||||
)
|
|
||||||
.RespondWith(Response.Create()
|
|
||||||
.WithWebSocket(ws => ws.WithEcho())
|
|
||||||
);
|
|
||||||
|
|
||||||
// Arrange - Start proxy server
|
|
||||||
using var proxyServer = WireMockServer.Start(new WireMockServerSettings
|
|
||||||
{
|
|
||||||
Logger = new TestOutputHelperWireMockLogger(output),
|
|
||||||
Urls = ["ws://localhost:0"]
|
|
||||||
});
|
|
||||||
|
|
||||||
var targetUrl = $"{targetServer.Url}/ws/target".Replace("http://", "ws://");
|
|
||||||
proxyServer
|
|
||||||
.Given(Request.Create()
|
|
||||||
.WithPath("/ws/proxy")
|
|
||||||
.WithWebSocketUpgrade()
|
|
||||||
)
|
|
||||||
.RespondWith(Response.Create()
|
|
||||||
.WithWebSocketProxy(targetUrl)
|
|
||||||
);
|
|
||||||
|
|
||||||
using var client = new ClientWebSocket();
|
|
||||||
var proxyUri = new Uri($"{proxyServer.Url}/ws/proxy");
|
|
||||||
await client.ConnectAsync(proxyUri, _ct);
|
await client.ConnectAsync(proxyUri, _ct);
|
||||||
|
|
||||||
var testMessages = new[] { "First", "Second", "Third" };
|
var testMessages = new[] { "First", "Second", "Third" };
|
||||||
@@ -780,21 +724,20 @@ public class WebSocketIntegrationTests(ITestOutputHelper output, ITestContextAcc
|
|||||||
|
|
||||||
await client.CloseAsync(WebSocketCloseStatus.NormalClosure, "Test complete", _ct);
|
await client.CloseAsync(WebSocketCloseStatus.NormalClosure, "Test complete", _ct);
|
||||||
|
|
||||||
targetServer.Stop();
|
await Task.Delay(100, _ct);
|
||||||
targetServer.Dispose();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task WithWebSocketProxy_Should_Proxy_Binary_Messages()
|
public async Task WithWebSocketProxy_Should_Proxy_Binary_Messages()
|
||||||
{
|
{
|
||||||
// Arrange - Start target echo server
|
// Arrange - Start target echo server
|
||||||
var targetServer = WireMockServer.Start(new WireMockServerSettings
|
using var exampleEchoServer = WireMockServer.Start(new WireMockServerSettings
|
||||||
{
|
{
|
||||||
Logger = new TestOutputHelperWireMockLogger(output),
|
Logger = new TestOutputHelperWireMockLogger(output),
|
||||||
Urls = ["ws://localhost:0"]
|
Urls = ["ws://localhost:0"]
|
||||||
});
|
});
|
||||||
|
|
||||||
targetServer
|
exampleEchoServer
|
||||||
.Given(Request.Create()
|
.Given(Request.Create()
|
||||||
.WithPath("/ws/target")
|
.WithPath("/ws/target")
|
||||||
.WithWebSocketUpgrade()
|
.WithWebSocketUpgrade()
|
||||||
@@ -804,24 +747,23 @@ public class WebSocketIntegrationTests(ITestOutputHelper output, ITestContextAcc
|
|||||||
);
|
);
|
||||||
|
|
||||||
// Arrange - Start proxy server
|
// Arrange - Start proxy server
|
||||||
using var proxyServer = WireMockServer.Start(new WireMockServerSettings
|
using var sut = WireMockServer.Start(new WireMockServerSettings
|
||||||
{
|
{
|
||||||
Logger = new TestOutputHelperWireMockLogger(output),
|
Logger = new TestOutputHelperWireMockLogger(output),
|
||||||
Urls = ["ws://localhost:0"]
|
Urls = ["ws://localhost:0"]
|
||||||
});
|
});
|
||||||
|
|
||||||
var targetUrl = $"{targetServer.Url}/ws/target".Replace("http://", "ws://");
|
sut
|
||||||
proxyServer
|
|
||||||
.Given(Request.Create()
|
.Given(Request.Create()
|
||||||
.WithPath("/ws/proxy")
|
.WithPath("/ws/proxy")
|
||||||
.WithWebSocketUpgrade()
|
.WithWebSocketUpgrade()
|
||||||
)
|
)
|
||||||
.RespondWith(Response.Create()
|
.RespondWith(Response.Create()
|
||||||
.WithWebSocketProxy(targetUrl)
|
.WithWebSocketProxy(exampleEchoServer.Url!)
|
||||||
);
|
);
|
||||||
|
|
||||||
using var client = new ClientWebSocket();
|
using var client = new ClientWebSocket();
|
||||||
var proxyUri = new Uri($"{proxyServer.Url}/ws/proxy");
|
var proxyUri = new Uri($"{sut.Url}/ws/proxy");
|
||||||
await client.ConnectAsync(proxyUri, _ct);
|
await client.ConnectAsync(proxyUri, _ct);
|
||||||
|
|
||||||
var testData = new byte[] { 0x01, 0x02, 0x03, 0x04, 0x05 };
|
var testData = new byte[] { 0x01, 0x02, 0x03, 0x04, 0x05 };
|
||||||
@@ -836,8 +778,6 @@ public class WebSocketIntegrationTests(ITestOutputHelper output, ITestContextAcc
|
|||||||
|
|
||||||
await client.CloseAsync(WebSocketCloseStatus.NormalClosure, "Test complete", _ct);
|
await client.CloseAsync(WebSocketCloseStatus.NormalClosure, "Test complete", _ct);
|
||||||
|
|
||||||
|
await Task.Delay(100, _ct);
|
||||||
targetServer.Stop();
|
|
||||||
targetServer.Dispose();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user