def test_aborter(self): abort = exceptions.abort self.assert_raises(exceptions.BadRequest, abort, 400) self.assert_raises(exceptions.Unauthorized, abort, 401) self.assert_raises(exceptions.Forbidden, abort, 403) self.assert_raises(exceptions.NotFound, abort, 404) self.assert_raises(exceptions.MethodNotAllowed, abort, 405, ['GET', 'HEAD']) self.assert_raises(exceptions.NotAcceptable, abort, 406) self.assert_raises(exceptions.RequestTimeout, abort, 408) self.assert_raises(exceptions.Gone, abort, 410) self.assert_raises(exceptions.LengthRequired, abort, 411) self.assert_raises(exceptions.PreconditionFailed, abort, 412) self.assert_raises(exceptions.RequestEntityTooLarge, abort, 413) self.assert_raises(exceptions.RequestURITooLarge, abort, 414) self.assert_raises(exceptions.UnsupportedMediaType, abort, 415) self.assert_raises(exceptions.UnprocessableEntity, abort, 422) self.assert_raises(exceptions.InternalServerError, abort, 500) self.assert_raises(exceptions.NotImplemented, abort, 501) self.assert_raises(exceptions.BadGateway, abort, 502) self.assert_raises(exceptions.ServiceUnavailable, abort, 503) myabort = exceptions.Aborter({1: exceptions.NotFound}) self.assert_raises(LookupError, myabort, 404) self.assert_raises(exceptions.NotFound, myabort, 1) myabort = exceptions.Aborter(extra={1: exceptions.NotFound}) self.assert_raises(exceptions.NotFound, myabort, 404) self.assert_raises(exceptions.NotFound, myabort, 1)
def test_aborter_custom(): myabort = exceptions.Aborter({1: exceptions.NotFound}) pytest.raises(LookupError, myabort, 404) pytest.raises(exceptions.NotFound, myabort, 1) myabort = exceptions.Aborter(extra={1: exceptions.NotFound}) pytest.raises(exceptions.NotFound, myabort, 404) pytest.raises(exceptions.NotFound, myabort, 1)
from app import app class BandwidthExceeded(ex.HTTPException): """ Create custom status code for error 509 """ code = 509 description = 'The server is temporarily unable to service your request due to the site owner ' \ 'reaching his/her bandwidth limit. Please try again later. ' ex.default_exceptions[509] = BandwidthExceeded HTTP_STATUS_CODES[509] = 'Bandwidth Limit Exceeded' abort = ex.Aborter() # change format of log message # here, we've set the timestamp, logging level, message, source file & line no where log entry originated LOG_FORMAT = "%(asctime)s %(levelname)s: %(message)s [in %(pathname)s:%(lineno)d]" @app.errorhandler(404) def page_not_found(error): errs = str(error).split(':')[-1].split('.') print(errs) return render_template_string( ''' <html> <head> <title>Page not found</title>
class BandwidthLimit(HTTPExceptionMixin, exceptions.HTTPException): code = httpcode.BANDWIDTH_LIMIT description = "BANDWIDTH_LIMIT" class NotExtended(HTTPExceptionMixin, exceptions.HTTPException): code = httpcode.NOT_EXTENDED description = "NOT_EXTENDED" class NetworkAuthenticationRequired(HTTPExceptionMixin, exceptions.HTTPException): code = httpcode.NETWORK_AUTHENTICATION_REQUIRED description = "NETWORK_AUTHENTICATION_REQUIRED" class UnknownError(HTTPExceptionMixin, exceptions.HTTPException): code = httpcode.UNKNOWN_ERROR description = "UNKNOWN_ERROR" _errors = inspect.getmembers( sys.modules[__name__], lambda c: inspect.isclass(c) and issubclass(c, exceptions.HTTPException), ) # until a better solution are found setattr(flask, "abort", exceptions.Aborter(mapping={e.code: e for _, e in _errors}))