Skip to content

Commit 6f1019f

Browse files
committed
cleanup tests; fix api client
1 parent 5809aad commit 6f1019f

12 files changed

+88
-105
lines changed

bunq/sdk/client.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,8 @@ def _request(self, method, uri_relative, request_bytes, custom_headers):
101101
headers=all_headers
102102
)
103103

104+
self._assert_response_success(response)
105+
104106
if self._api_context.installation_context is not None:
105107
security.validate_response(
106108
self._api_context.installation_context.public_key_server,
@@ -109,8 +111,6 @@ def _request(self, method, uri_relative, request_bytes, custom_headers):
109111
response.headers
110112
)
111113

112-
self._assert_response_success(response)
113-
114114
return response
115115

116116
def _get_all_headers(self, method, endpoint, request_bytes, custom_headers):

tests/api_context_handler.py

Lines changed: 0 additions & 50 deletions
This file was deleted.

tests/bunq_test.py

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
import os
2+
import unittest
3+
4+
from tests.config import Config
5+
from bunq.sdk.context import ApiContext
6+
from bunq.sdk.context import ApiEnvironmentType
7+
from bunq.sdk.model.generated import endpoint
8+
from bunq.sdk.exception import ApiException
9+
10+
11+
class BunqSdkTestCase(unittest.TestCase):
12+
# Config values
13+
_API_KEY = Config.get_api_key()
14+
15+
# Name of bunq config file
16+
_FILENAME_BUNQ_CONFIG = "/bunq-test.conf"
17+
18+
# Device description used for python tests
19+
_DEVICE_DESCRIPTION = 'Python test device'
20+
21+
@classmethod
22+
def get_api_context(cls):
23+
"""
24+
Calls IsSessionActive to check if the session token is still active
25+
and returns the ApiContext.
26+
27+
Catches ApiException if the session is inactive.
28+
Catches BunqException if the conf file does not exist.
29+
30+
:rtype: ApiContext
31+
"""
32+
33+
filename_bunq_config_full = (cls._get_directory_test_root() +
34+
cls._FILENAME_BUNQ_CONFIG)
35+
36+
try:
37+
api_context = ApiContext.restore(filename_bunq_config_full)
38+
endpoint.User.list(api_context)
39+
except (ApiException, FileNotFoundError):
40+
api_context = ApiContext(ApiEnvironmentType.SANDBOX, cls._API_KEY,
41+
cls._DEVICE_DESCRIPTION, [])
42+
43+
api_context.save(filename_bunq_config_full)
44+
45+
return api_context
46+
47+
@staticmethod
48+
def _get_directory_test_root():
49+
return os.path.dirname(os.path.abspath(__file__))

tests/model/generated/test_attachment_public.py

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,11 @@
1-
import unittest
2-
3-
from tests.api_context_handler import ApiContextHandler
4-
from tests.config import Config
1+
from bunq.sdk.client import ApiClient
52
from bunq.sdk.model.generated.endpoint import AttachmentPublic
63
from bunq.sdk.model.generated.endpoint import AttachmentPublicContent
7-
from bunq.sdk.client import ApiClient
4+
from tests.bunq_test import BunqSdkTestCase
5+
from tests.config import Config
86

97

