def test_mine_log(patch_click, config, rest_client, machine_auth_wallet,
                  username, password):
    # first log into the test account given by PASSWORD and USER_NAME
    login.login_account(config, machine_auth_wallet, username, password)
    click.confirm.assert_called_with(uxstring.UxString.analytics_optin)

    # cannot make an assumption of zero balance for now
    pre_status_dict = status._status(config, rest_client,
                                     machine_auth_wallet.wallet, False)
    pre_balance = pre_status_dict['wallet']['wallet']['twentyone_balance']

    # run mine to get an expected amount of off chain balance
    mine._mine(config, rest_client, machine_auth_wallet.wallet)

    # Status now should have an offchain balance
    post_status_dict = status._status(config, rest_client,
                                      machine_auth_wallet.wallet, False)
    post_balance = post_status_dict['wallet']['wallet']['twentyone_balance']

    # payout is higher for BCs
    # FIXME: prod temporarily has the payout at 20k
    payout = 20000
    # payout = 20000 if bitcoin_computer.has_mining_chip() else 10000

    # esure payout shows in status
    assert post_balance == pre_balance + payout

    # check logs to ensure payout is theres
    logs = log.get_bc_logs(rest_client, False)
    assert str(payout) in logs[1]
Exemple #2
0
def test_mine_log(patch_click, config, rest_client, machine_auth_wallet, username, password):
    # first log into the test account given by PASSWORD and USER_NAME
    login.login_account(config, machine_auth_wallet, username, password)
    click.confirm.assert_called_with(uxstring.UxString.analytics_optin)

    # cannot make an assumption of zero balance for now
    pre_status_dict = status._status(config, rest_client, machine_auth_wallet.wallet, False)
    pre_balance = pre_status_dict['wallet']['wallet']['twentyone_balance']

    # run mine to get an expected amount of off chain balance
    mine._mine(config, rest_client, machine_auth_wallet.wallet)

    # Status now should have an offchain balance
    post_status_dict = status._status(config, rest_client, machine_auth_wallet.wallet, False)
    post_balance = post_status_dict['wallet']['wallet']['twentyone_balance']

    # payout is higher for BCs
    # FIXME: prod temporarily has the payout at 20k
    payout = 20000
    # payout = 20000 if bitcoin_computer.has_mining_chip() else 10000

    # esure payout shows in status
    assert post_balance == pre_balance + payout

    # check logs to ensure payout is theres
    logs = log.get_bc_logs(rest_client, False)
    assert str(payout) in logs[1]
Exemple #3
0
def test_status_detail(mock_config, mock_rest_client, mock_wallet,
                       patch_rest_client, patch_click):
    """Test 21 status detail view."""
    with mock.patch('two1.channels.PaymentChannelClient',
                    mock_objects.MockChannelClient):
        status_rv = status._status(mock_config, mock_rest_client, mock_wallet,
                                   True)

    assert mock_rest_client.mock_get_earnings.call_count == 1
    assert status_rv['account']['username'] == mock_config.username
    assert status_rv['account']['address'] == mock_wallet.current_address
    assert status_rv['wallet']['wallet']['onchain'] == mock_wallet.BALANCE
    assert status_rv['wallet']['wallet'][
        'twentyone_balance'] == mock_rest_client.EARNINGS
    assert status_rv['wallet']['wallet'][
        'flushing'] == mock_rest_client.FLUSHED
    assert status_rv['wallet']['wallet'][
        'channels_balance'] == mock_objects.MockChannelClient.BALANCE

    click.echo.assert_any_call(
        uxstring.UxString.status_account.format(mock_config.username))
    click.echo.assert_any_call(
        uxstring.UxString.status_wallet.format(
            **status_rv['wallet']['wallet']))

    _, status_detail, _ = click.echo.mock_calls[3]
    assert mock_wallet.current_address in status_detail[0]
    assert mock_objects.MockChannelClient.URL in status_detail[0]
    assert str(mock_objects.MockChannelClient.BALANCE) in status_detail[0]
    assert str(mock_wallet.BALANCE) in status_detail[0]
