def test_events_for_close_secret_unknown(): """ Channel must not be closed when the unsafe region is reached and the secret is not known. """ amount = 3 expire = 10 initiator = factories.HOP1 our_address = factories.ADDR from_route, from_transfer = factories.make_from( amount, our_address, expire, initiator, ) state = TargetState( our_address, from_route, from_transfer, block_number=expire, ) events = target.events_for_close(state) assert not events events = target.events_for_close(state) assert not events assert from_transfer.secret is None
def test_events_for_close(): """ Channel must be closed when the unsafe region is reached and the secret is known. """ amount = 3 expire = 10 initiator = factories.HOP1 our_address = factories.ADDR secret = factories.UNIT_SECRET from_route, from_transfer = factories.make_from( amount, our_address, expire, initiator, secret=secret, ) safe_to_wait = expire - from_route.reveal_timeout - 1 unsafe_to_wait = expire - from_route.reveal_timeout state = TargetState( our_address, from_route, from_transfer, block_number=safe_to_wait, ) events = target.events_for_close(state) assert not events state.block_number = unsafe_to_wait events = target.events_for_close(state) assert events assert isinstance(events[0], ContractSendChannelClose) assert from_transfer.secret is not None assert events[0].channel_address == from_route.channel_address
def test_events_for_close_secret_unknown(): """ Channel must not be closed when the unsafe region is reached and the secret is not known. """ amount = 3 expire = 10 initiator = factories.HOP1 transfer = factories.make_transfer( amount, initiator, factories.ADDR, expire, ) route = factories.make_route( initiator, amount, ) safe_block = expire - route.reveal_timeout - 1 events = target.events_for_close( transfer, route, safe_block, ) assert len(events) == 0 unsafe_block = expire - route.reveal_timeout events = target.events_for_close( transfer, route, unsafe_block, ) assert len(events) == 0 assert transfer.secret is None
def test_events_for_close(): """ Channel must be closed when the unsafe region is reached. """ amount = 3 expire = 10 transfer = factories.make_transfer( amount, factories.ADDR, expire, ) route = factories.make_route( factories.HOP1, amount, ) safe_block = expire - route.reveal_timeout - 1 events = target.events_for_close( transfer, route, safe_block, ) assert len(events) == 0 unsafe_block = expire - route.reveal_timeout events = target.events_for_close( transfer, route, unsafe_block, ) assert isinstance(events[0], ContractSendChannelClose) assert events[0].channel_address == route.channel_address
def test_events_for_close(): """ Channel must be closed when the unsafe region is reached and the secret is known. """ amount = 3 expire = 10 initiator = factories.HOP1 our_address = factories.ADDR secret = factories.UNIT_SECRET from_route, from_transfer = factories.make_from( amount, our_address, expire, initiator, secret=secret, ) safe_to_wait = expire - from_route.reveal_timeout - 1 unsafe_to_wait = expire - from_route.reveal_timeout state = TargetState( our_address, from_route, from_transfer, block_number=safe_to_wait, ) events = target.events_for_close(state) assert not events state.block_number = unsafe_to_wait events = target.events_for_close(state) assert events assert isinstance(events[0], ContractSendChannelClose) assert from_transfer.secret is not None assert events[0].channel_address == from_route.channel_address
def test_events_for_close_secret_unknown(): """ Channel must not be closed when the unsafe region is reached and the secret is not known. """ amount = 3 expire = 10 initiator = factories.HOP1 our_address = factories.ADDR from_route, from_transfer = factories.make_from( amount, our_address, expire, initiator, ) state = TargetState( our_address, from_route, from_transfer, block_number=expire, ) events = target.events_for_close(state) assert not events events = target.events_for_close(state) assert not events assert from_transfer.secret is None
def test_events_for_close_secret_unknown(): """ Channel must not be closed when the unsafe region is reached and the secret is not known. """ amount = 3 block_number = 10 expiration = block_number + 30 initiator = factories.HOP1 target_address = UNIT_TRANSFER_TARGET from_channel = factories.make_channel( our_address=target_address, partner_address=UNIT_TRANSFER_SENDER, partner_balance=amount, ) from_route = factories.route_from_channel(from_channel) from_transfer = factories.make_signed_transfer_for( from_channel, amount, initiator, target_address, expiration, UNIT_SECRET, ) channel.handle_receive_lockedtransfer( from_channel, from_transfer, ) state = TargetTransferState(from_route, from_transfer) events = target.events_for_close(state, from_channel, expiration) assert not events
def test_events_for_close_secret_unknown(): """ Channel must not be closed when the unsafe region is reached and the secret is not known. """ amount = 3 block_number = 10 expiration = block_number + 30 initiator = factories.HOP1 target_address = UNIT_TRANSFER_TARGET from_channel = factories.make_channel( our_address=target_address, partner_address=UNIT_TRANSFER_SENDER, partner_balance=amount, ) from_route = factories.route_from_channel(from_channel) from_transfer = factories.make_signed_transfer_for( from_channel, amount, initiator, target_address, expiration, UNIT_SECRET, ) channel.handle_receive_lockedtransfer( from_channel, from_transfer, ) state = TargetTransferState(from_route, from_transfer) events = target.events_for_close(state, from_channel, expiration) assert not events
def test_events_for_close(): """ Channel must be closed when the unsafe region is reached and the secret is known. """ amount = 3 block_number = 10 expiration = block_number + 30 initiator = HOP1 target_address = UNIT_TRANSFER_TARGET from_channel = factories.make_channel( our_address=target_address, partner_address=UNIT_TRANSFER_SENDER, partner_balance=amount, ) from_route = factories.route_from_channel(from_channel) from_transfer = factories.make_signed_transfer_for( from_channel, amount, initiator, target_address, expiration, UNIT_SECRET, ) channel.handle_receive_lockedtransfer( from_channel, from_transfer, ) channel.register_secret(from_channel, UNIT_SECRET, UNIT_SECRETHASH) safe_to_wait = expiration - from_channel.reveal_timeout - 1 unsafe_to_wait = expiration - from_channel.reveal_timeout state = TargetTransferState(from_route, from_transfer) events = target.events_for_close(state, from_channel, safe_to_wait) assert not events events = target.events_for_close(state, from_channel, unsafe_to_wait) assert events assert isinstance(events[0], ContractSendChannelClose) assert events[0].channel_identifier == from_route.channel_identifier
def test_events_for_close(): """ Channel must be closed when the unsafe region is reached and the secret is known. """ amount = 3 block_number = 10 expiration = block_number + 30 initiator = HOP1 target_address = UNIT_TRANSFER_TARGET from_channel = factories.make_channel( our_address=target_address, partner_address=UNIT_TRANSFER_SENDER, partner_balance=amount, ) from_route = factories.route_from_channel(from_channel) from_transfer = factories.make_signed_transfer_for( from_channel, amount, initiator, target_address, expiration, UNIT_SECRET, ) channel.handle_receive_lockedtransfer( from_channel, from_transfer, ) channel.register_secret(from_channel, UNIT_SECRET, UNIT_SECRETHASH) safe_to_wait = expiration - from_channel.reveal_timeout - 1 unsafe_to_wait = expiration - from_channel.reveal_timeout state = TargetTransferState(from_route, from_transfer) events = target.events_for_close(state, from_channel, safe_to_wait) assert not events events = target.events_for_close(state, from_channel, unsafe_to_wait) assert events assert isinstance(events[0], ContractSendChannelClose) assert events[0].channel_identifier == from_route.channel_identifier
def test_events_for_close(): """ Channel must be closed when the unsafe region is reached and the secret is known. """ amount = 3 expire = 10 initiator = factories.HOP1 secret = factories.UNIT_SECRET transfer = factories.make_transfer( amount, initiator, factories.ADDR, expire, secret=secret, ) route = factories.make_route( initiator, amount, ) safe_block = expire - route.reveal_timeout - 1 events = target.events_for_close( transfer, route, safe_block, ) assert len(events) == 0 unsafe_block = expire - route.reveal_timeout events = target.events_for_close( transfer, route, unsafe_block, ) assert isinstance(events[0], ContractSendChannelClose) assert transfer.secret is not None assert events[0].channel_address == route.channel_address