def test_events_for_withdraw(): """ On-chain withdraw must be done if the channel is closed, regardless of the unsafe region. """ amount = 3 expire = 10 initiator = factories.HOP1 transfer = factories.make_transfer( amount, initiator, factories.ADDR, expire, secret=factories.UNIT_SECRET, ) route = factories.make_route( initiator, amount, ) events = target.events_for_withdraw( transfer, route, ) assert len(events) == 0 route.state = CHANNEL_STATE_CLOSED events = target.events_for_withdraw( transfer, route, ) assert isinstance(events[0], ContractSendWithdraw) assert events[0].channel_address == route.channel_address