Esempio n. 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_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 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 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_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 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 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 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);
        }