• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1% Regression tests for the PDUTransport / PDU layer
2
3
4# More information at http://www.secdev.org/projects/UTscapy/
5
6
7############
8############
9
10+ PDUTransport contrib tests
11
12= Load Contrib Layer
13
14load_contrib("automotive.autosar.pdu", globals_dict=globals())
15
16= Defaults test
17
18p = PDUTransport()
19assert p.pdus == [PDU()]
20
21p = PDU()
22assert p.pdu_id == 0
23assert p.pdu_payload_len == None
24
25= Build test pdu_id
26p = PDU(bytes(PDU(pdu_id=0x11)))
27assert len(bytes(p)) == 8
28assert p.pdu_id == 0x11
29assert p.pdu_payload_len == 0
30
31= Build test pdu_payload_len
32p = PDU(bytes(PDU(pdu_payload_len=12)))
33assert len(p) == 8
34assert p.pdu_id == 0
35assert p.pdu_payload_len == 12
36
37= Build test id and payload len with data
38p = PDU(bytes(PDU(pdu_id=0x12, pdu_payload_len=2) / Raw(b'\x22\x33')))
39assert len(p) == 10
40assert p.pdu_id == 0x12
41assert p.pdu_payload_len == 2
42assert len(p['Raw']) == 2
43assert bytes(p['Raw']) == b'\x22\x33'
44
45= Build PDUTransport with multiple PDU packets
46p1 = PDUTransport(b'\x00\x00\x00\x01\x00\x00\x00\x01\x11'
47b'\x00\x00\x00\x02\x00\x00\x00\x02\x11\x44'
48b'\x00\x00\x00\x03\x00\x00\x00\x03\x11\x33\x91')
49p2 = PDUTransport(bytes(PDUTransport(pdus=[PDU(pdu_id=0x1,pdu_payload_len=1)/Raw(b'\x11'), # noqa: E501
50PDU(pdu_id=0x2, pdu_payload_len=2) / Raw(b'\x11\x44'),
51PDU(pdu_id=0x3, pdu_payload_len=3) / Raw(b'\x11\x33\x91')])))
52# Check if packets are the same
53assert p1 == p2
54# Check if fields are set correctly within PDU list
55assert p1.pdus[0].pdu_id == 0x1
56assert p1.pdus[0].pdu_payload_len == 1
57assert p1.pdus[1].pdu_id == 0x2
58assert p1.pdus[1].pdu_payload_len == 2
59assert p1.pdus[2].pdu_id == 0x3
60assert p1.pdus[2].pdu_payload_len == 3
61
62= Build PDUTransport with one PDU packet
63p1 = PDUTransport(b'\x00\x00\x00\x01\x00\x00\x00\x03\x11\x22\x33')
64p2 = PDUTransport(bytes(PDUTransport(pdus=[
65PDU(pdu_id=0x1, pdu_payload_len=0x3) / Raw(b'\x11\x22\x33')])))
66
67# Check if packets are the same
68assert p1 == p2
69# Check if fields are set correctly within PDU list
70assert p1.pdus[0].pdu_id == 0x1
71assert p1.pdus[0].pdu_payload_len == 3
72