Exemple #1
0
 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)
Exemple #2
0
    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)
Exemple #4
0
    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()