def _error_response(self, response_obj: StufErrorResponse): """Builds the error response based on the error response received from MKS :param response_obj: :return: """ logging.error(f"MKS Error. " f"Code {response_obj.get_error_code()}. " f"Plek: {response_obj.get_error_plek()}. " f"Omschrijving: {response_obj.get_error_omschrijving()} " f"Berichtcode: {response_obj.get_berichtcode()}") try: return response_obj.get_http_response() except UnknownErrorCode: return RESTResponse.bad_request()
def get_http_response(self): """Returns HTTP response object for given MKS code. :return: """ if self.get_berichtcode() != 'Fo02': raise UnknownErrorCode() responses = { # De stuurgegevens zijn onjuist gevuld 'StUF001': RESTResponse.bad_request(), # Het interactieve proces voor het afhandelen van een synchrone vraag is niet actief 'StUF002': RESTResponse.internal_server_error(), # De gevraagde gegevens zijn niet beschikbaar 'StUF003': RESTResponse.not_found(), # De gevraagde sortering wordt niet ondersteund 'StUF004': RESTResponse.internal_server_error(), # Er heeft zich in de StUF-communicatie een time-out voorgedaan 'StUF005': RESTResponse.internal_server_error(), # Het vraagbericht bevat als selectiecriterium zowel de sleutel in het vragende systeem als het ontvangende # systeem, 'StUF006': RESTResponse.internal_server_error(), # Het ontvangende systeem ondersteunt niet het bevraagd worden op sleutel in het vragende systeem 'StUF007': RESTResponse.internal_server_error(), # De beantwoording van het vraagbericht vergt meer systeemresources dan het antwoordende systeem # beschikbaar heeft 'StUF008': RESTResponse.internal_server_error(), # Het vraagbericht is gericht aan een niet bekend systeem 'StUF009': RESTResponse.internal_server_error(), # Het vragende systeem is niet geautoriseerd voor de gevraagde gegevens 'StUF010': RESTResponse.forbidden(), # De syntax van het StUF-vraagbericht is onjuist 'StUF011': RESTResponse.internal_server_error(), # Het ontvangende systeem ondersteunt niet de afhandeling van asynchrone vraagberichten 'StUF012': RESTResponse.internal_server_error(), # Het vragende systeem is bij het ontvangende systeem niet bekend 'StUF013': RESTResponse.internal_server_error(), # Het zendende systeem is niet geautoriseerd voor de gevraagde combinatie van berichtcode, # entiteittype en functie 'StUF052': RESTResponse.forbidden(), } try: return responses[self.get_error_code()] except KeyError: raise UnknownErrorCode()
def get(self, **kwargs): try: errors = self._validate(**kwargs) except StufRestFilterView.InvalidQueryParametersException as e: errors = e.err assert getattr(self, '_validate_called', False), \ f"Make sure to call super()._validate() from children of {self.__class__}" if errors: return RESTResponse.bad_request(**errors) try: return self._get(**kwargs) except Exception: logging.error("ERROR: Request failed:") logging.error(traceback.format_exc()) return RESTResponse.internal_server_error()
def test_bad_request(self): with patch("gobstuf.rest.brp.rest_response.request", mock_request): result = RESTResponse.bad_request() self.assertEqual(result['status'], 400)