def test_oid(self): oid1 = ObjectIdentifier(4, 2, 0, 0, (1, 1, 1, 0)) self.assertEqual(str(oid1), '.1.3.6.1.2.1.1.1.0') self.assertEqual(oid1.size, 20) print(oid1) oid2 = ObjectIdentifier.from_bytes(oid1.to_bytes('!'), '!') # round-trip self.assertEqual(str(oid2), '.1.3.6.1.2.1.1.1.0') self.assertEqual(oid2.size, 20) oid_literal = ObjectIdentifier(4, 0, 0, 0, (1, 2, 3, 4)) self.assertEqual(str(oid_literal), '.1.2.3.4') print(oid_literal) oid_small = ObjectIdentifier(0, 0, 0, 0, ()) self.assertEqual(oid_small.size, 4) dell_oid = ObjectIdentifier(n_subid=7, prefix_=4, include=0, reserved=0, subids=(1, 6027, 3, 10, 1, 2, 9)) check = ObjectIdentifier.from_bytes(dell_oid.to_bytes('!'), '!') self.assertEqual(check, dell_oid)
def test_oid_zero(self): null_oid_ints = (0, 0, 0, 0) null_oid_bytes = struct.pack('!BBBB', *null_oid_ints) null_oid = ObjectIdentifier.from_bytes(null_oid_bytes, '!') self.assertEqual(null_oid.n_subid, 0) self.assertEqual(null_oid.prefix_, 0) self.assertEqual(null_oid.include, 0) self.assertEqual(null_oid.reserved, 0) self.assertIs(null_oid.subids, ())
def test_bad_unpack(self): with self.assertRaises(struct.error): # garbage data. Don't assume '' -> 0, 0, 0... ObjectIdentifier.from_bytes(b'', '') with self.assertRaises(struct.error): # n_subid = 4 -> should be at least 20 bytes -> input is too short. ObjectIdentifier.from_bytes(b'\x04\x00\x00\x00', '!') with self.assertRaises(struct.error): # Bad format specifier. ObjectIdentifier.from_bytes(b'\x00\x00\x00\x00', '-')