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]
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]
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
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']))
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
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]
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']))