def test_channel_with_self(raiden_network, settle_timeout, blockchain_type):
    app0, = raiden_network  # pylint: disable=unbalanced-tuple-unpacking

    token_address = app0.raiden.chain.default_registry.token_addresses()[0]

    assert len(app0.raiden.token_to_channelgraph[token_address].address_to_channel) == 0

    graph0 = app0.raiden.chain.manager_by_token(token_address)

    with pytest.raises(SamePeerAddress) as excinfo:
        graph0.new_netting_channel(
            app0.raiden.address,
            app0.raiden.address,
            settle_timeout,
        )
        assert 'Peer1 and peer2 must not be equal' in str(excinfo.value)

    if blockchain_type == 'tester':
        with pytest.raises(TransactionFailed):
            graph0.proxy.newChannel(app0.raiden.address, settle_timeout)
    else:
        tx = graph0.proxy.newChannel(app0.raiden.address, settle_timeout)
        # wait to make sure we get the receipt
        wait_until_block(app0.raiden.chain, app0.raiden.chain.block_number() + 5)
        assert check_transaction_threw(app0.raiden.chain.client, tx) is True
Esempio n. 2
0
def test_transact_throws_opcode(deploy_client, blockchain_backend):
    """ The receipt status field of a transaction that threw is 0x0 """
    contract_proxy = deploy_rpc_test_contract(deploy_client)

    address = contract_proxy.address
    assert deploy_client.eth_getCode(address) != '0x'

    gas = min(contract_proxy.fail.estimate_gas(), deploy_client.gaslimit())
    transaction_hex = contract_proxy.fail.transact(startgas=gas)
    transaction = transaction_hex.decode('hex')

    deploy_client.poll(transaction)

    assert check_transaction_threw(deploy_client, transaction_hex), 'must not be empty'
Esempio n. 3
0
def test_transact_opcode_oog(deploy_client, blockchain_backend):
    """ The receipt status field of a transaction that did NOT throw is 0x0. """
    contract_proxy = deploy_rpc_test_contract(deploy_client)

    address = contract_proxy.address
    assert deploy_client.eth_getCode(address) != '0x'

    gas = min(contract_proxy.loop.estimate_gas(1000) // 2, deploy_client.gaslimit)
    transaction_hex = contract_proxy.loop.transact(1000, startgas=gas)
    transaction = transaction_hex.decode('hex')

    deploy_client.poll(transaction)

    assert check_transaction_threw(deploy_client, transaction_hex), 'must not be empty'
Esempio n. 4
0
def test_transact_opcode(deploy_client, blockchain_backend):
    """ The receipt status field of a transaction that did not throw is 0x1 """
    contract_proxy = deploy_rpc_test_contract(deploy_client)

    address = contract_proxy.address
    assert deploy_client.eth_getCode(address) != '0x'

    gas = contract_proxy.ret.estimate_gas() * 2

    transaction_hex = contract_proxy.ret.transact(startgas=gas)
    transaction = transaction_hex.decode('hex')

    deploy_client.poll(transaction)

    assert check_transaction_threw(deploy_client, transaction_hex) is None, 'must be empty'
Esempio n. 5
0
def test_transact_throws_opcode(deploy_client, blockchain_backend):
    """ The last opcode of a transaction that threw is not STOP. """
    contract_proxy = deploy_rpc_test_contract(deploy_client)

    address = contract_proxy.address
    assert deploy_client.eth_getCode(address) != '0x'

    gas = contract_proxy.fail.estimate_gas()

    transaction_hex = contract_proxy.fail.transact(startgas=gas)
    transaction = transaction_hex.decode('hex')

    deploy_client.poll(transaction)

    assert check_transaction_threw(deploy_client,
                                   transaction_hex), 'must not be empty'