Skip to content

Commit d60a5dc

Browse files
committed
Add test for authentication using private key
Signed-off-by: Roald Nefs <info@roaldnefs.com>
1 parent 024d32c commit d60a5dc

2 files changed

Lines changed: 66 additions & 3 deletions

File tree

tests/fixtures/auth.json

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
[
2+
{
3+
"method": "POST",
4+
"url": "https://api.transip.nl/v6/auth",
5+
"json": {
6+
"token": "ACCESS_TOKEN"
7+
},
8+
"status": 200,
9+
"content_type": "application/json"
10+
}
11+
]

tests/test_transip.py

Lines changed: 55 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,19 +18,55 @@
1818
# along with python-transip. If not, see <https://www.gnu.org/licenses/>.
1919

2020
import unittest
21+
import responses # type: ignore
2122

2223
from transip import TransIP
24+
from tests.utils import load_responses_fixtures
2325

2426

2527
class TransIPTest(unittest.TestCase):
2628
"""Test the TransIP client class."""
2729

2830
client: TransIP
31+
privkey: str
2932

3033
@classmethod
31-
def setUpClass(self) -> None:
32-
"""Set up a minimal TransIP client."""
33-
self.client = TransIP(access_token='ACCESS_TOKEN')
34+
def setUpClass(cls) -> None:
35+
"""Set up a minimal TransIP client and RSA private key."""
36+
cls.client = TransIP(access_token='ACCESS_TOKEN')
37+
cls.privkey: str = ( # type: ignore
38+
"-----BEGIN RSA PRIVATE KEY-----\n"
39+
"MIIEpAIBAAKCAQEAsUSEHsMuB380OUZQWDyyND4q8lEuJAgNnMkO8s5NGwzP8XSi\n"
40+
"2DdFglLGLe9kjpADs3XqZFsk8ZFFn7x0idFydGyh9tbJ2WkR9E+kNUJV5iQDzPOB\n"
41+
"wvyygEREqnl/o1h3c1q8tD2HZKBcjChn9JbMzdWwAaIs3ppcGWrEI0jZFFfSAyIZ\n"
42+
"GkC3k3umOykWIKflQcT/soAfdqW+2P9/KD/wb3AZCer2i6B2hiITiDbHh5q84Hgk\n"
43+
"D/Zg1M4yrYDyxDeGkAJHkGKNaE0tgUPoz3XTGP7uFYIx00qJyhmnzQcyV/Xcw3ZQ\n"
44+
"7DFUj1HQ5wG/kEF9a4F1+AAiO5C5QbGTFYSwBwIDAQABAoIBABbtIZlI7P8TOJHf\n"
45+
"wixnTTTshWlpjmoikIAikMheXiKNeadkylrkaxz7z53JRFwbzB69tV7dWt3TSAns\n"
46+
"ubXJXOAp3JisFtcDe8r5MeeheLKXHda396RcQknMioTxycw6eNh2d8ln28br5oxJ\n"
47+
"/YfoqPxGEsljTCJOHHM9F7johwrWSQ6f+gmiOkABvIHKgTBLa++v0D+vNrUjM6rx\n"
48+
"IE+dBrx8yIgkF4qSg4Dqnr7D0KqCZUGLZ/3K8ShQUtiQYzyHIWKUId3NUecIQcrT\n"
49+
"2Ri2TITKuER0fa7Mr+3LMSh/3+HtP2AoM34ouxr9H98LFz/UXxuFIRFTx7UVRt4N\n"
50+
"3zqhsEECgYEA+TnXanBJmFz3sNYtlQixtKrh496GB0NheuK4xeNEj9/3gJ6J/rtL\n"
51+
"ZHI7VH8r6aqoqw7sO/WJdxkwZTBOz2fe1QJ5BN0HBI5S6jIBQv9Nfqar0TDvNLB+\n"
52+
"pH6eYJZ/IEFIMObv9YmsPohXpGeXynecrpl8SazEIWLb8IzgLY0HpokCgYEAthX5\n"
53+
"1th4Re0P9rzXp21bbEwcvOKcg5dcpSaTtA1eQEILl6qqT3FP7w8/Ed7NRRY9Gcs+\n"
54+
"inAc96YRNAgIGgfT3R1BmxOMWfdFBT1zlCheS6egKKLzVPzKPiMoMP4zu4hy6uH5\n"
55+
"YVqpDLu0YQu1J2L0VYdZ9xAC0//Rx8KRcs6m/g8CgYEA41VDja+HMhf7R67WPU+E\n"
56+
"6YvGKRjdoNpxnKoaaUd5TtO46/WxYk5t4t3gCJ9H6wjkecRO8BJ0pdKwNlzuRno0\n"
57+
"5JAw26LRt/Iq571dMUO36IMXzuWYDLPBkUJ+LRSaOU3TD+hXkd1W5GNxrmFgMCsT\n"
58+
"HKCcooeZD+shPDcEdghipiECgYARBTDbYlSrxKMPX0uRPOmkz+CHz27t5gIk9dws\n"
59+
"omtC+ml2/d75mg/surIci4UIhjGj7Zmk+yHaDE3jXTTUqhKlwoxVYJhn+HMdMEdT\n"
60+
"fAqEa+DOq5yvPwnwkPy6x6gySWjkh8b10LGonQsZXyzJx7grHoHMVFTPWERVtdw+\n"
61+
"rQ5zBQKBgQC0Iwx4eeQYx60OCZpioNEQ3QPaFgqoWYEexmcMlpgQ9ycdnHx3SkE8\n"
62+
"SlMokcPIEJDhdF3632kIAHOOJeA4Tmshf+ol/O2U2PDgbJZL6W6FJlT28sZVUU8j\n"
63+
"IjFmiAiW6IIEqkJxuR1diAjppEiMmSkjPavo7oQs0TZMMUkli1N9dw==\n"
64+
"-----END RSA PRIVATE KEY-----"
65+
)
66+
67+
def setUp(self) -> None:
68+
"""Setup mocked responses for the '/auth' endpoint."""
69+
load_responses_fixtures("auth.json")
3470

3571
def test_base_url(self) -> None:
3672
"""Test the base URL of the API."""
@@ -43,3 +79,19 @@ def test_authorization_header(self) -> None:
4379
auth_header: str = self.client.headers["Authorization"]
4480

4581
assert auth_header == "Bearer ACCESS_TOKEN"
82+
83+
@responses.activate
84+
def test_private_key_authorization_header(self) -> None:
85+
"""
86+
Test if TransIP instances initialized with a private key, results in
87+
the 'Authorization' header containing the access token returned by the
88+
mocked response.
89+
"""
90+
client: TransIP = TransIP(login="testuser", private_key=self.privkey)
91+
auth_header: str = self.client.headers["Authorization"]
92+
93+
# Assert a single request is made to the mocked TransIP API
94+
self.assertEqual(len(responses.calls), 1)
95+
# Assert the 'Authorization' header contains the access token returned
96+
# by the mocked response
97+
self.assertEqual(auth_header, "Bearer ACCESS_TOKEN")

0 commit comments

Comments
 (0)