def test_languages(self): r = Request({}, headers={'Accept-Language': 'en-gb;q=0.8, it;q=0.9, da'}) r.language = 'it' assert r.language == 'it' bmatch = r.languages assert ['da', 'it'] == bmatch, bmatch
def test_signed_cookie(self): resp = Response() resp.signed_cookie('key_name', 'VALUE', secret='123') cookie = resp.headers['Set-Cookie'] r = Request({}, headers={'Cookie':cookie}) value = r.signed_cookie('key_name', '123') assert value == 'VALUE', value r = Request({}, headers={'Cookie':cookie}) value = r.signed_cookie('non_existing', '123') assert not value
def __call__(self, environ, start_response): if 'repoze.tm.active' in environ: #pragma: no cover #Skip transaction manager if repoze.tm2 is enabled return self.app(environ, start_response) transaction_manager = transaction.manager total_attempts = self.attempts commit_veto = self.commit_veto started_response = {} def _start_response(status, headers, exc_info=None): started_response.update(status=status, headers=headers) return start_response(status, headers, exc_info) attempts_left = total_attempts while attempts_left: attempts_left -= 1 try: log.debug('Attempts Left %d (%d total)', attempts_left, total_attempts) transaction_manager.begin() if total_attempts > 1: Request(environ).make_body_seekable() t = transaction_manager.get() t.note(environ.get('PATH_INFO', '')) response_data = self.app(environ, _start_response) if transaction_manager.isDoomed(): log.debug('Transaction doomed') raise AbortTransaction(response_data) if commit_veto is not None: veto = commit_veto(environ, started_response['status'], started_response['headers']) if veto: log.debug('Transaction vetoed') raise AbortTransaction(response_data) transaction_manager.commit() log.debug('Transaction committed!') return response_data except AbortTransaction as e: transaction_manager.abort() return e.response_data except: exc_info = sys.exc_info() log.debug('Error while running request, aborting transaction') try: can_retry = transaction_manager._retryable(*exc_info[:-1]) transaction_manager.abort() if (attempts_left <= 0) or (not can_retry): reraise(*exc_info) finally: del exc_info
def test_signed_cookie(self): resp = Response() resp.signed_cookie('key_name', 'VALUE', secret='123') cookie = resp.headers['Set-Cookie'] r = Request({}, headers={'Cookie': cookie}) value = r.signed_cookie('key_name', '123') assert value == 'VALUE', value r = Request({}, headers={'Cookie': cookie}) value = r.signed_cookie('non_existing', '123') assert not value
def __call__(self, environ, start_response): status, headers, app_iter, exc_info = _call_wsgi_application(self.app, environ) if status[:3] in self.errors and \ 'tg.status_code_redirect' not in environ and self.error_path: # Create a response object environ['tg.original_response'] = Response(status=status, headerlist=headers, app_iter=app_iter) environ['tg.original_request'] = Request(environ) environ['pylons.original_response'] = environ['tg.original_response'] environ['pylons.original_request'] = environ['tg.original_request'] # Create a new environ to avoid touching the original request data new_environ = environ.copy() new_environ['PATH_INFO'] = self.error_path newstatus, headers, app_iter, exc_info = _call_wsgi_application(self.app, new_environ) start_response(status, headers, exc_info) return app_iter
def test_match_accept(self): r = Request({}, headers={'Accept': 'text/html;q=0.5, foo/bar'}) first_match = r.match_accept(['foo/bar']) assert first_match == 'foo/bar', first_match
def test_language_fallback_already_there(self): r = Request({}, headers={'Accept-Language': 'en-gb;q=0.8, it, da'}) bmatch = r.languages_best_match(fallback='it') assert ['it'] == bmatch, bmatch
def test_language_fallback(self): r = Request({}, headers={'Accept-Language': 'en-gb;q=0.8, da'}) bmatch = r.languages_best_match(fallback='it') assert ['da', 'en-gb', 'it'] == bmatch
def setup_app_env(self, environ): """Setup Request, Response and TurboGears context objects. Is also in charge of pushing TurboGears context into the paste registry and detect test mode. Returns whenever the testmode is enabled or not and the TurboGears context. """ conf = self.config # Setup the basic global objects req = Request(environ) req._fast_setattr('_language', conf['lang']) req._fast_setattr('_response_type', None) resp_options = self.resp_options response = Response(content_type=resp_options['content_type'], charset=resp_options['charset'], headers=resp_options['headers']) # Setup the translator object lang = conf['lang'] translator = _get_translator(lang, tg_config=conf) if self.strict_tmpl_context: tmpl_context = ContextObj() else: tmpl_context = AttribSafeContextObj() app_globals = self.globals session = environ.get('beaker.session') cache = environ.get('beaker.cache') locals = RequestLocals() locals.response = response locals.request = req locals.app_globals = app_globals locals.config = conf locals.tmpl_context = tmpl_context locals.translator = translator locals.session = session locals.cache = cache if self.enable_routes: #pragma: no cover url = environ.get('routes.url') locals.url = url environ['tg.locals'] = locals #Register Global objects registry = environ['paste.registry'] registry.register(request_local.config, conf) registry.register(request_local.context, locals) if 'paste.testing_variables' in environ: testenv = environ['paste.testing_variables'] testenv['req'] = req testenv['response'] = response testenv['tmpl_context'] = tmpl_context testenv['app_globals'] = self.globals testenv['config'] = conf testenv['session'] = locals.session testenv['cache'] = locals.cache return True, locals return False, locals
def test_language_fallback_already_there(self): r = Request({}, headers={'Accept-Language': 'en-gb;q=0.8, it, da'}) bmatch = r.languages_best_match(fallback='it') assert bmatch[-1] == 'it', bmatch
def _setup_app_env(self, environ): """Setup Request, Response and TurboGears context objects. Is also in charge of pushing TurboGears context into the paste registry and detect test mode. Returns whenever the testmode is enabled or not and the TurboGears context. """ conf = self.config testing = False # Setup the basic global objects req = Request(environ) req._fast_setattr('_language', self.lang) req._fast_setattr('_response_type', None) resp_options = self.resp_options response = Response( content_type=resp_options['content_type'], charset=resp_options['charset'], headers=resp_options['headers'] ) # Setup the translator object translator = _get_translator(self.lang, tg_config=conf) if self.strict_tmpl_context: tmpl_context = TemplateContext() else: tmpl_context = AttribSafeTemplateContext() app_globals = self.globals locals = RequestLocals() locals.response = response locals.request = req locals.app_globals = app_globals locals.config = conf locals.tmpl_context = tmpl_context locals.translator = translator locals.session = environ.get('beaker.session') # Usually None, unless middleware in place locals.cache = environ.get('beaker.cache') # Usually None, unless middleware in place environ['tg.locals'] = locals # Register Global objects registry = environ['paste.registry'] registry.register(request_local.config, conf) registry.register(request_local.context, locals) if 'paste.testing_variables' in environ: testing = True testenv = environ['paste.testing_variables'] testenv['req'] = req testenv['response'] = response testenv['tmpl_context'] = tmpl_context testenv['app_globals'] = self.globals testenv['config'] = conf testenv['session'] = locals.session testenv['cache'] = locals.cache return testing, locals, registry
def __call__(self, environ, start_response): log.debug("Making request body seekable") Request(environ).make_body_seekable() return self._stream_response(self.app(environ, start_response))
def test_language(self): r = Request({}, headers={'Accept-Language': 'en-gb;q=0.8, da'}) bmatch = r.languages_best_match() assert ['da', 'en-gb'] == bmatch
def setup_app_env(self, environ): """Setup Request, Response and TurboGears context objects. Is also in charge of pushing TurboGears context into the paste registry and detect test mode. Returns whenever the testmode is enabled or not and the TurboGears context. """ conf = self.config # Setup the basic global objects req = Request(environ) req._fast_setattr('_language', conf['lang']) req._fast_setattr('_response_type', None) resp_options = self.resp_options response = Response( content_type=resp_options['content_type'], charset=resp_options['charset'], headers=resp_options['headers']) # Setup the translator object lang = conf['lang'] translator = _get_translator(lang, tg_config=conf) if self.strict_tmpl_context: tmpl_context = ContextObj() else: tmpl_context = AttribSafeContextObj() app_globals = self.globals session = environ.get('beaker.session') cache = environ.get('beaker.cache') locals = RequestLocals() locals.response = response locals.request = req locals.app_globals = app_globals locals.config = conf locals.tmpl_context = tmpl_context locals.translator = translator locals.session = session locals.cache = cache if self.enable_routes: #pragma: no cover url = environ.get('routes.url') locals.url = url environ['tg.locals'] = locals #Register Global objects registry = environ['paste.registry'] registry.register(request_local.config, conf) registry.register(request_local.context, locals) if 'paste.testing_variables' in environ: testenv = environ['paste.testing_variables'] testenv['req'] = req testenv['response'] = response testenv['tmpl_context'] = tmpl_context testenv['app_globals'] = self.globals testenv['config'] = conf testenv['session'] = locals.session testenv['cache'] = locals.cache return True, locals return False, locals
def _setup_app_env(self, environ): """Setup Request, Response and TurboGears context objects. Is also in charge of pushing TurboGears context into the paste registry and detect test mode. Returns whenever the testmode is enabled or not and the TurboGears context. """ conf = self.config testing = False # Setup the basic global objects req = Request(environ) req._fast_setattr('_language', self.lang) req._fast_setattr('_response_type', None) resp_options = self.resp_options response = Response(content_type=resp_options['content_type'], charset=resp_options['charset'], headers=resp_options['headers']) # Setup the translator object translator = _get_translator(self.lang, tg_config=conf) if self.strict_tmpl_context: tmpl_context = TemplateContext() else: tmpl_context = AttribSafeTemplateContext() app_globals = self.globals locals = RequestLocals() locals.response = response locals.request = req locals.app_globals = app_globals locals.config = conf locals.tmpl_context = tmpl_context locals.translator = translator locals.session = environ.get( 'beaker.session') # Usually None, unless middleware in place locals.cache = environ.get( 'beaker.cache') # Usually None, unless middleware in place environ['tg.locals'] = locals # Register Global objects registry = environ['paste.registry'] registry.register(request_local.config, conf) registry.register(request_local.context, locals) if 'paste.testing_variables' in environ: testing = True testenv = environ['paste.testing_variables'] testenv['req'] = req testenv['response'] = response testenv['tmpl_context'] = tmpl_context testenv['app_globals'] = self.globals testenv['config'] = conf testenv['session'] = locals.session testenv['cache'] = locals.cache return testing, locals, registry
def setup_app_env(self, environ, start_response): """Setup and register all the Pylons objects with the registry After creating all the global objects for use in the request, :meth:`~PylonsApp.register_globals` is called to register them in the environment. """ conf = self.config # Setup the basic global objects req = Request(environ) req._fast_setattr('_language', conf['lang']) req._fast_setattr('_response_type', None) resp_options = self.resp_options response = Response( content_type=resp_options['content_type'], charset=resp_options['charset'], headers=resp_options['headers']) # Setup the translator object lang = conf['lang'] translator = _get_translator(lang, tg_config=conf) if self.strict_tmpl_context: tmpl_context = ContextObj() else: tmpl_context = AttribSafeContextObj() app_globals = self.globals session = environ.get('beaker.session') cache = environ.get('beaker.cache') locals = RequestLocals() locals.response = response locals.request = req locals.app_globals = app_globals locals.config = conf locals.tmpl_context = tmpl_context locals.translator = translator locals.session = session locals.cache = cache if self.enable_routes: #pragma: no cover url = environ.get('routes.url') locals.url = url environ['tg.locals'] = locals #Register Global objects registry = environ['paste.registry'] registry.register(request_local.config, conf) registry.register(request_local.context, locals) if 'paste.testing_variables' in environ: testenv = environ['paste.testing_variables'] testenv['req'] = req testenv['response'] = response testenv['tmpl_context'] = tmpl_context testenv['app_globals'] = self.globals testenv['config'] = conf testenv['session'] = locals.session testenv['cache'] = locals.cache return True return False