| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 | 
							- using System;
 
- using System.Buffers;
 
- using System.IO;
 
- using System.Text.Json;
 
- using Emby.Server.Implementations.HttpServer;
 
- using Microsoft.Extensions.Logging.Abstractions;
 
- using Xunit;
 
- namespace Jellyfin.Server.Implementations.Tests.HttpServer
 
- {
 
-     public class WebSocketConnectionTests
 
-     {
 
-         [Fact]
 
-         public void DeserializeWebSocketMessage_SingleSegment_Success()
 
-         {
 
-             var con = new WebSocketConnection(new NullLogger<WebSocketConnection>(), null!, null!);
 
-             var bytes = File.ReadAllBytes("Test Data/HttpServer/ForceKeepAlive.json");
 
-             con.DeserializeWebSocketMessage(new ReadOnlySequence<byte>(bytes), out var bytesConsumed);
 
-             Assert.Equal(109, bytesConsumed);
 
-         }
 
-         [Fact]
 
-         public void DeserializeWebSocketMessage_MultipleSegments_Success()
 
-         {
 
-             const int SplitPos = 64;
 
-             var con = new WebSocketConnection(new NullLogger<WebSocketConnection>(), null!, null!);
 
-             var bytes = File.ReadAllBytes("Test Data/HttpServer/ForceKeepAlive.json");
 
-             var seg1 = new BufferSegment(new Memory<byte>(bytes, 0, SplitPos));
 
-             var seg2 = seg1.Append(new Memory<byte>(bytes, SplitPos, bytes.Length - SplitPos));
 
-             con.DeserializeWebSocketMessage(new ReadOnlySequence<byte>(seg1, 0, seg2, seg2.Memory.Length - 1), out var bytesConsumed);
 
-             Assert.Equal(109, bytesConsumed);
 
-         }
 
-         [Fact]
 
-         public void DeserializeWebSocketMessage_ValidPartial_Success()
 
-         {
 
-             var con = new WebSocketConnection(new NullLogger<WebSocketConnection>(), null!, null!);
 
-             var bytes = File.ReadAllBytes("Test Data/HttpServer/ValidPartial.json");
 
-             con.DeserializeWebSocketMessage(new ReadOnlySequence<byte>(bytes), out var bytesConsumed);
 
-             Assert.Equal(109, bytesConsumed);
 
-         }
 
-         [Fact]
 
-         public void DeserializeWebSocketMessage_Partial_ThrowJsonException()
 
-         {
 
-             var con = new WebSocketConnection(new NullLogger<WebSocketConnection>(), null!, null!);
 
-             var bytes = File.ReadAllBytes("Test Data/HttpServer/Partial.json");
 
-             Assert.Throws<JsonException>(() => con.DeserializeWebSocketMessage(new ReadOnlySequence<byte>(bytes), out var bytesConsumed));
 
-         }
 
-         internal class BufferSegment : ReadOnlySequenceSegment<byte>
 
-         {
 
-             public BufferSegment(Memory<byte> memory)
 
-             {
 
-                 Memory = memory;
 
-             }
 
-             public BufferSegment Append(Memory<byte> memory)
 
-             {
 
-                 var segment = new BufferSegment(memory)
 
-                 {
 
-                     RunningIndex = RunningIndex + Memory.Length
 
-                 };
 
-                 Next = segment;
 
-                 return segment;
 
-             }
 
-         }
 
-     }
 
- }
 
 
  |