Пример #1
0
def test_create_fail_invalid_abi(testnet):
    with pytest.raises(
            erc20tokensdk.SdkConfigurationError,
            match="invalid token contract abi: 'abi' is not a list"):
        erc20tokensdk.SDK(provider_endpoint_uri=testnet.provider_endpoint_uri,
                          contract_address=testnet.address)
    with pytest.raises(
            erc20tokensdk.SdkConfigurationError,
            match="invalid token contract abi: 'abi' is not a list"):
        erc20tokensdk.SDK(provider_endpoint_uri=testnet.provider_endpoint_uri,
                          contract_address=testnet.address,
                          contract_abi={})
    with pytest.raises(
            erc20tokensdk.SdkConfigurationError,
            match="invalid token contract abi: 'abi' is not a list"):
        erc20tokensdk.SDK(provider_endpoint_uri=testnet.provider_endpoint_uri,
                          contract_address=testnet.address,
                          contract_abi='bad')
    with pytest.raises(
            erc20tokensdk.SdkConfigurationError,
            match="invalid token contract abi: The elements of 'abi' "
            "are not all dictionaries"):
        erc20tokensdk.SDK(provider_endpoint_uri=testnet.provider_endpoint_uri,
                          contract_address=testnet.address,
                          contract_abi=['bad'])
Пример #2
0
def test_create_fail_empty_endpoint():
    with pytest.raises(
            erc20tokensdk.SdkConfigurationError,
            match='either provider or provider endpoint must be provided'):
        erc20tokensdk.SDK()
    with pytest.raises(
            erc20tokensdk.SdkConfigurationError,
            match='either provider or provider endpoint must be provided'):
        erc20tokensdk.SDK(provider_endpoint_uri='')
Пример #3
0
def test_create_fail_keyfile(testnet):
    # file missing
    with pytest.raises(
            erc20tokensdk.SdkConfigurationError,
            match=
            "cannot load keyfile: \[Errno 2\] No such file or directory: 'missing.json'"
    ):
        erc20tokensdk.SDK(provider_endpoint_uri=testnet.provider_endpoint_uri,
                          contract_address=testnet.address,
                          contract_abi=testnet.contract_abi,
                          keyfile='missing.json')

    # not json
    with open(TEST_KEYFILE, 'w+') as f:
        f.write('not json')
    with pytest.raises(
            erc20tokensdk.SdkConfigurationError,
            match="cannot load keyfile: No JSON object could be decoded"):
        erc20tokensdk.SDK(provider_endpoint_uri=testnet.provider_endpoint_uri,
                          contract_address=testnet.address,
                          contract_abi=testnet.contract_abi,
                          keyfile=TEST_KEYFILE)

    # json, but invalid format
    with open(TEST_KEYFILE, 'w+') as f:
        f.write('[]')
    with pytest.raises(erc20tokensdk.SdkConfigurationError,
                       match="cannot load keyfile: invalid keyfile format"):
        erc20tokensdk.SDK(provider_endpoint_uri=testnet.provider_endpoint_uri,
                          contract_address=testnet.address,
                          contract_abi=testnet.contract_abi,
                          keyfile=TEST_KEYFILE)
    os.remove(TEST_KEYFILE)

    # good keyfile, wrong password
    erc20tokensdk.create_keyfile(testnet.private_key, TEST_PASSWORD,
                                 TEST_KEYFILE)
    with pytest.raises(
            erc20tokensdk.SdkConfigurationError,
            match='cannot load keyfile: MAC mismatch. Password incorrect?'):
        erc20tokensdk.SDK(provider_endpoint_uri=testnet.provider_endpoint_uri,
                          contract_address=testnet.address,
                          contract_abi=testnet.contract_abi,
                          keyfile=TEST_KEYFILE,
                          password='******')
    os.remove(TEST_KEYFILE)
Пример #4
0
def test_create_fail_invalid_contract_address(testnet):
    with pytest.raises(
            erc20tokensdk.SdkConfigurationError,
            match="invalid token contract address: '' is not an address"):
        erc20tokensdk.SDK(provider_endpoint_uri=testnet.provider_endpoint_uri)
    with pytest.raises(
            erc20tokensdk.SdkConfigurationError,
            match="invalid token contract address: '0xbad' is not an address"):
        erc20tokensdk.SDK(provider_endpoint_uri=testnet.provider_endpoint_uri,
                          contract_address='0xbad')
    with pytest.raises(
            erc20tokensdk.SdkConfigurationError,
            match=
            "invalid token contract address: '0x4c6527c2BEB032D46cfe0648072cAb641cA0aA81' "
            "has an invalid EIP55 checksum"):
        erc20tokensdk.SDK(
            provider_endpoint_uri=testnet.provider_endpoint_uri,
            contract_address='0x4c6527c2BEB032D46cfe0648072cAb641cA0aA81')
