|
| 1 | +import hashlib |
1 | 2 | from os.path import dirname, join |
2 | 3 | from unittest.mock import patch |
3 | | -import hashlib |
4 | | -import hmac |
5 | 4 |
|
6 | 5 | from pydantic import ValidationError |
7 | 6 | from pytest import raises |
@@ -36,6 +35,8 @@ def test_create_auth_class_and_get_objects(): |
36 | 35 | assert auth.api_key == api_key |
37 | 36 | assert auth.api_secret == api_secret |
38 | 37 | assert type(auth._jwt_client) == JwtClient |
| 38 | + assert auth._signature_secret == signature_secret |
| 39 | + assert auth._signature_method == hashlib.sha256 |
39 | 40 |
|
40 | 41 |
|
41 | 42 | def test_create_new_auth_invalid_type(): |
@@ -63,6 +64,10 @@ def test_auth_init_with_invalid_combinations(): |
63 | 64 | Auth(api_secret=api_secret, application_id=application_id) |
64 | 65 | with raises(InvalidAuthError): |
65 | 66 | Auth(api_secret=api_secret, private_key=private_key) |
| 67 | + with raises(InvalidAuthError): |
| 68 | + Auth(application_id=application_id, signature_secret=signature_secret) |
| 69 | + with raises(InvalidAuthError): |
| 70 | + Auth(private_key=private_key, signature_secret=signature_secret) |
66 | 71 |
|
67 | 72 |
|
68 | 73 | def test_auth_init_with_valid_api_key_and_api_secret(): |
@@ -110,96 +115,64 @@ def test_create_basic_auth_string(): |
110 | 115 | assert auth.create_basic_auth_string() == 'Basic cXdlcmFzZGY6MTIzNHF3ZXJhc2Rmenhjdg==' |
111 | 116 |
|
112 | 117 |
|
113 | | -def test_auth_init_with_valid_combinations(): |
114 | | - api_key = 'qwerasdf' |
115 | | - api_secret = '1234qwerasdfzxcv' |
116 | | - application_id = 'asdfzxcv' |
117 | | - private_key = 'dummy_private_key' |
118 | | - signature_secret = 'signature_secret' |
119 | | - signature_method = 'sha256' |
120 | | - |
| 118 | +def test_sign_params(): |
121 | 119 | auth = Auth( |
122 | 120 | api_key=api_key, |
123 | | - api_secret=api_secret, |
124 | | - application_id=application_id, |
125 | | - private_key=private_key, |
126 | 121 | signature_secret=signature_secret, |
127 | 122 | signature_method=signature_method, |
128 | 123 | ) |
129 | 124 |
|
130 | | - assert auth._api_key == api_key |
131 | | - assert auth._api_secret == api_secret |
132 | | - assert auth._jwt_client.application_id == application_id |
133 | | - assert auth._jwt_client.private_key == private_key |
134 | | - assert auth._signature_secret == signature_secret |
135 | | - assert auth._signature_method == hashlib.sha256 |
| 125 | + params = {'param1': 'value1', 'param2': 'value2', 'timestamp': 1234567890} |
136 | 126 |
|
| 127 | + signed_params_hash = auth.sign_params(params) |
137 | 128 |
|
138 | | -def test_auth_init_with_invalid_combinations(): |
139 | | - api_key = 'qwerasdf' |
140 | | - api_secret = '1234qwerasdfzxcv' |
141 | | - application_id = 'asdfzxcv' |
142 | | - private_key = 'dummy_private_key' |
143 | | - signature_secret = 'signature_secret' |
144 | | - signature_method = 'invalid_method' |
145 | | - |
146 | | - with patch('vonage_http_client.auth.hashlib') as mock_hashlib: |
147 | | - mock_hashlib.sha256.side_effect = AttributeError |
148 | | - |
149 | | - auth = Auth( |
150 | | - api_key=api_key, |
151 | | - api_secret=api_secret, |
152 | | - application_id=application_id, |
153 | | - private_key=private_key, |
154 | | - signature_secret=signature_secret, |
155 | | - signature_method=signature_method, |
156 | | - ) |
157 | | - |
158 | | - assert auth._api_key == api_key |
159 | | - assert auth._api_secret == api_secret |
160 | | - assert auth._jwt_client is None |
161 | | - assert auth._signature_secret == signature_secret |
162 | | - assert auth._signature_method is None |
| 129 | + assert ( |
| 130 | + signed_params_hash |
| 131 | + == '280c4320703dbc98bfa22db676655ed2acfbfe8792b062ff7622e67f1183c287' |
| 132 | + ) |
163 | 133 |
|
164 | 134 |
|
165 | | -def test_sign_params(): |
166 | | - auth = Auth(signature_secret='signature_secret', signature_method='sha256') |
| 135 | +def test_sign_params_default_sig_method(): |
| 136 | + auth = Auth(api_key=api_key, signature_secret=signature_secret) |
167 | 137 |
|
168 | 138 | params = {'param1': 'value1', 'param2': 'value2', 'timestamp': 1234567890} |
169 | 139 |
|
170 | | - signed_params = auth.sign_params(params) |
| 140 | + signed_params_hash = auth.sign_params(params) |
171 | 141 |
|
172 | | - assert signed_params == 'asdf' |
| 142 | + assert signed_params_hash == '724c2bf6ca423c36e20631b11d1c5753' |
173 | 143 |
|
174 | 144 |
|
175 | | -def test_sign_params_default_sig_method(): |
176 | | - auth = Auth() |
| 145 | +def test_sign_params_with_special_characters(): |
| 146 | + auth = Auth(api_key=api_key, signature_secret=signature_secret) |
177 | 147 |
|
178 | | - params = {'param1': 'value1', 'param2': 'value2', 'timestamp': 1234567890} |
| 148 | + params = {'param1': 'value&1', 'param2': 'value=2', 'timestamp': 1234567890} |
179 | 149 |
|
180 | 150 | signed_params = auth.sign_params(params) |
181 | 151 |
|
182 | | - assert signed_params == 'asdf' |
| 152 | + assert signed_params == '2bbf0abafb2c55e5af6231513896a2ac' |
183 | 153 |
|
184 | 154 |
|
185 | | -def test_sign_params_with_special_characters(): |
186 | | - auth = Auth(signature_secret='signature_secret', signature_method='sha1') |
| 155 | +@patch('vonage_http_client.auth.time', return_value=12345) |
| 156 | +def test_sign_params_with_dynamic_timestamp(mock_time): |
| 157 | + auth = Auth(api_key=api_key, signature_secret=signature_secret) |
187 | 158 |
|
188 | | - params = {'param1': 'value&1', 'param2': 'value=2', 'timestamp': 1234567890} |
| 159 | + params = {'param1': 'value1', 'param2': 'value2'} |
189 | 160 |
|
190 | 161 | signed_params = auth.sign_params(params) |
191 | 162 |
|
192 | | - assert signed_params == 'asdf' |
| 163 | + assert signed_params == 'bc7e95bb4e341090b3a202a2885903a5' |
193 | 164 |
|
194 | 165 |
|
195 | | -# def test_check_signature_with_valid_signature(): |
196 | | -# auth = Auth(signature_secret='signature_secret') |
197 | | -# params = {'param1': 'value1', 'param2': 'value2', 'sig': 'valid_signature'} |
198 | | -# expected_signature = hmac.new( |
199 | | -# b'signature_secret', b'param1value1param2value2', hashlib.sha256 |
200 | | -# ).hexdigest() |
| 166 | +def test_check_signature_with_valid_signature(): |
| 167 | + auth = Auth(api_key=api_key, signature_secret=signature_secret) |
| 168 | + params = { |
| 169 | + 'param1': 'value1', |
| 170 | + 'param2': 'value2', |
| 171 | + 'sig': 'valid_signature', |
| 172 | + 'timestamp': 1234567890, |
| 173 | + } |
201 | 174 |
|
202 | | -# assert auth.check_signature(params) == True |
| 175 | + assert auth.check_signature(params) == True |
203 | 176 |
|
204 | 177 |
|
205 | 178 | # def test_check_signature_with_invalid_signature(): |
|
0 commit comments