Beispiel #1
0
def test_get_account_investments_details():
    nubank_client = Nubank(client=MockHttpClient())
    nubank_client.authenticate_with_qr_code('12345678912', 'hunter12', 'some-uuid')

    statements = nubank_client.get_account_investments_details()

    assert len(statements) == 3
    assert statements[0]['id'] == 'vjdhausd-asdg-bgfs-vfsg-jrthfuv'
    assert statements[0]['rate'] == 1
    assert statements[0]['vehicle'] == 'RECEIPT_DEPOSIT'
    assert statements[0]['openDate'] == '2020-07-13'
    assert statements[0]['maturityDate'] == '2022-07-05'
    assert statements[0]['principal'] == 156.52
    assert statements[0]['redeemedBalance']['netAmount'] == 0
    assert statements[0]['redeemedBalance']['yield'] == 0
    assert statements[0]['redeemedBalance']['incomeTax'] == 0
    assert statements[0]['redeemedBalance']['iofTax'] == 0
    assert statements[0]['redeemedBalance']['id'] == 'abcdefgh-ijkl-mnop-qrst-uvwxyz0123'

    assert statements[2]['id'] == 'ffghjyu-ktyu-dfgn-nfgh-asdgre'
    assert statements[2]['rate'] == 1
    assert statements[2]['vehicle'] == 'RECEIPT_DEPOSIT'
    assert statements[2]['openDate'] == '2020-08-11'
    assert statements[2]['maturityDate'] == '2022-08-03'
    assert statements[2]['principal'] == 77.77
    assert statements[2]['redeemedBalance']['netAmount'] == 39.99
    assert statements[2]['redeemedBalance']['yield'] == 0.05
    assert statements[2]['redeemedBalance']['incomeTax'] == 0.01
    assert statements[2]['redeemedBalance']['iofTax'] == 0.01
    assert statements[2]['redeemedBalance']['id'] == 'sdfgehhdf-jkre-thre-nghh-kuvsnjue633'
Beispiel #2
0
def generateQRCode():
    nu = Nubank()
    uuid, qr_code = nu.get_qr_code()
    image = qr_code.make_image(fill_color="black", back_color="white")
    image.save("static/image/qrcode.jpg")

    return jsonify({"uuid": uuid})
Beispiel #3
0
def test_authentication_with_qr_code_failure_raise_exception(monkeypatch):
    response = create_fake_response({}, 401)

    monkeypatch.setattr('requests.post', MagicMock(return_value=response))
    with pytest.raises(NuException):
        nu = Nubank()
        nu.authenticate_with_qr_code('12345678912', 'hunter12', 'some-uuid')
def test_authentication_with_refresh_token_failure_raise_exception(monkeypatch):
    response = create_fake_response({}, 401)

    monkeypatch.setattr('requests.post', MagicMock(return_value=response))
    with pytest.raises(NuException):
        nu = Nubank()
        nu.authenticate_with_refresh_token('some-token')
def test_get_card_feed(monkeypatch, authentication_return, events_return):
    monkeypatch.setattr(Discovery, '_update_proxy_urls', fake_update_proxy)
    monkeypatch.setattr(HttpClient, 'post', MagicMock(return_value=authentication_return))
    monkeypatch.setattr(HttpClient, 'get', MagicMock(return_value=events_return))
    nubank_client = Nubank()

    feed = nubank_client.get_card_feed()
    assert feed['as_of'] == '2017-09-09T06:50:22.323Z'
    assert feed['customer_id'] == 'abcde-fghi-jklmn-opqrst-uvxz'
    assert feed['_links']['updates']['href'] == 'https://prod-s0-webapp-proxy.nubank.com.br/api/proxy/updates_123'
    assert feed['_links']['next']['href'] == 'https://prod-s0-webapp-proxy.nubank.com.br/api/proxy/next_123'

    events = feed['events']
    assert len(events) == 1
    assert events[0]['description'] == 'Shopping Iguatemi'
    assert events[0]['category'] == 'transaction'
    assert events[0]['amount'] == 700
    assert events[0]['time'] == '2017-09-09T02:03:55Z'
    assert events[0]['title'] == 'transporte'
    assert events[0]['id'] == 'abcde-fghi-jklmn-opqrst-uvxz'
    assert events[0]['details']['lat'] == -12.9818258
    assert events[0]['details']['lon'] == -38.4652058
    assert events[0]['details']['subcategory'] == 'card_present'
    assert events[0]['href'] == 'nuapp://transaction/abcde-fghi-jklmn-opqrst-uvxz'
    assert events[0]['_links']['self']['href'] == 'https://prod-s0-webapp-proxy.nubank.com.br/api/proxy/_links_123'
