def _func(self, environ): _response = environ["response"] _content = environ["content"] res = {} if _response.status_code >= 400 : if "application/json" in _response.headers["content-type"]: try: err = ErrorResponse().deserialize(_content, "json") err.verify() res["content"] = err.to_json() res["temp"] = err except Exception: res["content"] = _content else: res["content"] = _content else: # might still be an error message try: err = ErrorResponse().deserialize(_content, "json") err.verify() res["content"] = err.to_json() except Exception: self._message = "Expected error message" self._status = CRITICAL res["url"] = environ["url"] return res
def _func(self, conv): _response = conv.last_response _content = conv.last_content res = {} if _response.status_code >= 400: self._status = self.status self._message = self.msg if CONT_JSON in _response.headers["content-type"]: try: err = ErrorResponse().deserialize(_content, "json") self._message = err.to_json() except Exception: res["content"] = _content else: res["content"] = _content res["url"] = conv.position res["http_status"] = _response.status_code else: # might still be an error message try: err = ErrorResponse().deserialize(_content, "json") err.verify() self._message = err.to_json() self._status = self.status except Exception: pass res["url"] = conv.position return res
def _func(self, conv): res = {} try: _response = last_http_response(conv) except NoSuchEvent: return res try: _content = last_raw_response(conv) except NoSuchEvent: return res if _response.status_code == 400: err = ErrorResponse().deserialize(_content, "json") err.verify() res["content"] = err.to_json() conv.events.store(EV_PROTOCOL_RESPONSE, err) elif _response.status_code in [301, 302, 303]: pass elif _response.status_code in SUCCESSFUL: err = ErrorResponse().deserialize(_content, "json") err.verify() res["content"] = err.to_json() conv.events.store(EV_PROTOCOL_RESPONSE, err) else: self._message = "Expected a 400 error message" self._status = CRITICAL return res
def _func(self, conv): res = {} try: _response = last_http_response(conv) except NoSuchEvent: return res try: _content = last_raw_response(conv) except NoSuchEvent: return res if _response.status_code == 400: err = ErrorResponse().deserialize(_content, "json") err.verify() res["content"] = err.to_json() conv.events.store(EV_PROTOCOL_RESPONSE, err) elif _response.status_code in [301, 302, 303]: pass elif _response.status_code in SUCCESSFUL: err = ErrorResponse().deserialize(_content, "json") err.verify() res["content"] = err.to_json() conv.events.store(EV_PROTOCOL_RESPONSE, err) else: self._message = "Expected a 400 error message" self._status = CRITICAL return res
def _func(self, environ): _response = environ["response"] _content = environ["content"] res = {} if _response.status_code >= 400 : self._status = self.status self._message = self.msg if "application/json" in _response.headers["content-type"]: try: err = ErrorResponse().deserialize(_content, "json") self._message = err.to_json() except Exception: res["content"] = _content else: res["content"] = _content res["url"] = environ["url"] res["http_status"] = _response.status_code else: # might still be an error message try: err = ErrorResponse().deserialize(_content, "json") err.verify() self._message = err.to_json() self._status = self.status except Exception: pass res["url"] = environ["url"] return res
def _func(self, conv): _response = conv.last_response _content = conv.last_content _client = conv.client res = {} if _response.status_code == 400: err = ErrorResponse().deserialize(_content, "json") err.verify() if err["error"] in ["consent_required", "interaction_required"]: # This is OK res["content"] = err.to_json() conv.protocol_response.append((err, _content)) else: self._message = "Not an error I expected" self._status = CRITICAL elif _response.status_code in [301, 302]: _loc = _response.headers["location"] callback = False for url in _client.redirect_uris: if _loc.startswith(url): callback = True break if not callback: self._message = "Not valid to not redirect back to RP" self._status = ERROR return res if "?" in _loc: _query = _loc.split("?")[1] elif "#" in _loc: _query = _loc.split("#")[1] else: # ??? self._message = "Expected info in the redirect" self._status = CRITICAL return res try: err = ErrorResponse().deserialize(_query, "urlencoded") err.verify() if err["error"] in ["consent_required", "interaction_required", "login_required"]: # This is OK res["content"] = err.to_json() conv.protocol_response.append((err, _query)) else: self._message = "Not an error I expected '%s'" % err[ "error"] self._status = CRITICAL except: resp = AuthorizationResponse().deserialize(_query, "urlencoded") resp.verify() res["content"] = resp.to_json() conv.protocol_response.append((resp, _query)) else: # should not get anything else self._message = "Not an response I expected" self._status = CRITICAL return res
class CheckErrorResponse(ExpectedError): """ Checks that the HTTP response status is outside the 200 or 300 range or that an JSON encoded error message has been received """ cid = "check-error-response" msg = "OP error" def _func(self, conv): res = {} # did I get one, should only be one try: instance, _ = get_protocol_response(conv, ErrorResponse)[0] except ValueError: pass else: return res _response = conv.last_response _content = conv.last_content if _response.status_code >= 400: content_type = _response.headers["content-type"] if content_type is None: res["content"] = _content elif CONT_JSON in content_type: try: self.err = ErrorResponse().deserialize(_content, "json") self.err.verify() res["content"] = self.err.to_json() except Exception: res["content"] = _content else: res["content"] = _content elif _response.status_code in [300, 301, 302, 303]: pass else: # might still be an error message try: self.err = ErrorResponse().deserialize(_content, "json") self.err.verify() res["content"] = self.err.to_json() except Exception: self._message = "Expected an error message" self._status = CRITICAL res["url"] = conv.position return res
class CheckErrorResponse(ExpectedError): """ Checks that the HTTP response status is outside the 200 or 300 range or that an JSON encoded error message has been received """ cid = "check-error-response" msg = "OP error" def _func(self, conv): res = {} # did I get one, should only be one try: instance, _ = get_protocol_response(conv, ErrorResponse)[0] except ValueError: pass else: return res _response = conv.events.last_item(EV_HTTP_RESPONSE) _content = conv.last_content if _response.status_code >= 400: content_type = _response.headers["content-type"] if content_type is None: res["content"] = _content elif CONT_JSON in content_type: try: self.err = ErrorResponse().deserialize(_content, "json") self.err.verify() res["content"] = self.err.to_json() except Exception: res["content"] = _content else: res["content"] = _content elif _response.status_code in [300, 301, 302, 303]: pass else: # might still be an error message try: self.err = ErrorResponse().deserialize(_content, "json") self.err.verify() res["content"] = self.err.to_json() except Exception: self._message = "Expected an error message" self._status = CRITICAL res["url"] = conv.position return res
def _func(self, conv): res = {} try: _response = last_http_response(conv) except NoSuchEvent: return res if _response.status_code >= 400: self._status = self.status self._message = self.msg if CONT_JSON in _response.headers["content-type"]: try: err = ErrorResponse().deserialize(_response.txt, "json") self._message = err.to_json() except Exception: res["content"] = _response.text else: res["content"] = _response.text res["url"] = _response.url res["http_status"] = _response.status_code elif _response.status_code in [300, 301, 302]: pass else: # might still be an error message msg = conv.events.last_item(EV_PROTOCOL_RESPONSE) if isinstance(msg, ErrorResponse): self._message = msg.to_json() self._status = self.status return res
def _func(self, conv): _response = conv.last_response res = {} try: _loc = _response.headers["location"] if "?" in _loc: query = _loc.split("?")[1] elif "#" in _loc: query = _loc.split("#")[1] else: # ??? self._message = "Expected a redirect" self._status = CRITICAL return res except (KeyError, AttributeError): self._message = "Expected a redirect" self._status = CRITICAL return res if _response.status_code == 302: err = ErrorResponse().deserialize(query, "urlencoded") try: err.verify() res["content"] = err.to_json() conv.protocol_response.append((err, query)) except MissingRequiredAttribute: self._message = "Expected an error message" self._status = CRITICAL else: self._message = "Expected an error message" self._status = CRITICAL return res
def test_parse_error_resp(self): err = ErrorResponse( error="invalid_request", error_description="Something was missing", error_uri="http://example.com/error_message.html", ) jerr = err.to_json() uerr = err.to_urlencoded() self.client.parse_response(AccessTokenResponse, info=jerr) self.client.parse_response(AccessTokenResponse, info=uerr, sformat="urlencoded") with pytest.raises(ResponseError): self.client.parse_response(AccessTokenResponse, info=jerr, sformat="urlencoded") with pytest.raises(DecodeError): self.client.parse_response(AccessTokenResponse, info=uerr) with pytest.raises(FormatError): self.client.parse_response( AccessTokenResponse, info=jerr, sformat="focus" # type: ignore )
def _func(self, conv): _response = conv.last_response res = {} try: _loc = _response.headers["location"] if "?" in _loc: query = _loc.split("?")[1] elif "#" in _loc: query = _loc.split("#")[1] else: # ??? self._message = "Expected a redirect" self._status = CRITICAL return res except (KeyError, AttributeError): self._message = "Expected a redirect" self._status = CRITICAL return res if _response.status_code == 302: err = ErrorResponse().deserialize(query, "urlencoded") try: err.verify() res["content"] = err.to_json() conv.protocol_response.append((err, query)) except MissingRequiredAttribute: self._message = "Expected an error message" self._status = CRITICAL else: self._message = "Expected an error message" self._status = CRITICAL return res
def _func(self, conv): res = {} try: _response = last_http_response(conv) except NoSuchEvent: return res if _response.status_code >= 400: self._status = self.status self._message = self.msg if CONT_JSON in _response.headers["content-type"]: try: err = ErrorResponse().deserialize(_response.txt, "json") self._message = err.to_json() except Exception: res["content"] = _response.text else: res["content"] = _response.text res["url"] = _response.url res["http_status"] = _response.status_code elif _response.status_code in [300, 301, 302]: pass else: # might still be an error message msg = conv.events.last_item(EV_PROTOCOL_RESPONSE) if isinstance(msg, ErrorResponse): self._message = msg.to_json() self._status = self.status return res
def _func(self, conv): _response = conv.events.last_item(EV_HTTP_RESPONSE) res = {} try: _loc = _response.headers["location"] if "?" in _loc: query = _loc.split("?")[1] elif "#" in _loc: query = _loc.split("#")[1] else: # ??? self._message = "Expected a redirect" self._status = CRITICAL return res env_id = conv.events.store(EV_RESPONSE, query) except (KeyError, AttributeError): self._message = "Expected a redirect" self._status = CRITICAL return res if _response.status_code == 302: err = ErrorResponse().deserialize(query, "urlencoded") try: err.verify() res["content"] = err.to_json() conv.events.store(EV_PROTOCOL_RESPONSE, err, env_id) except MissingRequiredAttribute: self._message = "Expected an error message" self._status = CRITICAL else: self._message = "Expected an error message" self._status = CRITICAL return res
def _func(self, conv): res = {} try: _response = last_http_response(conv) except NoSuchEvent: return res if _response.status_code == 400: err = ErrorResponse().deserialize(_response.text, "json") try: err.verify() except MissingRequiredAttribute: try: self._status = self._kwargs["status"] except KeyError: self._status = ERROR self._message = "Expected an error message" else: res["content"] = err.to_json() elif _response.status_code in [301, 302, 303]: pass elif _response.status_code < 300: _content = conv.events.last_item(EV_RESPONSE) err = ErrorResponse().deserialize(_content, "json") try: err.verify() except MissingRequiredAttribute: try: self._status = self._kwargs["status"] except KeyError: self._status = ERROR self._message = "Expected an error message" else: res["content"] = err.to_json() conv.events.store(EV_PROTOCOL_RESPONSE, err) else: self._message = "Expected an error message" try: self._status = self._kwargs["status"] except KeyError: self._status = CRITICAL return res
def _func(self, conv): res = {} try: _response = last_http_response(conv) except NoSuchEvent: return res if _response.status_code == 400: err = ErrorResponse().deserialize(_response.text, "json") try: err.verify() except MissingRequiredAttribute: try: self._status = self._kwargs["status"] except KeyError: self._status = ERROR self._message = "Expected an error message" else: res["content"] = err.to_json() elif _response.status_code in [301, 302, 303]: pass elif _response.status_code < 300: _content = conv.events.last_item(EV_RESPONSE) err = ErrorResponse().deserialize(_content, "json") try: err.verify() except MissingRequiredAttribute: try: self._status = self._kwargs["status"] except KeyError: self._status = ERROR self._message = "Expected an error message" else: res["content"] = err.to_json() conv.events.store(EV_PROTOCOL_RESPONSE, err) else: self._message = "Expected an error message" try: self._status = self._kwargs["status"] except KeyError: self._status = CRITICAL return res
def handle_registration_info(self, response): if response.status_code == 200: resp = RegistrationResponse().deserialize(response.text, "json") self.store_response(resp, response.text) self.store_registration_info(resp) else: err = ErrorResponse().deserialize(response.text, "json") raise PyoidcError("Registration failed: %s" % err.to_json()) return resp
class CheckErrorResponse(ExpectedError): """ Checks that the HTTP response status is outside the 200 or 300 range or that an JSON encoded error message has been received """ cid = "check-error-response" msg = "OP error" def _func(self, conv): _response = conv.last_response _content = conv.last_content res = {} if _response.status_code >= 400: content_type = _response.headers["content-type"] if content_type is None: res["content"] = _content elif CONT_JSON in content_type: try: self.err = ErrorResponse().deserialize(_content, "json") self.err.verify() res["content"] = self.err.to_json() #res["temp"] = err except Exception: res["content"] = _content else: res["content"] = _content else: # might still be an error message try: self.err = ErrorResponse().deserialize(_content, "json") self.err.verify() res["content"] = self.err.to_json() except Exception: self._message = "Expected error message" self._status = CRITICAL res["url"] = conv.position return res
def _func(self, conv): _response = conv.last_response _content = conv.last_content res = {} if _response.status_code == 400: err = ErrorResponse().deserialize(_content, "json") try: err.verify() except MissingRequiredAttribute: try: self._status = self._kwargs["status"] except KeyError: self._status = ERROR self._message = "Expected an error message" else: res["content"] = err.to_json() elif _response.status_code in [301, 302, 303]: pass elif _response.status_code < 300: err = ErrorResponse().deserialize(_content, "json") try: err.verify() except MissingRequiredAttribute: try: self._status = self._kwargs["status"] except KeyError: self._status = ERROR self._message = "Expected an error message" else: res["content"] = err.to_json() conv.protocol_response.append((err, _content)) else: self._message = "Expected an error message" try: self._status = self._kwargs["status"] except KeyError: self._status = CRITICAL return res
def _func(self, conv): _response = conv.last_response _content = conv.last_content res = {} if _response.status_code == 400: err = ErrorResponse().deserialize(_content, "json") try: err.verify() except MissingRequiredAttribute: try: self._status = self._kwargs["status"] except KeyError: self._status = ERROR self._message = "Expected an error message" else: res["content"] = err.to_json() elif _response.status_code in [301, 302, 303]: pass elif _response.status_code < 300: err = ErrorResponse().deserialize(_content, "json") try: err.verify() except MissingRequiredAttribute: try: self._status = self._kwargs["status"] except KeyError: self._status = ERROR self._message = "Expected an error message" else: res["content"] = err.to_json() conv.protocol_response.append((err, _content)) else: self._message = "Expected an error message" try: self._status = self._kwargs["status"] except KeyError: self._status = CRITICAL return res
def _func(self, conv): _response = conv.last_response _content = conv.last_content res = {} if _response.status_code == 400: err = ErrorResponse().deserialize(_content, "json") err.verify() res["content"] = err.to_json() conv.protocol_response.append((err, _content)) elif _response.status_code in [301, 302, 303]: pass elif _response.status_code in SUCCESSFUL: err = ErrorResponse().deserialize(_content, "json") err.verify() res["content"] = err.to_json() conv.protocol_response.append((err, _content)) else: self._message = "Expected a 400 error message" self._status = CRITICAL return res
def _func(self, conv): _response = conv.events.last_item(EV_HTTP_RESPONSE) _content = conv.events.last_item(EV_RESPONSE) res = {} if _response.status_code == 400: err = ErrorResponse().deserialize(_content, "json") err.verify() res["content"] = err.to_json() conv.events.store(EV_PROTOCOL_RESPONSE, err) elif _response.status_code in [301, 302, 303]: pass elif _response.status_code in SUCCESSFUL: err = ErrorResponse().deserialize(_content, "json") err.verify() res["content"] = err.to_json() conv.events.store(EV_PROTOCOL_RESPONSE, err) else: self._message = "Expected a 400 error message" self._status = CRITICAL return res
def _func(self, conv): _response = conv.last_response _content = conv.last_content res = {} if _response.status_code == 400: err = ErrorResponse().deserialize(_content, "json") err.verify() res["content"] = err.to_json() conv.protocol_response.append((err, _content)) elif _response.status_code in [301, 302, 303]: pass elif _response.status_code in SUCCESSFUL: err = ErrorResponse().deserialize(_content, "json") err.verify() res["content"] = err.to_json() conv.protocol_response.append((err, _content)) else: self._message = "Expected a 400 error message" self._status = CRITICAL return res
def _func(self, environ): _response = environ["response"] _content = environ["content"] res = {} if _response.status_code == 400 : err = ErrorResponse().deserialize(_content, "json") err.verify() res["content"] = err.to_json() environ["item"].append(err) else: self._message = "Expected a 400 error message" self._status = CRITICAL return res
def client_info(self, client_id): _cinfo = self.cdb[client_id].copy() if not valid_client_info(_cinfo): err = ErrorResponse( error="invalid_client", error_description="Invalid client secret" ) return BadRequest(err.to_json(), content="application/json") try: _cinfo["redirect_uris"] = self._tuples_to_uris(_cinfo["redirect_uris"]) except KeyError: pass msg = self.server.message_factory.get_response_type("update_endpoint")(**_cinfo) return Response(msg.to_json(), content="application/json")
def _func(self, environ): _response = environ["response"] res = {} query = _response.headers["location"].split("?")[1] if _response.status_code == 302 : err = ErrorResponse().deserialize(query, "urlencoded") err.verify() res["content"] = err.to_json() environ["item"].append(err) else: self._message = "Expected error message" self._status = CRITICAL return res
def _func(self, conv): _response = conv.last_response _content = conv.last_content res = {} if not _response: return res if _response.status_code >= 400: self._status = self.status self._message = self.msg if CONT_JSON in _response.headers["content-type"]: try: err = ErrorResponse().deserialize(_content, "json") self._message = err.to_json() except Exception: res["content"] = _content else: res["content"] = _content res["url"] = conv.position res["http_status"] = _response.status_code elif _response.status_code in [300, 301, 302]: pass else: # might still be an error message try: err = ErrorResponse().deserialize(_content, "json") err.verify() self._message = err.to_json() self._status = self.status except Exception: pass res["url"] = conv.position return res
def client_info(self, client_id): _cinfo = self.cdb[client_id].copy() if not valid_client_info(_cinfo): err = ErrorResponse(error="invalid_client", error_description="Invalid client secret") return BadRequest(err.to_json(), content="application/json") try: _cinfo["redirect_uris"] = self._tuples_to_uris( _cinfo["redirect_uris"]) except KeyError: pass msg = ClientInfoResponse(**_cinfo) return Response(msg.to_json(), content="application/json")
def exception_to_error_mesg(excep): if isinstance(excep, PyoidcError): if excep.content_type: if isinstance(excep.args, tuple): resp = BadRequest(excep.args[0], content=excep.content_type) else: resp = BadRequest(excep.args, content=excep.content_type) else: resp = BadRequest() else: err = ErrorResponse(error='service_error', error_description='{}:{}'.format( excep.__class__.__name__, excep.args)) resp = BadRequest(err.to_json(), content='application/json') return resp
def exception_to_error_mesg(excep): if isinstance(excep, PyoidcError): if excep.content_type: if isinstance(excep.args, tuple): resp = BadRequest(excep.args[0], content=excep.content_type) else: resp = BadRequest(excep.args, content=excep.content_type) else: resp = BadRequest() else: err = ErrorResponse(error='service_error', error_description='{}:{}'.format( excep.__class__.__name__, excep.args)) resp = BadRequest(err.to_json(), content='application/json') return resp
def client_info(self, client_id): _cinfo = self.cdb[client_id].copy() if not valid_client_info(_cinfo): err = ErrorResponse( error="invalid_client", error_description="Invalid client secret") return BadRequest(err.to_json(), content="application/json") try: _cinfo["redirect_uris"] = self._tuples_to_uris( _cinfo["redirect_uris"]) except KeyError: pass msg = ClientInfoResponse(**_cinfo) return Response(msg.to_json(), content="application/json")
class CheckErrorResponse(ExpectedError): """ Checks that the HTTP response status is outside the 200 or 300 range or that an JSON encoded error message has been received """ cid = "check-error-response" msg = "OP error" def _func(self, conv): res = {} # did I get one, should only be one try: _ = get_protocol_response(conv, ErrorResponse)[0] except ValueError: pass else: return res try: _response = last_http_response(conv) except NoSuchEvent: return {} if _response.status_code >= 400: content_type = _response.headers["content-type"] _content = _response.text if content_type is None: res["content"] = _content elif CONT_JSON in content_type: try: self.err = ErrorResponse().deserialize(_content, "json") self.err.verify() res["content"] = self.err.to_json() except Exception: res["content"] = _content else: res["content"] = _content elif _response.status_code in [300, 301, 302, 303]: pass else: # Should never get here self._message = 'Not an error message ??' self._status = WARNING return res
class CheckErrorResponse(ExpectedError): """ Checks that the HTTP response status is outside the 200 or 300 range or that an JSON encoded error message has been received """ cid = "check-error-response" msg = "OP error" def _func(self, conv): res = {} # did I get one, should only be one try: _ = get_protocol_response(conv, ErrorResponse)[0] except ValueError: pass else: return res try: _response = last_http_response(conv) except NoSuchEvent: return {} if _response.status_code >= 400: content_type = _response.headers["content-type"] _content = _response.text if content_type is None: res["content"] = _content elif CONT_JSON in content_type: try: self.err = ErrorResponse().deserialize(_content, "json") self.err.verify() res["content"] = self.err.to_json() except Exception: res["content"] = _content else: res["content"] = _content elif _response.status_code in [300, 301, 302, 303]: pass else: # Should never get here self._message = 'Not an error message ??' self._status = WARNING return res
def test_parse_access_token_response(): client = Client() at = AccessTokenResponse(access_token="SlAV32hkKG", token_type="Bearer", refresh_token="8xLOxBtZp8", expires_in=3600) atj = at.to_json() ATR = AccessTokenResponse atr = client.parse_response(ATR, info=atj) assert _eq(atr.keys(), ['access_token', 'token_type', 'expires_in', 'refresh_token']) uec = at.to_urlencoded() raises(ValueError, 'client.parse_response(ATR, info=uec)') uatr = client.parse_response(ATR, info=uec, sformat="urlencoded") assert _eq(uatr.keys(), ['access_token', 'token_type', 'expires_in', 'refresh_token']) huec = "%s?%s" % ("https://example.com/token", uec) uatr = client.parse_response(ATR, info=huec, sformat="urlencoded") assert _eq(uatr.keys(), ['access_token', 'token_type', 'expires_in', 'refresh_token']) err = ErrorResponse(error="invalid_request", error_description="Something was missing", error_uri="http://example.com/error_message.html") jerr = err.to_json() uerr = err.to_urlencoded() _ = client.parse_response(ATR, info=jerr) _ = client.parse_response(ATR, info=uerr, sformat="urlencoded") raises(Exception, 'client.parse_response(ATR, info=jerr, sformat="urlencoded")') raises(Exception, "client.parse_response(ATR, info=uerr)") raises(Exception, 'client.parse_response(ATR, info=jerr, sformat="focus")')
def test_parse_access_token_response(): client = Client() at = AccessTokenResponse(access_token="SlAV32hkKG", token_type="Bearer", refresh_token="8xLOxBtZp8", expires_in=3600) atj = at.to_json() ATR = AccessTokenResponse atr = client.parse_response(ATR, info=atj) assert _eq(atr.keys(), ['access_token', 'token_type', 'expires_in', 'refresh_token']) uec = at.to_urlencoded() raises(ValueError, 'client.parse_response(ATR, info=uec)') uatr = client.parse_response(ATR, info=uec, sformat="urlencoded") assert _eq(uatr.keys(), ['access_token', 'token_type', 'expires_in', 'refresh_token']) huec = "%s?%s" % ("https://example.com/token", uec) uatr = client.parse_response(ATR, info=huec, sformat="urlencoded") assert _eq(uatr.keys(), ['access_token', 'token_type', 'expires_in', 'refresh_token']) err = ErrorResponse(error="invalid_request", error_description="Something was missing", error_uri="http://example.com/error_message.html") jerr = err.to_json() uerr = err.to_urlencoded() _ = client.parse_response(ATR, info=jerr) _ = client.parse_response(ATR, info=uerr, sformat="urlencoded") raises(Exception, 'client.parse_response(ATR, info=jerr, sformat="urlencoded")') raises(Exception, "client.parse_response(ATR, info=uerr)") raises(Exception, 'client.parse_response(ATR, info=jerr, sformat="focus")')
def test_parse_error_resp(self): err = ErrorResponse(error="invalid_request", error_description="Something was missing", error_uri="http://example.com/error_message.html") jerr = err.to_json() uerr = err.to_urlencoded() _ = self.client.parse_response(AccessTokenResponse, info=jerr) _ = self.client.parse_response(AccessTokenResponse, info=uerr, sformat="urlencoded") with pytest.raises(ResponseError): self.client.parse_response(AccessTokenResponse, info=jerr, sformat="urlencoded") with pytest.raises(ValueError): self.client.parse_response(AccessTokenResponse, info=uerr) with pytest.raises(FormatError): self.client.parse_response(AccessTokenResponse, info=jerr, sformat="focus")
def _func(self, conv): res = {} try: _response = last_http_response(conv) except NoSuchEvent: return res if _response.status_code not in [200, 300, 301, 302, 400, 401]: self._status = self.status self._message = self.msg if CONT_JSON in _response.headers["content-type"]: try: err = ErrorResponse().deserialize(_response.txt, "json") self._message = err.to_json() except Exception: res["content"] = _response.text else: res["content"] = _response.text res["url"] = _response.url res["http_status"] = _response.status_code return res
def _func(self, conv): res = {} try: _response = last_http_response(conv) except NoSuchEvent: return res if _response.status_code not in [200, 300, 301, 302, 400, 401]: self._status = self.status self._message = self.msg if CONT_JSON in _response.headers["content-type"]: try: err = ErrorResponse().deserialize(_response.txt, "json") self._message = err.to_json() except Exception: res["content"] = _response.text else: res["content"] = _response.text res["url"] = _response.url res["http_status"] = _response.status_code return res
def _error(error, descr=None): response = ErrorResponse(error=error, error_description=descr) return Response(response.to_json(), content="application/json", status="400 Bad Request")
def error_response(error, descr=None, status="400 Bad Request"): logger.error("%s" % sanitize(error)) response = ErrorResponse(error=error, error_description=descr) return Response(response.to_json(), content="application/json", status=status)
def _error(error, descr=None): response = ErrorResponse(error=error, error_description=descr) return Response(response.to_json(), content="application/json", status="400 Bad Request")
def error_response(error, descr=None, status_code=400): logger.error("%s" % sanitize(error)) response = ErrorResponse(error=error, error_description=descr) return Response(response.to_json(), content="application/json", status_code=status_code)
def _error(self, environ, start_response, error, descr=None): response = ErrorResponse(error=error, error_description=descr) resp = Response(response.to_json(), content="application/json", status="400 Bad Request") return resp(environ, start_response)