def test_read_resource_records(self): """ Test case to decode three consecutive resource records """ records: List[ResourceRecord] = DNSMessage._read_resource_records( BytesIO(self.three_consecutive_resource_records_encoded), BytesIO(self.three_consecutive_resource_records_encoded), 3) # Check that the first name server record was correctly decoded self.assertEqual(records[0].name, 'ca') self.assertEqual(records[0].type, 2) self.assertEqual(records[0].response_class, 1) self.assertEqual(records[0].ttl, 150873) self.assertEqual(records[0].rdlength, 14) self.assertEqual(records[0].rdata, 'x.ca-servers') # Check that the first name server record was correctly decoded self.assertEqual(records[1].name, 'ubc') self.assertEqual(records[1].type, 1) self.assertEqual(records[1].response_class, 2) self.assertEqual(records[1].ttl, 150873) self.assertEqual(records[1].rdlength, 4) self.assertEqual(records[1].rdata, '1.2.3.4') # Check that the first name server record was correctly decoded self.assertEqual(records[2].name, 'tsn') self.assertEqual(records[2].type, 5) self.assertEqual(records[2].response_class, 3) self.assertEqual(records[2].ttl, 150873) self.assertEqual(records[2].rdlength, 13) self.assertEqual(records[2].rdata, 'x.z-servers')
def test_read_resource_questions_no_records(self): """ Test case to attempt to decode 0 resource records. In other words, don't decode anything and return an empty list. """ records: List[ResourceRecord] = DNSMessage._read_resource_records( BytesIO(self.three_consecutive_resource_records_encoded), BytesIO(self.three_consecutive_resource_records_encoded), 0) self.assertEqual(len(records), 0)