# HG changeset patch # User Daniel Dourvaris # Date 2016-06-14 07:40:02 # Node ID f246f4bc4ec2f28327a849c8b9a52b0820192f9c # Parent de2c66e3b6a604db19089008660f53643d094842 tests: fix disable_vcs tests diff --git a/rhodecode/lib/middleware/disable_vcs.py b/rhodecode/lib/middleware/disable_vcs.py --- a/rhodecode/lib/middleware/disable_vcs.py +++ b/rhodecode/lib/middleware/disable_vcs.py @@ -70,7 +70,7 @@ class DisableVCSPagesWrapper(object): self.handler = handler def __call__(self, context, request): - if not self._check_vcs_requirement(request.environ['PATH_INFO']): + if not self._check_vcs_requirement(request.path): raise VCSServerUnavailable('VCS Server is not available') return self.handler(context, request) diff --git a/rhodecode/tests/lib/middleware/test_disable_vcs.py b/rhodecode/tests/lib/middleware/test_disable_vcs.py --- a/rhodecode/tests/lib/middleware/test_disable_vcs.py +++ b/rhodecode/tests/lib/middleware/test_disable_vcs.py @@ -19,36 +19,35 @@ # and proprietary license terms, please see https://rhodecode.com/licenses/ import pytest -from rhodecode.lib.middleware.disable_vcs import DisableVCSPagesWrapper +from pyramid.response import Response +from pyramid.testing import DummyRequest +from rhodecode.lib.middleware.disable_vcs import ( + DisableVCSPagesWrapper, VCSServerUnavailable) -@pytest.mark.parametrize('url, expected_url', [ - ('/', '/'), - ('/_admin/settings', '/_admin/settings'), - ('/_admin/i_am_fine', '/_admin/i_am_fine'), - ('/_admin/settings/mappings', '/error/vcs_unavailable'), - ('/_admin/my_account/repos', '/error/vcs_unavailable'), - ('/_admin/create_repository', '/error/vcs_unavailable'), - ('/_admin/gists/1', '/error/vcs_unavailable'), - ('/_admin/notifications/1', '/error/vcs_unavailable'), +@pytest.mark.parametrize('url, should_raise', [ + ('/', False), + ('/_admin/settings', False), + ('/_admin/i_am_fine', False), + ('/_admin/settings/mappings', True), + ('/_admin/my_account/repos', True), + ('/_admin/create_repository', True), + ('/_admin/gists/1', True), + ('/_admin/notifications/1', True), ]) -def test_vcs_disabled(url, expected_url): - app = DisableVCSPagesWrapper(app=SimpleApp()) - assert expected_url == app(get_environ(url), None) - +def test_vcs_disabled(url, should_raise): + wrapped_view = DisableVCSPagesWrapper(pyramid_view) + request = DummyRequest(path=url) -def get_environ(url): - """Construct a minimum WSGI environ based on the URL.""" - environ = { - 'PATH_INFO': url, - } - return environ - + if should_raise: + with pytest.raises(VCSServerUnavailable): + response = wrapped_view(None, request) + else: + response = wrapped_view(None, request) + assert response.status_int == 200 -class SimpleApp(object): +def pyramid_view(context, request): """ - A mock app to be used in the wrapper that returns the modified URL - from the middleware + A mock pyramid view to be used in the wrapper """ - def __call__(self, environ, start_response): - return environ['PATH_INFO'] + return Response('success')