Beispiel #6
0
def test_get_card_feed():
    nubank_client = Nubank(client=MockHttpClient())
    nubank_client.authenticate_with_qr_code('12345678912', 'hunter12',
                                            'some-uuid')

    feed = nubank_client.get_card_feed()
    assert feed['as_of'] == '2017-09-09T06:50:22.323Z'
    assert feed['customer_id'] == 'abcde-fghi-jklmn-opqrst-uvxz'
    assert feed['_links']['updates'][
        'href'] == 'https://prod-s0-webapp-proxy.nubank.com.br/api/proxy/updates_123'
    assert feed['_links']['next'][
        'href'] == 'https://prod-s0-webapp-proxy.nubank.com.br/api/proxy/next_123'

    events = feed['events']
    assert len(events) == 1
    assert events[0]['description'] == 'Shopping Iguatemi'
    assert events[0]['category'] == 'transaction'
    assert events[0]['amount'] == 700
    assert events[0]['time'] == '2017-09-09T02:03:55Z'
    assert events[0]['title'] == 'transporte'
    assert events[0]['id'] == 'abcde-fghi-jklmn-opqrst-uvxz'
    assert events[0]['details']['lat'] == -12.9818258
    assert events[0]['details']['lon'] == -38.4652058
    assert events[0]['details']['subcategory'] == 'card_present'
    assert events[0][
        'href'] == 'nuapp://transaction/abcde-fghi-jklmn-opqrst-uvxz'
    assert events[0]['_links']['self'][
        'href'] == 'https://prod-s0-webapp-proxy.nubank.com.br/api/proxy/_links_123'
def test_get_account_investments_details(monkeypatch, account_investments_details_return):
    monkeypatch.setattr(Discovery, '_update_proxy_urls', fake_update_proxy)
    monkeypatch.setattr(HttpClient, 'post', MagicMock(return_value=account_investments_details_return))
    nubank_client = Nubank()

    statements = nubank_client.get_account_investments_details()

    assert len(statements) == 3
    assert statements[0]['id'] == 'vjdhausd-asdg-bgfs-vfsg-jrthfuv'
    assert statements[0]['rate'] == 1
    assert statements[0]['vehicle'] == 'RECEIPT_DEPOSIT'
    assert statements[0]['openDate'] == '2020-07-13'
    assert statements[0]['maturityDate'] == '2022-07-05'
    assert statements[0]['principal'] == 156.52
    assert statements[0]['redeemedBalance']['netAmount'] == 0
    assert statements[0]['redeemedBalance']['yield'] == 0
    assert statements[0]['redeemedBalance']['incomeTax'] == 0
    assert statements[0]['redeemedBalance']['iofTax'] == 0
    assert statements[0]['redeemedBalance']['id'] == 'abcdefgh-ijkl-mnop-qrst-uvwxyz0123'

    assert statements[2]['id'] == 'ffghjyu-ktyu-dfgn-nfgh-asdgre'
    assert statements[2]['rate'] == 1
    assert statements[2]['vehicle'] == 'RECEIPT_DEPOSIT'
    assert statements[2]['openDate'] == '2020-08-11'
    assert statements[2]['maturityDate'] == '2022-08-03'
    assert statements[2]['principal'] == 77.77
    assert statements[2]['redeemedBalance']['netAmount'] == 39.99
    assert statements[2]['redeemedBalance']['yield'] == 0.05
    assert statements[2]['redeemedBalance']['incomeTax'] == 0.01
    assert statements[2]['redeemedBalance']['iofTax'] == 0.01
    assert statements[2]['redeemedBalance']['id'] == 'sdfgehhdf-jkre-thre-nghh-kuvsnjue633'
