コード例 #1
0
    def test_block_listener(self):

        block1 = Mock()
        block2 = Mock()
        block3 = Mock()
        blocks = [block1, block2, block3]

        def side_effect_get_block(block_num=-1):
            return blocks[block_num - 1]

        node_backend = Mock()
        node_backend.get_block.side_effect = side_effect_get_block

        sut = BitcoinScanner([1, 2, 3], node_backend)

        block_observer = Mock()

        sut.blocks_observers.append(block_observer)
        sut.scan()

        self.assertEqual(
            [call(block_num=1), call(block_num=2), call(block_num=3)],
            node_backend.get_block.call_args_list)

        self.assertEqual(
            [call(block1), call(block2), call(block3)],
            block_observer.on_block.call_args_list)
コード例 #2
0
    def test_tx_scanner(self):
        node_backend = Mock()
        block = Mock()
        node_backend.get_block.side_effect = lambda block_num: block

        tx1 = Mock()
        tx2 = Mock()
        tx3 = Mock()

        node_backend.get_transactions_from_block.side_effect = lambda d: [tx1, tx2, tx3]

        sut = BitcoinScanner([123], node_backend)

        tx_observer = Mock()
        sut.transactions_observers.append(tx_observer)

        sut.scan()

        node_backend.get_transactions_from_block.assert_called_once_with(block)
        node_backend.get_block.assert_called_once_with(block_num=123)

        self.assertEqual(
            [call(tx1), call(tx2), call(tx3)],
            tx_observer.on_transaction.call_args_list
        )
コード例 #3
0
    def test_inout_scanner(self):
        node_backend = Mock()
        block = Mock()
        node_backend.get_block.side_effect = lambda block_num: block

        tx = Mock()

        node_backend.get_transactions_from_block.side_effect = lambda d: [tx]

        sut = BitcoinScanner([123], node_backend)

        in1 = Mock()
        in2 = Mock()

        node_backend.get_inputs_from_transaction.side_effect = lambda d: [in1, in2]

        out1 = Mock()
        out2 = Mock()
        out3 = Mock()

        node_backend.get_outputs_from_transaction.side_effect = lambda d: [out1, out2, out3]

        in_observer = Mock()
        out_observer = Mock()
        sut.inputs_observers.append(in_observer)
        sut.outputs_observers.append(out_observer)

        sut.scan()

        node_backend.get_transactions_from_block.assert_called_once_with(block)
        node_backend.get_block.assert_called_once_with(block_num=123)

        self.assertEqual(
            [call(in1), call(in2)],
            in_observer.on_input.call_args_list
        )

        self.assertEqual(
            [call(out1), call(out2), call(out3)],
            out_observer.on_output.call_args_list
        )