You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@allura.apache.org by br...@apache.org on 2013/12/18 23:47:43 UTC
[09/10] 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/436a7aec
Tree: http://git-wip-us.apache.org/repos/asf/incubator-allura/tree/436a7aec
Diff: http://git-wip-us.apache.org/repos/asf/incubator-allura/diff/436a7aec
Branch: refs/heads/db/6388
Commit: 436a7aeca788bff4ff1058baf415c90186d994d4
Parents: 78c5d43
Author: Dave Brondsema <db...@slashdotmedia.com>
Authored: Wed Dec 18 20:12:20 2013 +0000
Committer: Dave Brondsema <db...@slashdotmedia.com>
Committed: Wed Dec 18 20:12:20 2013 +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/436a7aec/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/436a7aec/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/')