diff --git a/pfbudget/extract/psd2.py b/pfbudget/extract/psd2.py index f202991..dde9ead 100644 --- a/pfbudget/extract/psd2.py +++ b/pfbudget/extract/psd2.py @@ -11,7 +11,7 @@ import pfbudget.db.model as t from pfbudget.utils.converters import convert from .credentials import Credentials -from .exceptions import BankError, CredentialsError +from .exceptions import BankError, CredentialsError, ExtractError from .extract import Extract @@ -29,7 +29,7 @@ class PSD2Client(Extract): ) if credentials.token: - self._token = credentials.token + self._client.token = credentials.token self._start = dt.date.min self._end = dt.date.max @@ -46,7 +46,7 @@ class PSD2Client(Extract): downloaded = self.download(bank.nordigen.requisition_id) except requests.HTTPError as e: print(f"There was an issue downloading from {bank.name} -> {e}") - continue + raise ExtractError(e) if downloaded: self.dump(bank, downloaded) diff --git a/tests/test_psd2.py b/tests/test_psd2.py index 4686109..80006a0 100644 --- a/tests/test_psd2.py +++ b/tests/test_psd2.py @@ -12,21 +12,24 @@ from pfbudget.extract.psd2 import PSD2Client class MockGet: - def __init__(self, status_code: int = 200, exception=None): - self._ok = True if status_code == 200 else False - self._status_code = status_code - self._exception = exception + def __init__(self, mock_exception=None): + self._status_code = 200 + self._mock_exception = mock_exception def __call__(self, *args, **kwargs): - if self._exception: - raise self._exception + if self._mock_exception: + raise self._mock_exception + + self._headers = kwargs["headers"] + if "Authorization" not in self._headers or not self._headers["Authorization"]: + self._status_code = 401 self.url = kwargs["url"] return self @property def ok(self): - return self._ok + return True if self._status_code < 400 else False @property def status_code(self): @@ -79,7 +82,9 @@ class TestExtractPSD2: client.extract([Bank("", "", "")]) def test_timeout(self, monkeypatch, client, banks): - monkeypatch.setattr("requests.get", MockGet(exception=requests.ReadTimeout)) + monkeypatch.setattr( + "requests.get", MockGet(mock_exception=requests.ReadTimeout) + ) with pytest.raises(requests.Timeout): client.extract(banks)