2019-10-04 03:31:19 +03:00
|
|
|
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
|
|
|
// Licensed under the MIT License.
|
|
|
|
|
|
|
|
|
|
using System.Net.WebSockets;
|
2019-10-05 02:16:52 +03:00
|
|
|
|
using System.Text;
|
2019-10-04 03:31:19 +03:00
|
|
|
|
using System.Threading.Tasks;
|
2023-05-08 22:43:37 +03:00
|
|
|
|
using Microsoft.Bot.Streaming.Tests.Utilities;
|
2019-10-04 03:31:19 +03:00
|
|
|
|
using Microsoft.Bot.Streaming.Transport.WebSockets;
|
|
|
|
|
using Xunit;
|
|
|
|
|
|
|
|
|
|
namespace Microsoft.Bot.Streaming.UnitTests
|
|
|
|
|
{
|
|
|
|
|
public class WebSocketTransportTests
|
|
|
|
|
{
|
|
|
|
|
[Fact]
|
2023-05-08 22:43:37 +03:00
|
|
|
|
public void WebSocketTransport_Connects()
|
2019-10-04 03:46:36 +03:00
|
|
|
|
{
|
|
|
|
|
var sock = new FauxSock();
|
|
|
|
|
sock.RealState = WebSocketState.Open;
|
|
|
|
|
var transport = new WebSocketTransport(sock);
|
|
|
|
|
|
|
|
|
|
Assert.True(transport.IsConnected);
|
|
|
|
|
|
|
|
|
|
transport.Close();
|
|
|
|
|
transport.Dispose();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Fact]
|
2023-05-08 22:43:37 +03:00
|
|
|
|
public void WebSocketTransport_SetsState()
|
2019-10-04 03:46:36 +03:00
|
|
|
|
{
|
|
|
|
|
var sock = new FauxSock();
|
|
|
|
|
sock.RealState = WebSocketState.Open;
|
|
|
|
|
var transport = new WebSocketTransport(sock);
|
|
|
|
|
|
|
|
|
|
transport.Close();
|
|
|
|
|
transport.Dispose();
|
|
|
|
|
|
|
|
|
|
Assert.Equal(WebSocketState.Closed, sock.RealState);
|
|
|
|
|
}
|
|
|
|
|
|
2019-10-05 02:16:52 +03:00
|
|
|
|
[Fact]
|
|
|
|
|
public async Task WebSocketTransport_CanSend()
|
|
|
|
|
{
|
|
|
|
|
// Arrange
|
|
|
|
|
var sock = new FauxSock();
|
|
|
|
|
sock.RealState = WebSocketState.Open;
|
|
|
|
|
var transport = new WebSocketTransport(sock);
|
|
|
|
|
var messageText = "This is a message.";
|
|
|
|
|
byte[] message = Encoding.ASCII.GetBytes(messageText);
|
|
|
|
|
|
|
|
|
|
// Act
|
|
|
|
|
await transport.SendAsync(message, 0, message.Length);
|
|
|
|
|
|
|
|
|
|
// Assert
|
|
|
|
|
Assert.Equal(messageText, Encoding.UTF8.GetString(sock.SentArray));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Fact]
|
|
|
|
|
public async Task WebSocketTransport_CanReceive()
|
|
|
|
|
{
|
|
|
|
|
// Arrange
|
|
|
|
|
var sock = new FauxSock();
|
|
|
|
|
sock.RealState = WebSocketState.Open;
|
|
|
|
|
var transport = new WebSocketTransport(sock);
|
|
|
|
|
byte[] message = Encoding.ASCII.GetBytes("This is a message.");
|
|
|
|
|
|
|
|
|
|
// Act
|
|
|
|
|
var received = await transport.ReceiveAsync(message, 0, message.Length);
|
|
|
|
|
|
|
|
|
|
// Assert
|
|
|
|
|
Assert.Equal(message.Length, received);
|
|
|
|
|
}
|
2019-10-04 03:31:19 +03:00
|
|
|
|
}
|
|
|
|
|
}
|