tests: add integration test for wrapper web socket class

This commit is contained in:
Stevan Freeborn
2025-05-09 01:54:06 -05:00
parent 7f6c9d5624
commit 4bfe705fb6
10 changed files with 220 additions and 2 deletions
+2 -1
View File
@@ -1,2 +1,3 @@
global using System.Net.WebSockets;
global using System.Text.Json;
global using System.Text.Json.Serialization;
global using System.Text.Json.Serialization;
@@ -0,0 +1,11 @@
namespace StevesBot.Worker.WebSockets;
internal interface IWebSocket : IDisposable
{
WebSocketState State { get; }
Task ConnectAsync(Uri uri, CancellationToken cancellationToken);
Task CloseAsync(WebSocketCloseStatus closeStatus, string? statusDescription, CancellationToken cancellationToken);
Task<WebSocketReceiveResult> ReceiveAsync(ArraySegment<byte> buffer, CancellationToken cancellationToken);
Task SendAsync(ArraySegment<byte> buffer, WebSocketMessageType messageType, bool endOfMessage, CancellationToken cancellationToken);
}
@@ -0,0 +1,38 @@
namespace StevesBot.Worker.WebSockets;
internal class WebSocket : IWebSocket
{
private readonly ClientWebSocket _clientWebSocket;
public WebSocketState State => _clientWebSocket.State;
public WebSocket(ClientWebSocket? clientWebSocket = null)
{
_clientWebSocket = clientWebSocket ?? new ClientWebSocket();
}
public async Task ConnectAsync(Uri uri, CancellationToken cancellationToken)
{
await _clientWebSocket.ConnectAsync(uri, cancellationToken);
}
public async Task CloseAsync(WebSocketCloseStatus closeStatus, string? statusDescription, CancellationToken cancellationToken)
{
await _clientWebSocket.CloseAsync(closeStatus, statusDescription, cancellationToken);
}
public async Task<WebSocketReceiveResult> ReceiveAsync(ArraySegment<byte> buffer, CancellationToken cancellationToken)
{
return await _clientWebSocket.ReceiveAsync(buffer, cancellationToken);
}
public async Task SendAsync(ArraySegment<byte> buffer, WebSocketMessageType messageType, bool endOfMessage, CancellationToken cancellationToken)
{
await _clientWebSocket.SendAsync(buffer, messageType, endOfMessage, cancellationToken);
}
public void Dispose()
{
_clientWebSocket.Dispose();
}
}