def test_identifier(self): """ Basic check for 'id' lines. """ desc = Microdescriptor.create( {'id': 'rsa1024 Cd47okjCHD83YGzThGBDptXs9Z4'}) self.assertEqual({'rsa1024': 'Cd47okjCHD83YGzThGBDptXs9Z4'}, desc.identifiers) self.assertEqual('rsa1024', desc.identifier_type) self.assertEqual('Cd47okjCHD83YGzThGBDptXs9Z4', desc.identifier) # check when there's multiple key types desc_text = b'\n'.join(( Microdescriptor.content(), b'id rsa1024 Cd47okjCHD83YGzThGBDptXs9Z4', b'id ed25519 50f6ddbecdc848dcc6b818b14d1', )) desc = Microdescriptor(desc_text, validate=True) self.assertEqual( { 'rsa1024': 'Cd47okjCHD83YGzThGBDptXs9Z4', 'ed25519': '50f6ddbecdc848dcc6b818b14d1' }, desc.identifiers) self.assertEqual('ed25519', desc.identifier_type) self.assertEqual('50f6ddbecdc848dcc6b818b14d1', desc.identifier) # check when there's conflicting keys desc_text = b'\n'.join(( Microdescriptor.content(), b'id rsa1024 Cd47okjCHD83YGzThGBDptXs9Z4', b'id rsa1024 50f6ddbecdc848dcc6b818b14d1', )) desc = Microdescriptor(desc_text) self.assertEqual({}, desc.identifiers) exc_msg = "There can only be one 'id' line per a key type, but 'rsa1024' appeared multiple times" self.assertRaisesWith(ValueError, exc_msg, Microdescriptor, desc_text, validate=True)
def test_proceeding_line(self): """ Includes a line prior to the 'onion-key' entry. """ desc_text = b'family Amunet1\n' + Microdescriptor.content() self.assertRaises(ValueError, Microdescriptor, desc_text, True) desc = Microdescriptor(desc_text, validate=False) self.assertEqual(['Amunet1'], desc.family)
def test_proceeding_line(self): """ Includes a line prior to the 'onion-key' entry. """ desc_text = b'family Amunet1\n' + Microdescriptor.content() self.assertRaises(ValueError, Microdescriptor, desc_text, True) desc = Microdescriptor(desc_text, validate = False) self.assertEqual(['Amunet1'], desc.family)
def test_identifier(self): """ Basic check for 'id' lines. """ desc = Microdescriptor.create({'id': 'rsa1024 Cd47okjCHD83YGzThGBDptXs9Z4'}) self.assertEqual({'rsa1024': 'Cd47okjCHD83YGzThGBDptXs9Z4'}, desc.identifiers) self.assertEqual('rsa1024', desc.identifier_type) self.assertEqual('Cd47okjCHD83YGzThGBDptXs9Z4', desc.identifier) # check when there's multiple key types desc_text = b'\n'.join(( Microdescriptor.content(), b'id rsa1024 Cd47okjCHD83YGzThGBDptXs9Z4', b'id ed25519 50f6ddbecdc848dcc6b818b14d1', )) desc = Microdescriptor(desc_text, validate = True) self.assertEqual({'rsa1024': 'Cd47okjCHD83YGzThGBDptXs9Z4', 'ed25519': '50f6ddbecdc848dcc6b818b14d1'}, desc.identifiers) self.assertEqual('ed25519', desc.identifier_type) self.assertEqual('50f6ddbecdc848dcc6b818b14d1', desc.identifier) # check when there's conflicting keys desc_text = b'\n'.join(( Microdescriptor.content(), b'id rsa1024 Cd47okjCHD83YGzThGBDptXs9Z4', b'id rsa1024 50f6ddbecdc848dcc6b818b14d1', )) desc = Microdescriptor(desc_text) self.assertEqual({}, desc.identifiers) exc_msg = "There can only be one 'id' line per a key type, but 'rsa1024' appeared multiple times" self.assertRaisesRegexp(ValueError, exc_msg, Microdescriptor, desc_text, validate = True)
def test_a_line(self): """ Sanity test with both an IPv4 and IPv6 address. """ desc_text = Microdescriptor.content() desc_text += b'\na 10.45.227.253:9001' desc_text += b'\na [fd9f:2e19:3bcf::02:9970]:9001' expected = [ ('10.45.227.253', 9001, False), ('fd9f:2e19:3bcf::02:9970', 9001, True), ] desc = Microdescriptor(desc_text) self.assertEqual(expected, desc.or_addresses)
def test_a_line(self): """ Sanity test with both an IPv4 and IPv6 address. """ desc_text = Microdescriptor.content() desc_text += b'\na 10.45.227.253:9001' desc_text += b'\na [fd9f:2e19:3bcf::02:9970]:9001' expected = [ ('10.45.227.253', 9001, False), ('fd9f:2e19:3bcf::02:9970', 9001, True), ] desc = Microdescriptor(desc_text) self.assertEqual(expected, desc.or_addresses)
def test_family(self): """ Check the family line. """ desc = Microdescriptor.create({'family': 'Amunet1 Amunet2 Amunet3'}) self.assertEqual(['Amunet1', 'Amunet2', 'Amunet3'], desc.family) # try multiple family lines desc_text = Microdescriptor.content() desc_text += b'\nfamily Amunet1' desc_text += b'\nfamily Amunet2' self.assertRaises(ValueError, Microdescriptor, desc_text, True) # family entries will overwrite each other desc = Microdescriptor(desc_text, validate=False) self.assertEqual(1, len(desc.family))
def test_family(self): """ Check the family line. """ desc = Microdescriptor.create({'family': 'Amunet1 Amunet2 Amunet3'}) self.assertEqual(['Amunet1', 'Amunet2', 'Amunet3'], desc.family) # try multiple family lines desc_text = Microdescriptor.content() desc_text += b'\nfamily Amunet1' desc_text += b'\nfamily Amunet2' self.assertRaises(ValueError, Microdescriptor, desc_text, True) # family entries will overwrite each other desc = Microdescriptor(desc_text, validate = False) self.assertEqual(1, len(desc.family))