def test_pfs_rejects_capacity_update_with_wrong_nonces( addresses: List[Address], pathfinding_service_mocked_listeners: PathfindingService, ): pathfinding_service_mocked_listeners.chain_id = 1 token_network = TokenNetwork( token_network_address=DEFAULT_TOKEN_NETWORK_ADDRESS, token_address=DEFAULT_TOKEN_ADDRESS, ) pathfinding_service_mocked_listeners.token_networks[ token_network.address] = token_network token_network.handle_channel_opened_event( channel_identifier=ChannelIdentifier(0), participant1=addresses[0], participant2=addresses[1], settle_timeout=15, ) token_network.handle_channel_new_deposit_event( channel_identifier=ChannelIdentifier(0), receiver=addresses[0], total_deposit=100, ) token_network.handle_channel_new_deposit_event( channel_identifier=ChannelIdentifier(0), receiver=addresses[1], total_deposit=100, ) # Check that the new channel has id == 0 assert token_network.channel_id_to_addresses[ChannelIdentifier(0)] == ( addresses[0], addresses[1], ) message = get_updatepfs_message( updating_participant=addresses[0], other_participant=addresses[1], ) # Check first capacity update succeeded pathfinding_service_mocked_listeners.on_pfs_update(message) view_to_partner, view_from_partner = token_network.get_channel_views_for_partner( channel_identifier=ChannelIdentifier(0), updating_participant=addresses[0], other_participant=addresses[1], ) assert view_to_partner.capacity == 90 assert view_to_partner.update_nonce == 1 assert view_from_partner.capacity == 110 assert view_from_partner.update_nonce == 0 # Send the same Capacity Update again - leads to an exception with pytest.raises(InvalidCapacityUpdate) as exinfo: pathfinding_service_mocked_listeners.on_pfs_update(message) assert 'Capacity Update already received' in str(exinfo.value)
def test_pfs_rejects_capacity_update_with_wrong_nonces( pathfinding_service_web3_mock, ): pathfinding_service_web3_mock.chain_id = ChainID(1) token_network = TokenNetwork( token_network_address=DEFAULT_TOKEN_NETWORK_ADDRESS) pathfinding_service_web3_mock.token_networks[ token_network.address] = token_network token_network.handle_channel_opened_event( channel_identifier=ChannelID(0), participant1=private_key_to_address(PRIVAT_KEY_EXAMPLE_1), participant2=private_key_to_address(PRIVAT_KEY_EXAMPLE_2), settle_timeout=15, ) token_network.handle_channel_new_deposit_event( channel_identifier=ChannelID(0), receiver=private_key_to_address(PRIVAT_KEY_EXAMPLE_1), total_deposit=100, ) token_network.handle_channel_new_deposit_event( channel_identifier=ChannelID(0), receiver=private_key_to_address(PRIVAT_KEY_EXAMPLE_2), total_deposit=100, ) # Check that the new channel has id == 0 assert token_network.channel_id_to_addresses[ChannelID(0)] == ( private_key_to_address(PRIVAT_KEY_EXAMPLE_1), private_key_to_address(PRIVAT_KEY_EXAMPLE_2), ) message = get_updatepfs_message( updating_participant=private_key_to_address(PRIVAT_KEY_EXAMPLE_1), other_participant=private_key_to_address(PRIVAT_KEY_EXAMPLE_2), privkey_signer=PRIVAT_KEY_EXAMPLE_1, ) # Check first capacity update succeeded pathfinding_service_web3_mock.on_pfs_update(message) view_to_partner, view_from_partner = token_network.get_channel_views_for_partner( channel_identifier=ChannelID(0), updating_participant=private_key_to_address(PRIVAT_KEY_EXAMPLE_1), other_participant=private_key_to_address(PRIVAT_KEY_EXAMPLE_2), ) assert view_to_partner.capacity == 90 assert view_to_partner.update_nonce == 1 assert view_from_partner.capacity == 110 assert view_from_partner.update_nonce == 0 # Send the same Capacity Update again - leads to an exception with pytest.raises(InvalidCapacityUpdate) as exinfo: pathfinding_service_web3_mock.on_pfs_update(message) assert "Capacity Update already received" in str(exinfo.value)