示例#1
0
        public void With_WebSocketFrameHeaderFlags_Fail_ParseBigHeader_When_Overflows_Int64()
        {
            Byte[] buffer = new Byte[10];
            buffer[0] = 129;
            buffer[1] = 127;

            UInt64 ilength = (UInt64)Int64.MaxValue + 1;
            var    length  = BitConverter.GetBytes(ilength);

            Array.Reverse(length);
            length.CopyTo(buffer, 2);

            try
            {
                WebSocketFrameHeader header;
                Assert.IsTrue(WebSocketFrameHeader.TryParse(buffer, 0, 10, new ArraySegment <byte>(new Byte[4], 0, 4), out header));
                Assert.AreEqual(10, header.HeaderLength);
            }
            catch (WebSocketException)
            {
            }
            catch (Exception)
            {
                Assert.Fail("Should throw WebSocketException");
            }
        }
        public void With_WebSocketFrameHeaderFlags_Can_CreateFinalPartialFrameHeader()
        {
            var header = WebSocketFrameHeader.Create(101, true, true, WebSocketFrameOption.Text, new WebSocketExtensionFlags());

            Byte[] buffer = new Byte[2];
            header.ToBytes(buffer, 0);
            Assert.AreEqual(128, buffer[0]);
            Assert.AreEqual(101, buffer[1]);
        }
        public void With_WebSocketFrameHeaderFlags_Can_CreateBinaryFrameHeader()
        {
            var header = WebSocketFrameHeader.Create(101, true, false, WebSocketFrameOption.Binary, new WebSocketExtensionFlags());

            Byte[] buffer = new Byte[2];
            header.ToBytes(buffer, 0);
            Assert.AreEqual(130, buffer[0]);
            Assert.AreEqual(101, buffer[1]);
        }
        public void CreateFinalPartialFrameHeader()
        {
            var header = WebSocketFrameHeader.Create(101, true, true, 0, WebSocketFrameOption.Text,
                                                     new WebSocketExtensionFlags());
            var buffer = new byte[2];

            header.WriteTo(buffer, 0);
            Assert.Equal(128, buffer[0]);
            Assert.Equal(101, buffer[1]);
        }
        public void CreateBinaryFrameHeader()
        {
            var header = WebSocketFrameHeader.Create(101, true, false, 0, WebSocketFrameOption.Binary,
                                                     new WebSocketExtensionFlags());
            var buffer = new byte[2];

            header.WriteTo(buffer, 0);
            Assert.Equal(130, buffer[0]);
            Assert.Equal(101, buffer[1]);
        }
        public void With_WebSocketFrameHeaderFlags_Can_CreateStartPartialFrameHeader()
        {
            var header = WebSocketFrameHeader.Create(101, false, false, WebSocketFrameOption.Text, new WebSocketExtensionFlags());

            Assert.AreEqual(2, header.HeaderLength);
            Byte[] buffer = new Byte[2];
            header.ToBytes(buffer, 0);
            Assert.AreEqual(1, buffer[0]);
            Assert.AreEqual(101, buffer[1]);
        }
        public void With_WebSocketFrameHeaderFlags_Can_CreateMediumHeader()
        {
            var header = WebSocketFrameHeader.Create(138, true, false, WebSocketFrameOption.Text, new WebSocketExtensionFlags());

            Byte[] buffer = new Byte[4];
            header.ToBytes(buffer, 0);
            Assert.AreEqual(129, buffer[0]);
            Assert.AreEqual(126, buffer[1]);
            Assert.AreEqual(0, buffer[2]);
            Assert.AreEqual(138, buffer[3]);
        }
        public void CreateStartPartialFrameHeader()
        {
            var header = WebSocketFrameHeader.Create(101, false, false, 0, WebSocketFrameOption.Text,
                                                     new WebSocketExtensionFlags());

            Assert.Equal(2, header.HeaderLength);
            var buffer = new byte[2];

            header.WriteTo(buffer, 0);
            Assert.Equal(1, buffer[0]);
            Assert.Equal(101, buffer[1]);
        }