Beispiel #8
0
def test_should_generate_boleto():
    nubank_client = Nubank(client=MockHttpClient())
    nubank_client.authenticate_with_qr_code('12345678912', 'hunter12',
                                            'some-uuid')

    assert nubank_client.create_boleto(
        200.50) == '123131321231231.2313212312.2131231.21332123'
def test_get_qr_code(monkeypatch):
    monkeypatch.setattr(Discovery, '_update_proxy_urls', fake_update_proxy)
    client = Nubank()
    uid, qr = client.get_qr_code()

    assert uid != ''
    assert isinstance(qr, QRCode)
def test_nubank_request_handler_throws_exception_status_code_in_the_exception_message(
):
    http_status = 400
    response = create_fake_response({}, http_status)
    client = Nubank()
    with pytest.raises(NuException, match=fr'.*{http_status}.*'):
        client._handle_response(response)
Beispiel #11
0
def test_get_card_feed():
    nubank_client = Nubank(client=MockHttpClient())
    nubank_client.authenticate_with_qr_code('12345678912', 'hunter12',
                                            'some-uuid')

    feed = nubank_client.get_card_feed()
    assert feed['as_of'] == '2017-09-09T06:50:22.323Z'
    assert feed['customer_id'] == 'abcde-fghi-jklmn-opqrst-uvxz'
    assert feed['_links']['updates'][
        'href'] == 'https://prod-s0-webapp-proxy.nubank.com.br/api/proxy/updates_123'
    assert feed['_links']['next'][
        'href'] == 'https://prod-s0-webapp-proxy.nubank.com.br/api/proxy/next_123'

    events = feed['events']
    assert len(events) == 8
    assert events[0]['description'] == 'Netflix.Com'
    assert events[0]['category'] == 'transaction'
    assert events[0]['amount'] == 3290
    assert events[0]['time'] == '2021-04-21T10:01:48Z'
    assert events[0]['title'] == 'serviços'
    assert events[0]['id'] == '43e713a0-07b7-43bb-9700-8d7ad2d5eee6'
    assert events[0]['details']['subcategory'] == 'card_not_present'
    assert events[0][
        'href'] == 'nuapp://transaction/43e713a0-07b7-43bb-9700-8d7ad2d5eee6'
    assert events[0]['_links']['self'][
        'href'] == 'https://prod-s0-facade.nubank.com.br/api/transactions/43e713a0-07b7-43bb-9700-8d7ad2d5eee6'
Beispiel #12
0
def test_should_create_money_request():
    nubank_client = Nubank(client=MockHttpClient())
    nubank_client.authenticate_with_qr_code('12345678912', 'hunter12',
                                            'some-uuid')

    assert nubank_client.create_money_request(
        200) == 'https://some.tld/path1/path2'
Beispiel #13
0
def test_authenticate_with_refresh_token():
    nubank_client = Nubank(client=MockHttpClient())
    nubank_client.authenticate_with_refresh_token('token', 'some-file.p12')

    assert nubank_client._feed_url == 'https://mocked-proxy-url/api/proxy/events_123'
    assert nubank_client._client.get_header(
        'Authorization') == 'Bearer access_token_123'
