Esempio n. 1
0
    async def setUp(self) -> None:
        pub_key = "a04f30a45aae413d0ca0f219b4dcb7049857bc3f91a6351288cce603a2c9646294a02b987bf6586b370b2c22d74662355677007a14238bb037aedf41c2d08866"
        opts = gateway_helpers.get_gateway_opts(
            8000,
            include_default_eth_args=True,
            pub_key=pub_key,
        )
        if opts.use_extensions:
            helpers.set_extensions_parallelism()
        node_ssl_service = MockNodeSSLService(EthGatewayNode.NODE_TYPE,
                                              MagicMock())
        self.node = EthGatewayNode(opts, node_ssl_service)
        self.feed_manager = FeedManager(self.node)
        self.node.feed_manager = self.feed_manager
        self.rpc = SubscriptionRpcHandler(self.node, self.feed_manager,
                                          Case.SNAKE)
        self.feed_name = NewTransactionFeed.NAME
        self.node.init_live_feeds()

        self.feed_service_model = FeedServiceModelBase(
            allow_filtering=True, available_fields=["all"])
        self.base_feed_service_model = BdnFeedServiceModelConfigBase(
            expire_date="2999-01-01", feed=self.feed_service_model)
        self.node.account_model = BdnAccountModelBase(
            account_id="account_id",
            certificate="",
            logical_account_name="test",
            new_transaction_streaming=self.base_feed_service_model,
        )
Esempio n. 2
0
    async def test_subscribe_to_feed_with_filtering_not_allowed(self):
        feed_service_model = FeedServiceModelBase(
            allow_filtering=False,
            available_fields=["all"]
        )
        base_feed_service_model = BdnFeedServiceModelConfigBase(
            expire_date="2999-01-01",
            feed=feed_service_model
        )
        self.gateway.account_model.new_transaction_streaming = base_feed_service_model

        self.gateway.account_model.get_feed_service_config_by_name = MagicMock(
            return_value=self.gateway.account_model.new_transaction_streaming
        )

        feed = TestFeed("bar")
        feed.FILTERS = ["to", "field2"]

        self.feed_manager.register_feed(feed)
        subscribe_request1 = BxJsonRpcRequest(
            "1", RpcRequestType.SUBSCRIBE, ["bar", {"filters": "to = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"}],
        )

        with self.assertRaises(RpcAccountIdError):
            rpc_handler = self.rpc.get_request_handler(subscribe_request1)
            await rpc_handler.process_request()
Esempio n. 3
0
    async def test_subscribe_to_feed_no_feed_service(self):
        # allow feed if service is not defined (old account)
        self.node.account_model.new_transaction_streaming = BdnFeedServiceModelConfigBase(
            expire_date="2999-01-01")

        subscribe_request1 = BxJsonRpcRequest(
            "1",
            RpcRequestType.SUBSCRIBE,
            [self.feed_name, {}],
        )
        subscribe_request2 = BxJsonRpcRequest(
            "1",
            RpcRequestType.SUBSCRIBE,
            [
                self.feed_name, {
                    "include": ["tx_hash", "tx_contents.gas_price"]
                }
            ],
        )

        rpc_handler = self.rpc.get_request_handler(subscribe_request1)
        result = await rpc_handler.process_request()
        self.assertTrue(result)
        rpc_handler = self.rpc.get_request_handler(subscribe_request2)
        result = await rpc_handler.process_request()
        self.assertTrue(result)
Esempio n. 4
0
    async def setUp(self) -> None:
        self.feed_service_model = FeedServiceModelBase(
            allow_filtering=True, available_fields=["all"])
        self.base_feed_service_model = BdnFeedServiceModelConfigBase(
            expire_date="2999-01-01", feed=self.feed_service_model)
        account_model = BdnAccountModelBase(
            "account_id",
            "account_name",
            "fake_certificate",
            tier_name="Developer",
            new_transaction_streaming=self.base_feed_service_model,
            new_pending_transaction_streaming=self.base_feed_service_model,
            on_block_feed=self.base_feed_service_model,
            transaction_receipts_feed=self.base_feed_service_model)
        gateway_opts = gateway_helpers.get_gateway_opts(8000, ws=True)
        gateway_opts.set_account_options(account_model)

        self.gateway_node = MockGatewayNode(gateway_opts)
        self.gateway_node.NODE_TYPE = NodeType.INTERNAL_GATEWAY
        self.transaction_streamer_peer = OutboundPeerModel(
            "127.0.0.1", 8006, node_type=NodeType.INTERNAL_GATEWAY)
        self.gateway_node.requester = ThreadedRequestService(
            "mock_thread_service",
            self.gateway_node.alarm_queue,
            constants.THREADED_HTTP_POOL_SLEEP_INTERVAL_S,
        )
        self.gateway_node.requester.start()
        self.server = WsServer(constants.LOCALHOST, 8005,
                               self.gateway_node.feed_manager,
                               self.gateway_node)
        self.ws_uri = f"ws://{constants.LOCALHOST}:8005"

        await self.server.start()
        self.gateway_node.get_ws_server_status = MagicMock(return_value=True)
