def test_nested(self): o = kea.Option(42).addOption(kea.Option(4).setUint16(5)).addOption( kea.Option(6).setString('hello')) self.assertEqual( """\ type=042, len=011: , options: type=004, len=002: 00:05 type=006, len=005: 68:65:6c:6c:6f""", o.toText())
def test_ok(self): p = kea.Pkt4(kea.DHCPREQUEST, 42) o = kea.Option(kea.DHO_DHCP_AGENT_OPTIONS) self.assertEqual(1, o.use_count) self.assertIs(p, p.addOption(o)) self.assertEqual(2, o.use_count) n = p.getOption(kea.DHO_DHCP_AGENT_OPTIONS) self.assertEqual(kea.DHO_DHCP_AGENT_OPTIONS, n.getType())
def test_filled(self): p = kea.Pkt4(kea.DHCPREQUEST, 42) # 53 p.setLocalAddr('1.2.3.4') p.setRemoteAddr('2.3.4.5') subnet = IPv4Network('10.0.0.0/20') p.addOption( kea.Option(kea.DHO_SUBNET_MASK).setBytes( subnet.netmask.packed)) # 1 p.addOption(kea.Option(kea.DHO_ROUTERS).setBytes( subnet[1].packed)) # 3 p.addOption(kea.Option( kea.DHO_DOMAIN_NAME).setString('test.org')) # 15 p.addOption(kea.Option(kea.DHO_DHCP_LEASE_TIME).setUint32(7200)) # 51 p.addOption(kea.Option( kea.DHO_DHCP_RENEWAL_TIME).setUint32(1800)) # 58 p.addOption(kea.Option( kea.DHO_DHCP_REBINDING_TIME).setUint32(3600)) # 59 self.assertEqual( textwrap.dedent("""\ local_address=1.2.3.4:67, remote_address=2.3.4.5:68, msg_type=DHCPREQUEST (3), transid=0x2a, options: type=001, len=004: ff:ff:f0:00 type=003, len=004: 0a:00:00:01 type=015, len=008: 74:65:73:74:2e:6f:72:67 type=051, len=004: 00:00:1c:20 type=053, len=001: 3 (uint8) type=058, len=004: 00:00:07:08 type=059, len=004: 00:00:0e:10"""), p.toText()) # noqa: E501
def test_uint8(self): o = kea.Option(42).setUint8(5) self.assertEqual('type=042, len=001: 05', o.toText())
def test_badarg_count(self): o = kea.Option(42) self.assert_method_no_arguments(o.getUint8)
def test_badarg_type(self): o = kea.Option(42) with self.assertRaises(TypeError) as cm: o.setString(1) self.assertEqual(("a bytes-like object is required, not 'int'", ), cm.exception.args)
def test_ok(self): o = kea.Option(42) o.setString('Pokémon') self.assertEqual('Pokémon', o.getString())
def test_badarg_type(self): o = kea.Option(42) with self.assertRaises(TypeError) as cm: o.setBytes('foo') self.assertEqual(("argument 1 must be bytes, not str", ), cm.exception.args)
def test_ok(self): o = kea.Option(42) self.assertIs(o, o.setUint32(0x01020304))
def test_ok(self): o = kea.Option(42) self.assertEqual(1, o.use_count)
def test_ok(self): o = kea.Option(42) o.setUint32(0x01020304) self.assertEqual(0x01020304, o.getUint32()) self.assertEqual(b'\x01\x02\x03\x04', o.getBytes())
def test_ok(self): o = kea.Option(42) self.assertIs(o, o.setUint16(0xfeed))
def test_ok(self): o = kea.Option(42) o.setUint16(0xfeed) self.assertEqual(0xfeed, o.getUint16()) self.assertEqual(b'\xfe\xed', o.getBytes())
def test_ok(self): o = kea.Option(42) self.assertIs(42, o.getType())
def test_ok(self): o = kea.Option(42) p = kea.Option(2).setUint8(0xef) self.assertIs(o, o.addOption(p))
def test_ok(self): o = kea.Option(42) o.setBytes(b'123') self.assertEqual(b'123', o.getBytes())
def test_badarg_type(self): o = kea.Option(42) with self.assertRaises(TypeError) as cm: o.getOption('foo') self.assertEqual(("an integer is required (got type str)", ), cm.exception.args)
def test_ok(self): o = kea.Option(42) self.assertIs(o, o.setBytes(b'123'))
def test_ok(self): o = kea.Option(42).addOption(kea.Option(2).setUint8(0xef)) p = o.getOption(2) self.assertIsInstance(p, kea.Option) self.assertEqual(2, p.getType()) self.assertEqual(0xef, p.getUint8())
def test_badarg_count(self): o = kea.Option(42) self.assert_method_one_arg_no_keywords(o.setString)
def test_ok(self): o = kea.Option(42).addOption(kea.Option(2).setUint8(0xef)) wire = o.pack() self.assertIsInstance(wire, bytes) self.assertEqual(b'2a030201ef', codecs.encode(wire, 'hex'))
def test_ok(self): o = kea.Option(42) self.assertIs(o, o.setString('Pokémon'))
def test_empty(self): o = kea.Option(42) self.assertEqual('type=042, len=000: ', o.toText())
def test_ok(self): o = kea.Option(42) o.setUint8(0xfe) self.assertEqual(0xfe, o.getUint8()) self.assertEqual(b'\xfe', o.getBytes())
def test_bytes_option_ok(self): p = kea.Pkt4(kea.DHCPREQUEST, 42) o = kea.Option(25) self.assertIs(p, p.addOption(o)) self.assertEqual(2, o.use_count)