1818# along with python-transip. If not, see <https://www.gnu.org/licenses/>.
1919
2020import unittest
21+ import responses # type: ignore
2122
2223from transip import TransIP
24+ from tests .utils import load_responses_fixtures
2325
2426
2527class 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