def test_handle_platform_error_with_custom_handler(self): error = self._create_http_error(payload=_NOT_FOUND_PAYLOAD) invocations = [] def _custom_handler(cause, message, error_dict, http_response): invocations.append((cause, message, error_dict, http_response)) return exceptions.InvalidArgumentError('Custom message', cause, http_response) firebase_error = _utils.handle_platform_error_from_googleapiclient( error, _custom_handler) assert isinstance(firebase_error, exceptions.InvalidArgumentError) assert str(firebase_error) == 'Custom message' assert firebase_error.cause is error assert firebase_error.http_response.status_code == 500 assert firebase_error.http_response.content.decode( ) == _NOT_FOUND_PAYLOAD assert len(invocations) == 1 args = invocations[0] assert len(args) == 4 assert args[0] is error assert args[1] == 'test error' assert args[2] == _NOT_FOUND_ERROR_DICT assert args[3] is not None
def test_handle_platform_error_with_no_response(self): error = socket.error('Test error') firebase_error = _utils.handle_platform_error_from_googleapiclient( error) assert isinstance(firebase_error, exceptions.UnknownError) assert str( firebase_error ) == 'Unknown error while making a remote service call: Test error' assert firebase_error.cause is error assert firebase_error.http_response is None
def test_handle_platform_error_with_no_error_code(self): error = self._create_http_error(payload='no error code') firebase_error = _utils.handle_platform_error_from_googleapiclient( error) assert isinstance(firebase_error, exceptions.InternalError) message = 'Unexpected HTTP response with status: 500; body: no error code' assert str(firebase_error) == message assert firebase_error.cause is error assert firebase_error.http_response.status_code == 500 assert firebase_error.http_response.content.decode() == 'no error code'
def test_handle_platform_error(self): error = self._create_http_error(payload=_NOT_FOUND_PAYLOAD) firebase_error = _utils.handle_platform_error_from_googleapiclient( error) assert isinstance(firebase_error, exceptions.NotFoundError) assert str(firebase_error) == 'test error' assert firebase_error.cause is error assert firebase_error.http_response.status_code == 500 assert firebase_error.http_response.content.decode( ) == _NOT_FOUND_PAYLOAD
def _handle_batch_error(self, error): """Handles errors received from the googleapiclient while making batch requests.""" return _utils.handle_platform_error_from_googleapiclient( error, _MessagingService._build_fcm_error_googleapiclient)