Beispiel #14
0
def test_get_account_feed(monkeypatch, authentication_return,
                          account_statements_return):
    response = create_fake_response(authentication_return)
    monkeypatch.setattr('requests.post', MagicMock(return_value=response))
    nubank_client = Nubank('12345678909', '12345678')

    response = create_fake_response(account_statements_return)
    monkeypatch.setattr('requests.post', MagicMock(return_value=response))
    statements = nubank_client.get_account_feed()

    assert len(statements) == 6
    assert statements[1]['id'] == 'abcde-fghi-jklmn-opqrst-uvxy'
    assert statements[1]['__typename'] == 'TransferOutReversalEvent'
    assert statements[1]['title'] == 'Transferência devolvida'
    assert statements[1]['detail'] == 'Juquinha da Silva Sauro - R$ 20,00'
    assert statements[1]['postDate'] == '2018-03-06'

    assert statements[2]['id'] == 'abcde-fghi-jklmn-opqrst-uvxz'
    assert statements[2]['__typename'] == 'TransferOutEvent'
    assert statements[2]['title'] == 'Transferência enviada'
    assert statements[2]['detail'] == 'Juquinha da Silva Sauro - R$ 20,00'
    assert statements[2]['postDate'] == '2018-03-06'
    assert statements[2]['amount'] == 20.0
    assert statements[2]['destinationAccount'][
        'name'] == 'Juquinha da Silva Sauro'
Beispiel #15
0
def test_get_account_balance():
    nubank_client = Nubank(client=MockHttpClient())
    nubank_client.authenticate_with_qr_code('12345678912', 'hunter12', 'some-uuid')

    balance = nubank_client.get_account_balance()

    assert balance == 127.33
Beispiel #16
0
def test_nubank_request_handler_throws_exception_with_response_attribute():
    response = create_fake_response({}, 400)
    client = Nubank()
    with pytest.raises(NuException) as exception_info:
        client._handle_response(response)

    assert exception_info.value.response == response.json()
Beispiel #17
0
def test_get_account_investments_yield():
    nubank_client = Nubank(client=MockHttpClient())
    nubank_client.authenticate_with_qr_code('12345678912', 'hunter12',
                                            'some-uuid')

    month_yield = nubank_client.get_account_investments_yield()

    assert month_yield == 0.14
Beispiel #18
0
def test_should_generate_boleto(monkeypatch, create_boleto_return):
    monkeypatch.setattr(Discovery, '_update_proxy_urls', fake_update_proxy)
    monkeypatch.setattr(HttpClient, 'post', MagicMock(return_value=create_boleto_return))
    client = Nubank()

    boleto = client.create_boleto(200.50)

    assert boleto == create_boleto_return['data']['createTransferInBoleto']['boleto']['readableBarcode']
Beispiel #19
0
def test_get_account_balance(monkeypatch, account_balance_return):
    monkeypatch.setattr(Discovery, '_update_proxy_urls', fake_update_proxy)
    monkeypatch.setattr(HttpClient, 'post', MagicMock(return_value=account_balance_return))
    nubank_client = Nubank()

    balance = nubank_client.get_account_balance()

    assert balance == 127.33
Beispiel #20
0
def test_authenticate_with_qr_code_succeeds():
    nubank_client = Nubank(client=MockHttpClient())
    nubank_client.authenticate_with_qr_code('12345678912', 'hunter12',
                                            'some-uuid')

    assert nubank_client._feed_url == 'https://mocked-proxy-url/api/proxy/events_123'
    assert nubank_client._client.get_header(
        'Authorization') == 'Bearer access_token_123'
Beispiel #21
0
def test_nubank_request_handler_throws_exception_with_status_code_attribute():
    http_status = 400
    response = create_fake_response({}, http_status)
    client = Nubank()
    with pytest.raises(NuException) as exception_info:
        client._handle_response(response)

    assert exception_info.value.status_code == http_status
Beispiel #22
0
def test_grapql_query_raises_exeption(monkeypatch, authentication_return):
    nubank_client = Nubank()

    response = create_fake_response({}, 401)

    monkeypatch.setattr('requests.post', MagicMock(return_value=response))
    with pytest.raises(NuException):
        nubank_client.get_account_balance()
