def test_dump(self): """ Ensures that the expected dictionary is returned from a call to the dump method (used to back up the routing table). """ contacts = [] blacklist = [BAD_PUBLIC_KEY, ] uri = 'netstring://192.168.0.1:9999/' contacts.append({ 'public_key': PUBLIC_KEY, 'version': self.version, 'uri': uri, }) data_dump = { 'contacts': contacts, 'blacklist': blacklist, } parent_node_id = 'deadbeef' rt = RoutingTable(parent_node_id) rt.restore(data_dump) result = rt.dump() self.assertIn('blacklist', result) self.assertIn('contacts', result) self.assertEqual(1, len(result['blacklist'])) self.assertIn(BAD_PUBLIC_KEY, result['blacklist']) self.assertEqual(1, len(result['contacts'])) self.assertEqual(PUBLIC_KEY, result['contacts'][0]['public_key']) self.assertEqual(self.version, result['contacts'][0]['version']) self.assertEqual(uri, result['contacts'][0]['uri']) # check it can be serialised into JSON dump = json.dumps(result) self.assertIsInstance(dump, str)