10-
class TestAttachmentPublic(unittest.TestCase):
8+
class TestAttachmentPublic(BunqSdkTestCase):
119
"""
1210
Tests:
1311
AttachmentPublic
@@ -17,13 +15,12 @@ class TestAttachmentPublic(unittest.TestCase):
1715
@classmethod
1816
def setUpClass(cls):
1917
# config values
20-
cls._PATH_TO_ATTACHMENT = '/Users/khellemun/bunq/sdk_python/tests/' \
21-
'assets'
18+
cls._PATH_ATTACHMENT = cls._get_directory_test_root() + '/assets/'
2219
cls._READ_BYTES = "rb"
2320
cls._CONTENT_TYPE = Config.get_attachment_content_type()
2421
cls._ATTACHMENT_DESCRIPTION = Config.get_attachment_description()
2522
cls._ATTACHMENT_PATH_IN = Config.get_attachment_path_in()
26-
cls._API_CONTEXT = ApiContextHandler.get_api_context()
23+
cls._API_CONTEXT = cls.get_api_context()
2724

2825
def test_file_upload_and_retrieval(self):
2926
"""
@@ -53,6 +50,6 @@ def attachment_contents(self):
5350
:rtype: bytes
5451
"""
5552

56-
with open(self._PATH_TO_ATTACHMENT + self._ATTACHMENT_PATH_IN,
53+
with open(self._PATH_ATTACHMENT + self._ATTACHMENT_PATH_IN,
5754
self._READ_BYTES) as f:
5855
return f.read()

tests/model/generated/test_avatar.py

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,12 @@
1-
import unittest
2-
31
from bunq.sdk.client import ApiClient
42
from bunq.sdk.model.generated.endpoint import Avatar
53
from bunq.sdk.model.generated.endpoint import AttachmentPublic
64
from bunq.sdk.model.generated.endpoint import AttachmentPublicContent
7-
from tests.api_context_handler import ApiContextHandler
5+
from tests.bunq_test import BunqSdkTestCase
86
from tests.config import Config
97

108

11-
class AvatarTest(unittest.TestCase):
9+
class AvatarTest(BunqSdkTestCase):
1210
"""
1311
Tests:
1412
Avatar
@@ -19,13 +17,12 @@ class AvatarTest(unittest.TestCase):
1917
@classmethod
2018
def setUpClass(cls):
2119
cls._FIRST_INDEX = 0
22-
cls._PATH_TO_ATTACHMENT = '/Users/khellemun/bunq/sdk_python/tests' \
23-
'/assets'
20+
cls._PATH_ATTACHMENT = cls._get_directory_test_root() + '/assets/'
2421
cls._READ_FILE_BYTES = 'rb'
2522
cls._CONTENT_TYPE = Config.get_attachment_content_type()
2623
cls._ATTACHMENT_DESCRIPTION = Config.get_attachment_description()
2724
cls._ATTACHMENT_PATH_IN = Config.get_attachment_path_in()
28-
cls._API_CONTEXT = ApiContextHandler.get_api_context()
25+
cls._API_CONTEXT = cls.get_api_context()
2926

3027
def test_avatar_creation(self):
3128
"""
@@ -59,6 +56,6 @@ def attachment_contents(self):
5956
:rtype: bytes
6057
"""
6158