Exemple #4
0
def test_status_no_chip(mock_config, mock_rest_client, mock_wallet,
                        patch_rest_client, patch_click):
    """Test 21 status for a user without a mining chip."""
    status_rv = status._status(mock_config, mock_rest_client, mock_wallet,
                               False)

    assert mock_rest_client.mock_get_mined_satoshis.call_count == 0
    assert mock_rest_client.mock_get_earnings.call_count == 1
    assert status_rv['mining'] == dict(mined=None,
                                       hashrate=None,
                                       is_mining=None)
    assert status_rv['account']['username'] == mock_config.username
    assert status_rv['account']['address'] == mock_wallet.current_address
    assert status_rv['wallet']['wallet']['onchain'] == mock_wallet.BALANCE
    assert status_rv['wallet']['wallet'][
        'twentyone_balance'] == mock_rest_client.EARNINGS
    assert status_rv['wallet']['wallet'][
        'flushing'] == mock_rest_client.FLUSHED
    assert status_rv['wallet']['wallet']['channels_balance'] == 0

    click.echo.assert_any_call(
        uxstring.UxString.status_account.format(mock_config.username))
    click.echo.assert_any_call(
        uxstring.UxString.status_wallet.format(
            **status_rv['wallet']['wallet']))
    for _, status_detail, _ in click.echo.mock_calls:
        assert 'Hashrate' not in status_detail
        assert 'Mined (all time)' not in status_detail
Exemple #5
0
def test_status_with_chip(
        mock_config, mock_rest_client, mock_wallet, patch_rest_client, patch_click, return_value, hashrate, is_mining):
    """Test 21 status for a user with a mining chip."""

    mock_options = dict(side_effect=return_value) if isinstance(return_value, Exception) else dict(
        return_value=return_value)
    with mock.patch('two1.commands.status.bitcoin_computer.get_hashrate', **mock_options):
        status_rv = status._status(mock_config, mock_rest_client, mock_wallet, False)

    assert mock_rest_client.mock_get_mined_satoshis.call_count == 1
    assert mock_rest_client.mock_get_earnings.call_count == 1
    assert status_rv['mining']['mined'] == mock_rest_client.mock_get_mined_satoshis.return_value
    assert status_rv['mining']['hashrate'] == hashrate
    assert status_rv['mining']['is_mining'] == is_mining
    assert status_rv['account']['username'] == mock_config.username
    assert status_rv['account']['address'] == mock_wallet.current_address
    assert status_rv['wallet']['wallet']['onchain'] == mock_wallet.BALANCE
    assert status_rv['wallet']['wallet']['twentyone_balance'] == mock_rest_client.EARNINGS
    assert status_rv['wallet']['wallet']['flushing'] == mock_rest_client.FLUSHED
    assert status_rv['wallet']['wallet']['channels_balance'] == 0

    click.echo.assert_any_call(uxstring.UxString.status_account.format(mock_config.username))
    click.echo.assert_any_call(
        uxstring.UxString.status_mining.format(status_rv['mining']['is_mining'],
                                               status_rv['mining']['hashrate'], status_rv['mining']['mined']))
    click.echo.assert_any_call(uxstring.UxString.status_wallet.format(**status_rv['wallet']['wallet']))
Exemple #6
0
def test_status_no_chip(mock_config, mock_rest_client, mock_wallet, patch_rest_client, patch_click):
    """Test 21 status for a user without a mining chip."""
    status_rv = status._status(mock_config, mock_rest_client, mock_wallet, False)

    assert mock_rest_client.mock_get_mined_satoshis.call_count == 0
    assert mock_rest_client.mock_get_earnings.call_count == 1
    assert status_rv['mining'] == dict(mined=None, hashrate=None, is_mining=None)
    assert status_rv['account']['username'] == mock_config.username
    assert status_rv['account']['address'] == mock_wallet.current_address
    assert status_rv['wallet']['wallet']['onchain'] == mock_wallet.BALANCE
    assert status_rv['wallet']['wallet']['twentyone_balance'] == mock_rest_client.EARNINGS
    assert status_rv['wallet']['wallet']['flushing'] == mock_rest_client.FLUSHED
    assert status_rv['wallet']['wallet']['channels_balance'] == 0

    click.echo.assert_any_call(uxstring.UxString.status_account.format(mock_config.username))
    click.echo.assert_any_call(uxstring.UxString.status_wallet.format(**status_rv['wallet']['wallet']))
    for _, status_detail, _ in click.echo.mock_calls:
        assert 'Hashrate' not in status_detail
        assert 'Mined (all time)' not in status_detail
