Esempio n. 1
0
        public void Advance_should_move_index_to_given_position(int length, int expectedIndexValue)
        {
            // Arrange.

            IDnsDatagramReader reader = new DnsDatagramReader(mockDnsString.Object);

            // Act.
            reader.Advance(length);
            reader.Advance(length);

            // Assert.
            Assert.AreEqual(expectedIndexValue, reader.Index);
        }
Esempio n. 2
0
        public void DatagramReader_IndexBounds()
        {
            var bytes  = new byte[] { 0, 1, 2, 3, 4, 5, 6, 7 };
            var reader = new DnsDatagramReader(new ArraySegment <byte>(bytes, 2, 4));

            Assert.True(reader.DataAvailable);
            reader.Advance(4);
            Assert.False(reader.DataAvailable);

            Action act = () => reader.Advance(1);
            var    ex  = Assert.Throws <DnsResponseParseException>(act);

            Assert.Equal(4, ex.Index);
            Assert.Equal(1, ex.ReadLength);
        }
Esempio n. 3
0
        public void DatagramReader_LabelTest_DnsName_LengthOutOfBounds()
        {
            var data   = ReferenceBitData.Concat(new byte[] { 192, 23 });
            var reader = new DnsDatagramReader(new ArraySegment <byte>(data.ToArray()));

            reader.Advance(36);
            DnsString name = reader.ReadDnsName();

            Assert.Equal("eeeee.dd.c.aa.com.", name.Value);
        }
Esempio n. 4
0
        public void ReadUInt16NetworkOrder_should_throw_IndexOutOfRangeException_when_index_exceeds_data_count()
        {
            // Arrange.
            ArraySegment <byte> sampleData = GetSampleData(ResponseDataSampleFile.QuestionQuery);
            IDnsDatagramReader  reader     = new DnsDatagramReader(mockDnsString.Object);

            reader.Advance(100);
            // Act.

            Assert.Throws <IndexOutOfRangeException>(() => reader.ReadUInt16NetworkOrder(sampleData), "Cannot read more data.");
        }
Esempio n. 5
0
        public void ReadIPAddress_should_throw_IndexOutOfRangeException_exception_when_less_than_4_bytes_are_present()
        {
            // Arrange.
            ArraySegment <byte> sampleData = GetSampleData(ResponseDataSampleFile.QuestionQuery);
            IDnsDatagramReader  reader     = new DnsDatagramReader(mockDnsString.Object);

            // advance the index to IP Address position + 1 to make it throw exception.
            reader.Advance(43);

            // Act => Assert.
            Assert.Throws <IndexOutOfRangeException>(() => reader.ReadIPAddress(sampleData),
                                                     "Error while reading IPv4 address, expected 4 bytes. Index was outside the bounds of the array.");
        }
Esempio n. 6
0
        public void ReadUInt16NetworkOrder_should_return_AnswerCount_of_6_from_data_starting_at_Index_0()
        {
            // Arrange.
            ArraySegment <byte> sampleData = GetSampleData(ResponseDataSampleFile.QuestionQuery);
            IDnsDatagramReader  reader     = new DnsDatagramReader(mockDnsString.Object);

            reader.Advance(6);
            // Act.

            ushort answerCout = reader.ReadUInt16NetworkOrder(sampleData);

            // Assert.

            Assert.AreEqual(5, answerCout);
        }
Esempio n. 7
0
        public void ReadUInt32NetworkOrder_should_return_TTL_value_in_int32()
        {
            // Arrange.
            ArraySegment <byte> sampleData = GetSampleData(ResponseDataSampleFile.QuestionAndAnswerQuery);
            IDnsDatagramReader  reader     = new DnsDatagramReader(mockDnsString.Object);

            // advance the index to Time To Live position.
            reader.Advance(37);

            // Act.
            uint timeToLive = reader.ReadUInt32NetworkOrder(sampleData);

            // Assert.
            Assert.AreEqual(2585, timeToLive);
        }
Esempio n. 8
0
        public void ReadIPAddress_should_return_ipAddress()
        {
            // Arrange.
            ArraySegment <byte> sampleData = GetSampleData(ResponseDataSampleFile.QuestionAndAnswerQuery);
            IDnsDatagramReader  reader     = new DnsDatagramReader(mockDnsString.Object);

            // advance the index to IP Address position.
            reader.Advance(43);

            // Act.
            IPAddress ipAddress = reader.ReadIPAddress(sampleData);

            // Assert.

            Assert.AreEqual("40.76.4.15", ipAddress.ToString());
        }
Esempio n. 9
0
        public void ReadQuestionQueryString_should_return_queryString_successfully()
        {
            // Arrange.

            const string        query      = "microsoft.com";
            const string        queryDot   = query + ".";
            ArraySegment <byte> sampleData = GetSampleData(ResponseDataSampleFile.QuestionQuery);

            mockDnsString.Setup(m => m.FromResponseQueryString(queryDot)).Returns(new DnsString(query, queryDot));


            IDnsDatagramReader reader = new DnsDatagramReader(mockDnsString.Object);

            // move the index to 12th byte where the query starts in the response data.
            reader.Advance(12);

            // Act.

            IDnsString dnsString = reader.ReadQuestionQueryString(sampleData);

            // Assert.
            Assert.AreEqual(dnsString.Original, query);
            Assert.AreEqual(dnsString.Value, queryDot);
        }