def test_bridge_ip_versions_line(self): """ Parses the 'bridge-ip-versions' line, which only appears in bridges. """ desc = get_bridge_extrainfo_descriptor({"bridge-ip-versions": "v4=16,v6=40"}) self.assertEquals({'v4': 16, 'v6': 40}, desc.ip_versions) desc_text = get_bridge_extrainfo_descriptor({"bridge-ip-versions": "v4=24.5"}, content = True) self.assertRaises(ValueError, RelayExtraInfoDescriptor, desc_text)
def test_bridge_ip_versions_line(self): """ Parses the 'bridge-ip-versions' line, which only appears in bridges. """ desc = get_bridge_extrainfo_descriptor( {"bridge-ip-versions": "v4=16,v6=40"}) self.assertEquals({'v4': 16, 'v6': 40}, desc.ip_versions) desc_text = get_bridge_extrainfo_descriptor( {"bridge-ip-versions": "v4=24.5"}, content=True) self.assertRaises(ValueError, RelayExtraInfoDescriptor, desc_text)
def test_bridge_ip_transports_line(self): """ Parses the 'bridge-ip-transports' line, which only appears in bridges. """ desc = get_bridge_extrainfo_descriptor({'bridge-ip-transports': '<OR>=16,<??>=40'}) self.assertEqual({'<OR>': 16, '<??>': 40}, desc.ip_transports) desc = get_bridge_extrainfo_descriptor({'bridge-ip-transports': ''}) self.assertEqual({}, desc.ip_transports) desc_text = get_bridge_extrainfo_descriptor({'bridge-ip-transports': '<OR>=24.5'}, content = True) self.assertRaises(ValueError, RelayExtraInfoDescriptor, desc_text, True)
def test_transport_line(self): """ Basic exercise for both a bridge and relay's transport entry. """ desc = get_bridge_extrainfo_descriptor({'transport': 'obfs3'}) self.assertEqual({'obfs3': (None, None, None)}, desc.transport) self.assertEqual([], desc.get_unrecognized_lines()) desc = get_relay_extrainfo_descriptor({'transport': 'obfs2 83.212.96.201:33570'}) self.assertEqual({'obfs2': ('83.212.96.201', 33570, [])}, desc.transport) self.assertEqual([], desc.get_unrecognized_lines()) # multiple transport lines desc = get_bridge_extrainfo_descriptor({'transport': 'obfs3\ntransport obfs4'}) self.assertEqual({'obfs3': (None, None, None), 'obfs4': (None, None, None)}, desc.transport) self.assertEqual([], desc.get_unrecognized_lines())
def test_transport_line(self): """ Basic exercise for both a bridge and relay's transport entry. """ desc = get_bridge_extrainfo_descriptor({"transport": "obfs3"}) self.assertEquals({"obfs3": (None, None, None)}, desc.transport) self.assertEquals([], desc.get_unrecognized_lines()) desc = get_relay_extrainfo_descriptor({"transport": "obfs2 83.212.96.201:33570"}) self.assertEquals({"obfs2": ("83.212.96.201", 33570, [])}, desc.transport) self.assertEquals([], desc.get_unrecognized_lines()) # multiple transport lines desc = get_bridge_extrainfo_descriptor({"transport": "obfs3\ntransport obfs4"}) self.assertEquals({"obfs3": (None, None, None), "obfs4": (None, None, None)}, desc.transport) self.assertEquals([], desc.get_unrecognized_lines())
def test_transport_line(self): """ Basic exercise for both a bridge and relay's transport entry. """ desc = get_bridge_extrainfo_descriptor({"transport": "obfs3"}) self.assertEquals({"obfs3": (None, None, None)}, desc.transport) self.assertEquals([], desc.get_unrecognized_lines()) desc = get_relay_extrainfo_descriptor( {"transport": "obfs2 83.212.96.201:33570"}) self.assertEquals({"obfs2": ("83.212.96.201", 33570, [])}, desc.transport) self.assertEquals([], desc.get_unrecognized_lines())
def test_minimal_bridge_descriptor(self): """ Basic sanity check that we can parse a descriptor with minimal attributes. """ desc = get_bridge_extrainfo_descriptor() self.assertEquals("ec2bridgereaac65a3", desc.nickname) self.assertEquals("1EC248422B57D9C0BD751892FE787585407479A4", desc.fingerprint) self.assertEquals("006FD96BA35E7785A6A3B8B75FE2E2435A13BDB4", desc.digest()) self.assertEquals([], desc.get_unrecognized_lines()) # check that we don't have crypto fields self.assertRaises(AttributeError, getattr, desc, "signature")
def test_minimal_bridge_descriptor(self): """ Basic sanity check that we can parse a descriptor with minimal attributes. """ desc = get_bridge_extrainfo_descriptor() self.assertEqual('ec2bridgereaac65a3', desc.nickname) self.assertEqual('1EC248422B57D9C0BD751892FE787585407479A4', desc.fingerprint) self.assertEqual('006FD96BA35E7785A6A3B8B75FE2E2435A13BDB4', desc.digest()) self.assertEqual([], desc.get_unrecognized_lines()) # check that we don't have crypto fields self.assertRaises(AttributeError, getattr, desc, 'signature')