def test_web_api_forward(self): # Test _msgforward local_node = self._create_node(8807) gossip = Gossip(local_node) path = tempfile.mkdtemp() ledger = Journal(gossip, data_directory=path, genesis_ledger=True) # Create peers for the message to be forwarded to node1 = self._create_node(8881) node2 = self._create_node(8882) node1.is_peer = True node2.is_peer = True gossip.add_node(node1) gossip.add_node(node2) validator = TestValidator(ledger) forward_page = ForwardPage(validator) # Create message to use and the data to forward msg = shutdown_message.ShutdownMessage() msg.sign_from_node(local_node) data = msg.dump() # Post /forward request = self._create_post_request("forward", data) r = yaml.load(forward_page.do_post(request)) self.assertEquals(r, data) self.assertIn(msg.Identifier, node1.MessageQ.Messages) self.assertIn(msg.Identifier, node2.MessageQ.Messages)
def test_web_api_forward(self): # Test _msgforward validator = self._create_validator() # Create peers for the message to be forwarded to node1 = self._create_node(8881) node2 = self._create_node(8882) node1.is_peer = True node2.is_peer = True validator.gossip.add_node(node1) validator.gossip.add_node(node2) forward_page = ForwardPage(validator) # Create message to use and the data to forward msg = shutdown_message.ShutdownMessage() msg.sign_from_node(validator.gossip.LocalNode) data = msg.dump() # Post /forward request = self._create_post_request("forward", data) r = yaml.load(forward_page.do_post(request)) self.assertEquals(r, data) self.assertIn(msg.Identifier, node1.MessageQ.Messages) self.assertIn(msg.Identifier, node2.MessageQ.Messages) # Create an unknown error message to use msg = ErrorMessage({'error': "an unknown error message"}) msg.sign_from_node(validator.gossip.LocalNode) data = msg.dump() # Post an unknown error messsage request = self._create_post_request("forward", data) r = yaml.load(forward_page.do_post(request)) self.assertEquals(r['status'], http.NOT_FOUND)
def test_web_api_forward(self): # Test _msgforward validator = self._create_validator() # Create peers for the message to be forwarded to node1 = self._create_node(8881) node2 = self._create_node(8882) node1.is_peer = True node2.is_peer = True validator.gossip.add_node(node1) validator.gossip.add_node(node2) forward_page = ForwardPage(validator) # Create message to use and the data to forward msg = shutdown_message.ShutdownMessage() msg.sign_from_node(validator.gossip.LocalNode) data = msg.dump() # Post /forward request = self._create_post_request("forward", data) r = yaml.load(forward_page.do_post(request)) self.assertEqual(r, data) self.assertIn(msg.Identifier, node1.MessageQ.Messages) self.assertIn(msg.Identifier, node2.MessageQ.Messages) # Create an unknown error message to use msg = ErrorMessage({'error': "an unknown error message"}) msg.sign_from_node(validator.gossip.LocalNode) data = msg.dump() # Post an unknown error messsage request = self._create_post_request("forward", data) r = yaml.load(forward_page.do_post(request)) self.assertEqual(r['status'], http.NOT_FOUND)
def getChild(self, name, request): out = Resource.getChild(self, name, request) LOGGER.warning("%s - %s", request.path, out.__class__.__name__) if isinstance(out, NoResource): # this matches the pre-existing behavior # of accepting any post as a message forward components = request.path.split('/') while components and components[0] == '': components.pop(0) LOGGER.warning("%s - %d", components, len(components)) if len(components) > 0: out = ForwardPage(self.validator, components[0]) return out
def test_web_api_forward(self): # Test _msgforward local_node = self._create_node(8807) path = tempfile.mkdtemp() ledger = Journal(local_node, DataDirectory=path, GenesisLedger=True) # Create peers for the message to be forwarded to node1 = self._create_node(8881) node2 = self._create_node(8882) node1.is_peer = True node2.is_peer = True ledger.add_node(node1) ledger.add_node(node2) validator = TestValidator(ledger) forward_page = ForwardPage(validator) # Create message to use and the data to forward msg = shutdown_message.ShutdownMessage() msg.sign_from_node(local_node) data = msg.dump() # Post /forward request = self._create_post_request("forward", data) r = yaml.load(forward_page.do_post(request)) self.assertEquals(r, data) self.assertIn(msg.Identifier, node1.MessageQ.Messages) self.assertIn(msg.Identifier, node2.MessageQ.Messages)
def __init__(self, validator, static_dir=None): Resource.__init__(self) self.validator = validator if static_dir is not None and os.path.exists(static_dir): for f in os.listdir(static_dir): self.putChild(f, File(os.path.join(static_dir, f))) self.putChild('block', BlockPage(validator)) self.putChild('statistics', StatisticsPage(validator)) self.putChild('store', StorePage(validator)) self.putChild('status', StatusPage(validator)) self.putChild('transaction', TransactionPage(validator)) self.putChild('forward', ForwardPage(validator)) self.putChild('command', CommandPage(validator)) validator.web_thread_pool.start()