Esempio n. 5
0
 def test_cloud_api_account_setting(self):
     new_account_model = BdnAccountModelBase(
         "fake_id",
         "fake_name",
         "fake_cert",
         tx_paid=BdnQuotaServiceModelConfigBase(),
         block_paid=BdnQuotaServiceModelConfigBase(),
         cloud_api=BdnFeedServiceModelConfigBase(
             expire_date=str(date.today() + timedelta(days=100)), ),
         new_transaction_streaming=BdnFeedServiceModelConfigBase())
     new_account_model_json = json_encoder.to_json(new_account_model)
     old_account_model = model_loader.load_model_from_json(
         BdnOldAccountModelBase, new_account_model_json)
     self.assertTrue(new_account_model.cloud_api.is_service_valid())
     self.assertTrue(old_account_model.cloud_api.is_service_valid())
     self.assertFalse(
         old_account_model.new_transaction_streaming.is_service_valid())
Esempio n. 6
0
    async def test_subscribe_to_feed_with_specific_available_field(self):
        feed_service_model = FeedServiceModelBase(
            allow_filtering=True, available_fields=["tx_contents.nonce"])
        base_feed_service_model = BdnFeedServiceModelConfigBase(
            expire_date="2999-01-01", feed=feed_service_model)
        self.node.account_model.new_transaction_streaming = base_feed_service_model

        subscribe_request1 = BxJsonRpcRequest(
            "1",
            RpcRequestType.SUBSCRIBE,
            [self.feed_name, {
                "include": ["tx_contents.nonce"]
            }],
        )

        rpc_handler = self.rpc.get_request_handler(subscribe_request1)
        result = await rpc_handler.process_request()
        self.assertTrue(result)
Esempio n. 7
0
    def setUp(self) -> None:
        self.gateway = MockGatewayNode(gateway_helpers.get_gateway_opts(8000))
        self.feed_manager = FeedManager(self.gateway)
        self.rpc = SubscriptionRpcHandler(self.gateway, self.feed_manager,
                                          Case.SNAKE)

        self.feed_service_model = FeedServiceModelBase(
            allow_filtering=True, available_fields=["all"])
        self.base_feed_service_model = BdnFeedServiceModelConfigBase(
            expire_date="2999-01-01", feed=self.feed_service_model)
        self.gateway.account_model = BdnAccountModelBase(
            account_id="account_id",
            certificate="",
            logical_account_name="test",
            new_transaction_streaming=self.base_feed_service_model,
        )
        self.gateway.account_model.get_feed_service_config_by_name = MagicMock(
            return_value=self.gateway.account_model.new_transaction_streaming)
Esempio n. 8
0
 def get_gateway_opts(self) -> GatewayOpts:
     feed_service_model = FeedServiceModelBase(allow_filtering=True,
                                               available_fields=["all"])
     base_feed_service_model = BdnFeedServiceModelConfigBase(
         expire_date="2999-01-01", feed=feed_service_model)
     self._account_model = BdnAccountModelBase(
         account_id="",
         logical_account_name="",
         certificate="",
         expire_date=utils_constants.DEFAULT_EXPIRATION_DATE.isoformat(),
         cloud_api=BdnServiceModelConfigBase(
             msg_quota=None,
             permit=BdnServiceModelBase(service_type=BdnServiceType.PERMIT),
             expire_date=utils_constants.DEFAULT_EXPIRATION_DATE.isoformat(
             )),
         new_transaction_streaming=base_feed_service_model,
         new_pending_transaction_streaming=base_feed_service_model,
         on_block_feed=base_feed_service_model,
         new_block_streaming=base_feed_service_model,
         transaction_state_feed=base_feed_service_model,
         blockchain_protocol="Ethereum",
         blockchain_network="Mainnet",
     )