62-
with open(self._PATH_TO_ATTACHMENT + self._ATTACHMENT_PATH_IN,
59+
with open(self._PATH_ATTACHMENT + self._ATTACHMENT_PATH_IN,
6360
self._READ_FILE_BYTES) as f:
6461
return f.read()

tests/model/generated/test_card_debit.py

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,16 @@
11
import random
22
import string
3-
import unittest
43

54
from bunq.sdk.model.generated.endpoint import User
65
from bunq.sdk.model.generated.endpoint import CardName
76
from bunq.sdk.model.generated.endpoint import Card
87
from bunq.sdk.model.generated.endpoint import CardDebit
98
from bunq.sdk.model.generated.object_ import Pointer
10-
from tests.api_context_handler import ApiContextHandler
9+
from tests.bunq_test import BunqSdkTestCase
1110
from tests.config import Config
1211

1312

14-
class TestCardDebit(unittest.TestCase):
13+
class TestCardDebit(BunqSdkTestCase):
1514
"""
1615
Tests:
1716
Card
@@ -24,9 +23,9 @@ def setUpClass(cls):
2423
cls._CARD_PIN_CODE = '4045'
2524
cls._FIRST_INDEX = 0
2625
cls._SECOND_LINE_LENGTH_MAXIMUM = 20
27-
cls._EMPTY_STRING = ''
26+
cls._STRING_EMPTY = ''
2827
cls._USER_ID = Config.get_user_id()
29-
cls._API_CONTEXT = ApiContextHandler.get_api_context()
28+
cls._API_CONTEXT = cls.get_api_context()
3029

3130
def test_order_debit_card(self):
3231
"""
@@ -81,4 +80,4 @@ def second_line_random(self):
8180
next_char = random.choice(string.ascii_uppercase)
8281
second_line_characters.append(next_char)
8382

84-
return self._EMPTY_STRING.join(second_line_characters)
83+
return self._STRING_EMPTY.join(second_line_characters)

tests/model/generated/test_draft_share_invite_bank.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import unittest
21
from datetime import datetime
32
from datetime import timedelta
43

@@ -7,11 +6,11 @@
76
from bunq.sdk.model.generated.object_ import DraftShareInviteBankEntry
87
from bunq.sdk.model.generated.endpoint import DraftShareInviteBank
98
from bunq.sdk.model.generated.endpoint import DraftShareInviteBankQrCodeContent
10-
from tests.api_context_handler import ApiContextHandler
9+
from tests.bunq_test import BunqSdkTestCase
1110
from tests.config import Config
1211

1312

14-
class TestDraftShareInvite(unittest.TestCase):
13+
class TestDraftShareInvite(BunqSdkTestCase):
1514
"""
1615
Tests:
1716
DraftShareInviteBankEntry
@@ -24,7 +23,7 @@ def setUpClass(cls):
2423
cls._WRITE_BYTES = 'wb'
2524
cls._EXPIRATION_ADDED_TIME = 1
2625
cls._USER_ID = Config.get_user_id()
27-
cls._API_CONTEXT = ApiContextHandler.get_api_context()
26+
cls._API_CONTEXT = cls.get_api_context()
2827

2928
def test_draft_share_invite_bank(self):
3029
"""

tests/model/generated/test_monetary_account_bank.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
1-
import unittest
21
from secrets import token_hex
32

43
from bunq.sdk.model.generated.endpoint import MonetaryAccountBank
5-
from tests.api_context_handler import ApiContextHandler
4+
from tests.bunq_test import BunqSdkTestCase
65
from tests.config import Config
76

87

9-
class TestMonetaryAccount(unittest.TestCase):
8+
class TestMonetaryAccount(BunqSdkTestCase):
109
"""
1110
Tests:
1211
MonetaryAccountBank
@@ -21,7 +20,7 @@ def setUpClass(cls):
2120
cls._FIELD_CURRENCY = 'EUR'
2221
cls._MONETARY_ACCOUNT_PREFIX = 'Python_test'
2322
cls._USER_ID = Config.get_user_id()
24-
cls._API_CONTEXT = ApiContextHandler.get_api_context()
23+
cls._API_CONTEXT = cls.get_api_context()
2524

2625
def test_create_new_monetary_account(self):
2726
"""

tests/model/generated/test_payment.py

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,12 @@
1-
import unittest
2-
31
from bunq.sdk.model.generated.endpoint import Payment
42
from bunq.sdk.model.generated.endpoint import PaymentChat
53
from bunq.sdk.model.generated.endpoint import ChatMessageText
64
from bunq.sdk.model.generated.object_ import Amount
7-
from tests.api_context_handler import ApiContextHandler
5+
from tests.bunq_test import BunqSdkTestCase
86
from tests.config import Config
97

108

11-
class TestPayment(unittest.TestCase):
9+
class TestPayment(BunqSdkTestCase):
1210
"""
1311
Tests:
1412
Payment
@@ -26,7 +24,7 @@ def setUpClass(cls):
2624
cls._COUNTER_PARTY_OTHER_USER = Config.get_pointer_counter_party_other()
2725
cls._COUNTER_PARTY_SAME_USER = Config.get_pointer_counter_party_self()
2826
cls._MONETARY_ACCOUNT_ID = Config.get_monetary_account_id_1()
29-
cls._API_CONTEXT = ApiContextHandler.get_api_context()
27+
cls._API_CONTEXT = cls.get_api_context()
3028

3129
def test_payment_to_other_user(self):
3230
"""

tests/model/generated/test_request_inquiry.py

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,11 @@
1-
import unittest
2-
31
from bunq.sdk.model.generated.object_ import Amount
4-
from tests.api_context_handler import ApiContextHandler
2+
from tests.bunq_test import BunqSdkTestCase
53
from tests.config import Config
64
from bunq.sdk.model.generated.endpoint import RequestInquiry
75
from bunq.sdk.model.generated.endpoint import RequestResponse
86

97

10-
class TestRequestEnquiry(unittest.TestCase):
8+
class TestRequestEnquiry(BunqSdkTestCase):
119
"""
1210
Tests:
1311
RequestInquiry
@@ -25,12 +23,12 @@ def setUpClass(cls):
2523
cls._COUNTER_PARTY_SAME_USER = Config.get_pointer_counter_party_self()
2624
cls._MONETARY_ACCOUNT_ID = Config.get_monetary_account_id_1()
2725
cls._MONETARY_ACCOUNT_ID2 = Config.get_monetary_account_id_2()
28-
cls._API_CONTEXT = ApiContextHandler.get_api_context()
26+
cls._API_CONTEXT = cls.get_api_context()
2927

3028
def test_sending_and_accepting_request(self):
3129
"""
32-
Tests sending a request from monetary account 1 to monetary account 2 and accepting this
33-
request
30+
Tests sending a request from monetary account 1 to monetary account 2
31+
and accepting this request
3432
3533
This test has no assertion as of its testing to see if the code runs
3634
without errors

0 commit comments

Comments
 (0)