def test_get_token_network_address_by_token_address(): test_state = factories.make_chain_state(number_of_channels=1) assert ( views.get_token_network_address_by_token_address( chain_state=test_state.chain_state, token_network_registry_address=factories.make_address(), token_address=factories.make_address(), ) is None ) assert ( views.get_token_network_address_by_token_address( chain_state=test_state.chain_state, token_network_registry_address=test_state.token_network_registry_address, token_address=factories.make_address(), ) is None ) assert ( views.get_token_network_address_by_token_address( chain_state=test_state.chain_state, token_network_registry_address=factories.make_address(), token_address=test_state.token_address, ) is None ) assert ( views.get_token_network_address_by_token_address( chain_state=test_state.chain_state, token_network_registry_address=test_state.token_network_registry_address, token_address=test_state.token_address, ) == test_state.token_network_address )
def test_listings(): test_state = factories.make_chain_state(number_of_channels=3) assert ( views.get_token_network_addresses( chain_state=test_state.chain_state, token_network_registry_address=factories.make_address(), ) == [] ) assert views.get_token_network_addresses( chain_state=test_state.chain_state, token_network_registry_address=test_state.token_network_registry_address, ) == [test_state.token_network_address] assert ( views.get_token_identifiers( chain_state=test_state.chain_state, token_network_registry_address=factories.make_address(), ) == [] ) assert views.get_token_identifiers( chain_state=test_state.chain_state, token_network_registry_address=test_state.token_network_registry_address, ) == [test_state.token_address] assert views.get_token_network_registry_address(chain_state=test_state.chain_state) == [ test_state.token_network_registry_address ]
def test_get_channelstate_by_canonical_identifier(): test_state = factories.make_chain_state(number_of_channels=3) canonical_identifier = test_state.channels[1].canonical_identifier assert (views.get_channelstate_by_canonical_identifier( chain_state=test_state.chain_state, canonical_identifier=canonical_identifier) == test_state.channels[1])
def test_total_token_network_channels(): number_of_channels = 3 test_state = factories.make_chain_state( number_of_channels=number_of_channels) unknown_token_address = factories.make_address() unknown_token_network_registry_address = factories.make_address() assert (views.total_token_network_channels( chain_state=test_state.chain_state, token_network_registry_address=unknown_token_network_registry_address, token_address=unknown_token_address, ) == 0) assert (views.total_token_network_channels( chain_state=test_state.chain_state, token_network_registry_address=unknown_token_network_registry_address, token_address=test_state.token_address, ) == 0) assert (views.total_token_network_channels( chain_state=test_state.chain_state, token_network_registry_address=test_state. token_network_registry_address, token_address=unknown_token_address, ) == 0) assert (views.total_token_network_channels( chain_state=test_state.chain_state, token_network_registry_address=test_state. token_network_registry_address, token_address=test_state.token_address, ) == number_of_channels)
def test_list_all_channelstate(): test_state = factories.make_chain_state(number_of_channels=3) assert sorted(channel.partner_state.address for channel in views.list_all_channelstate( test_state.chain_state)) == sorted( channel.partner_state.address for channel in test_state.channels)
def test_get_channelstate_by_token_network_and_partner(): test_state = factories.make_chain_state(number_of_channels=3) partner_address = test_state.channels[1].partner_state.address assert (views.get_channelstate_by_token_network_and_partner( chain_state=test_state.chain_state, token_network_address=test_state.token_network_address, partner_address=partner_address, ) == test_state.channels[1])
def test_get_token_network_by_address(): test_state = factories.make_chain_state(number_of_channels=3) assert (views.get_token_network_by_address( test_state.chain_state, test_state.token_network_address).address == test_state.token_network_address) unknown_token_network_address = factories.make_address() assert (views.get_token_network_by_address( test_state.chain_state, unknown_token_network_address) is None)
def test_filter_channels_by_partneraddress(): test_state = factories.make_chain_state(number_of_channels=3) partner_addresses = [c.partner_state.address for c in test_state.channels[1:]] assert ( views.filter_channels_by_partneraddress( chain_state=test_state.chain_state, token_network_registry_address=test_state.token_network_registry_address, token_address=test_state.token_address, partner_addresses=partner_addresses, ) == test_state.channels[1:] )
def test_get_our_capacity_for_token_network(): test_state = factories.make_chain_state(number_of_channels=3) chain_state = test_state.chain_state test_state.channels[-1].close_transaction = TransactionExecutionStatus( started_block_number=chain_state.block_number, finished_block_number=chain_state.block_number, result=TransactionExecutionStatus.SUCCESS, ) expected_sum = sum(c.our_state.contract_balance for c in test_state.channels[:-1]) assert (views.get_our_deposits_for_token_network( chain_state=chain_state, token_network_registry_address=test_state. token_network_registry_address, token_address=test_state.token_address, ) == expected_sum)
def test_channelstate_filters(): test_state = factories.make_chain_state(number_of_channels=5) chain_state = test_state.chain_state token_network_registry_address = test_state.token_network_registry_address token_address = test_state.token_address channel_open, channel_closing, channel_closed, channel_settling, channel_settled = ( test_state.channels ) in_progress = TransactionExecutionStatus(started_block_number=chain_state.block_number) done = TransactionExecutionStatus( started_block_number=chain_state.block_number, finished_block_number=chain_state.block_number, result=TransactionExecutionStatus.SUCCESS, ) channel_closing.close_transaction = in_progress channel_closed.close_transaction = done channel_settling.close_transaction = done channel_settling.settle_transaction = in_progress channel_settled.close_transaction = done channel_settled.settle_transaction = done unknown_token = factories.make_address() assert ( views.get_channelstate_open( chain_state=chain_state, token_network_registry_address=token_network_registry_address, token_address=unknown_token, ) == [] ) opened = views.get_channelstate_open( chain_state=chain_state, token_network_registry_address=token_network_registry_address, token_address=token_address, ) assert opened == [channel_open] closing = views.get_channelstate_closing( chain_state=chain_state, token_network_registry_address=token_network_registry_address, token_address=token_address, ) assert closing == [channel_closing] closed = views.get_channelstate_closed( chain_state=chain_state, token_network_registry_address=token_network_registry_address, token_address=token_address, ) assert closed == [channel_closed] settling = views.get_channelstate_settling( chain_state=chain_state, token_network_registry_address=token_network_registry_address, token_address=token_address, ) assert settling == [channel_settling] settled = views.get_channelstate_settled( chain_state=chain_state, token_network_registry_address=token_network_registry_address, token_address=token_address, ) assert settled == [channel_settled]
def test_initiator_skips_used_routes(): defaults = factories.NettingChannelStateProperties( our_state=factories.NettingChannelEndStateProperties.OUR_STATE, partner_state=factories.NettingChannelEndStateProperties(balance=10), open_transaction=factories.TransactionExecutionStatusProperties( started_block_number=1, finished_block_number=2, result="success"), ) properties = [ factories.NettingChannelStateProperties( partner_state=factories.NettingChannelEndStateProperties( privatekey=factories.HOP1_KEY, address=factories.HOP1)) ] test_chain_state = factories.make_chain_state(number_of_channels=1, properties=properties, defaults=defaults) channels = test_chain_state.channel_set bob = channels.channels[0].partner_state.address routes = [[ factories.UNIT_OUR_ADDRESS, bob, factories.UNIT_TRANSFER_TARGET ]] transfer = factories.create( factories.TransferDescriptionProperties( initiator=factories.UNIT_OUR_ADDRESS, target=factories.UNIT_TRANSFER_TARGET)) init_action = factories.initiator_make_init_action( channels=channels, routes=routes, transfer=transfer, estimated_fee=FeeAmount(0)) transition_result = handle_action_init_initiator( chain_state=test_chain_state.chain_state, state_change=init_action) chain_state = transition_result.new_state assert transfer.secrethash in chain_state.payment_mapping.secrethashes_to_task initiator_task = chain_state.payment_mapping.secrethashes_to_task[ transfer.secrethash] initiator_state = initiator_task.manager_state assert len(initiator_state.routes) == 1, "Should have one route" assert len( initiator_state.routes[0].route) == 3, "Route should not be pruned" assert initiator_state.routes[0].route == routes[ 0], "Should have test route" events = transition_result.events assert isinstance(events[-1], SendLockedTransfer) locked_transfer = initiator_state.initiator_transfers[ transfer.secrethash].transfer received_transfer = factories.create( factories.LockedTransferSignedStateProperties( expiration=locked_transfer.lock.expiration, payment_identifier=locked_transfer.payment_identifier, canonical_identifier=locked_transfer.balance_proof. canonical_identifier, initiator=factories.UNIT_OUR_ADDRESS, sender=bob, pkey=factories.HOP1_KEY, message_identifier=factories.make_message_identifier(), routes=[], secret=transfer.secret, )) role = views.get_transfer_role(chain_state=chain_state, secrethash=locked_transfer.lock.secrethash) assert role == "initiator", "Should keep initiator role" failed_route_state_change = ReceiveTransferCancelRoute( transfer=received_transfer, balance_proof=received_transfer.balance_proof, sender=received_transfer.balance_proof.sender, # pylint: disable=no-member ) state_transition(chain_state=chain_state, state_change=failed_route_state_change) reroute_state_change = ActionTransferReroute( transfer=received_transfer, balance_proof=received_transfer.balance_proof, sender=received_transfer.balance_proof.sender, # pylint: disable=no-member secret=factories.make_secret(), ) iteration = state_transition(chain_state=chain_state, state_change=reroute_state_change) assert search_for_item(iteration.events, SendLockedTransfer, {}) is None