You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@allura.apache.org by jo...@apache.org on 2014/01/06 16:18:08 UTC

[18/50] git commit: [#6388] remove unneeded special nbhd handling for tests

[#6388] remove unneeded special nbhd handling for tests

The special config tweaking inspired the creation of patch_middleware_config
but turned out to be all unneeded; tests pass without all this.


Project: http://git-wip-us.apache.org/repos/asf/incubator-allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-allura/commit/8ddd1432
Tree: http://git-wip-us.apache.org/repos/asf/incubator-allura/tree/8ddd1432
Diff: http://git-wip-us.apache.org/repos/asf/incubator-allura/diff/8ddd1432

Branch: refs/heads/cj/6992
Commit: 8ddd1432e100aeba4117342286d6405800795378
Parents: 497a734
Author: Dave Brondsema <db...@slashdotmedia.com>
Authored: Wed Dec 18 20:12:20 2013 +0000
Committer: Tim Van Steenburgh <tv...@gmail.com>
Committed: Thu Jan 2 16:16:20 2014 +0000

----------------------------------------------------------------------
 .../controllers/basetest_neighborhood_root.py   | 191 -------------------
 .../tests/functional/test_neighborhood.py       |  14 +-
 2 files changed, 1 insertion(+), 204 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/8ddd1432/Allura/allura/controllers/basetest_neighborhood_root.py
----------------------------------------------------------------------
diff --git a/Allura/allura/controllers/basetest_neighborhood_root.py b/Allura/allura/controllers/basetest_neighborhood_root.py
deleted file mode 100644
index 6244645..0000000
--- a/Allura/allura/controllers/basetest_neighborhood_root.py
+++ /dev/null
@@ -1,191 +0,0 @@
-# -*- coding: utf-8 -*-
-
-#       Licensed to the Apache Software Foundation (ASF) under one
-#       or more contributor license agreements.  See the NOTICE file
-#       distributed with this work for additional information
-#       regarding copyright ownership.  The ASF licenses this file
-#       to you 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
-#
-#         http://www.apache.org/licenses/LICENSE-2.0
-#
-#       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.
-
-"""Main Controller"""
-import os
-import logging
-from urllib import unquote
-
-import pkg_resources
-from pylons import tmpl_context as c, app_globals as g
-from pylons import request, response
-from webob import exc
-from tg import expose, redirect
-from tg.decorators import without_trailing_slash
-
-import  ming.orm.ormsession
-
-import allura
-from allura.lib.base import WsgiDispatchController
-from allura.lib.security import require, require_authenticated, require_access, has_access
-from allura.lib import helpers as h
-from allura.lib import plugin
-from allura import model as M
-from .root import RootController
-from .project import NeighborhoodController, ProjectController
-from .auth import AuthController
-from .static import NewForgeController
-from .search import SearchController
-from .error import ErrorController
-from .rest import RestController
-
-__all__ = ['RootController']
-
-log = logging.getLogger(__name__)
-
-class BasetestNeighborhoodRootController(WsgiDispatchController, NeighborhoodController):
-    '''Root controller for testing -- it behaves just like a
-    NeighborhoodController for test/ except that all tools are mounted,
-    on-demand, at the mount point that is the same as their entry point
-    name.
-
-    Also, the test-admin is perpetually logged in here.
-
-    The name of this controller is dictated by the override_root setting
-    in development.ini and the magical import rules of TurboGears.  The
-    override_root setting has to match the name of this file, which has
-    to match (less underscores, case changes, and the addition of
-    "Controller") the name of this class.  It will then be registered
-    as the root controller instead of allura.controllers.root.RootController.
-    '''
-
-    def __init__(self):
-        for n in M.Neighborhood.query.find():
-            if n.url_prefix.startswith('//'): continue
-            n.bind_controller(self)
-        proxy_root = RootController()
-        self.dispatch = DispatchTest()
-        self.security = SecurityTests()
-        for attr in ('index', 'browse', 'auth', 'nf', 'error'):
-            setattr(self, attr, getattr(proxy_root, attr))
-        self.gsearch = proxy_root.search
-        self.rest = RestController()
-        p_nbhd = M.Neighborhood.query.get(name='Projects')
-        super(BasetestNeighborhoodRootController, self).__init__(p_nbhd)
-
-    def _setup_request(self):
-        pass
-
-    def _cleanup_request(self):
-        pass
-
-    @expose()
-    def _lookup(self, pname, *remainder):
-        pname = unquote(pname)
-        if not h.re_project_name.match(pname):
-            raise exc.HTTPNotFound, pname
-        project = M.Project.query.get(shortname=self.prefix + pname, neighborhood_id=self.neighborhood._id)
-        if project is None:
-            project = self.neighborhood.neighborhood_project
-            c.project = project
-            return ProjectController()._lookup(pname, *remainder)
-        if project.database_configured == False:
-            if remainder == ('user_icon',):
-                redirect(g.forge_static('images/user.png'))
-            elif c.user.username == pname:
-                log.info('Configuring %s database for access to %r',
-                         pname, remainder)
-                project.configure_project(is_user_project=True)
-            else:
-                raise exc.HTTPNotFound, pname
-        c.project = project
-        if project is None or (project.deleted and not has_access(c.project, 'update')()):
-            raise exc.HTTPNotFound, pname
-        if project.neighborhood.name != self.neighborhood_name:
-            redirect(project.url())
-        return ProjectController(), remainder
-
-    def __call__(self, environ, start_response):
-        c.app = None
-        c.user = plugin.AuthenticationProvider.get(request).by_username(
-            environ.get('username', 'test-admin'))
-        if not c.user:
-            c.user = M.User.anonymous()
-        return WsgiDispatchController.__call__(self, environ, start_response)
-
-class DispatchTest(object):
-
-    @expose()
-    def _lookup(self, *args):
-        if args:
-            return NamedController(args[0]), args[1:]
-        else:
-            raise exc.HTTPNotFound()
-
-class NamedController(object):
-
-    def __init__(self, name):
-        self.name = name
-
-    @expose()
-    def index(self, **kw):
-        return 'index ' + self.name
-
-    @expose()
-    def _default(self, *args):
-        return 'default(%s)(%r)' % (self.name, args)
-
-class SecurityTests(object):
-
-    @expose()
-    def _lookup(self, name, *args):
-        name = unquote(name)
-        if name == '*anonymous':
-            c.user = M.User.anonymous()
-        return SecurityTest(), args
-
-class SecurityTest(object):
-
-    def __init__(self):
-        from forgewiki import model as WM
-        c.app = c.project.app_instance('wiki')
-        self.page = WM.Page.query.get(app_config_id=c.app.config._id, title='Home')
-
-    @expose()
-    def forbidden(self):
-        require(lambda:False, 'Never allowed')
-        return ''
-
-    @expose()
-    def needs_auth(self):
-        require_authenticated()
-        return ''
-
-    @expose()
-    def needs_project_access_fail(self):
-        require_access(c.project, 'no_such_permission')
-        return ''
-
-    @expose()
-    def needs_project_access_ok(self):
-        pred = has_access(c.project, 'read')
-        if not pred():
-            log.info('Inside needs_project_access, c.user = %s' % c.user)
-        require(pred)
-        return ''
-
-    @expose()
-    def needs_artifact_access_fail(self):
-        require_access(self.page, 'no_such_permission')
-        return ''
-
-    @expose()
-    def needs_artifact_access_ok(self):
-        require_access(self.page, 'read')
-        return ''

http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/8ddd1432/Allura/allura/tests/functional/test_neighborhood.py
----------------------------------------------------------------------
diff --git a/Allura/allura/tests/functional/test_neighborhood.py b/Allura/allura/tests/functional/test_neighborhood.py
index 2b165a3..7fe3916 100644
--- a/Allura/allura/tests/functional/test_neighborhood.py
+++ b/Allura/allura/tests/functional/test_neighborhood.py
@@ -32,20 +32,8 @@ from allura.tests import TestController
 from allura.tests import decorators as td
 from allura.lib import helpers as h
 
-class TestNeighborhood(TestController):
 
-    def setUp(self):
-        # change the override_root config value to change which root controller the test uses
-        self._make_app = allura.config.middleware.make_app
-        def make_app(global_conf, full_stack=True, **app_conf):
-            app_conf['override_root'] = 'basetest_neighborhood_root'
-            return self._make_app(global_conf, full_stack, **app_conf)
-        allura.config.middleware.make_app = make_app
-        super(TestNeighborhood, self).setUp()
-
-    def tearDown(self):
-        super(TestNeighborhood, self).tearDown()
-        allura.config.middleware.make_app = self._make_app
+class TestNeighborhood(TestController):
 
     def test_home_project(self):
         r = self.app.get('/adobe/wiki/')