44
55from ai .api .aws .exceptions import WcaSecretManagerError
66from ai .api .aws .wca_secret_manager import Suffixes , WcaSecretManager
7- from ai .api .model_client .exceptions import WcaTokenFailure
7+ from ai .api .model_client .exceptions import WcaTokenFailure , WcaTokenFailureApiKeyError
88from ai .api .model_client .wca_client import WCAClient
99from ai .api .permissions import (
1010 AcceptedTermsPermission ,
@@ -194,7 +194,9 @@ def test_set_key_with_invalid_value(self, *args):
194194 self .mock_secret_manager .get_secret .assert_called_with ('123' , Suffixes .API_KEY )
195195
196196 # Set Key
197- self .mock_wca_client .get_token .side_effect = WcaTokenFailure ('Something went wrong' )
197+ self .mock_wca_client .get_token .side_effect = WcaTokenFailureApiKeyError (
198+ 'Something went wrong'
199+ )
198200 with self .assertLogs (logger = 'root' , level = 'DEBUG' ) as log :
199201 r = self .client .post (
200202 reverse ('wca_api_key' ),
@@ -203,7 +205,7 @@ def test_set_key_with_invalid_value(self, *args):
203205 )
204206 self .assertEqual (r .status_code , HTTPStatus .BAD_REQUEST )
205207 self .mock_secret_manager .save_secret .assert_not_called ()
206- _assert_segment_log (self , log , "modelApiKeySet" , "WcaTokenFailure " )
208+ _assert_segment_log (self , log , "modelApiKeySet" , "WcaTokenFailureApiKeyError " )
207209
208210 @override_settings (SEGMENT_WRITE_KEY = 'DUMMY_KEY_VALUE' )
209211 def test_set_key_throws_secret_manager_exception (self , * args ):
@@ -222,18 +224,17 @@ def test_set_key_throws_secret_manager_exception(self, *args):
222224 _assert_segment_log (self , log , "modelApiKeySet" , "WcaSecretManagerError" )
223225
224226 @override_settings (SEGMENT_WRITE_KEY = 'DUMMY_KEY_VALUE' )
225- def test_set_key_throws_wca_client_exception (self , * args ):
227+ def test_set_key_throws_http_exception (self , * args ):
226228 self .user .organization_id = '123'
227229 self .client .force_authenticate (user = self .user )
228230 self .mock_wca_client .get_token .side_effect = WcaTokenFailure ()
229-
230231 with self .assertLogs (logger = 'root' , level = 'DEBUG' ) as log :
231232 r = self .client .post (
232233 reverse ('wca_api_key' ),
233234 data = '{ "key": "a-new-key" }' ,
234235 content_type = 'application/json' ,
235236 )
236- self .assertEqual (r .status_code , HTTPStatus .BAD_REQUEST )
237+ self .assertEqual (r .status_code , HTTPStatus .SERVICE_UNAVAILABLE )
237238 _assert_segment_log (self , log , "modelApiKeySet" , "WcaTokenFailure" )
238239
239240 @override_settings (SEGMENT_WRITE_KEY = 'DUMMY_KEY_VALUE' )
@@ -314,13 +315,37 @@ def _test_validate_key_with_valid_value(self, has_seat):
314315 self .assertEqual (r .status_code , HTTPStatus .OK )
315316 _assert_segment_log (self , log , "modelApiKeyValidate" , None )
316317
318+ @override_settings (SEGMENT_WRITE_KEY = 'DUMMY_KEY_VALUE' )
319+ def test_validate_key_with_missing_value (self , * args ):
320+ self .user .organization_id = '123'
321+ self .client .force_authenticate (user = self .user )
322+ self .mock_secret_manager .get_secret .return_value = None
323+
324+ with self .assertLogs (logger = 'root' , level = 'DEBUG' ) as log :
325+ r = self .client .get (reverse ('wca_api_key_validator' ))
326+ self .assertEqual (r .status_code , HTTPStatus .BAD_REQUEST )
327+ _assert_segment_log (self , log , "modelApiKeyValidate" , None )
328+
317329 @override_settings (SEGMENT_WRITE_KEY = 'DUMMY_KEY_VALUE' )
318330 def test_validate_key_with_invalid_value (self , * args ):
319331 self .user .organization_id = '123'
320332 self .client .force_authenticate (user = self .user )
321- self .mock_wca_client .get_token .side_effect = WcaTokenFailure ('Something went wrong' )
333+ self .mock_wca_client .get_token .side_effect = WcaTokenFailureApiKeyError (
334+ 'Something went wrong'
335+ )
322336
323337 with self .assertLogs (logger = 'root' , level = 'DEBUG' ) as log :
324338 r = self .client .get (reverse ('wca_api_key_validator' ))
325339 self .assertEqual (r .status_code , HTTPStatus .BAD_REQUEST )
340+ _assert_segment_log (self , log , "modelApiKeyValidate" , "WcaTokenFailureApiKeyError" )
341+
342+ @override_settings (SEGMENT_WRITE_KEY = 'DUMMY_KEY_VALUE' )
343+ def test_validate_key_throws_http_exception (self , * args ):
344+ self .user .organization_id = '123'
345+ self .client .force_authenticate (user = self .user )
346+ self .mock_wca_client .get_token .side_effect = WcaTokenFailure ('Something went wrong' )
347+
348+ with self .assertLogs (logger = 'root' , level = 'DEBUG' ) as log :
349+ r = self .client .get (reverse ('wca_api_key_validator' ))
350+ self .assertEqual (r .status_code , HTTPStatus .SERVICE_UNAVAILABLE )
326351 _assert_segment_log (self , log , "modelApiKeyValidate" , "WcaTokenFailure" )
0 commit comments