MCPcopy
hub / github.com/mitmproxy/mitmproxy / test_packing

Method test_packing

test/mitmproxy/test_dns.py:228–300  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

226 test("response_code", 0, 0b1111)
227
228 def test_packing(self):
229 def assert_eq(m: dns.DNSMessage, b: bytes) -> None:
230 m_b = dns.DNSMessage.unpack(b, m.timestamp)
231 assert m_b == m
232 assert m_b.packed == m.packed
233
234 assert_eq(
235 tutils.tdnsreq(),
236 b"\x00\x2a\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\x03dns\x06google\x00\x00\x01\x00\x01",
237 )
238 with pytest.raises(struct.error):
239 dns.DNSMessage.unpack(
240 b"\x00\x2a\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\x03dns\x06google\x00\x00\x01\x00\x01\x00"
241 )
242 assert_eq(
243 tutils.tdnsresp(),
244 (
245 b"\x00\x2a\x81\x80\x00\x01\x00\x02\x00\x00\x00\x00\x03dns\x06google\x00\x00\x01\x00\x01"
246 b"\xc0\x0c\x00\x01\x00\x01\x00\x00\x00 \x00\x04\x08\x08\x08\x08\xc0\x0c\x00\x01\x00\x01"
247 b"\x00\x00\x00 \x00\x04\x08\x08\x04\x04"
248 ),
249 )
250 with pytest.raises(struct.error): # question error
251 dns.DNSMessage.unpack(
252 b"\x00\x2a\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\x03dns\x06goo"
253 )
254 with pytest.raises(struct.error): # rr length error
255 dns.DNSMessage.unpack(
256 b"\x00\x2a\x81\x80\x00\x01\x00\x02\x00\x00\x00\x00\x03dns\x06google\x00\x00\x01\x00\x01"
257 + b"\xc0\x0c\x00\x01\x00\x01\x00\x00\x00 \x00\x04\x08\x08\x08\x08\xc0\x0c\x00\x01\x00\x01\x00\x00\x00 \x00\x04\x08\x08\x04"
258 )
259 txt = dns.DNSMessage.unpack(
260 b"V\x1a\x81\x80\x00\x01\x00\x01\x00\x01\x00\x01\x05alive\x06github\x03com\x00\x00"
261 + b"\x10\x00\x01\xc0\x0c\x00\x05\x00\x01\x00\x00\x0b\xc6\x00\x07\x04live\xc0\x12\xc0\x12\x00\x06\x00\x01"
262 + b"\x00\x00\x03\x84\x00H\x07ns-1707\tawsdns-21\x02co\x02uk\x00\x11awsdns-hostmaster\x06amazon\xc0\x19\x00"
263 + b"\x00\x00\x01\x00\x00\x1c \x00\x00\x03\x84\x00\x12u\x00\x00\x01Q\x80\x00\x00)\x02\x00\x00\x00\x00\x00\x00\x00"
264 )
265 assert txt.answers[0].domain_name == "live.github.com"
266 invalid_rr_domain_name = dns.DNSMessage.unpack(
267 b"V\x1a\x81\x80\x00\x01\x00\x01\x00\x01\x00\x01\x05alive\x06github\x03com\x00\x00"
268 + b"\x10\x00\x01\xc0\x0c\x00\x05\x00\x01\x00\x00\x0b\xc6\x00\x07\x99live\xc0\x12\xc0\x12\x00\x06\x00\x01"
269 + b"\x00\x00\x03\x84\x00H\x07ns-1707\tawsdns-21\x02co\x02uk\x00\x11awsdns-hostmaster\x06amazon\xc0\x19\x00"
270 + b"\x00\x00\x01\x00\x00\x1c \x00\x00\x03\x84\x00\x12u\x00\x00\x01Q\x80\x00\x00)\x02\x00\x00\x00\x00\x00\x00\x00"
271 )
272 assert (
273 invalid_rr_domain_name.answers[0].data == b"\x99live\x06github\x03com\x00"
274 )
275 valid_compressed_rr_data = dns.DNSMessage.unpack(
276 b"\x10}\x81\x80\x00\x01\x00\x01\x00\x00\x00\x01\x06google\x03com\x00\x00\x06\x00\x01\xc0\x0c\x00\x06\x00"
277 + b"\x01\x00\x00\x00\x0c\x00&\x03ns1\xc0\x0c\tdns-admin\xc0\x0c&~gw\x00\x00\x03\x84\x00\x00\x03\x84\x00"
278 + b"\x00\x07\x08\x00\x00\x00<\x00\x00)\x02\x00\x00\x00\x00\x00\x00\x00"
279 )
280 assert (
281 valid_compressed_rr_data.answers[0].data
282 == b"\x03ns1\x06google\x03com\x00\tdns-admin\x06google\x03com\x00&~gw\x00\x00\x03\x84\x00\x00\x03\x84\x00"
283 + b"\x00\x07\x08\x00\x00\x00<"
284 )
285 A_record_data_contains_pointer_label = dns.DNSMessage.unpack(

Callers

nothing calls this directly

Calls 1

unpackMethod · 0.80

Tested by

no test coverage detected