示例#9
0
        public void With_WebSocketFrameHeaderFlags_Can_CreateMediumMaxHeader()
        {
            var header = WebSocketFrameHeader.Create(UInt16.MaxValue, true, false, WebSocketFrameOption.Text, new WebSocketExtensionFlags());

            Assert.AreEqual(4, header.HeaderLength);
            Byte[] buffer = new Byte[4];
            header.ToBytes(buffer, 0);
            Assert.AreEqual(129, buffer[0]);
            Assert.AreEqual(126, buffer[1]);
            Assert.AreEqual(255, buffer[2]);
            Assert.AreEqual(255, buffer[3]);
        }
        public void With_WebSocketFrameHeaderFlags_Can_CreateMediumHeader_BiggerThanInt16()
        {
            UInt16 ilength = (UInt16)Int16.MaxValue + 1;

            var header = WebSocketFrameHeader.Create((Int64)ilength, true, false, WebSocketFrameOption.Text, new WebSocketExtensionFlags());

            Byte[] buffer = new Byte[4];
            header.ToBytes(buffer, 0);
            Assert.AreEqual(129, buffer[0]);
            Assert.AreEqual(126, buffer[1]);
            Assert.AreEqual(128, buffer[2]);
            Assert.AreEqual(0, buffer[3]);
        }
        public void With_WebSocketFrameHeaderFlags_Can_ParseSmallHeader()
        {
            Byte[] buffer = new Byte[6];
            buffer[0] = 129;
            buffer[1] = 101;

            WebSocketFrameHeader header;

            Assert.IsTrue(WebSocketFrameHeader.TryParse(buffer, 0, 2, new ArraySegment <byte>(new Byte[4], 0, 4), out header));
            Assert.IsNotNull(header);
            Assert.IsTrue(header.Flags.FIN);
            Assert.IsFalse(header.Flags.MASK);
            Assert.AreEqual((UInt64)101, header.ContentLength);
        }
        public void CreateMediumMaxHeader()
        {
            var header = WebSocketFrameHeader.Create(ushort.MaxValue, true, false, 0, WebSocketFrameOption.Text,
                                                     new WebSocketExtensionFlags());

            Assert.Equal(4, header.HeaderLength);
            var buffer = new byte[4];

            header.WriteTo(buffer, 0);
            Assert.Equal(129, buffer[0]);
            Assert.Equal(126, buffer[1]);
            Assert.Equal(255, buffer[2]);
            Assert.Equal(255, buffer[3]);
        }
        public void ParseSmallHeader()
        {
            var buffer = new byte[6];

            buffer[0] = 129;
            buffer[1] = 101;

            WebSocketFrameHeader header;

            Assert.True(WebSocketFrameHeader.TryParse(buffer, 0, 2, out header));
            Assert.NotNull(header);
            Assert.True(header.Flags.FIN);
            Assert.False(header.Flags.MASK);
            Assert.Equal(2, header.HeaderLength);
            Assert.Equal(101, header.ContentLength);
        }
        public void CreateMediumHeaderBiggerThanInt16()
        {
            ushort ilength = (ushort)short.MaxValue + 1;

            var header = WebSocketFrameHeader.Create(ilength, true, false, 0, WebSocketFrameOption.Text,
                                                     new WebSocketExtensionFlags());

            Assert.Equal(4, header.HeaderLength);
            var buffer = new byte[4];

            header.WriteTo(buffer, 0);
            Assert.Equal(129, buffer[0]);
            Assert.Equal(126, buffer[1]);
            Assert.Equal(128, buffer[2]);
            Assert.Equal(0, buffer[3]);
        }
        public void With_WebSocketFrameHeaderFlags_Fail_ParseBigHeader_When_Overflows_Int64()
        {
            Byte[] buffer = new Byte[10];
            buffer[0] = 129;
            buffer[1] = 127;

            UInt64 ilength = (UInt64)Int64.MaxValue + 1;
            var    length  = BitConverter.GetBytes(ilength);

            Array.Reverse(length);
            length.CopyTo(buffer, 2);

            WebSocketFrameHeader header;

            Assert.IsTrue(WebSocketFrameHeader.TryParse(buffer, 0, 2, new ArraySegment <byte>(new Byte[4], 0, 4), out header));
        }
        public void With_WebSocketFrameHeaderFlags_Can_CreateBigHeader_Int64()
        {
            var header = WebSocketFrameHeader.Create(Int64.MaxValue, true, false, WebSocketFrameOption.Text, new WebSocketExtensionFlags());

            Byte[] buffer = new Byte[10];
            header.ToBytes(buffer, 0);
            Assert.AreEqual(129, buffer[0]);
            Assert.AreEqual(127, buffer[1]);
            Assert.AreEqual(127, buffer[2]);
            Assert.AreEqual(255, buffer[3]);
            Assert.AreEqual(255, buffer[4]);
            Assert.AreEqual(255, buffer[5]);
            Assert.AreEqual(255, buffer[6]);
            Assert.AreEqual(255, buffer[7]);
            Assert.AreEqual(255, buffer[8]);
            Assert.AreEqual(255, buffer[9]);
        }
        public void CreateBigHeaderInt64()
        {
            var header = WebSocketFrameHeader.Create(long.MaxValue, true, false, 0, WebSocketFrameOption.Text,
                                                     new WebSocketExtensionFlags());
            var buffer = new byte[10];

            header.WriteTo(buffer, 0);
            Assert.Equal(129, buffer[0]);
            Assert.Equal(127, buffer[1]);
            Assert.Equal(127, buffer[2]);
            Assert.Equal(255, buffer[3]);
            Assert.Equal(255, buffer[4]);
            Assert.Equal(255, buffer[5]);
            Assert.Equal(255, buffer[6]);
            Assert.Equal(255, buffer[7]);
            Assert.Equal(255, buffer[8]);
            Assert.Equal(255, buffer[9]);
        }
        public void With_WebSocketFrameHeaderFlags_Can_ParseBigHeader()
        {
            Byte[] buffer = new Byte[10];
            buffer[0] = 129;
            buffer[1] = 127;

            var length = BitConverter.GetBytes(Int64.MaxValue);

            Array.Reverse(length);
            length.CopyTo(buffer, 2);

            WebSocketFrameHeader header;

            Assert.IsTrue(WebSocketFrameHeader.TryParse(buffer, 0, 2, new ArraySegment <byte>(new Byte[4], 0, 4), out header));
            Assert.IsNotNull(header);
            Assert.IsTrue(header.Flags.FIN);
            Assert.IsFalse(header.Flags.MASK);
            Assert.AreEqual(Int64.MaxValue, header.ContentLength);
        }
        public void With_WebSocketFrameHeaderFlags_Can_ParseMediumHeader()
        {
            Byte[] buffer = new Byte[6];
            buffer[0] = 129;
            buffer[1] = 126;

            UInt16 ilength = (UInt16)Int16.MaxValue + 1;
            var    length  = BitConverter.GetBytes(ilength);

            Array.Reverse(length);
            length.CopyTo(buffer, 2);

            WebSocketFrameHeader header;

            Assert.True(WebSocketFrameHeader.TryParse(buffer, 0, 2, new ArraySegment <byte>(new Byte[4], 0, 4), out header));
            Assert.NotNull(header);
            Assert.True(header.Flags.FIN);
            Assert.False(header.Flags.MASK);
            Assert.AreEqual((Int64)ilength, header.ContentLength);
        }
        public void FailToParseBigHeaderWhenOverflowsInt64()
        {
            var buffer = new byte[10];

            buffer[0] = 129;
            buffer[1] = 127;

            var ilength = (ulong)long.MaxValue + 1;
            var length  = BitConverter.GetBytes(ilength);

            Array.Reverse(length);
            length.CopyTo(buffer, 2);

            Assert.Throws <WebSocketException>(() =>
            {
                WebSocketFrameHeader header;
                Assert.True(WebSocketFrameHeader.TryParse(buffer, 0, 10, out header));
                Assert.Equal(10, header.HeaderLength);
            });
        }
        public void ParseBigHeader()
        {
            var buffer = new byte[10];

            buffer[0] = 129;
            buffer[1] = 127;

            var length = BitConverter.GetBytes(long.MaxValue);

            Array.Reverse(length);
            length.CopyTo(buffer, 2);

            WebSocketFrameHeader header;

            Assert.True(WebSocketFrameHeader.TryParse(buffer, 0, 10, out header));
            Assert.NotNull(header);
            Assert.True(header.Flags.FIN);
            Assert.False(header.Flags.MASK);
            Assert.Equal(10, header.HeaderLength);
            Assert.Equal(long.MaxValue, header.ContentLength);
        }
        public void ParseMediumMaxHeader()
        {
            var buffer = new byte[6];

            buffer[0] = 129;
            buffer[1] = 126;

            var ilength = ushort.MaxValue;
            var length  = BitConverter.GetBytes(ilength);

            Array.Reverse(length);
            length.CopyTo(buffer, 2);

            WebSocketFrameHeader header;

            Assert.True(WebSocketFrameHeader.TryParse(buffer, 0, 4, out header));
            Assert.NotNull(header);
            Assert.True(header.Flags.FIN);
            Assert.False(header.Flags.MASK);
            Assert.Equal(4, header.HeaderLength);
            Assert.Equal(ilength, header.ContentLength);
        }