# Sebek layer unit tests
#
# Type the following command to launch start the tests:
# $ test/run_tests -P "load_contrib('sebek')" -t test/contrib/sebek.uts

+ Sebek protocol

= Layer binding 1
pkt = IP() / UDP() / SebekHead() / SebekV1(cmd="diepotato")
assert pkt.sport == pkt.dport == 1101 and pkt[SebekHead].version == 1
assert pkt.summary() == "IP / UDP / SebekHead / Sebek v1 read (b'diepotato')"

= Packet dissection 1
pkt = IP(raw(pkt))
pkt.sport == pkt.dport == 1101 and pkt[SebekHead].version == 1

= Layer binding 2
pkt = IP() / UDP() / SebekHead() / SebekV2Sock(cmd="diepotato")
assert pkt.sport == pkt.dport == 1101 and pkt[SebekHead].version == 2 and pkt[SebekHead].type ==2
assert pkt.summary() == "IP / UDP / SebekHead / Sebek v2 socket (b'diepotato')"

= Packet dissection 2
pkt = IP(raw(pkt))
pkt.sport == pkt.dport == 1101 and pkt[SebekHead].version == 2 and pkt[SebekHead].type ==2

= Layer binding 3
pkt = IPv6()/UDP()/SebekHead()/SebekV3()
assert pkt.sport == pkt.dport == 1101 and pkt[SebekHead].version == 3
assert pkt.summary() == "IPv6 / UDP / SebekHead / Sebek v3 read (b'')"

= Packet dissection 3
pkt = IPv6(raw(pkt))
pkt.sport == pkt.dport == 1101 and pkt[SebekHead].version == 3

= Nonsense summaries

assert SebekHead(version=2).summary() == "Sebek Header v2 read"
assert SebekV1(cmd="diepotato").summary() == "Sebek v1 (b'diepotato')"
assert SebekV2(cmd="diepotato").summary() == "Sebek v2 (b'diepotato')"
assert (SebekHead()/SebekV2(cmd="nottoday")).summary() == "SebekHead / Sebek v2 read (b'nottoday')"
assert SebekV3(cmd="diepotato").summary() == "Sebek v3 (b'diepotato')"
assert (SebekHead()/SebekV3(cmd="nottoday")).summary() == "SebekHead / Sebek v3 read (b'nottoday')"
assert SebekV3Sock(cmd="diepotato").summary() == "Sebek v3 socket (b'diepotato')"
assert (SebekHead()/SebekV3Sock(cmd="nottoday")).summary() == "SebekHead / Sebek v3 socket (b'nottoday')"
assert SebekV2Sock(cmd="diepotato").summary() == "Sebek v2 socket (b'diepotato')"
assert (SebekHead()/SebekV2Sock(cmd="nottoday")).summary() == "SebekHead / Sebek v2 socket (b'nottoday')"
