def test_one_A(self):
        in_bytes = b'\x00\x00\x80\x00\x00\x01\x00\x01\x00\x00\x00\x00' \
                   b'\x06google\x03com\x00\x00\x01\x00\x01' \
                   b'\xc0\x0c\x00\x01\x00\x01\x00\x00\x00\x00' \
                   b'\x00\x04\xac\xd9\x0en'
        a_resource_data = _AResourceData(b'\xac\xd9\x0en')

        actual = Answer.from_bytes(in_bytes)

        self.assertEqual(0, actual.header.identifier)
        self.assertEqual(MessageType.RESPONSE, actual.header.message_type)
        self.assertEqual(QueryType.STANDARD, actual.header.query_type)
        self.assertEqual(False, actual.header.is_authority_answer)
        self.assertEqual(False, actual.header.is_truncated)
        self.assertEqual(False, actual.header.is_recursion_desired)
        self.assertEqual(False, actual.header.is_recursion_available)
        self.assertEqual(ResponseType.NO_ERROR, actual.header.response_type)

        self.assertEqual('google.com', actual.questions[0].name)
        self.assertEqual(RRType.A, actual.questions[0].type_)
        self.assertEqual(RRClass.IN, actual.questions[0].class_)

        self.assertEqual('google.com', actual.answers[0].name)
        self.assertEqual(RRType.A, actual.answers[0].type_)
        self.assertEqual(RRClass.IN, actual.answers[0].class_)
        self.assertEqual(0, actual.answers[0].ttl)
        self.assertEqual(4, actual.answers[0].length)
        self.assertEqual(a_resource_data.ip, actual.answers[0].data.ip)
Beispiel #2
0
def get_answer(hostname, record_type,
               *, inverse=False, ipv6=False, protocol, server, port, timeout):
    if inverse:
        hostname = get_ip_reverse_notation(hostname, ipv6=ipv6)

    response = send_query(hostname=hostname, record_type=record_type,
                          protocol=protocol, server=server,
                          port=port, timeout=timeout)

    try:
        answer = Answer.from_bytes(response)
    except InvalidAnswer as e:
        raise InvalidServerResponse from e

    return answer
Beispiel #3
0
    def test_A(self, mock_socket_recv):
        response = resolver.tcp_query(self.bytes_, **self.argv)
        answer = Answer.from_bytes(response)

        self.assertEqual(answer.questions[0].name, 'google.com')
        self.assertEqual(answer.answers[0].data.ip, '74.125.232.231')
Beispiel #4
0
    def test_A(self, mock_socket_recv):
        response = resolver.udp_query(self.bytes_, **self.argv)
        answer = Answer.from_bytes(response)

        self.assertEqual(answer.answers[0].name, 'yandex.com')
        self.assertEqual(answer.answers[0].data.ip, '213.180.204.62')