def test_fails_for_bad_ihl(self): payload = factory.make_bytes(48) packet = make_ipv4_packet(payload=payload, ihl=0) ipv4 = IPv4(packet) self.assertThat(ipv4.is_valid(), Equals(False)) self.assertThat(ipv4.invalid_reason, DocTestMatches("Invalid IPv4 IHL..."))
def test_fails_for_non_ipv4_packet(self): payload = factory.make_bytes(48) packet = make_ipv4_packet(payload=payload, version=5) ipv4 = IPv4(packet) self.assertThat(ipv4.is_valid(), Equals(False)) self.assertThat(ipv4.invalid_reason, DocTestMatches("Invalid version..."))
def test_parses_ipv4_packet(self): payload = factory.make_bytes(48) packet = make_ipv4_packet(payload=payload) ipv4 = IPv4(packet) self.assertThat(ipv4.is_valid(), Equals(True)) self.assertThat(ipv4.version, Equals(4)) self.assertThat(ipv4.ihl, Equals(20)) self.assertThat(ipv4.payload, Equals(payload))
def test_fails_for_truncated_packet(self): packet = make_ipv4_packet(truncated=True) ipv4 = IPv4(packet) self.assertThat(ipv4.is_valid(), Equals(False)) self.assertThat(ipv4.invalid_reason, DocTestMatches("Truncated..."))