Example #1
0
    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()
Example #2
0
    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()
Example #3
0
    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()
Example #4
0
 def test_bad_request(self):
     with patch("gobstuf.rest.brp.rest_response.request", mock_request):
         result = RESTResponse.bad_request()
         self.assertEqual(result['status'], 400)