Ejemplo n.º 1
0
async def test_balance(client, create_account, make_transfer, currency):
    acc1 = await create_account(test_key)

    # check initial account balance
    response = await client.get('/balance', headers={
        'X-Token': create_token(test_key).decode()
    })
    assert response.status_code == 200
    assert response.json()['balance'] == 0

    # fill acc1
    await Account.create(
        address='deposit',
        pub_key=test_deposit_key.publickey().export_key().decode(),
        type=AccountType.passive
    )
    response = await make_transfer(test_deposit_key, acc1, '1.00', currency)
    assert response.status_code == 200

    # check balance changed after filled
    response = await client.get('/balance', headers={
        'X-Token': create_token(test_key).decode()
    })
    assert response.status_code == 200
    assert response.json()['balance'] == 1
Ejemplo n.º 2
0
async def test_race_condition(make_transfer, create_account, currency, client):
    # create account
    # fill account
    # create N tasks and start them in parallel
    # TODO: check if last view line covered
    acc1 = await create_account(test_key)
    acc2 = await create_account(test_key2)

    await Account.create(
        address='deposit',
        pub_key=test_deposit_key.publickey().export_key().decode(),
        type=AccountType.passive
    )

    await make_transfer(test_deposit_key, acc1, '1.00', currency)

    await asyncio.gather(*[
        make_transfer(test_key, acc2, '1.00', currency, ignore_failed=True) for _ in range(10)
    ])

    response = await client.get('/balance', headers={
        'X-Token': create_token(test_key).decode()
    })
    assert response.status_code == 200, "Wrong status %s" % response.content
    assert response.json()['balance'] == 0

    response = await client.get('/balance', headers={
        'X-Token': create_token(test_key2).decode()
    })
    assert response.status_code == 200, "Wrong status %s" % response.content
    assert response.json()['balance'] == 1
Ejemplo n.º 3
0
async def test_unregistered_pub_key(client, currency, create_account):
    acc2 = await create_account(test_key2)

    response = await client.post("/transfer/", json={
        'receiver': acc2,
        'currency': currency.symbol,
        'amount': '1.00'
    }, headers={
        'X-Token': create_token(test_key).decode()
    })
    assert response.status_code == 403
Ejemplo n.º 4
0
 async def _make_transfer(sender_key, to_account, amount, currency, ignore_failed=False):
     response = await client.post("/transfer/", json={
         'receiver': to_account,
         'currency': currency.symbol,
         'amount': amount
     }, headers={
         'X-Token': create_token(sender_key).decode()
     })
     if not ignore_failed:
         assert response.status_code == 200, "Invalid status code %s" % response.content
     return response
Ejemplo n.º 5
0
async def test_transfer_invalid_currency(client, create_account):
    await create_account(test_key)
    to_account = await create_account(test_key2)
    response = await client.post("/transfer/", json={
        'receiver': to_account,
        'currency': 'INVALID',
        'amount': '1.00'
    }, headers={
        'X-Token': create_token(test_key).decode()
    })
    assert response.status_code == 400, "Should fail with invalid currency: %s" % response.content
    return response
Ejemplo n.º 6
0
async def test_invalid_token_sign(client, create_account, currency):
    acc1 = await create_account(test_key)
    await create_account(test_key2)

    response = await client.post("/transfer/", json={
        'receiver': acc1,
        'currency': currency.symbol,
        'amount': '1.00'
    }, headers={
        'X-Token': create_token(test_key2, signature='123').decode()
    })
    assert response.status_code == 403