Пример #5
0
def test_create_fail_bad_private_key(testnet):
    with pytest.raises(
            erc20tokensdk.SdkConfigurationError,
            match='cannot load private key: Unexpected private key format.'
            '  Must be length 32 byte string'):
        erc20tokensdk.SDK(provider_endpoint_uri=testnet.provider_endpoint_uri,
                          contract_address=testnet.address,
                          contract_abi=testnet.contract_abi,
                          private_key='bad')
Пример #6
0
def test_create_with_gas_params(testnet):
    sdk = erc20tokensdk.SDK(
        provider_endpoint_uri=testnet.provider_endpoint_uri,
        contract_address=testnet.address,
        contract_abi=testnet.contract_abi,
        private_key=testnet.private_key,
        gas_price=10.1,
        gas_limit=10000)
    assert sdk
    assert sdk._tx_manager.gas_price == 10100000000
    assert sdk._tx_manager.gas_limit == 10000
Пример #7
0
def test_create_with_private_key(testnet):
    sdk = erc20tokensdk.SDK(
        provider_endpoint_uri=testnet.provider_endpoint_uri,
        contract_address=testnet.address,
        contract_abi=testnet.contract_abi,
        private_key=testnet.private_key)
    assert sdk
    assert sdk.web3
    assert sdk.token_contract
    assert sdk.private_key == testnet.private_key
    assert sdk.get_address() == testnet.address
Пример #8
0
def test_create_invalid_gas_params(testnet):
    with pytest.raises(erc20tokensdk.SdkConfigurationError,
                       match='gas price must be either integer of float'):
        erc20tokensdk.SDK(provider_endpoint_uri=testnet.provider_endpoint_uri,
                          contract_address=testnet.address,
                          contract_abi=testnet.contract_abi,
                          gas_price='bad')
    with pytest.raises(erc20tokensdk.SdkConfigurationError,
                       match='gas price must be either integer of float'):
        erc20tokensdk.SDK(provider_endpoint_uri=testnet.provider_endpoint_uri,
                          contract_address=testnet.address,
                          contract_abi=testnet.contract_abi,
                          gas_price='0x123')
    with pytest.raises(erc20tokensdk.SdkConfigurationError,
                       match='gas limit must be integer'):
        erc20tokensdk.SDK(provider_endpoint_uri=testnet.provider_endpoint_uri,
                          contract_address=testnet.address,
                          contract_abi=testnet.contract_abi,
                          gas_price=10,
                          gas_limit='bad')
Пример #9
0
def test_sdk(testnet):
    sdk = erc20tokensdk.SDK(
        provider_endpoint_uri=testnet.provider_endpoint_uri,
        private_key=testnet.private_key,
        contract_address=testnet.contract_address,
        contract_abi=testnet.contract_abi)
    assert sdk
    assert sdk.web3
    assert sdk.token_contract
    assert sdk.private_key == testnet.private_key
    assert sdk.get_address() == testnet.address
    assert sdk._tx_manager.gas_price == sdk.web3.eth.gasPrice
    return sdk
Пример #10
0
def test_create_with_keyfile(testnet):
    erc20tokensdk.create_keyfile(testnet.private_key, TEST_PASSWORD,
                                 TEST_KEYFILE)
    sdk = erc20tokensdk.SDK(
        provider_endpoint_uri=testnet.provider_endpoint_uri,
        contract_address=testnet.address,
        contract_abi=testnet.contract_abi,
        keyfile=TEST_KEYFILE,
        password=TEST_PASSWORD)
    assert sdk
    assert sdk.web3
    assert sdk.token_contract
    assert sdk.private_key == testnet.private_key
    assert sdk.get_address() == testnet.address
    os.remove(TEST_KEYFILE)
Пример #11
0
def test_sdk_not_configured(testnet):
    sdk = erc20tokensdk.SDK(
        provider_endpoint_uri=testnet.provider_endpoint_uri,
        contract_address=testnet.address,
        contract_abi=testnet.contract_abi)
    with pytest.raises(erc20tokensdk.SdkNotConfiguredError,
                       match='private key not configured'):
        sdk.get_address()
    with pytest.raises(erc20tokensdk.SdkNotConfiguredError,
                       match='private key not configured'):
        sdk.get_ether_balance()
    with pytest.raises(erc20tokensdk.SdkNotConfiguredError,
                       match='private key not configured'):
        sdk.get_token_balance()
    with pytest.raises(erc20tokensdk.SdkNotConfiguredError,
                       match='private key not configured'):
        sdk.send_ether('address', 100)
    with pytest.raises(erc20tokensdk.SdkNotConfiguredError,
                       match='private key not configured'):
        sdk.send_tokens('address', 100)
Пример #12
0
def test_create_fail_bad_endpoint(testnet):
    with pytest.raises(erc20tokensdk.SdkConfigurationError,
                       match='cannot connect to provider endpoint'):
        erc20tokensdk.SDK(provider_endpoint_uri='bad',
                          contract_address=testnet.address,
                          contract_abi=testnet.contract_abi)