def test_get_bills_missing_credit_card(): mock_client = MockHttpClient() mock_client.remove_mock_url(('https://mocked-proxy-url/api/proxy/events_123', '')) mock_client.remove_mock_url(('https://mocked-proxy-url/api/token', '')) mock_client.add_mock_url('https://mocked-proxy-url/api/proxy/magnitude_123', '', 'proxy_events') mock_client.add_mock_url('https://mocked-proxy-url/api/token', '', 'discovery_login_alternative') nubank_client = Nubank(client=mock_client) nubank_client.authenticate_with_cert('1234', 'hunter12', 'some-file.p12') with pytest.raises(NuMissingCreditCard): nubank_client.get_bills()
def test_get_bills(monkeypatch, authentication_return, bills_return): response = create_fake_response(authentication_return) monkeypatch.setattr('requests.post', MagicMock(return_value=response)) nubank_client = Nubank() response = create_fake_response(bills_return) monkeypatch.setattr('requests.get', MagicMock(return_value=response)) bills = nubank_client.get_bills() assert len(bills) == 3 assert bills[2]['_links']['self'][ 'href'] == "https://prod-s0-billing.nubank.com.br/api/bills/abcde-fghi-jklmn-opqrst-uvxz" assert bills[2]['href'] == 'nuapp://bill/abcde-fghi-jklmn-opqrst-uvxz' assert bills[2]['id'] == 'abcde-fghi-jklmn-opqrst-uvxz' assert bills[2]['state'] == 'overdue' summary = bills[2]['summary'] assert summary["adjustments"] == "-63.99106066" assert summary["close_date"] == "2018-03-03" assert summary["due_date"] == "2018-03-10" assert summary["effective_due_date"] == "2018-03-12" assert summary["expenses"] == "364.14" assert summary["fees"] == "0" assert summary["interest"] == 0 assert summary["interest_charge"] == "0" assert summary["interest_rate"] == "0.1375" assert summary["interest_reversal"] == "0" assert summary["international_tax"] == "0" assert summary["minimum_payment"] == 8003 assert summary["open_date"] == "2018-02-03" assert summary["paid"] == 28515 assert summary["past_balance"] == -1500 assert summary["payments"] == "-960.47" assert summary["precise_minimum_payment"] == "480.02544320601300" assert summary["precise_total_balance"] == "285.152041645013" assert summary["previous_bill_balance"] == "945.473102305013" assert summary["remaining_minimum_payment"] == 0 assert summary["tax"] == "0" assert summary["total_accrued"] == "0" assert summary["total_balance"] == 28515 assert summary["total_credits"] == "-64.18" assert summary["total_cumulative"] == 30015 assert summary["total_financed"] == "0" assert summary["total_international"] == "0" assert summary["total_national"] == "364.32893934" assert summary["total_payments"] == "-960.47" response = create_fake_response({}, 401) monkeypatch.setattr('requests.post', MagicMock(return_value=response))
def test_get_bills(): nubank_client = Nubank(client=MockHttpClient()) nubank_client.authenticate_with_qr_code('12345678912', 'hunter12', 'some-uuid') bills = nubank_client.get_bills() assert len(bills) == 3 assert bills[2]['_links']['self'][ 'href'] == "https://mocked-proxy-url/api/bills/abcde-fghi-jklmn-opqrst-uvxz" assert bills[2]['href'] == 'nuapp://bill/abcde-fghi-jklmn-opqrst-uvxz' assert bills[2]['id'] == 'abcde-fghi-jklmn-opqrst-uvxz' assert bills[2]['state'] == 'overdue' summary = bills[2]['summary'] assert summary["adjustments"] == "-63.99106066" assert summary["close_date"] == "2018-03-03" assert summary["due_date"] == "2018-03-10" assert summary["effective_due_date"] == "2018-03-12" assert summary["expenses"] == "364.14" assert summary["fees"] == "0" assert summary["interest"] == 0 assert summary["interest_charge"] == "0" assert summary["interest_rate"] == "0.1375" assert summary["interest_reversal"] == "0" assert summary["international_tax"] == "0" assert summary["minimum_payment"] == 8003 assert summary["open_date"] == "2018-02-03" assert summary["paid"] == 28515 assert summary["past_balance"] == -1500 assert summary["payments"] == "-960.47" assert summary["precise_minimum_payment"] == "480.02544320601300" assert summary["precise_total_balance"] == "285.152041645013" assert summary["previous_bill_balance"] == "945.473102305013" assert summary["remaining_minimum_payment"] == 0 assert summary["tax"] == "0" assert summary["total_accrued"] == "0" assert summary["total_balance"] == 28515 assert summary["total_credits"] == "-64.18" assert summary["total_cumulative"] == 30015 assert summary["total_financed"] == "0" assert summary["total_international"] == "0" assert summary["total_national"] == "364.32893934" assert summary["total_payments"] == "-960.47"
return description nu = Nubank() uuid, qr_code = nu.get_qr_code() qr_code.print_ascii(invert=True) input('Após escanear o QRCode pressione enter para continuar') # Somente após escanear o QRCode você pode chamar a linha abaixo nu.authenticate_with_qr_code(cpf, pwd, uuid) #recupera as transacoes nubank_transactions = nu.get_card_statements() #recupera as faturas nubank_bills = nu.get_bills() #busca fatura com base em uma data nubank_bill = get_bill_by_date(nubank_bills, bill_date) #recupera os detalhes da fatura nubank_bill_details = nu.get_bill_details(nubank_bill) csv_output = open(output_file_path, 'w') csv_output.write('DATA;DESCRICAO;VALOR') for bi in nubank_bill_details['bill']['line_items']: if 'href' in bi: t = get_transaction_by_id(nubank_transactions, bi['href']) row = '\n' + bill_date + ';' row += get_formated_description(bi, t) + ';'