Exemple #7
0
def test_status_detail(mock_config, mock_rest_client, mock_wallet, patch_rest_client, patch_click):
    """Test 21 status detail view."""
    with mock.patch('two1.channels.PaymentChannelClient', mock_objects.MockChannelClient):
        status_rv = status._status(mock_config, mock_rest_client, mock_wallet, True)

    assert mock_rest_client.mock_get_earnings.call_count == 1
    assert status_rv['account']['username'] == mock_config.username
    assert status_rv['account']['address'] == mock_wallet.current_address
    assert status_rv['wallet']['wallet']['onchain'] == mock_wallet.BALANCE
    assert status_rv['wallet']['wallet']['twentyone_balance'] == mock_rest_client.EARNINGS
    assert status_rv['wallet']['wallet']['flushing'] == mock_rest_client.FLUSHED
    assert status_rv['wallet']['wallet']['channels_balance'] == mock_objects.MockChannelClient.BALANCE

    click.echo.assert_any_call(uxstring.UxString.status_account.format(mock_config.username))
    click.echo.assert_any_call(uxstring.UxString.status_wallet.format(**status_rv['wallet']['wallet']))

    _, status_detail, _ = click.echo.mock_calls[3]
    assert mock_wallet.current_address in status_detail[0]
    assert mock_objects.MockChannelClient.URL in status_detail[0]
    assert str(mock_objects.MockChannelClient.BALANCE) in status_detail[0]
    assert str(mock_wallet.BALANCE) in status_detail[0]
Exemple #8
0
def test_status_with_chip(mock_config, mock_rest_client, mock_wallet,
                          patch_rest_client, patch_click, return_value,
                          hashrate, is_mining):
    """Test 21 status for a user with a mining chip."""

    mock_options = dict(side_effect=return_value) if isinstance(
        return_value, Exception) else dict(return_value=return_value)
    with mock.patch('two1.commands.status.bitcoin_computer.get_hashrate',
                    **mock_options):
        status_rv = status._status(mock_config, mock_rest_client, mock_wallet,
                                   False)

    assert mock_rest_client.mock_get_mined_satoshis.call_count == 1
    assert mock_rest_client.mock_get_earnings.call_count == 1
    assert status_rv['mining'][
        'mined'] == mock_rest_client.mock_get_mined_satoshis.return_value
    assert status_rv['mining']['hashrate'] == hashrate
    assert status_rv['mining']['is_mining'] == is_mining
    assert status_rv['account']['username'] == mock_config.username
    assert status_rv['account']['address'] == mock_wallet.current_address
    assert status_rv['wallet']['wallet']['onchain'] == mock_wallet.BALANCE
    assert status_rv['wallet']['wallet'][
        'twentyone_balance'] == mock_rest_client.EARNINGS
    assert status_rv['wallet']['wallet'][
        'flushing'] == mock_rest_client.FLUSHED
    assert status_rv['wallet']['wallet']['channels_balance'] == 0

    click.echo.assert_any_call(
        uxstring.UxString.status_account.format(mock_config.username))
    click.echo.assert_any_call(
        uxstring.UxString.status_mining.format(
            status_rv['mining']['is_mining'], status_rv['mining']['hashrate'],
            status_rv['mining']['mined']))
    click.echo.assert_any_call(
        uxstring.UxString.status_wallet.format(
            **status_rv['wallet']['wallet']))