@@ -282,11 +282,11 @@ def authenticate(
282282 )
283283
284284 # waiting for MFA authentication
285- if ret ["data" ].get ("nextAction" ) in (
285+ if ret ["data" ] and ret [ "data" ] .get ("nextAction" ) in (
286286 "EXT_AUTHN_DUO_ALL" ,
287287 "EXT_AUTHN_DUO_PUSH_N_PASSCODE" ,
288288 ):
289- body ["inFlightCtx" ] = ret ["data" ][ "inFlightCtx" ]
289+ body ["inFlightCtx" ] = ret ["data" ]. get ( "inFlightCtx" )
290290 body ["data" ]["EXT_AUTHN_DUO_METHOD" ] = "push"
291291 self .ret = {"message" : "Timeout" , "data" : {}}
292292
@@ -310,9 +310,13 @@ def post_request_wrapper(self, url, headers, body) -> None:
310310 t .join (timeout = timeout )
311311
312312 ret = self .ret
313- if ret and ret ["data" ].get ("nextAction" ) == "EXT_AUTHN_SUCCESS" :
313+ if (
314+ ret
315+ and ret ["data" ]
316+ and ret ["data" ].get ("nextAction" ) == "EXT_AUTHN_SUCCESS"
317+ ):
314318 body = copy .deepcopy (body_template )
315- body ["inFlightCtx" ] = ret ["data" ][ "inFlightCtx" ]
319+ body ["inFlightCtx" ] = ret ["data" ]. get ( "inFlightCtx" )
316320 # final request to get tokens
317321 ret = self ._rest ._post_request (
318322 url ,
@@ -321,7 +325,7 @@ def post_request_wrapper(self, url, headers, body) -> None:
321325 timeout = self ._rest ._connection .login_timeout ,
322326 socket_timeout = self ._rest ._connection .login_timeout ,
323327 )
324- elif not ret or not ret ["data" ].get ("token" ):
328+ elif not ret or not ret ["data" ] or not ret [ "data" ] .get ("token" ):
325329 # not token is returned.
326330 Error .errorhandler_wrapper (
327331 self ._rest ._connection ,
@@ -343,10 +347,10 @@ def post_request_wrapper(self, url, headers, body) -> None:
343347 )
344348 return session_parameters # required for unit test
345349
346- elif ret ["data" ].get ("nextAction" ) == "PWD_CHANGE" :
350+ elif ret ["data" ] and ret [ "data" ] .get ("nextAction" ) == "PWD_CHANGE" :
347351 if callable (password_callback ):
348352 body = copy .deepcopy (body_template )
349- body ["inFlightCtx" ] = ret ["data" ][ "inFlightCtx" ]
353+ body ["inFlightCtx" ] = ret ["data" ]. get ( "inFlightCtx" )
350354 body ["data" ]["LOGIN_NAME" ] = user
351355 body ["data" ]["PASSWORD" ] = (
352356 auth_instance .password
@@ -411,41 +415,59 @@ def post_request_wrapper(self, url, headers, body) -> None:
411415 )
412416 else :
413417 logger .debug (
414- "token = %s" , "******" if ret ["data" ]["token" ] is not None else "NULL"
418+ "token = %s" ,
419+ "******"
420+ if ret ["data" ] and ret ["data" ].get ("token" ) is not None
421+ else "NULL" ,
415422 )
416423 logger .debug (
417424 "master_token = %s" ,
418- "******" if ret ["data" ]["masterToken" ] is not None else "NULL" ,
425+ "******"
426+ if ret ["data" ] and ret ["data" ].get ("masterToken" ) is not None
427+ else "NULL" ,
419428 )
420429 logger .debug (
421430 "id_token = %s" ,
422- "******" if ret ["data" ].get ("idToken" ) is not None else "NULL" ,
431+ "******"
432+ if ret ["data" ] and ret ["data" ].get ("idToken" ) is not None
433+ else "NULL" ,
423434 )
424435 logger .debug (
425436 "mfa_token = %s" ,
426- "******" if ret ["data" ].get ("mfaToken" ) is not None else "NULL" ,
437+ "******"
438+ if ret ["data" ] and ret ["data" ].get ("mfaToken" ) is not None
439+ else "NULL" ,
427440 )
441+ if not ret ["data" ]:
442+ Error .errorhandler_wrapper (
443+ None ,
444+ None ,
445+ Error ,
446+ {
447+ "msg" : "There is no data in the returning response, please retry the operation."
448+ },
449+ )
428450 self ._rest .update_tokens (
429- ret ["data" ][ "token" ] ,
430- ret ["data" ][ "masterToken" ] ,
451+ ret ["data" ]. get ( "token" ) ,
452+ ret ["data" ]. get ( "masterToken" ) ,
431453 master_validity_in_seconds = ret ["data" ].get ("masterValidityInSeconds" ),
432454 id_token = ret ["data" ].get ("idToken" ),
433455 mfa_token = ret ["data" ].get ("mfaToken" ),
434456 )
435457 self .write_temporary_credentials (
436458 self ._rest ._host , user , session_parameters , ret
437459 )
438- if "sessionId" in ret ["data" ]:
439- self ._rest ._connection ._session_id = ret ["data" ][ "sessionId" ]
440- if "sessionInfo" in ret ["data" ]:
441- session_info = ret ["data" ][ "sessionInfo" ]
460+ if ret [ "data" ] and "sessionId" in ret ["data" ]:
461+ self ._rest ._connection ._session_id = ret ["data" ]. get ( "sessionId" )
462+ if ret [ "data" ] and "sessionInfo" in ret ["data" ]:
463+ session_info = ret ["data" ]. get ( "sessionInfo" )
442464 self ._rest ._connection ._database = session_info .get ("databaseName" )
443465 self ._rest ._connection ._schema = session_info .get ("schemaName" )
444466 self ._rest ._connection ._warehouse = session_info .get ("warehouseName" )
445467 self ._rest ._connection ._role = session_info .get ("roleName" )
446- if "parameters" in ret ["data" ]:
468+ if ret [ "data" ] and "parameters" in ret ["data" ]:
447469 session_parameters .update (
448- {p ["name" ]: p ["value" ] for p in ret ["data" ][ "parameters" ] }
470+ {p ["name" ]: p ["value" ] for p in ret ["data" ]. get ( "parameters" ) }
449471 )
450472 self ._rest ._connection ._update_parameters (session_parameters )
451473 return session_parameters
0 commit comments