# HG changeset patch # User Milka Kuzminski # Date 2021-03-18 12:52:23 # Node ID 149be224f5d41dc519a89f096760adc7ed47e905 # Parent 8804894c9045b2b656ded0cdca4386fbed4ba107 miantainance: fixed bad routes def diff --git a/rhodecode/apps/repository/__init__.py b/rhodecode/apps/repository/__init__.py --- a/rhodecode/apps/repository/__init__.py +++ b/rhodecode/apps/repository/__init__.py @@ -950,8 +950,8 @@ def includeme(config): config.add_view( RepoMaintenanceView, attr='repo_maintenance', - route_name='edit_repo_maintenance_execute', request_method='GET', - renderer='json', xhr=True) + route_name='edit_repo_maintenance', request_method='GET', + renderer='rhodecode:templates/admin/repos/repo_edit.mako') config.add_route( name='edit_repo_maintenance_execute', @@ -959,8 +959,8 @@ def includeme(config): config.add_view( RepoMaintenanceView, attr='repo_maintenance_execute', - route_name='edit_repo_maintenance', request_method='GET', - renderer='rhodecode:templates/admin/repos/repo_edit.mako') + route_name='edit_repo_maintenance_execute', request_method='GET', + renderer='json', xhr=True) # Fields config.add_route( diff --git a/rhodecode/apps/repository/tests/test_repo_maintainance.py b/rhodecode/apps/repository/tests/test_repo_maintainance.py new file mode 100644 --- /dev/null +++ b/rhodecode/apps/repository/tests/test_repo_maintainance.py @@ -0,0 +1,74 @@ +# -*- coding: utf-8 -*- + +# Copyright (C) 2010-2020 RhodeCode GmbH +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License, version 3 +# (only), as published by the Free Software Foundation. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +# This program is dual-licensed. If you wish to learn more about the +# RhodeCode Enterprise Edition, including its added features, Support services, +# and proprietary license terms, please see https://rhodecode.com/licenses/ + +import mock +import pytest + +from rhodecode.lib.utils2 import str2bool +from rhodecode.lib.vcs.exceptions import RepositoryRequirementError +from rhodecode.model.db import Repository, UserRepoToPerm, Permission, User +from rhodecode.model.meta import Session +from rhodecode.tests import ( + TEST_USER_ADMIN_LOGIN, TEST_USER_REGULAR_LOGIN, assert_session_flash) +from rhodecode.tests.fixture import Fixture + +fixture = Fixture() + + +def route_path(name, params=None, **kwargs): + import urllib + + base_url = { + 'edit_repo_maintenance': '/{repo_name}/settings/maintenance', + 'edit_repo_maintenance_execute': '/{repo_name}/settings/maintenance/execute', + + }[name].format(**kwargs) + + if params: + base_url = '{}?{}'.format(base_url, urllib.urlencode(params)) + return base_url + + +def _get_permission_for_user(user, repo): + perm = UserRepoToPerm.query()\ + .filter(UserRepoToPerm.repository == + Repository.get_by_repo_name(repo))\ + .filter(UserRepoToPerm.user == User.get_by_username(user))\ + .all() + return perm + + +@pytest.mark.usefixtures('autologin_user', 'app') +class TestAdminRepoMaintenance(object): + @pytest.mark.parametrize('urlname', [ + 'edit_repo_maintenance', + ]) + def test_show_page(self, urlname, app, backend): + app.get(route_path(urlname, repo_name=backend.repo_name), status=200) + + def test_execute_maintenance_for_repo_hg(self, app, backend_hg, autologin_user, xhr_header): + repo_name = backend_hg.repo_name + + response = app.get( + route_path('edit_repo_maintenance_execute', + repo_name=repo_name,), + extra_environ=xhr_header) + + assert "HG Verify repo" in ''.join(response.json)