Beispiel #23
0
def test_authenticate_with_qr_code_succeeds(monkeypatch, authentication_return):
    monkeypatch.setattr(Discovery, '_update_proxy_urls', fake_update_proxy)
    monkeypatch.setattr(HttpClient, 'post', MagicMock(return_value=authentication_return))

    nubank_client = Nubank()
    nubank_client.authenticate_with_qr_code('12345678912', 'hunter12', 'some-uuid')

    assert nubank_client.feed_url == 'https://prod-s0-webapp-proxy.nubank.com.br/api/proxy/events_123'
    assert nubank_client.client.get_header('Authorization') == 'Bearer access_token_123'
def test_get_account_balance(monkeypatch, authentication_return, account_balance_return):
    response = create_fake_response(authentication_return)
    monkeypatch.setattr('requests.post', MagicMock(return_value=response))
    nubank_client = Nubank('12345678909', '12345678')

    response = create_fake_response(account_balance_return)
    monkeypatch.setattr('requests.post', MagicMock(return_value=response))
    balance = nubank_client.get_account_balance()

    assert balance == 127.33
Beispiel #25
0
def test_should_create_money_request(monkeypatch, create_money_request_return, account_statements_return):
    monkeypatch.setattr(Discovery, '_update_proxy_urls', fake_update_proxy)
    post_mock = Mock()
    post_mock.side_effect = [account_statements_return, create_money_request_return]
    monkeypatch.setattr(HttpClient, 'post', post_mock)
    client = Nubank()

    url = client.create_money_request(200)

    assert url == create_money_request_return['data']['createMoneyRequest']['moneyRequest']['url']
Beispiel #26
0
def test_authenticate_with_qr_code_succeeds(monkeypatch, authentication_return, proxy_list_return):
    proxy_list = create_fake_response(proxy_list_return)
    monkeypatch.setattr('requests.get', MagicMock(return_value=proxy_list))
    response = create_fake_response(authentication_return)
    monkeypatch.setattr('requests.post', MagicMock(return_value=response))

    nubank_client = Nubank()
    nubank_client.authenticate_with_qr_code('12345678912', 'hunter12', 'some-uuid')

    assert nubank_client.feed_url == 'https://prod-s0-webapp-proxy.nubank.com.br/api/proxy/events_123'
    assert nubank_client.headers['Authorization'] == 'Bearer access_token_123'
Beispiel #27
0
def test_get_account_statements(monkeypatch, authentication_return,
                                account_statements_return):
    response = create_fake_response(authentication_return)
    monkeypatch.setattr('requests.post', MagicMock(return_value=response))
    nubank_client = Nubank('12345678909', '12345678')

    response = create_fake_response(account_statements_return)
    monkeypatch.setattr('requests.post', MagicMock(return_value=response))
    statements = nubank_client.get_account_statements()

    assert len(statements) == 2
Beispiel #28
0
def test_should_fetch_pix_keys():
    nubank_client = Nubank(client=MockHttpClient())
    nubank_client.authenticate_with_qr_code('12345678912', 'hunter12', 'some-uuid')

    data = nubank_client.get_available_pix_keys()

    keys = data['keys']
    account_id = data['account_id']

    assert len(keys) == 2
    assert keys[0]['value'] == '12345678912'
    assert account_id == 'xxxxxxxxxxxxxxxxxxxxxxxx'
Beispiel #29
0
    def __init__(self, uuid):
        self.config = self.get_config()

        if self.config['develop'] == True:
            print(uuid)
            return

        self.cpf = self.config['cpf']
        self.password = self.config['password']

        self.nu = Nubank()
        self.nu.authenticate_with_qr_code(self.cpf, self.password, uuid)
def test_grapql_query_raises_exeption(monkeypatch, authentication_return, http_status):
    response = create_fake_response(authentication_return)
    monkeypatch.setattr('requests.post', MagicMock(return_value=response))
    nubank_client = Nubank('12345678909', '12345678')

    response = Response()
    response.status_code = http_status


    monkeypatch.setattr('requests.post', MagicMock(return_value=response))
    with pytest.raises(NuException):
        nubank_client.get_account_balance()