dutest-trac / trac-dev / testing / tracdutest / util /

Full commit
#!/usr/bin/env python
# -*- coding: UTF-8 -*-

# Copyright 2009-2018 Olemis Lang <olemis at>
#   Licensed under the Apache License, Version 2.0 (the "License");
#   you may not use this file except in compliance with the License.
#   You may obtain a copy of the License at
#   Unless required by applicable law or agreed to in writing, software
#   distributed under the License is distributed on an "AS IS" BASIS,
#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#   See the License for the specific language governing permissions and
#   limitations under the License.

r"""Helper functions and classes related to Trac web API

Notice: Some of the classes offered in this module have been imported from
        TracGViz plugin; created in 2009

Copyright 2009-2018 Olemis Lang <olemis at>
Licensed under the Apache License
__author__ = 'Olemis Lang'

__metaclass__ = type

__all__ = 'dummy_request',

from trac.web.api import Request
from import Chrome
from trac.web.main import RequestDispatcher

from urlparse import urlparse
from wsgiref.util import setup_testing_defaults

# FIXME: Reuse Bloodhound code if available
def dummy_request(env, uname=None):
    environ = {}
                'REQUEST_METHOD' : 'GET',
                'SCRIPT_NAME' : urlparse(str(env._abs_href())).path,
                'trac.base_url' : str(env._abs_href()),
    req = Request(environ, lambda *args, **kwds: None)
    # Intercept redirection
    req.redirect = lambda *args, **kwds: None
    # Setup user information
    if uname is not None :
        environ['REMOTE_USER'] = req.authname = uname

    rd = RequestDispatcher(env)
    chrome = Chrome(env)
        'authname': rd.authenticate,
        'chrome': chrome.prepare_request,
        'hdf': getattr(rd, '_get_hdf', None),
        'lc_time': rd._get_lc_time,
        'locale' : getattr(rd, '_get_locale', None),
        'perm': rd._get_perm,
        'session': rd._get_session,
        'tz': rd._get_timezone,
        'form_token': rd._get_form_token
    return req