Skip to content

Commit 3c34824

Browse files
committed
feature/python-sdk-psd2: Added a test for PSD2.
1 parent 4be3f5b commit 3c34824

File tree

1 file changed

+93
-1
lines changed

1 file changed

+93
-1
lines changed

tests/context/test_psd2_context.py

Lines changed: 93 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
1+
import os
2+
3+
from bunq import ApiEnvironmentType
4+
from bunq.sdk.context.api_context import ApiContext
5+
from bunq.sdk.context.bunq_context import BunqContext
6+
from bunq.sdk.json import converter
7+
from bunq.sdk.model.generated.endpoint import OauthClient
18
from tests.bunq_test import BunqSdkTestCase
29

310

@@ -7,4 +14,89 @@ class TestPsd2Context(BunqSdkTestCase):
714
Psd2Context
815
"""
916

10-
# TODO: Implement PSD2
17+
_FILE_TEST_CONFIGURATION = '/assets/bunq-psd2-test.conf'
18+
_FILE_TEST_OAUTH = '/assets/bunq-oauth-test.conf'
19+
20+
_FILE_TEST_CERTIFICATE = '/assets/cert.pem'
21+
_FILE_TEST_CERTIFICATE_CHAIN = '/assets/cert.pem'
22+
_FILE_TEST_PRIVATE_KEY = '/assets/key.pem'
23+
24+
_TEST_DEVICE_DESCRIPTION = 'PSD2TestDevice'
25+
26+
@classmethod
27+
def setUpClass(cls) -> None:
28+
cls._FILE_MODE_READ = ApiContext._FILE_MODE_READ
29+
cls._FILE_TEST_CONFIGURATION_PATH_FULL = (cls._get_directory_test_root() + cls._FILE_TEST_CONFIGURATION)
30+
cls._FILE_TEST_OAUTH_PATH_FULL = (cls._get_directory_test_root() + cls._FILE_TEST_OAUTH)
31+
cls._FILE_TEST_CERTIFICATE_PATH_FULL = (cls._get_directory_test_root() + cls._FILE_TEST_CERTIFICATE)
32+
cls._FILE_TEST_CERTIFICATE_CHAIN_PATH_FULL = (cls._get_directory_test_root() + cls._FILE_TEST_CERTIFICATE_CHAIN)
33+
cls._FILE_TEST_PRIVATE_KEY_PATH_FULL = (cls._get_directory_test_root() + cls._FILE_TEST_PRIVATE_KEY)
34+
cls.setup_test_data()
35+
36+
@classmethod
37+
def setup_test_data(cls) -> None:
38+
if not os.path.isfile(cls._FILE_TEST_CONFIGURATION_PATH_FULL):
39+
try:
40+
BunqContext.load_api_context(cls._create_api_context())
41+
except FileNotFoundError:
42+
return
43+
44+
api_context = ApiContext.restore(cls._get_directory_test_root() + cls._FILE_TEST_CONFIGURATION)
45+
BunqContext.load_api_context(api_context)
46+
47+
def test_create_psd2_context(self) -> None:
48+
if os.path.isfile(self._FILE_TEST_CONFIGURATION_PATH_FULL):
49+
return
50+
51+
try:
52+
api_context = self._create_api_context()
53+
BunqContext.load_api_context(api_context)
54+
55+
self.assertTrue(os.path.isfile(self._FILE_TEST_CONFIGURATION_PATH_FULL))
56+
57+
except AssertionError:
58+
raise AssertionError
59+
60+
def test_create_oauth_client(self) -> None:
61+
if os.path.isfile(self._FILE_TEST_OAUTH):
62+
return
63+
64+
try:
65+
client_id = OauthClient.create().value
66+
oauth_client = OauthClient.get(client_id).value
67+
68+
self.assertIsNotNone(oauth_client)
69+
70+
serialized_client = converter.class_to_json(oauth_client)
71+
72+
file = open(self._FILE_TEST_OAUTH_PATH_FULL, ApiContext._FILE_MODE_WRITE)
73+
file.write(serialized_client)
74+
file.close()
75+
76+
self.assertTrue(os.path.isfile(self._FILE_TEST_OAUTH_PATH_FULL))
77+
78+
except AssertionError:
79+
raise AssertionError
80+
81+
@classmethod
82+
def _create_api_context(cls) -> ApiContext:
83+
with open(cls._FILE_TEST_CERTIFICATE_PATH_FULL, cls._FILE_MODE_READ) as file_:
84+
certificate = file_.read()
85+
86+
with open(cls._FILE_TEST_PRIVATE_KEY_PATH_FULL, cls._FILE_MODE_READ) as file_:
87+
private_key = file_.read()
88+
89+
with open(cls._FILE_TEST_CERTIFICATE_PATH_FULL, cls._FILE_MODE_READ) as file_:
90+
all_certificate_chain = file_.read()
91+
92+
api_context = ApiContext.create_for_psd2(
93+
ApiEnvironmentType.SANDBOX,
94+
certificate,
95+
private_key,
96+
[all_certificate_chain],
97+
cls._TEST_DEVICE_DESCRIPTION
98+
)
99+
100+
api_context.save(cls._FILE_TEST_CONFIGURATION_PATH_FULL)
101+
102+
return api_context

0 commit comments

Comments
 (0)