# HG changeset patch # User RhodeCode Admin # Date 2023-10-04 17:36:19 # Node ID 95a4b30f5641a985833bf27267412c0574769a57 # Parent 76dc73295c39ed5cd5019b0b0d56c1553ca93282 tests: refactor code to use a single test url generator diff --git a/rhodecode/api/__init__.py b/rhodecode/api/__init__.py --- a/rhodecode/api/__init__.py +++ b/rhodecode/api/__init__.py @@ -163,8 +163,7 @@ def exception_view(exc, request): # make the whole above block safe pass - fault_message = "No such method: {}. Similar methods: {}".format( - method, similar) + fault_message = f"No such method: {method}. Similar methods: {similar}" else: fault_message = 'undefined error' exc_info = exc.exc_info() diff --git a/rhodecode/apps/admin/tests/test_admin_audit_logs.py b/rhodecode/apps/admin/tests/test_admin_audit_logs.py --- a/rhodecode/apps/admin/tests/test_admin_audit_logs.py +++ b/rhodecode/apps/admin/tests/test_admin_audit_logs.py @@ -25,28 +25,12 @@ import pytest from rhodecode.lib.str_utils import safe_str from rhodecode.tests import * +from rhodecode.tests.routes import route_path from rhodecode.tests.fixture import FIXTURES from rhodecode.model.db import UserLog from rhodecode.model.meta import Session -def route_path(name, params=None, **kwargs): - import urllib.request - import urllib.parse - import urllib.error - from rhodecode.apps._base import ADMIN_PREFIX - - base_url = { - 'admin_home': ADMIN_PREFIX, - 'admin_audit_logs': ADMIN_PREFIX + '/audit_logs', - - }[name].format(**kwargs) - - if params: - base_url = '{}?{}'.format(base_url, urllib.parse.urlencode(params)) - return base_url - - @pytest.mark.usefixtures('app') class TestAdminController(object): diff --git a/rhodecode/apps/admin/tests/test_admin_defaults.py b/rhodecode/apps/admin/tests/test_admin_defaults.py --- a/rhodecode/apps/admin/tests/test_admin_defaults.py +++ b/rhodecode/apps/admin/tests/test_admin_defaults.py @@ -20,27 +20,10 @@ import pytest from rhodecode.tests import assert_session_flash +from rhodecode.tests.routes import route_path from rhodecode.model.settings import SettingsModel -def route_path(name, params=None, **kwargs): - import urllib.request - import urllib.parse - import urllib.error - from rhodecode.apps._base import ADMIN_PREFIX - - base_url = { - 'admin_defaults_repositories': - ADMIN_PREFIX + '/defaults/repositories', - 'admin_defaults_repositories_update': - ADMIN_PREFIX + '/defaults/repositories/update', - }[name].format(**kwargs) - - if params: - base_url = '{}?{}'.format(base_url, urllib.parse.urlencode(params)) - return base_url - - @pytest.mark.usefixtures("app") class TestDefaultsView(object): diff --git a/rhodecode/apps/admin/tests/test_admin_main_views.py b/rhodecode/apps/admin/tests/test_admin_main_views.py --- a/rhodecode/apps/admin/tests/test_admin_main_views.py +++ b/rhodecode/apps/admin/tests/test_admin_main_views.py @@ -21,30 +21,11 @@ import pytest from rhodecode.tests import TestController from rhodecode.tests.fixture import Fixture +from rhodecode.tests.routes import route_path fixture = Fixture() -def route_path(name, params=None, **kwargs): - import urllib.request - import urllib.parse - import urllib.error - from rhodecode.apps._base import ADMIN_PREFIX - - base_url = { - 'admin_home': ADMIN_PREFIX, - 'pullrequest_show': '/{repo_name}/pull-request/{pull_request_id}', - 'pull_requests_global': ADMIN_PREFIX + '/pull-request/{pull_request_id}', - 'pull_requests_global_0': ADMIN_PREFIX + '/pull_requests/{pull_request_id}', - 'pull_requests_global_1': ADMIN_PREFIX + '/pull-requests/{pull_request_id}', - - }[name].format(**kwargs) - - if params: - base_url = '{}?{}'.format(base_url, urllib.parse.urlencode(params)) - return base_url - - class TestAdminMainView(TestController): def test_access_admin_home(self): diff --git a/rhodecode/apps/admin/tests/test_admin_permissions.py b/rhodecode/apps/admin/tests/test_admin_permissions.py --- a/rhodecode/apps/admin/tests/test_admin_permissions.py +++ b/rhodecode/apps/admin/tests/test_admin_permissions.py @@ -25,54 +25,7 @@ from rhodecode.model.permission import P from rhodecode.model.ssh_key import SshKeyModel from rhodecode.tests import ( TestController, clear_cache_regions, assert_session_flash) - - -def route_path(name, params=None, **kwargs): - import urllib.request - import urllib.parse - import urllib.error - from rhodecode.apps._base import ADMIN_PREFIX - - base_url = { - 'edit_user_ips': - ADMIN_PREFIX + '/users/{user_id}/edit/ips', - 'edit_user_ips_add': - ADMIN_PREFIX + '/users/{user_id}/edit/ips/new', - 'edit_user_ips_delete': - ADMIN_PREFIX + '/users/{user_id}/edit/ips/delete', - - 'admin_permissions_application': - ADMIN_PREFIX + '/permissions/application', - 'admin_permissions_application_update': - ADMIN_PREFIX + '/permissions/application/update', - - 'admin_permissions_global': - ADMIN_PREFIX + '/permissions/global', - 'admin_permissions_global_update': - ADMIN_PREFIX + '/permissions/global/update', - - 'admin_permissions_object': - ADMIN_PREFIX + '/permissions/object', - 'admin_permissions_object_update': - ADMIN_PREFIX + '/permissions/object/update', - - 'admin_permissions_ips': - ADMIN_PREFIX + '/permissions/ips', - 'admin_permissions_overview': - ADMIN_PREFIX + '/permissions/overview', - - 'admin_permissions_ssh_keys': - ADMIN_PREFIX + '/permissions/ssh_keys', - 'admin_permissions_ssh_keys_data': - ADMIN_PREFIX + '/permissions/ssh_keys/data', - 'admin_permissions_ssh_keys_update': - ADMIN_PREFIX + '/permissions/ssh_keys/update' - - }[name].format(**kwargs) - - if params: - base_url = '{}?{}'.format(base_url, urllib.parse.urlencode(params)) - return base_url +from rhodecode.tests.routes import route_path class TestAdminPermissionsController(TestController): diff --git a/rhodecode/apps/admin/tests/test_admin_repos.py b/rhodecode/apps/admin/tests/test_admin_repos.py --- a/rhodecode/apps/admin/tests/test_admin_repos.py +++ b/rhodecode/apps/admin/tests/test_admin_repos.py @@ -38,30 +38,12 @@ from rhodecode.tests import ( login_user_session, assert_session_flash, TEST_USER_ADMIN_LOGIN, TEST_USER_REGULAR_LOGIN, TEST_USER_REGULAR_PASS) from rhodecode.tests.fixture import Fixture, error_function -from rhodecode.tests.utils import AssertResponse, repo_on_filesystem +from rhodecode.tests.utils import repo_on_filesystem +from rhodecode.tests.routes import route_path fixture = Fixture() -def route_path(name, params=None, **kwargs): - import urllib.request - import urllib.parse - import urllib.error - - base_url = { - 'repos': ADMIN_PREFIX + '/repos', - 'repos_data': ADMIN_PREFIX + '/repos_data', - 'repo_new': ADMIN_PREFIX + '/repos/new', - 'repo_create': ADMIN_PREFIX + '/repos/create', - - 'repo_creating_check': '/{repo_name}/repo_creating_check', - }[name].format(**kwargs) - - if params: - base_url = '{}?{}'.format(base_url, urllib.parse.urlencode(params)) - return base_url - - def _get_permission_for_user(user, repo): perm = UserRepoToPerm.query()\ .filter(UserRepoToPerm.repository == diff --git a/rhodecode/apps/admin/tests/test_admin_repository_groups.py b/rhodecode/apps/admin/tests/test_admin_repository_groups.py --- a/rhodecode/apps/admin/tests/test_admin_repository_groups.py +++ b/rhodecode/apps/admin/tests/test_admin_repository_groups.py @@ -28,26 +28,10 @@ from rhodecode.model.repo_group import R from rhodecode.tests import ( assert_session_flash, TEST_USER_REGULAR_LOGIN, TESTS_TMP_PATH) from rhodecode.tests.fixture import Fixture - -fixture = Fixture() +from rhodecode.tests.routes import route_path -def route_path(name, params=None, **kwargs): - import urllib.request - import urllib.parse - import urllib.error - - base_url = { - 'repo_groups': ADMIN_PREFIX + '/repo_groups', - 'repo_groups_data': ADMIN_PREFIX + '/repo_groups_data', - 'repo_group_new': ADMIN_PREFIX + '/repo_group/new', - 'repo_group_create': ADMIN_PREFIX + '/repo_group/create', - - }[name].format(**kwargs) - - if params: - base_url = '{}?{}'.format(base_url, urllib.parse.urlencode(params)) - return base_url +fixture = Fixture() def _get_permission_for_user(user, repo): diff --git a/rhodecode/apps/admin/tests/test_admin_settings.py b/rhodecode/apps/admin/tests/test_admin_settings.py --- a/rhodecode/apps/admin/tests/test_admin_settings.py +++ b/rhodecode/apps/admin/tests/test_admin_settings.py @@ -27,85 +27,12 @@ from rhodecode.model.db import RhodeCode from rhodecode.model.meta import Session from rhodecode.model.settings import SettingsModel, IssueTrackerSettingsModel from rhodecode.tests import assert_session_flash +from rhodecode.tests.routes import route_path UPDATE_DATA_QUALNAME = 'rhodecode.model.update.UpdateModel.get_update_data' -def route_path(name, params=None, **kwargs): - import urllib.request - import urllib.parse - import urllib.error - from rhodecode.apps._base import ADMIN_PREFIX - - base_url = { - - 'admin_settings': - ADMIN_PREFIX +'/settings', - 'admin_settings_update': - ADMIN_PREFIX + '/settings/update', - 'admin_settings_global': - ADMIN_PREFIX + '/settings/global', - 'admin_settings_global_update': - ADMIN_PREFIX + '/settings/global/update', - 'admin_settings_vcs': - ADMIN_PREFIX + '/settings/vcs', - 'admin_settings_vcs_update': - ADMIN_PREFIX + '/settings/vcs/update', - 'admin_settings_vcs_svn_pattern_delete': - ADMIN_PREFIX + '/settings/vcs/svn_pattern_delete', - 'admin_settings_mapping': - ADMIN_PREFIX + '/settings/mapping', - 'admin_settings_mapping_update': - ADMIN_PREFIX + '/settings/mapping/update', - 'admin_settings_visual': - ADMIN_PREFIX + '/settings/visual', - 'admin_settings_visual_update': - ADMIN_PREFIX + '/settings/visual/update', - 'admin_settings_issuetracker': - ADMIN_PREFIX + '/settings/issue-tracker', - 'admin_settings_issuetracker_update': - ADMIN_PREFIX + '/settings/issue-tracker/update', - 'admin_settings_issuetracker_test': - ADMIN_PREFIX + '/settings/issue-tracker/test', - 'admin_settings_issuetracker_delete': - ADMIN_PREFIX + '/settings/issue-tracker/delete', - 'admin_settings_email': - ADMIN_PREFIX + '/settings/email', - 'admin_settings_email_update': - ADMIN_PREFIX + '/settings/email/update', - 'admin_settings_hooks': - ADMIN_PREFIX + '/settings/hooks', - 'admin_settings_hooks_update': - ADMIN_PREFIX + '/settings/hooks/update', - 'admin_settings_hooks_delete': - ADMIN_PREFIX + '/settings/hooks/delete', - 'admin_settings_search': - ADMIN_PREFIX + '/settings/search', - 'admin_settings_labs': - ADMIN_PREFIX + '/settings/labs', - 'admin_settings_labs_update': - ADMIN_PREFIX + '/settings/labs/update', - - 'admin_settings_sessions': - ADMIN_PREFIX + '/settings/sessions', - 'admin_settings_sessions_cleanup': - ADMIN_PREFIX + '/settings/sessions/cleanup', - 'admin_settings_system': - ADMIN_PREFIX + '/settings/system', - 'admin_settings_system_update': - ADMIN_PREFIX + '/settings/system/updates', - 'admin_settings_open_source': - ADMIN_PREFIX + '/settings/open_source', - - - }[name].format(**kwargs) - - if params: - base_url = '{}?{}'.format(base_url, urllib.parse.urlencode(params)) - return base_url - - @pytest.mark.usefixtures('autologin_user', 'app') class TestAdminSettingsController(object): diff --git a/rhodecode/apps/admin/tests/test_admin_user_groups.py b/rhodecode/apps/admin/tests/test_admin_user_groups.py --- a/rhodecode/apps/admin/tests/test_admin_user_groups.py +++ b/rhodecode/apps/admin/tests/test_admin_user_groups.py @@ -23,32 +23,13 @@ from rhodecode.model.db import UserGroup from rhodecode.model.meta import Session from rhodecode.tests import ( - TestController, TEST_USER_REGULAR_LOGIN, assert_session_flash) + TestController, assert_session_flash) from rhodecode.tests.fixture import Fixture +from rhodecode.tests.routes import route_path fixture = Fixture() -def route_path(name, params=None, **kwargs): - import urllib.request - import urllib.parse - import urllib.error - from rhodecode.apps._base import ADMIN_PREFIX - - base_url = { - 'user_groups': ADMIN_PREFIX + '/user_groups', - 'user_groups_data': ADMIN_PREFIX + '/user_groups_data', - 'user_group_members_data': ADMIN_PREFIX + '/user_groups/{user_group_id}/members', - 'user_groups_new': ADMIN_PREFIX + '/user_groups/new', - 'user_groups_create': ADMIN_PREFIX + '/user_groups/create', - 'edit_user_group': ADMIN_PREFIX + '/user_groups/{user_group_id}/edit', - }[name].format(**kwargs) - - if params: - base_url = '{}?{}'.format(base_url, urllib.parse.urlencode(params)) - return base_url - - class TestAdminUserGroupsView(TestController): def test_show_users(self): diff --git a/rhodecode/apps/admin/tests/test_admin_users.py b/rhodecode/apps/admin/tests/test_admin_users.py --- a/rhodecode/apps/admin/tests/test_admin_users.py +++ b/rhodecode/apps/admin/tests/test_admin_users.py @@ -29,79 +29,11 @@ from rhodecode.model.user import UserMod from rhodecode.tests import ( TestController, TEST_USER_REGULAR_LOGIN, assert_session_flash) from rhodecode.tests.fixture import Fixture +from rhodecode.tests.routes import route_path fixture = Fixture() -def route_path(name, params=None, **kwargs): - import urllib.request - import urllib.parse - import urllib.error - from rhodecode.apps._base import ADMIN_PREFIX - - base_url = { - 'users': - ADMIN_PREFIX + '/users', - 'users_data': - ADMIN_PREFIX + '/users_data', - 'users_create': - ADMIN_PREFIX + '/users/create', - 'users_new': - ADMIN_PREFIX + '/users/new', - 'user_edit': - ADMIN_PREFIX + '/users/{user_id}/edit', - 'user_edit_advanced': - ADMIN_PREFIX + '/users/{user_id}/edit/advanced', - 'user_edit_global_perms': - ADMIN_PREFIX + '/users/{user_id}/edit/global_permissions', - 'user_edit_global_perms_update': - ADMIN_PREFIX + '/users/{user_id}/edit/global_permissions/update', - 'user_update': - ADMIN_PREFIX + '/users/{user_id}/update', - 'user_delete': - ADMIN_PREFIX + '/users/{user_id}/delete', - 'user_create_personal_repo_group': - ADMIN_PREFIX + '/users/{user_id}/create_repo_group', - - 'edit_user_auth_tokens': - ADMIN_PREFIX + '/users/{user_id}/edit/auth_tokens', - 'edit_user_auth_tokens_add': - ADMIN_PREFIX + '/users/{user_id}/edit/auth_tokens/new', - 'edit_user_auth_tokens_delete': - ADMIN_PREFIX + '/users/{user_id}/edit/auth_tokens/delete', - - 'edit_user_emails': - ADMIN_PREFIX + '/users/{user_id}/edit/emails', - 'edit_user_emails_add': - ADMIN_PREFIX + '/users/{user_id}/edit/emails/new', - 'edit_user_emails_delete': - ADMIN_PREFIX + '/users/{user_id}/edit/emails/delete', - - 'edit_user_ips': - ADMIN_PREFIX + '/users/{user_id}/edit/ips', - 'edit_user_ips_add': - ADMIN_PREFIX + '/users/{user_id}/edit/ips/new', - 'edit_user_ips_delete': - ADMIN_PREFIX + '/users/{user_id}/edit/ips/delete', - - 'edit_user_perms_summary': - ADMIN_PREFIX + '/users/{user_id}/edit/permissions_summary', - 'edit_user_perms_summary_json': - ADMIN_PREFIX + '/users/{user_id}/edit/permissions_summary/json', - - 'edit_user_audit_logs': - ADMIN_PREFIX + '/users/{user_id}/edit/audit', - - 'edit_user_audit_logs_download': - ADMIN_PREFIX + '/users/{user_id}/edit/audit/download', - - }[name].format(**kwargs) - - if params: - base_url = '{}?{}'.format(base_url, urllib.parse.urlencode(params)) - return base_url - - class TestAdminUsersView(TestController): def test_show_users(self): diff --git a/rhodecode/apps/admin/tests/test_admin_users_ssh_keys.py b/rhodecode/apps/admin/tests/test_admin_users_ssh_keys.py --- a/rhodecode/apps/admin/tests/test_admin_users_ssh_keys.py +++ b/rhodecode/apps/admin/tests/test_admin_users_ssh_keys.py @@ -23,33 +23,11 @@ from rhodecode.model.db import User, Use from rhodecode.tests import TestController, assert_session_flash from rhodecode.tests.fixture import Fixture +from rhodecode.tests.routes import route_path fixture = Fixture() -def route_path(name, params=None, **kwargs): - import urllib.request - import urllib.parse - import urllib.error - from rhodecode.apps._base import ADMIN_PREFIX - - base_url = { - 'edit_user_ssh_keys': - ADMIN_PREFIX + '/users/{user_id}/edit/ssh_keys', - 'edit_user_ssh_keys_generate_keypair': - ADMIN_PREFIX + '/users/{user_id}/edit/ssh_keys/generate', - 'edit_user_ssh_keys_add': - ADMIN_PREFIX + '/users/{user_id}/edit/ssh_keys/new', - 'edit_user_ssh_keys_delete': - ADMIN_PREFIX + '/users/{user_id}/edit/ssh_keys/delete', - - }[name].format(**kwargs) - - if params: - base_url = '{}?{}'.format(base_url, urllib.parse.urlencode(params)) - return base_url - - class TestAdminUsersSshKeysView(TestController): INVALID_KEY = """\ ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDk+77sjDzVeB6vevJsuZds1iNU5 diff --git a/rhodecode/apps/file_store/tests/test_upload_file.py b/rhodecode/apps/file_store/tests/test_upload_file.py --- a/rhodecode/apps/file_store/tests/test_upload_file.py +++ b/rhodecode/apps/file_store/tests/test_upload_file.py @@ -21,25 +21,10 @@ import pytest from rhodecode.lib.ext_json import json from rhodecode.model.auth_token import AuthTokenModel from rhodecode.model.db import Session, FileStore, Repository, User -from rhodecode.tests import TestController from rhodecode.apps.file_store import utils, config_keys - -def route_path(name, params=None, **kwargs): - import urllib.request - import urllib.parse - import urllib.error - - base_url = { - 'upload_file': '/_file_store/upload', - 'download_file': '/_file_store/download/{fid}', - 'download_file_by_token': '/_file_store/token-download/{_auth_token}/{fid}' - - }[name].format(**kwargs) - - if params: - base_url = '{}?{}'.format(base_url, urllib.parse.urlencode(params)) - return base_url +from rhodecode.tests import TestController +from rhodecode.tests.routes import route_path class TestFileStoreViews(TestController): diff --git a/rhodecode/apps/gist/tests/test_admin_gists.py b/rhodecode/apps/gist/tests/test_admin_gists.py --- a/rhodecode/apps/gist/tests/test_admin_gists.py +++ b/rhodecode/apps/gist/tests/test_admin_gists.py @@ -26,31 +26,7 @@ from rhodecode.model.meta import Session from rhodecode.tests import ( TEST_USER_ADMIN_LOGIN, TEST_USER_REGULAR_LOGIN, TEST_USER_REGULAR_PASS, TestController, assert_session_flash) - - -def route_path(name, params=None, **kwargs): - import urllib.parse - import urllib.error - from rhodecode.apps._base import ADMIN_PREFIX - - base_url = { - 'gists_show': ADMIN_PREFIX + '/gists', - 'gists_new': ADMIN_PREFIX + '/gists/new', - 'gists_create': ADMIN_PREFIX + '/gists/create', - 'gist_show': ADMIN_PREFIX + '/gists/{gist_id}', - 'gist_delete': ADMIN_PREFIX + '/gists/{gist_id}/delete', - 'gist_edit': ADMIN_PREFIX + '/gists/{gist_id}/edit', - 'gist_edit_check_revision': ADMIN_PREFIX + '/gists/{gist_id}/edit/check_revision', - 'gist_update': ADMIN_PREFIX + '/gists/{gist_id}/update', - 'gist_show_rev': ADMIN_PREFIX + '/gists/{gist_id}/rev/{revision}', - 'gist_show_formatted': ADMIN_PREFIX + '/gists/{gist_id}/rev/{revision}/{format}', - 'gist_show_formatted_path': ADMIN_PREFIX + '/gists/{gist_id}/rev/{revision}/{format}/{f_path}', - - }[name].format(**kwargs) - - if params: - base_url = '{}?{}'.format(base_url, urllib.parse.urlencode(params)) - return base_url +from rhodecode.tests.routes import route_path class GistUtility(object): diff --git a/rhodecode/apps/home/tests/test_get_goto_switched_data.py b/rhodecode/apps/home/tests/test_get_goto_switched_data.py --- a/rhodecode/apps/home/tests/test_get_goto_switched_data.py +++ b/rhodecode/apps/home/tests/test_get_goto_switched_data.py @@ -19,8 +19,6 @@ import pytest from . import assert_and_get_main_filter_content -from rhodecode.tests import TestController, TEST_USER_ADMIN_LOGIN -from rhodecode.tests.fixture import Fixture from rhodecode.lib.utils import map_groups from rhodecode.lib.ext_json import json @@ -28,21 +26,11 @@ from rhodecode.model.repo import RepoMod from rhodecode.model.repo_group import RepoGroupModel from rhodecode.model.db import Session, Repository, RepoGroup -fixture = Fixture() - - -def route_path(name, params=None, **kwargs): - import urllib.request - import urllib.parse - import urllib.error +from rhodecode.tests import TestController, TEST_USER_ADMIN_LOGIN +from rhodecode.tests.fixture import Fixture +from rhodecode.tests.routes import route_path - base_url = { - 'goto_switcher_data': '/_goto_data', - }[name].format(**kwargs) - - if params: - base_url = '{}?{}'.format(base_url, urllib.parse.urlencode(params)) - return base_url +fixture = Fixture() class TestGotoSwitcherData(TestController): diff --git a/rhodecode/apps/home/tests/test_get_repo_list_data.py b/rhodecode/apps/home/tests/test_get_repo_list_data.py --- a/rhodecode/apps/home/tests/test_get_repo_list_data.py +++ b/rhodecode/apps/home/tests/test_get_repo_list_data.py @@ -17,29 +17,17 @@ # and proprietary license terms, please see https://rhodecode.com/licenses/ from . import assert_and_get_repo_list_content -from rhodecode.tests import TestController -from rhodecode.tests.fixture import Fixture + from rhodecode.model.db import Repository from rhodecode.lib.ext_json import json +from rhodecode.tests import TestController +from rhodecode.tests.fixture import Fixture +from rhodecode.tests.routes import route_path fixture = Fixture() -def route_path(name, params=None, **kwargs): - import urllib.request - import urllib.parse - import urllib.error - - base_url = { - 'repo_list_data': '/_repos', - }[name].format(**kwargs) - - if params: - base_url = '{}?{}'.format(base_url, urllib.parse.urlencode(params)) - return base_url - - class TestRepoListData(TestController): def test_returns_list_of_repos_and_groups(self, xhr_header): diff --git a/rhodecode/apps/home/tests/test_get_user_data.py b/rhodecode/apps/home/tests/test_get_user_data.py --- a/rhodecode/apps/home/tests/test_get_user_data.py +++ b/rhodecode/apps/home/tests/test_get_user_data.py @@ -17,28 +17,15 @@ # and proprietary license terms, please see https://rhodecode.com/licenses/ import pytest +from rhodecode.lib.ext_json import json + from rhodecode.tests import TestController from rhodecode.tests.fixture import Fixture -from rhodecode.lib.ext_json import json +from rhodecode.tests.routes import route_path fixture = Fixture() -def route_path(name, params=None, **kwargs): - import urllib.request - import urllib.parse - import urllib.error - - base_url = { - 'user_autocomplete_data': '/_users', - 'user_group_autocomplete_data': '/_user_groups' - }[name].format(**kwargs) - - if params: - base_url = '{}?{}'.format(base_url, urllib.parse.urlencode(params)) - return base_url - - class TestUserAutocompleteData(TestController): def test_returns_list_of_users(self, user_util, xhr_header): diff --git a/rhodecode/apps/home/tests/test_get_user_group_data.py b/rhodecode/apps/home/tests/test_get_user_group_data.py --- a/rhodecode/apps/home/tests/test_get_user_group_data.py +++ b/rhodecode/apps/home/tests/test_get_user_group_data.py @@ -37,29 +37,15 @@ import pytest +from rhodecode.lib.ext_json import json + from rhodecode.tests import TestController from rhodecode.tests.fixture import Fixture -from rhodecode.lib.ext_json import json - +from rhodecode.tests.routes import route_path fixture = Fixture() -def route_path(name, params=None, **kwargs): - import urllib.request - import urllib.parse - import urllib.error - - base_url = { - 'user_autocomplete_data': '/_users', - 'user_group_autocomplete_data': '/_user_groups' - }[name].format(**kwargs) - - if params: - base_url = '{}?{}'.format(base_url, urllib.parse.urlencode(params)) - return base_url - - class TestUserGroupAutocompleteData(TestController): def test_returns_list_of_user_groups(self, user_util, xhr_header): diff --git a/rhodecode/apps/home/tests/test_home.py b/rhodecode/apps/home/tests/test_home.py --- a/rhodecode/apps/home/tests/test_home.py +++ b/rhodecode/apps/home/tests/test_home.py @@ -22,23 +22,13 @@ import pytest import rhodecode from rhodecode.model.db import Repository, RepoGroup, User from rhodecode.model.meta import Session -from rhodecode.model.repo import RepoModel -from rhodecode.model.repo_group import RepoGroupModel from rhodecode.model.settings import SettingsModel from rhodecode.tests import TestController from rhodecode.tests.fixture import Fixture -from rhodecode.lib import helpers as h - -fixture = Fixture() +from rhodecode.tests.routes import route_path -def route_path(name, **kwargs): - return { - 'home': '/', - 'main_page_repos_data': '/_home_repos', - 'main_page_repo_groups_data': '/_home_repo_groups', - 'repo_group_home': '/{repo_group_name}' - }[name].format(**kwargs) +fixture = Fixture() class TestHomeController(TestController): diff --git a/rhodecode/apps/journal/tests/test_journal.py b/rhodecode/apps/journal/tests/test_journal.py --- a/rhodecode/apps/journal/tests/test_journal.py +++ b/rhodecode/apps/journal/tests/test_journal.py @@ -22,30 +22,10 @@ import datetime import pytest from rhodecode.apps._base import ADMIN_PREFIX -from rhodecode.tests import TestController from rhodecode.model.db import UserFollowing, Repository - -def route_path(name, params=None, **kwargs): - import urllib.request - import urllib.parse - import urllib.error - - base_url = { - 'journal': ADMIN_PREFIX + '/journal', - 'journal_rss': ADMIN_PREFIX + '/journal/rss', - 'journal_atom': ADMIN_PREFIX + '/journal/atom', - 'journal_public': ADMIN_PREFIX + '/public_journal', - 'journal_public_atom': ADMIN_PREFIX + '/public_journal/atom', - 'journal_public_atom_old': ADMIN_PREFIX + '/public_journal_atom', - 'journal_public_rss': ADMIN_PREFIX + '/public_journal/rss', - 'journal_public_rss_old': ADMIN_PREFIX + '/public_journal_rss', - 'toggle_following': ADMIN_PREFIX + '/toggle_following', - }[name].format(**kwargs) - - if params: - base_url = '{}?{}'.format(base_url, urllib.parse.urlencode(params)) - return base_url +from rhodecode.tests import TestController +from rhodecode.tests.routes import route_path class TestJournalViews(TestController): diff --git a/rhodecode/apps/login/tests/test_login.py b/rhodecode/apps/login/tests/test_login.py --- a/rhodecode/apps/login/tests/test_login.py +++ b/rhodecode/apps/login/tests/test_login.py @@ -21,50 +21,24 @@ import urllib.parse import mock import pytest -from rhodecode.tests import ( - assert_session_flash, HG_REPO, TEST_USER_ADMIN_LOGIN, - no_newline_id_generator) -from rhodecode.tests.fixture import Fixture + from rhodecode.lib.auth import check_password from rhodecode.lib import helpers as h from rhodecode.model.auth_token import AuthTokenModel from rhodecode.model.db import User, Notification, UserApiKeys from rhodecode.model.meta import Session +from rhodecode.tests import ( + assert_session_flash, HG_REPO, TEST_USER_ADMIN_LOGIN, + no_newline_id_generator) +from rhodecode.tests.fixture import Fixture +from rhodecode.tests.routes import route_path + fixture = Fixture() whitelist_view = ['RepoCommitsView:repo_commit_raw'] -def route_path(name, params=None, **kwargs): - import urllib.request - import urllib.parse - import urllib.error - from rhodecode.apps._base import ADMIN_PREFIX - - base_url = { - 'login': ADMIN_PREFIX + '/login', - 'logout': ADMIN_PREFIX + '/logout', - 'register': ADMIN_PREFIX + '/register', - 'reset_password': - ADMIN_PREFIX + '/password_reset', - 'reset_password_confirmation': - ADMIN_PREFIX + '/password_reset_confirmation', - - 'admin_permissions_application': - ADMIN_PREFIX + '/permissions/application', - 'admin_permissions_application_update': - ADMIN_PREFIX + '/permissions/application/update', - - 'repo_commit_raw': '/{repo_name}/raw-changeset/{commit_id}' - - }[name].format(**kwargs) - - if params: - base_url = '{}?{}'.format(base_url, urllib.parse.urlencode(params)) - return base_url - - @pytest.mark.usefixtures('app') class TestLoginController(object): destroy_users = set() diff --git a/rhodecode/apps/login/tests/test_password_reset.py b/rhodecode/apps/login/tests/test_password_reset.py --- a/rhodecode/apps/login/tests/test_password_reset.py +++ b/rhodecode/apps/login/tests/test_password_reset.py @@ -24,34 +24,10 @@ from rhodecode.tests import ( TEST_USER_ADMIN_LOGIN, TEST_USER_ADMIN_PASS) from rhodecode.tests.fixture import Fixture from rhodecode.tests.utils import AssertResponse - -fixture = Fixture() +from rhodecode.tests.routes import route_path -def route_path(name, params=None, **kwargs): - import urllib.request - import urllib.parse - import urllib.error - from rhodecode.apps._base import ADMIN_PREFIX - - base_url = { - 'login': ADMIN_PREFIX + '/login', - 'logout': ADMIN_PREFIX + '/logout', - 'register': ADMIN_PREFIX + '/register', - 'reset_password': - ADMIN_PREFIX + '/password_reset', - 'reset_password_confirmation': - ADMIN_PREFIX + '/password_reset_confirmation', - - 'admin_permissions_application': - ADMIN_PREFIX + '/permissions/application', - 'admin_permissions_application_update': - ADMIN_PREFIX + '/permissions/application/update', - }[name].format(**kwargs) - - if params: - base_url = '{}?{}'.format(base_url, urllib.parse.urlencode(params)) - return base_url +fixture = Fixture() class TestPasswordReset(TestController): diff --git a/rhodecode/apps/my_account/tests/test_my_account_auth_tokens.py b/rhodecode/apps/my_account/tests/test_my_account_auth_tokens.py --- a/rhodecode/apps/my_account/tests/test_my_account_auth_tokens.py +++ b/rhodecode/apps/my_account/tests/test_my_account_auth_tokens.py @@ -21,23 +21,12 @@ import pytest from rhodecode.apps._base import ADMIN_PREFIX from rhodecode.model.db import User from rhodecode.tests import ( - TestController, route_path_generator, assert_session_flash) + TestController, assert_session_flash) from rhodecode.tests.fixture import Fixture -from rhodecode.tests.utils import AssertResponse - -fixture = Fixture() +from rhodecode.tests.routes import route_path -def route_path(name, params=None, **kwargs): - url_defs = { - 'my_account_auth_tokens': - ADMIN_PREFIX + '/my_account/auth_tokens', - 'my_account_auth_tokens_add': - ADMIN_PREFIX + '/my_account/auth_tokens/new', - 'my_account_auth_tokens_delete': - ADMIN_PREFIX + '/my_account/auth_tokens/delete', - } - return route_path_generator(url_defs, name=name, params=params, **kwargs) +fixture = Fixture() class TestMyAccountAuthTokens(TestController): diff --git a/rhodecode/apps/my_account/tests/test_my_account_edit.py b/rhodecode/apps/my_account/tests/test_my_account_edit.py --- a/rhodecode/apps/my_account/tests/test_my_account_edit.py +++ b/rhodecode/apps/my_account/tests/test_my_account_edit.py @@ -39,25 +39,7 @@ import pytest from rhodecode.model.db import User from rhodecode.tests import TestController, assert_session_flash -from rhodecode.lib import helpers as h - - -def route_path(name, params=None, **kwargs): - import urllib.request - import urllib.parse - import urllib.error - from rhodecode.apps._base import ADMIN_PREFIX - - base_url = { - 'my_account_edit': ADMIN_PREFIX + '/my_account/edit', - 'my_account_update': ADMIN_PREFIX + '/my_account/update', - 'my_account_pullrequests': ADMIN_PREFIX + '/my_account/pull_requests', - 'my_account_pullrequests_data': ADMIN_PREFIX + '/my_account/pull_requests/data', - }[name].format(**kwargs) - - if params: - base_url = '{}?{}'.format(base_url, urllib.parse.urlencode(params)) - return base_url +from rhodecode.tests.routes import route_path class TestMyAccountEdit(TestController): diff --git a/rhodecode/apps/my_account/tests/test_my_account_emails.py b/rhodecode/apps/my_account/tests/test_my_account_emails.py --- a/rhodecode/apps/my_account/tests/test_my_account_emails.py +++ b/rhodecode/apps/my_account/tests/test_my_account_emails.py @@ -24,19 +24,10 @@ from rhodecode.tests import ( TestController, TEST_USER_ADMIN_LOGIN, TEST_USER_REGULAR_EMAIL, assert_session_flash, TEST_USER_REGULAR_PASS) from rhodecode.tests.fixture import Fixture - -fixture = Fixture() +from rhodecode.tests.routes import route_path -def route_path(name, **kwargs): - return { - 'my_account_emails': - ADMIN_PREFIX + '/my_account/emails', - 'my_account_emails_add': - ADMIN_PREFIX + '/my_account/emails/new', - 'my_account_emails_delete': - ADMIN_PREFIX + '/my_account/emails/delete', - }[name].format(**kwargs) +fixture = Fixture() class TestMyAccountEmails(TestController): diff --git a/rhodecode/apps/my_account/tests/test_my_account_notifications.py b/rhodecode/apps/my_account/tests/test_my_account_notifications.py --- a/rhodecode/apps/my_account/tests/test_my_account_notifications.py +++ b/rhodecode/apps/my_account/tests/test_my_account_notifications.py @@ -18,40 +18,19 @@ import pytest -from rhodecode.apps._base import ADMIN_PREFIX from rhodecode.tests import ( TestController, TEST_USER_REGULAR_LOGIN, TEST_USER_REGULAR_PASS, TEST_USER_ADMIN_LOGIN, TEST_USER_ADMIN_PASS) from rhodecode.tests.fixture import Fixture +from rhodecode.tests.routes import route_path from rhodecode.model.db import Notification, User -from rhodecode.model.user import UserModel from rhodecode.model.notification import NotificationModel from rhodecode.model.meta import Session fixture = Fixture() -def route_path(name, params=None, **kwargs): - import urllib.request - import urllib.parse - import urllib.error - from rhodecode.apps._base import ADMIN_PREFIX - - base_url = { - 'notifications_show_all': ADMIN_PREFIX + '/notifications', - 'notifications_mark_all_read': ADMIN_PREFIX + '/notifications_mark_all_read', - 'notifications_show': ADMIN_PREFIX + '/notifications/{notification_id}', - 'notifications_update': ADMIN_PREFIX + '/notifications/{notification_id}/update', - 'notifications_delete': ADMIN_PREFIX + '/notifications/{notification_id}/delete', - - }[name].format(**kwargs) - - if params: - base_url = '{}?{}'.format(base_url, urllib.parse.urlencode(params)) - return base_url - - class TestNotificationsController(TestController): def teardown_method(self, method): diff --git a/rhodecode/apps/my_account/tests/test_my_account_password.py b/rhodecode/apps/my_account/tests/test_my_account_password.py --- a/rhodecode/apps/my_account/tests/test_my_account_password.py +++ b/rhodecode/apps/my_account/tests/test_my_account_password.py @@ -27,20 +27,11 @@ from rhodecode.model.meta import Session from rhodecode.model.user import UserModel from rhodecode.tests import assert_session_flash from rhodecode.tests.fixture import Fixture, TestController, error_function +from rhodecode.tests.routes import route_path fixture = Fixture() -def route_path(name, **kwargs): - return { - 'home': '/', - 'my_account_password': - ADMIN_PREFIX + '/my_account/password', - 'my_account_password_update': - ADMIN_PREFIX + '/my_account/password/update', - }[name].format(**kwargs) - - test_user_1 = 'testme' test_user_1_password = '0jd83nHNS/d23n' diff --git a/rhodecode/apps/my_account/tests/test_my_account_profile.py b/rhodecode/apps/my_account/tests/test_my_account_profile.py --- a/rhodecode/apps/my_account/tests/test_my_account_profile.py +++ b/rhodecode/apps/my_account/tests/test_my_account_profile.py @@ -17,24 +17,15 @@ # RhodeCode Enterprise Edition, including its added features, Support services, # and proprietary license terms, please see https://rhodecode.com/licenses/ -import pytest - -from rhodecode.apps._base import ADMIN_PREFIX from rhodecode.tests import ( TestController, TEST_USER_ADMIN_LOGIN, TEST_USER_REGULAR_LOGIN, TEST_USER_REGULAR_PASS) from rhodecode.tests.fixture import Fixture +from rhodecode.tests.routes import route_path fixture = Fixture() -def route_path(name, **kwargs): - return { - 'my_account': - ADMIN_PREFIX + '/my_account/profile', - }[name].format(**kwargs) - - class TestMyAccountProfile(TestController): def test_my_account(self): diff --git a/rhodecode/apps/my_account/tests/test_my_account_simple_views.py b/rhodecode/apps/my_account/tests/test_my_account_simple_views.py --- a/rhodecode/apps/my_account/tests/test_my_account_simple_views.py +++ b/rhodecode/apps/my_account/tests/test_my_account_simple_views.py @@ -17,31 +17,14 @@ # RhodeCode Enterprise Edition, including its added features, Support services, # and proprietary license terms, please see https://rhodecode.com/licenses/ -import pytest - -from rhodecode.apps._base import ADMIN_PREFIX -from rhodecode.model.db import User, UserEmailMap, Repository, UserFollowing -from rhodecode.tests import ( - TestController, TEST_USER_ADMIN_LOGIN, TEST_USER_REGULAR_EMAIL, - assert_session_flash) +from rhodecode.model.db import User, Repository, UserFollowing +from rhodecode.tests import TestController, TEST_USER_ADMIN_LOGIN from rhodecode.tests.fixture import Fixture +from rhodecode.tests.routes import route_path fixture = Fixture() -def route_path(name, **kwargs): - return { - 'my_account_repos': - ADMIN_PREFIX + '/my_account/repos', - 'my_account_watched': - ADMIN_PREFIX + '/my_account/watched', - 'my_account_perms': - ADMIN_PREFIX + '/my_account/perms', - 'my_account_notifications': - ADMIN_PREFIX + '/my_account/notifications', - }[name].format(**kwargs) - - class TestMyAccountSimpleViews(TestController): def test_my_account_my_repos(self, autologin_user): diff --git a/rhodecode/apps/my_account/tests/test_my_account_ssh_keys.py b/rhodecode/apps/my_account/tests/test_my_account_ssh_keys.py --- a/rhodecode/apps/my_account/tests/test_my_account_ssh_keys.py +++ b/rhodecode/apps/my_account/tests/test_my_account_ssh_keys.py @@ -17,38 +17,16 @@ # RhodeCode Enterprise Edition, including its added features, Support services, # and proprietary license terms, please see https://rhodecode.com/licenses/ -import pytest from rhodecode.model.db import User, UserSshKeys from rhodecode.tests import TestController, assert_session_flash from rhodecode.tests.fixture import Fixture +from rhodecode.tests.routes import route_path fixture = Fixture() -def route_path(name, params=None, **kwargs): - import urllib.request - import urllib.parse - import urllib.error - from rhodecode.apps._base import ADMIN_PREFIX - - base_url = { - 'my_account_ssh_keys': - ADMIN_PREFIX + '/my_account/ssh_keys', - 'my_account_ssh_keys_generate': - ADMIN_PREFIX + '/my_account/ssh_keys/generate', - 'my_account_ssh_keys_add': - ADMIN_PREFIX + '/my_account/ssh_keys/new', - 'my_account_ssh_keys_delete': - ADMIN_PREFIX + '/my_account/ssh_keys/delete', - }[name].format(**kwargs) - - if params: - base_url = '{}?{}'.format(base_url, urllib.parse.urlencode(params)) - return base_url - - class TestMyAccountSshKeysView(TestController): INVALID_KEY = """\ ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDk+77sjDzVeB6vevJsuZds1iNU5 diff --git a/rhodecode/apps/repo_group/tests/test_repo_groups_advanced.py b/rhodecode/apps/repo_group/tests/test_repo_groups_advanced.py --- a/rhodecode/apps/repo_group/tests/test_repo_groups_advanced.py +++ b/rhodecode/apps/repo_group/tests/test_repo_groups_advanced.py @@ -19,23 +19,7 @@ import pytest from rhodecode.tests import assert_session_flash - - -def route_path(name, params=None, **kwargs): - import urllib.request - import urllib.parse - import urllib.error - - base_url = { - 'edit_repo_group_advanced': - '/{repo_group_name}/_settings/advanced', - 'edit_repo_group_advanced_delete': - '/{repo_group_name}/_settings/advanced/delete', - }[name].format(**kwargs) - - if params: - base_url = '{}?{}'.format(base_url, urllib.parse.urlencode(params)) - return base_url +from rhodecode.tests.routes import route_path @pytest.mark.usefixtures("app") diff --git a/rhodecode/apps/repo_group/tests/test_repo_groups_permissions.py b/rhodecode/apps/repo_group/tests/test_repo_groups_permissions.py --- a/rhodecode/apps/repo_group/tests/test_repo_groups_permissions.py +++ b/rhodecode/apps/repo_group/tests/test_repo_groups_permissions.py @@ -19,23 +19,7 @@ import pytest from rhodecode.tests.utils import permission_update_data_generator - - -def route_path(name, params=None, **kwargs): - import urllib.request - import urllib.parse - import urllib.error - - base_url = { - 'edit_repo_group_perms': - '/{repo_group_name:}/_settings/permissions', - 'edit_repo_group_perms_update': - '/{repo_group_name}/_settings/permissions/update', - }[name].format(**kwargs) - - if params: - base_url = '{}?{}'.format(base_url, urllib.parse.urlencode(params)) - return base_url +from rhodecode.tests.routes import route_path @pytest.mark.usefixtures("app") diff --git a/rhodecode/apps/repo_group/tests/test_repo_groups_settings.py b/rhodecode/apps/repo_group/tests/test_repo_groups_settings.py --- a/rhodecode/apps/repo_group/tests/test_repo_groups_settings.py +++ b/rhodecode/apps/repo_group/tests/test_repo_groups_settings.py @@ -20,21 +20,8 @@ import pytest from rhodecode.tests import assert_session_flash - - -def route_path(name, params=None, **kwargs): - import urllib.request - import urllib.parse - import urllib.error +from rhodecode.tests.routes import route_path - base_url = { - 'edit_repo_group': '/{repo_group_name}/_edit', - # Update is POST to the above url - }[name].format(**kwargs) - - if params: - base_url = '{}?{}'.format(base_url, urllib.parse.urlencode(params)) - return base_url @pytest.mark.usefixtures("app") diff --git a/rhodecode/apps/repository/tests/test_pull_requests_list.py b/rhodecode/apps/repository/tests/test_pull_requests_list.py --- a/rhodecode/apps/repository/tests/test_pull_requests_list.py +++ b/rhodecode/apps/repository/tests/test_pull_requests_list.py @@ -17,22 +17,7 @@ # and proprietary license terms, please see https://rhodecode.com/licenses/ import pytest -from rhodecode.model.db import Repository - - -def route_path(name, params=None, **kwargs): - import urllib.request - import urllib.parse - import urllib.error - - base_url = { - 'pullrequest_show_all': '/{repo_name}/pull-request', - 'pullrequest_show_all_data': '/{repo_name}/pull-request-data', - }[name].format(**kwargs) - - if params: - base_url = '{}?{}'.format(base_url, urllib.parse.urlencode(params)) - return base_url +from rhodecode.tests.routes import route_path @pytest.mark.backends("git", "hg") diff --git a/rhodecode/apps/repository/tests/test_repo_bookmarks.py b/rhodecode/apps/repository/tests/test_repo_bookmarks.py --- a/rhodecode/apps/repository/tests/test_repo_bookmarks.py +++ b/rhodecode/apps/repository/tests/test_repo_bookmarks.py @@ -18,20 +18,8 @@ import pytest from rhodecode.model.db import Repository - - -def route_path(name, params=None, **kwargs): - import urllib.request - import urllib.parse - import urllib.error +from rhodecode.tests.routes import route_path - base_url = { - 'bookmarks_home': '/{repo_name}/bookmarks', - }[name].format(**kwargs) - - if params: - base_url = '{}?{}'.format(base_url, urllib.parse.urlencode(params)) - return base_url @pytest.mark.usefixtures('autologin_user', 'app') diff --git a/rhodecode/apps/repository/tests/test_repo_branches.py b/rhodecode/apps/repository/tests/test_repo_branches.py --- a/rhodecode/apps/repository/tests/test_repo_branches.py +++ b/rhodecode/apps/repository/tests/test_repo_branches.py @@ -18,20 +18,7 @@ import pytest from rhodecode.model.db import Repository - - -def route_path(name, params=None, **kwargs): - import urllib.request - import urllib.parse - import urllib.error - - base_url = { - 'branches_home': '/{repo_name}/branches', - }[name].format(**kwargs) - - if params: - base_url = '{}?{}'.format(base_url, urllib.parse.urlencode(params)) - return base_url +from rhodecode.tests.routes import route_path @pytest.mark.usefixtures('autologin_user', 'app') diff --git a/rhodecode/apps/repository/tests/test_repo_changelog.py b/rhodecode/apps/repository/tests/test_repo_changelog.py --- a/rhodecode/apps/repository/tests/test_repo_changelog.py +++ b/rhodecode/apps/repository/tests/test_repo_changelog.py @@ -22,25 +22,10 @@ import pytest from rhodecode.apps.repository.views.repo_changelog import DEFAULT_CHANGELOG_SIZE from rhodecode.tests import TestController - -MATCH_HASH = re.compile(r'r(\d+):[\da-f]+') +from rhodecode.tests.routes import route_path -def route_path(name, params=None, **kwargs): - import urllib.request - import urllib.parse - import urllib.error - - base_url = { - 'repo_changelog': '/{repo_name}/changelog', - 'repo_commits': '/{repo_name}/commits', - 'repo_commits_file': '/{repo_name}/commits/{commit_id}/{f_path}', - 'repo_commits_elements': '/{repo_name}/commits_elements', - }[name].format(**kwargs) - - if params: - base_url = '{}?{}'.format(base_url, urllib.parse.urlencode(params)) - return base_url +MATCH_HASH = re.compile(r'r(\d+):[\da-f]+') def assert_commits_on_page(response, indexes): diff --git a/rhodecode/apps/repository/tests/test_repo_commit_comments.py b/rhodecode/apps/repository/tests/test_repo_commit_comments.py --- a/rhodecode/apps/repository/tests/test_repo_commit_comments.py +++ b/rhodecode/apps/repository/tests/test_repo_commit_comments.py @@ -19,29 +19,12 @@ import pytest from rhodecode.tests import TestController - +from rhodecode.tests.routes import route_path from rhodecode.model.db import ChangesetComment, Notification from rhodecode.model.meta import Session from rhodecode.lib import helpers as h -def route_path(name, params=None, **kwargs): - import urllib.request - import urllib.parse - import urllib.error - - base_url = { - 'repo_commit': '/{repo_name}/changeset/{commit_id}', - 'repo_commit_comment_create': '/{repo_name}/changeset/{commit_id}/comment/create', - 'repo_commit_comment_preview': '/{repo_name}/changeset/{commit_id}/comment/preview', - 'repo_commit_comment_delete': '/{repo_name}/changeset/{commit_id}/comment/{comment_id}/delete', - 'repo_commit_comment_edit': '/{repo_name}/changeset/{commit_id}/comment/{comment_id}/edit', - }[name].format(**kwargs) - - if params: - base_url = '{}?{}'.format(base_url, urllib.parse.urlencode(params)) - return base_url - @pytest.mark.backends("git", "hg", "svn") class TestRepoCommitCommentsView(TestController): diff --git a/rhodecode/apps/repository/tests/test_repo_commits.py b/rhodecode/apps/repository/tests/test_repo_commits.py --- a/rhodecode/apps/repository/tests/test_repo_commits.py +++ b/rhodecode/apps/repository/tests/test_repo_commits.py @@ -21,27 +21,7 @@ import pytest from rhodecode.apps.repository.tests.test_repo_compare import ComparePage from rhodecode.lib.helpers import _shorten_commit_id - - -def route_path(name, params=None, **kwargs): - import urllib.request - import urllib.parse - import urllib.error - - base_url = { - 'repo_commit': '/{repo_name}/changeset/{commit_id}', - 'repo_commit_children': '/{repo_name}/changeset_children/{commit_id}', - 'repo_commit_parents': '/{repo_name}/changeset_parents/{commit_id}', - 'repo_commit_raw': '/{repo_name}/changeset-diff/{commit_id}', - 'repo_commit_patch': '/{repo_name}/changeset-patch/{commit_id}', - 'repo_commit_download': '/{repo_name}/changeset-download/{commit_id}', - 'repo_commit_data': '/{repo_name}/changeset-data/{commit_id}', - 'repo_compare': '/{repo_name}/compare/{source_ref_type}@{source_ref}...{target_ref_type}@{target_ref}', - }[name].format(**kwargs) - - if params: - base_url = '{}?{}'.format(base_url, urllib.parse.urlencode(params)) - return base_url +from rhodecode.tests.routes import route_path @pytest.mark.usefixtures("app") diff --git a/rhodecode/apps/repository/tests/test_repo_compare.py b/rhodecode/apps/repository/tests/test_repo_compare.py --- a/rhodecode/apps/repository/tests/test_repo_compare.py +++ b/rhodecode/apps/repository/tests/test_repo_compare.py @@ -24,21 +24,7 @@ import lxml.html from rhodecode.lib.vcs.exceptions import RepositoryRequirementError from rhodecode.tests import assert_session_flash from rhodecode.tests.utils import AssertResponse, commit_change - - -def route_path(name, params=None, **kwargs): - import urllib.request - import urllib.parse - import urllib.error - - base_url = { - 'repo_compare_select': '/{repo_name}/compare', - 'repo_compare': '/{repo_name}/compare/{source_ref_type}@{source_ref}...{target_ref_type}@{target_ref}', - }[name].format(**kwargs) - - if params: - base_url = '{}?{}'.format(base_url, urllib.parse.urlencode(params)) - return base_url +from rhodecode.tests.routes import route_path @pytest.mark.usefixtures("autologin_user", "app") @@ -165,7 +151,7 @@ class TestCompareView(object): compare_page.target_source_are_disabled() @pytest.mark.xfail_backends("svn", reason="Depends on branch support") - def test_compare_forks_on_branch_extra_commits_origin_has_incomming(self, backend): + def test_compare_forks_on_branch_extra_commits_origin_has_incoming(self, backend): repo1 = backend.create_repo() # commit something ! @@ -203,13 +189,13 @@ class TestCompareView(object): params=dict(merge='1', target_repo=repo2.repo_name), )) - response.mustcontain('%s@%s' % (repo1.repo_name, commit_id2)) - response.mustcontain('%s@%s' % (repo2.repo_name, commit_id1)) + response.mustcontain(f'{repo1.repo_name}@{commit_id2}') + response.mustcontain(f'{repo2.repo_name}@{commit_id1}') compare_page = ComparePage(response) compare_page.contains_change_summary(1, 2, 0) compare_page.contains_commits([commit1, commit2]) - anchor = 'a_c-{}-826e8142e6ba'.format(commit0.short_id) + anchor = f'a_c-{commit0.short_id}-826e8142e6ba' compare_page.contains_file_links_and_anchors([('file1', anchor), ]) # Swap is removed when comparing branches since it's a PR feature and diff --git a/rhodecode/apps/repository/tests/test_repo_compare_local.py b/rhodecode/apps/repository/tests/test_repo_compare_local.py --- a/rhodecode/apps/repository/tests/test_repo_compare_local.py +++ b/rhodecode/apps/repository/tests/test_repo_compare_local.py @@ -20,21 +20,7 @@ import pytest from .test_repo_compare import ComparePage - - -def route_path(name, params=None, **kwargs): - import urllib.request - import urllib.parse - import urllib.error - - base_url = { - 'repo_compare_select': '/{repo_name}/compare', - 'repo_compare': '/{repo_name}/compare/{source_ref_type}@{source_ref}...{target_ref_type}@{target_ref}', - }[name].format(**kwargs) - - if params: - base_url = '{}?{}'.format(base_url, urllib.parse.urlencode(params)) - return base_url +from rhodecode.tests.routes import route_path @pytest.mark.usefixtures("autologin_user", "app") diff --git a/rhodecode/apps/repository/tests/test_repo_compare_on_single_file.py b/rhodecode/apps/repository/tests/test_repo_compare_on_single_file.py --- a/rhodecode/apps/repository/tests/test_repo_compare_on_single_file.py +++ b/rhodecode/apps/repository/tests/test_repo_compare_on_single_file.py @@ -24,23 +24,10 @@ from rhodecode.lib.vcs import nodes from rhodecode.lib.vcs.backends.base import EmptyCommit from rhodecode.tests.fixture import Fixture from rhodecode.tests.utils import commit_change - -fixture = Fixture() +from rhodecode.tests.routes import route_path -def route_path(name, params=None, **kwargs): - import urllib.request - import urllib.parse - import urllib.error - - base_url = { - 'repo_compare_select': '/{repo_name}/compare', - 'repo_compare': '/{repo_name}/compare/{source_ref_type}@{source_ref}...{target_ref_type}@{target_ref}', - }[name].format(**kwargs) - - if params: - base_url = '{}?{}'.format(base_url, urllib.parse.urlencode(params)) - return base_url +fixture = Fixture() @pytest.mark.usefixtures("autologin_user", "app") diff --git a/rhodecode/apps/repository/tests/test_repo_feed.py b/rhodecode/apps/repository/tests/test_repo_feed.py --- a/rhodecode/apps/repository/tests/test_repo_feed.py +++ b/rhodecode/apps/repository/tests/test_repo_feed.py @@ -20,23 +20,7 @@ import pytest from rhodecode.model.auth_token import AuthTokenModel from rhodecode.tests import TestController - - -def route_path(name, params=None, **kwargs): - import urllib.request - import urllib.parse - import urllib.error - - base_url = { - 'rss_feed_home': '/{repo_name}/feed-rss', - 'atom_feed_home': '/{repo_name}/feed-atom', - 'rss_feed_home_old': '/{repo_name}/feed/rss', - 'atom_feed_home_old': '/{repo_name}/feed/atom', - }[name].format(**kwargs) - - if params: - base_url = '{}?{}'.format(base_url, urllib.parse.urlencode(params)) - return base_url +from rhodecode.tests.routes import route_path class TestFeedView(TestController): diff --git a/rhodecode/apps/repository/tests/test_repo_files.py b/rhodecode/apps/repository/tests/test_repo_files.py --- a/rhodecode/apps/repository/tests/test_repo_files.py +++ b/rhodecode/apps/repository/tests/test_repo_files.py @@ -34,6 +34,8 @@ from rhodecode.model.db import Session, from rhodecode.tests import assert_session_flash from rhodecode.tests.fixture import Fixture +from rhodecode.tests.routes import route_path + fixture = Fixture() @@ -46,43 +48,6 @@ def get_node_history(backend_type): }[backend_type] -def route_path(name, params=None, **kwargs): - import urllib.request - import urllib.parse - import urllib.error - - base_url = { - 'repo_summary': '/{repo_name}', - 'repo_archivefile': '/{repo_name}/archive/{fname}', - 'repo_files_diff': '/{repo_name}/diff/{f_path}', - 'repo_files_diff_2way_redirect': '/{repo_name}/diff-2way/{f_path}', - 'repo_files': '/{repo_name}/files/{commit_id}/{f_path}', - 'repo_files:default_path': '/{repo_name}/files/{commit_id}/', - 'repo_files:default_commit': '/{repo_name}/files', - 'repo_files:rendered': '/{repo_name}/render/{commit_id}/{f_path}', - 'repo_files:annotated': '/{repo_name}/annotate/{commit_id}/{f_path}', - 'repo_files:annotated_previous': '/{repo_name}/annotate-previous/{commit_id}/{f_path}', - 'repo_files_nodelist': '/{repo_name}/nodelist/{commit_id}/{f_path}', - 'repo_file_raw': '/{repo_name}/raw/{commit_id}/{f_path}', - 'repo_file_download': '/{repo_name}/download/{commit_id}/{f_path}', - 'repo_file_history': '/{repo_name}/history/{commit_id}/{f_path}', - 'repo_file_authors': '/{repo_name}/authors/{commit_id}/{f_path}', - 'repo_files_remove_file': '/{repo_name}/remove_file/{commit_id}/{f_path}', - 'repo_files_delete_file': '/{repo_name}/delete_file/{commit_id}/{f_path}', - 'repo_files_edit_file': '/{repo_name}/edit_file/{commit_id}/{f_path}', - 'repo_files_update_file': '/{repo_name}/update_file/{commit_id}/{f_path}', - 'repo_files_add_file': '/{repo_name}/add_file/{commit_id}/{f_path}', - 'repo_files_upload_file': '/{repo_name}/upload_file/{commit_id}/{f_path}', - 'repo_files_create_file': '/{repo_name}/create_file/{commit_id}/{f_path}', - 'repo_nodetree_full': '/{repo_name}/nodetree_full/{commit_id}/{f_path}', - 'repo_nodetree_full:default_path': '/{repo_name}/nodetree_full/{commit_id}/', - }[name].format(**kwargs) - - if params: - base_url = '{}?{}'.format(base_url, urllib.parse.urlencode(params)) - return base_url - - def assert_files_in_response(response, files, params): template = ( 'href="/%(repo_name)s/files/%(commit_id)s/%(name)s"') diff --git a/rhodecode/apps/repository/tests/test_repo_forks.py b/rhodecode/apps/repository/tests/test_repo_forks.py --- a/rhodecode/apps/repository/tests/test_repo_forks.py +++ b/rhodecode/apps/repository/tests/test_repo_forks.py @@ -28,27 +28,10 @@ from rhodecode.model.db import Repositor from rhodecode.model.repo import RepoModel from rhodecode.model.user import UserModel from rhodecode.model.meta import Session - -fixture = Fixture() +from rhodecode.tests.routes import route_path -def route_path(name, params=None, **kwargs): - import urllib.request - import urllib.parse - import urllib.error - - base_url = { - 'repo_summary': '/{repo_name}', - 'repo_creating_check': '/{repo_name}/repo_creating_check', - 'repo_fork_new': '/{repo_name}/fork', - 'repo_fork_create': '/{repo_name}/fork/create', - 'repo_forks_show_all': '/{repo_name}/forks', - 'repo_forks_data': '/{repo_name}/forks/data', - }[name].format(**kwargs) - - if params: - base_url = '{}?{}'.format(base_url, urllib.parse.urlencode(params)) - return base_url +fixture = Fixture() FORK_NAME = { diff --git a/rhodecode/apps/repository/tests/test_repo_issue_tracker.py b/rhodecode/apps/repository/tests/test_repo_issue_tracker.py --- a/rhodecode/apps/repository/tests/test_repo_issue_tracker.py +++ b/rhodecode/apps/repository/tests/test_repo_issue_tracker.py @@ -23,24 +23,8 @@ from rhodecode.lib.hash_utils import md5 from rhodecode.model.db import Repository from rhodecode.model.meta import Session from rhodecode.model.settings import SettingsModel, IssueTrackerSettingsModel - - -def route_path(name, params=None, **kwargs): - import urllib.request - import urllib.parse - import urllib.error +from rhodecode.tests.routes import route_path - base_url = { - 'repo_summary': '/{repo_name}', - 'edit_repo_issuetracker': '/{repo_name}/settings/issue_trackers', - 'edit_repo_issuetracker_test': '/{repo_name}/settings/issue_trackers/test', - 'edit_repo_issuetracker_delete': '/{repo_name}/settings/issue_trackers/delete', - 'edit_repo_issuetracker_update': '/{repo_name}/settings/issue_trackers/update', - }[name].format(**kwargs) - - if params: - base_url = '{}?{}'.format(base_url, urllib.parse.urlencode(params)) - return base_url @pytest.mark.usefixtures("app") diff --git a/rhodecode/apps/repository/tests/test_repo_maintainance.py b/rhodecode/apps/repository/tests/test_repo_maintainance.py --- a/rhodecode/apps/repository/tests/test_repo_maintainance.py +++ b/rhodecode/apps/repository/tests/test_repo_maintainance.py @@ -17,36 +17,16 @@ # 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 +from rhodecode.tests.routes import route_path fixture = Fixture() -def route_path(name, params=None, **kwargs): - import urllib.request - import urllib.parse - import urllib.error - - 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.parse.urlencode(params)) - return base_url - - def _get_permission_for_user(user, repo): perm = UserRepoToPerm.query()\ .filter(UserRepoToPerm.repository == diff --git a/rhodecode/apps/repository/tests/test_repo_permissions.py b/rhodecode/apps/repository/tests/test_repo_permissions.py --- a/rhodecode/apps/repository/tests/test_repo_permissions.py +++ b/rhodecode/apps/repository/tests/test_repo_permissions.py @@ -20,21 +20,7 @@ import pytest from rhodecode.tests.utils import permission_update_data_generator - - -def route_path(name, params=None, **kwargs): - import urllib.request - import urllib.parse - import urllib.error - - base_url = { - 'edit_repo_perms': '/{repo_name}/settings/permissions' - # update is the same url - }[name].format(**kwargs) - - if params: - base_url = '{}?{}'.format(base_url, urllib.parse.urlencode(params)) - return base_url +from rhodecode.tests.routes import route_path @pytest.mark.usefixtures("app") diff --git a/rhodecode/apps/repository/tests/test_repo_pullrequests.py b/rhodecode/apps/repository/tests/test_repo_pullrequests.py --- a/rhodecode/apps/repository/tests/test_repo_pullrequests.py +++ b/rhodecode/apps/repository/tests/test_repo_pullrequests.py @@ -33,36 +33,7 @@ from rhodecode.model.user import UserMod from rhodecode.model.comment import CommentsModel from rhodecode.tests import ( assert_session_flash, TEST_USER_ADMIN_LOGIN, TEST_USER_REGULAR_LOGIN) - - -def route_path(name, params=None, **kwargs): - import urllib.request - import urllib.parse - import urllib.error - - base_url = { - 'repo_changelog': '/{repo_name}/changelog', - 'repo_changelog_file': '/{repo_name}/changelog/{commit_id}/{f_path}', - 'repo_commits': '/{repo_name}/commits', - 'repo_commits_file': '/{repo_name}/commits/{commit_id}/{f_path}', - 'pullrequest_show': '/{repo_name}/pull-request/{pull_request_id}', - 'pullrequest_show_all': '/{repo_name}/pull-request', - 'pullrequest_show_all_data': '/{repo_name}/pull-request-data', - 'pullrequest_repo_refs': '/{repo_name}/pull-request/refs/{target_repo_name:.*?[^/]}', - 'pullrequest_repo_targets': '/{repo_name}/pull-request/repo-destinations', - 'pullrequest_new': '/{repo_name}/pull-request/new', - 'pullrequest_create': '/{repo_name}/pull-request/create', - 'pullrequest_update': '/{repo_name}/pull-request/{pull_request_id}/update', - 'pullrequest_merge': '/{repo_name}/pull-request/{pull_request_id}/merge', - 'pullrequest_delete': '/{repo_name}/pull-request/{pull_request_id}/delete', - 'pullrequest_comment_create': '/{repo_name}/pull-request/{pull_request_id}/comment', - 'pullrequest_comment_delete': '/{repo_name}/pull-request/{pull_request_id}/comment/{comment_id}/delete', - 'pullrequest_comment_edit': '/{repo_name}/pull-request/{pull_request_id}/comment/{comment_id}/edit', - }[name].format(**kwargs) - - if params: - base_url = '{}?{}'.format(base_url, urllib.parse.urlencode(params)) - return base_url +from rhodecode.tests.routes import route_path @pytest.mark.usefixtures('app', 'autologin_user') diff --git a/rhodecode/apps/repository/tests/test_repo_settings.py b/rhodecode/apps/repository/tests/test_repo_settings.py --- a/rhodecode/apps/repository/tests/test_repo_settings.py +++ b/rhodecode/apps/repository/tests/test_repo_settings.py @@ -27,32 +27,11 @@ 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 +from rhodecode.tests.routes import route_path fixture = Fixture() -def route_path(name, params=None, **kwargs): - import urllib.request - import urllib.parse - import urllib.error - - base_url = { - 'edit_repo': '/{repo_name}/settings', - 'edit_repo_advanced': '/{repo_name}/settings/advanced', - 'edit_repo_caches': '/{repo_name}/settings/caches', - 'edit_repo_perms': '/{repo_name}/settings/permissions', - 'edit_repo_vcs': '/{repo_name}/settings/vcs', - 'edit_repo_issuetracker': '/{repo_name}/settings/issue_trackers', - 'edit_repo_fields': '/{repo_name}/settings/fields', - 'edit_repo_remote': '/{repo_name}/settings/remote', - 'edit_repo_statistics': '/{repo_name}/settings/statistics', - }[name].format(**kwargs) - - if params: - base_url = '{}?{}'.format(base_url, urllib.parse.urlencode(params)) - return base_url - - def _get_permission_for_user(user, repo): perm = UserRepoToPerm.query()\ .filter(UserRepoToPerm.repository == diff --git a/rhodecode/apps/repository/tests/test_repo_settings_advanced.py b/rhodecode/apps/repository/tests/test_repo_settings_advanced.py --- a/rhodecode/apps/repository/tests/test_repo_settings_advanced.py +++ b/rhodecode/apps/repository/tests/test_repo_settings_advanced.py @@ -26,32 +26,11 @@ from rhodecode.tests import ( HG_REPO, GIT_REPO, assert_session_flash, no_newline_id_generator) from rhodecode.tests.fixture import Fixture from rhodecode.tests.utils import repo_on_filesystem +from rhodecode.tests.routes import route_path fixture = Fixture() -def route_path(name, params=None, **kwargs): - import urllib.request - import urllib.parse - import urllib.error - - base_url = { - 'repo_summary_explicit': '/{repo_name}/summary', - 'repo_summary': '/{repo_name}', - 'edit_repo_advanced': '/{repo_name}/settings/advanced', - 'edit_repo_advanced_delete': '/{repo_name}/settings/advanced/delete', - 'edit_repo_advanced_archive': '/{repo_name}/settings/advanced/archive', - 'edit_repo_advanced_fork': '/{repo_name}/settings/advanced/fork', - 'edit_repo_advanced_locking': '/{repo_name}/settings/advanced/locking', - 'edit_repo_advanced_journal': '/{repo_name}/settings/advanced/journal', - - }[name].format(**kwargs) - - if params: - base_url = '{}?{}'.format(base_url, urllib.parse.urlencode(params)) - return base_url - - @pytest.mark.usefixtures('autologin_user', 'app') class TestAdminRepoSettingsAdvanced(object): diff --git a/rhodecode/apps/repository/tests/test_repo_summary.py b/rhodecode/apps/repository/tests/test_repo_summary.py --- a/rhodecode/apps/repository/tests/test_repo_summary.py +++ b/rhodecode/apps/repository/tests/test_repo_summary.py @@ -34,29 +34,12 @@ from rhodecode.model.scm import ScmModel from rhodecode.tests import assert_session_flash from rhodecode.tests.fixture import Fixture from rhodecode.tests.utils import AssertResponse, repo_on_filesystem +from rhodecode.tests.routes import route_path fixture = Fixture() -def route_path(name, params=None, **kwargs): - import urllib.request - import urllib.parse - import urllib.error - - base_url = { - 'repo_summary': '/{repo_name}', - 'repo_stats': '/{repo_name}/repo_stats/{commit_id}', - 'repo_refs_data': '/{repo_name}/refs-data', - 'repo_refs_changelog_data': '/{repo_name}/refs-data-changelog', - 'repo_creating_check': '/{repo_name}/repo_creating_check', - }[name].format(**kwargs) - - if params: - base_url = '{}?{}'.format(base_url, urllib.parse.urlencode(params)) - return base_url - - def assert_clone_url(response, server, repo, disabled=False): response.mustcontain( diff --git a/rhodecode/apps/repository/tests/test_repo_tags.py b/rhodecode/apps/repository/tests/test_repo_tags.py --- a/rhodecode/apps/repository/tests/test_repo_tags.py +++ b/rhodecode/apps/repository/tests/test_repo_tags.py @@ -19,20 +19,7 @@ import pytest from rhodecode.model.db import Repository - - -def route_path(name, params=None, **kwargs): - import urllib.request - import urllib.parse - import urllib.error - - base_url = { - 'tags_home': '/{repo_name}/tags', - }[name].format(**kwargs) - - if params: - base_url = '{}?{}'.format(base_url, urllib.parse.urlencode(params)) - return base_url +from rhodecode.tests.routes import route_path @pytest.mark.usefixtures('autologin_user', 'app') diff --git a/rhodecode/apps/repository/tests/test_repo_vcs_settings.py b/rhodecode/apps/repository/tests/test_repo_vcs_settings.py --- a/rhodecode/apps/repository/tests/test_repo_vcs_settings.py +++ b/rhodecode/apps/repository/tests/test_repo_vcs_settings.py @@ -32,29 +32,11 @@ from rhodecode.tests import ( TEST_USER_REGULAR_LOGIN, TEST_USER_REGULAR_PASS) from rhodecode.tests.fixture import Fixture from rhodecode.tests.utils import AssertResponse +from rhodecode.tests.routes import route_path fixture = Fixture() -def route_path(name, params=None, **kwargs): - import urllib.request - import urllib.parse - import urllib.error - - base_url = { - 'repo_summary': '/{repo_name}', - 'repo_creating_check': '/{repo_name}/repo_creating_check', - 'edit_repo': '/{repo_name}/settings', - 'edit_repo_vcs': '/{repo_name}/settings/vcs', - 'edit_repo_vcs_update': '/{repo_name}/settings/vcs/update', - 'edit_repo_vcs_svn_pattern_delete': '/{repo_name}/settings/vcs/svn_pattern/delete' - }[name].format(**kwargs) - - if params: - base_url = '{}?{}'.format(base_url, urllib.parse.urlencode(params)) - return base_url - - @pytest.mark.usefixtures("app") class TestVcsSettings(object): FORM_DATA = { diff --git a/rhodecode/apps/repository/tests/test_vcs_settings.py b/rhodecode/apps/repository/tests/test_vcs_settings.py --- a/rhodecode/apps/repository/tests/test_vcs_settings.py +++ b/rhodecode/apps/repository/tests/test_vcs_settings.py @@ -23,23 +23,7 @@ import pytest import rhodecode from rhodecode.model.db import Repository from rhodecode.model.settings import SettingsModel -from rhodecode.tests.utils import AssertResponse - - -def route_path(name, params=None, **kwargs): - import urllib.request - import urllib.parse - import urllib.error - - base_url = { - 'edit_repo': '/{repo_name}/settings', - 'edit_repo_vcs': '/{repo_name}/settings/vcs', - 'edit_repo_vcs_update': '/{repo_name}/settings/vcs/update', - }[name].format(**kwargs) - - if params: - base_url = '{}?{}'.format(base_url, urllib.parse.urlencode(params)) - return base_url +from rhodecode.tests.routes import route_path @pytest.mark.usefixtures('autologin_user', 'app') diff --git a/rhodecode/apps/search/tests/test_search.py b/rhodecode/apps/search/tests/test_search.py --- a/rhodecode/apps/search/tests/test_search.py +++ b/rhodecode/apps/search/tests/test_search.py @@ -23,20 +23,9 @@ import pytest from whoosh import query from rhodecode.tests import ( - TestController, route_path_generator, HG_REPO, + TestController, HG_REPO, TEST_USER_REGULAR_LOGIN, TEST_USER_REGULAR_PASS) -from rhodecode.tests.utils import AssertResponse - - -def route_path(name, params=None, **kwargs): - from rhodecode.apps._base import ADMIN_PREFIX - url_defs = { - 'search': - ADMIN_PREFIX + '/search', - 'search_repo': - '/{repo_name}/search', - } - return route_path_generator(url_defs, name=name, params=params, **kwargs) +from rhodecode.tests.routes import route_path class TestSearchController(TestController): diff --git a/rhodecode/apps/user_group/tests/test_user_groups.py b/rhodecode/apps/user_group/tests/test_user_groups.py --- a/rhodecode/apps/user_group/tests/test_user_groups.py +++ b/rhodecode/apps/user_group/tests/test_user_groups.py @@ -23,35 +23,11 @@ from rhodecode.tests import ( from rhodecode.model.db import UserGroup from rhodecode.model.meta import Session from rhodecode.tests.fixture import Fixture +from rhodecode.tests.routes import route_path fixture = Fixture() -def route_path(name, params=None, **kwargs): - import urllib.request - import urllib.parse - import urllib.error - from rhodecode.apps._base import ADMIN_PREFIX - - base_url = { - 'user_groups': ADMIN_PREFIX + '/user_groups', - 'user_groups_data': ADMIN_PREFIX + '/user_groups_data', - 'user_group_members_data': ADMIN_PREFIX + '/user_groups/{user_group_id}/members', - 'user_groups_new': ADMIN_PREFIX + '/user_groups/new', - 'user_groups_create': ADMIN_PREFIX + '/user_groups/create', - 'edit_user_group': ADMIN_PREFIX + '/user_groups/{user_group_id}/edit', - 'edit_user_group_advanced_sync': ADMIN_PREFIX + '/user_groups/{user_group_id}/edit/advanced/sync', - 'edit_user_group_global_perms_update': ADMIN_PREFIX + '/user_groups/{user_group_id}/edit/global_permissions/update', - 'user_groups_update': ADMIN_PREFIX + '/user_groups/{user_group_id}/update', - 'user_groups_delete': ADMIN_PREFIX + '/user_groups/{user_group_id}/delete', - - }[name].format(**kwargs) - - if params: - base_url = '{}?{}'.format(base_url, urllib.parse.urlencode(params)) - return base_url - - class TestUserGroupsView(TestController): def test_set_synchronization(self, user_util): diff --git a/rhodecode/apps/user_group/tests/test_user_groups_permissions.py b/rhodecode/apps/user_group/tests/test_user_groups_permissions.py --- a/rhodecode/apps/user_group/tests/test_user_groups_permissions.py +++ b/rhodecode/apps/user_group/tests/test_user_groups_permissions.py @@ -19,24 +19,7 @@ import pytest from rhodecode.tests.utils import permission_update_data_generator - - -def route_path(name, params=None, **kwargs): - import urllib.request - import urllib.parse - import urllib.error - from rhodecode.apps._base import ADMIN_PREFIX - - base_url = { - 'edit_user_group_perms': - ADMIN_PREFIX + '/user_groups/{user_group_id}/edit/permissions', - 'edit_user_group_perms_update': - ADMIN_PREFIX + '/user_groups/{user_group_id}/edit/permissions/update', - }[name].format(**kwargs) - - if params: - base_url = '{}?{}'.format(base_url, urllib.parse.urlencode(params)) - return base_url +from rhodecode.tests.routes import route_path @pytest.mark.usefixtures("app") diff --git a/rhodecode/apps/user_group_profile/tests/test_user_group.py b/rhodecode/apps/user_group_profile/tests/test_user_group.py --- a/rhodecode/apps/user_group_profile/tests/test_user_group.py +++ b/rhodecode/apps/user_group_profile/tests/test_user_group.py @@ -19,15 +19,11 @@ from rhodecode.model.user_group import U from rhodecode.tests import ( TestController, TEST_USER_REGULAR_LOGIN, TEST_USER_REGULAR_PASS) from rhodecode.tests.fixture import Fixture -from rhodecode.tests.utils import AssertResponse +from rhodecode.tests.routes import route_path fixture = Fixture() -def route_path(name, **kwargs): - return '/_profile_user_group/{user_group_name}'.format(**kwargs) - - class TestUsersController(TestController): def test_user_group_profile(self, user_util): diff --git a/rhodecode/apps/user_profile/tests/test_users.py b/rhodecode/apps/user_profile/tests/test_users.py --- a/rhodecode/apps/user_profile/tests/test_users.py +++ b/rhodecode/apps/user_profile/tests/test_users.py @@ -24,14 +24,11 @@ from rhodecode.tests import ( TEST_USER_REGULAR_LOGIN, TEST_USER_REGULAR_PASS) from rhodecode.tests.fixture import Fixture from rhodecode.tests.utils import AssertResponse +from rhodecode.tests.routes import route_path fixture = Fixture() -def route_path(name, **kwargs): - return '/_profiles/{username}'.format(**kwargs) - - class TestUsersController(TestController): def test_user_profile(self, user_util): diff --git a/rhodecode/config/middleware.py b/rhodecode/config/middleware.py --- a/rhodecode/config/middleware.py +++ b/rhodecode/config/middleware.py @@ -258,6 +258,8 @@ def error_handler(exception, request): '/errors/error_document.mako', {'c': c, 'h': helpers}, request=request, response=base_response) + response.headers["X-RC-Exception-Id"] = str(c.exception_id) + statsd = request.registry.statsd if statsd and base_response.status_code > 499: exc_type = f"{exception.__class__.__module__}.{exception.__class__.__name__}" diff --git a/rhodecode/integrations/tests/test_integrations.py b/rhodecode/integrations/tests/test_integrations.py --- a/rhodecode/integrations/tests/test_integrations.py +++ b/rhodecode/integrations/tests/test_integrations.py @@ -22,12 +22,7 @@ from rhodecode.apps._base import ADMIN_P from rhodecode.model.db import Integration from rhodecode.model.meta import Session from rhodecode.integrations import integration_type_registry - - -def route_path(name, **kwargs): - return { - 'home': '/', - }[name].format(**kwargs) +from rhodecode.tests.routes import route_path def _post_integration_test_helper(app, url, csrf_token, repo, repo_group, diff --git a/rhodecode/public/js/rhodecode/routes.js b/rhodecode/public/js/rhodecode/routes.js --- a/rhodecode/public/js/rhodecode/routes.js +++ b/rhodecode/public/js/rhodecode/routes.js @@ -12,16 +12,14 @@ ******************************************************************************/ function registerRCRoutes() { // routes registration - pyroutes.register('admin_artifacts', '/_admin/artifacts', []); - pyroutes.register('admin_artifacts_data', '/_admin/artifacts-data', []); - pyroutes.register('admin_artifacts_delete', '/_admin/artifacts/%(uid)s/delete', ['uid']); - pyroutes.register('admin_artifacts_show_all', '/_admin/artifacts', []); - pyroutes.register('admin_artifacts_show_info', '/_admin/artifacts/%(uid)s', ['uid']); - pyroutes.register('admin_artifacts_update', '/_admin/artifacts/%(uid)s/update', ['uid']); + pyroutes.register('admin_artifacts', '/_admin/_admin/artifacts', []); + pyroutes.register('admin_artifacts_delete', '/_admin/_admin/artifacts/%(uid)s/delete', ['uid']); + pyroutes.register('admin_artifacts_show_all', '/_admin/_admin/artifacts', []); + pyroutes.register('admin_artifacts_show_info', '/_admin/_admin/artifacts/%(uid)s', ['uid']); + pyroutes.register('admin_artifacts_update', '/_admin/_admin/artifacts/%(uid)s/update', ['uid']); pyroutes.register('admin_audit_log_entry', '/_admin/audit_logs/%(audit_log_id)s', ['audit_log_id']); pyroutes.register('admin_audit_logs', '/_admin/audit_logs', []); - pyroutes.register('admin_automation', '/_admin/automation', []); - pyroutes.register('admin_automation_update', '/_admin/automation/%(entry_id)s/update', ['entry_id']); + pyroutes.register('admin_automation', '/_admin/_admin/automation', []); pyroutes.register('admin_defaults_repositories', '/_admin/defaults/repositories', []); pyroutes.register('admin_defaults_repositories_update', '/_admin/defaults/repositories/update', []); pyroutes.register('admin_home', '/_admin', []); @@ -29,7 +27,6 @@ function registerRCRoutes() { pyroutes.register('admin_permissions_application_update', '/_admin/permissions/application/update', []); pyroutes.register('admin_permissions_auth_token_access', '/_admin/permissions/auth_token_access', []); pyroutes.register('admin_permissions_branch', '/_admin/permissions/branch', []); - pyroutes.register('admin_permissions_branch_update', '/_admin/permissions/branch/update', []); pyroutes.register('admin_permissions_global', '/_admin/permissions/global', []); pyroutes.register('admin_permissions_global_update', '/_admin/permissions/global/update', []); pyroutes.register('admin_permissions_ips', '/_admin/permissions/ips', []); @@ -39,8 +36,7 @@ function registerRCRoutes() { pyroutes.register('admin_permissions_ssh_keys', '/_admin/permissions/ssh_keys', []); pyroutes.register('admin_permissions_ssh_keys_data', '/_admin/permissions/ssh_keys/data', []); pyroutes.register('admin_permissions_ssh_keys_update', '/_admin/permissions/ssh_keys/update', []); - pyroutes.register('admin_scheduler', '/_admin/scheduler', []); - pyroutes.register('admin_scheduler_show_tasks', '/_admin/scheduler/_tasks', []); + pyroutes.register('admin_scheduler', '/_admin/_admin/scheduler', []); pyroutes.register('admin_settings', '/_admin/settings', []); pyroutes.register('admin_settings_email', '/_admin/settings/email', []); pyroutes.register('admin_settings_email_update', '/_admin/settings/email/update', []); @@ -59,8 +55,6 @@ function registerRCRoutes() { pyroutes.register('admin_settings_issuetracker_update', '/_admin/settings/issue-tracker/update', []); pyroutes.register('admin_settings_labs', '/_admin/settings/labs', []); pyroutes.register('admin_settings_labs_update', '/_admin/settings/labs/update', []); - pyroutes.register('admin_settings_license', '/_admin/settings/license', []); - pyroutes.register('admin_settings_license_unlock', '/_admin/settings/license_unlock', []); pyroutes.register('admin_settings_mapping', '/_admin/settings/mapping', []); pyroutes.register('admin_settings_mapping_update', '/_admin/settings/mapping/update', []); pyroutes.register('admin_settings_open_source', '/_admin/settings/open_source', []); @@ -68,12 +62,6 @@ function registerRCRoutes() { pyroutes.register('admin_settings_process_management_data', '/_admin/settings/process_management/data', []); pyroutes.register('admin_settings_process_management_master_signal', '/_admin/settings/process_management/master_signal', []); pyroutes.register('admin_settings_process_management_signal', '/_admin/settings/process_management/signal', []); - pyroutes.register('admin_settings_scheduler_create', '/_admin/scheduler/create', []); - pyroutes.register('admin_settings_scheduler_delete', '/_admin/scheduler/%(schedule_id)s/delete', ['schedule_id']); - pyroutes.register('admin_settings_scheduler_edit', '/_admin/scheduler/%(schedule_id)s', ['schedule_id']); - pyroutes.register('admin_settings_scheduler_execute', '/_admin/scheduler/%(schedule_id)s/execute', ['schedule_id']); - pyroutes.register('admin_settings_scheduler_new', '/_admin/scheduler/new', []); - pyroutes.register('admin_settings_scheduler_update', '/_admin/scheduler/%(schedule_id)s/update', ['schedule_id']); pyroutes.register('admin_settings_search', '/_admin/settings/search', []); pyroutes.register('admin_settings_sessions', '/_admin/settings/sessions', []); pyroutes.register('admin_settings_sessions_cleanup', '/_admin/settings/sessions/cleanup', []); @@ -95,7 +83,6 @@ function registerRCRoutes() { pyroutes.register('channelstream_connect', '/_admin/channelstream/connect', []); pyroutes.register('channelstream_proxy', '/_channelstream', []); pyroutes.register('channelstream_subscribe', '/_admin/channelstream/subscribe', []); - pyroutes.register('commit_draft_comments_submit', '/%(repo_name)s/changeset/%(commit_id)s/draft_comments_submit', ['repo_name', 'commit_id']); pyroutes.register('debug_style_email', '/_admin/debug_style/email/%(email_id)s', ['email_id']); pyroutes.register('debug_style_email_plain_rendered', '/_admin/debug_style/email-rendered/%(email_id)s', ['email_id']); pyroutes.register('debug_style_home', '/_admin/debug_style', []); @@ -218,8 +205,6 @@ function registerRCRoutes() { pyroutes.register('my_account_emails', '/_admin/my_account/emails', []); pyroutes.register('my_account_emails_add', '/_admin/my_account/emails/new', []); pyroutes.register('my_account_emails_delete', '/_admin/my_account/emails/delete', []); - pyroutes.register('my_account_external_identity', '/_admin/my_account/external-identity', []); - pyroutes.register('my_account_external_identity_delete', '/_admin/my_account/external-identity/delete', []); pyroutes.register('my_account_goto_bookmark', '/_admin/my_account/bookmark/%(bookmark_id)s', ['bookmark_id']); pyroutes.register('my_account_notifications', '/_admin/my_account/notifications', []); pyroutes.register('my_account_notifications_test_channelstream', '/_admin/my_account/test_channelstream', []); @@ -247,7 +232,6 @@ function registerRCRoutes() { pyroutes.register('ops_healthcheck', '/_admin/ops/status', []); pyroutes.register('ops_ping', '/_admin/ops/ping', []); pyroutes.register('ops_redirect_test', '/_admin/ops/redirect', []); - pyroutes.register('plugin_admin_chat', '/_admin/plugin_admin_chat/%(action)s', ['action']); pyroutes.register('pull_requests_global', '/_admin/pull-request/%(pull_request_id)s', ['pull_request_id']); pyroutes.register('pull_requests_global_0', '/_admin/pull_requests/%(pull_request_id)s', ['pull_request_id']); pyroutes.register('pull_requests_global_1', '/_admin/pull-requests/%(pull_request_id)s', ['pull_request_id']); @@ -257,7 +241,6 @@ function registerRCRoutes() { pyroutes.register('pullrequest_comments', '/%(repo_name)s/pull-request/%(pull_request_id)s/comments', ['repo_name', 'pull_request_id']); pyroutes.register('pullrequest_create', '/%(repo_name)s/pull-request/create', ['repo_name']); pyroutes.register('pullrequest_delete', '/%(repo_name)s/pull-request/%(pull_request_id)s/delete', ['repo_name', 'pull_request_id']); - pyroutes.register('pullrequest_draft_comments_submit', '/%(repo_name)s/pull-request/%(pull_request_id)s/draft_comments_submit', ['repo_name', 'pull_request_id']); pyroutes.register('pullrequest_drafts', '/%(repo_name)s/pull-request/%(pull_request_id)s/drafts', ['repo_name', 'pull_request_id']); pyroutes.register('pullrequest_merge', '/%(repo_name)s/pull-request/%(pull_request_id)s/merge', ['repo_name', 'pull_request_id']); pyroutes.register('pullrequest_new', '/%(repo_name)s/pull-request/new', ['repo_name']); @@ -270,18 +253,8 @@ function registerRCRoutes() { pyroutes.register('pullrequest_update', '/%(repo_name)s/pull-request/%(pull_request_id)s/update', ['repo_name', 'pull_request_id']); pyroutes.register('register', '/_admin/register', []); pyroutes.register('repo_archivefile', '/%(repo_name)s/archive/%(fname)s', ['repo_name', 'fname']); - pyroutes.register('repo_artifacts_data', '/%(repo_name)s/artifacts_data', ['repo_name']); - pyroutes.register('repo_artifacts_delete', '/%(repo_name)s/artifacts/delete/%(uid)s', ['repo_name', 'uid']); - pyroutes.register('repo_artifacts_get', '/%(repo_name)s/artifacts/download/%(uid)s', ['repo_name', 'uid']); - pyroutes.register('repo_artifacts_info', '/%(repo_name)s/artifacts/info/%(uid)s', ['repo_name', 'uid']); pyroutes.register('repo_artifacts_list', '/%(repo_name)s/artifacts', ['repo_name']); - pyroutes.register('repo_artifacts_new', '/%(repo_name)s/artifacts/new', ['repo_name']); - pyroutes.register('repo_artifacts_store', '/%(repo_name)s/artifacts/store', ['repo_name']); - pyroutes.register('repo_artifacts_stream_script', '/_file_store/stream-upload-script', []); - pyroutes.register('repo_artifacts_stream_store', '/_file_store/stream-upload', []); - pyroutes.register('repo_artifacts_update', '/%(repo_name)s/artifacts/update/%(uid)s', ['repo_name', 'uid']); pyroutes.register('repo_automation', '/%(repo_name)s/settings/automation', ['repo_name']); - pyroutes.register('repo_automation_update', '/%(repo_name)s/settings/automation/%(entry_id)s/update', ['repo_name', 'entry_id']); pyroutes.register('repo_changelog', '/%(repo_name)s/changelog', ['repo_name']); pyroutes.register('repo_changelog_file', '/%(repo_name)s/changelog/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']); pyroutes.register('repo_commit', '/%(repo_name)s/changeset/%(commit_id)s', ['repo_name', 'commit_id']); @@ -358,9 +331,6 @@ function registerRCRoutes() { pyroutes.register('repo_refs_changelog_data', '/%(repo_name)s/refs-data-changelog', ['repo_name']); pyroutes.register('repo_refs_data', '/%(repo_name)s/refs-data', ['repo_name']); pyroutes.register('repo_reviewers', '/%(repo_name)s/settings/review/rules', ['repo_name']); - pyroutes.register('repo_reviewers_review_rule_delete', '/%(repo_name)s/settings/review/rules/%(rule_id)s/delete', ['repo_name', 'rule_id']); - pyroutes.register('repo_reviewers_review_rule_edit', '/%(repo_name)s/settings/review/rules/%(rule_id)s', ['repo_name', 'rule_id']); - pyroutes.register('repo_reviewers_review_rule_new', '/%(repo_name)s/settings/review/rules/new', ['repo_name']); pyroutes.register('repo_settings_quick_actions', '/%(repo_name)s/settings/quick-action', ['repo_name']); pyroutes.register('repo_stats', '/%(repo_name)s/repo_stats/%(commit_id)s', ['repo_name', 'commit_id']); pyroutes.register('repo_summary', '/%(repo_name)s', ['repo_name']); diff --git a/rhodecode/tests/__init__.py b/rhodecode/tests/__init__.py --- a/rhodecode/tests/__init__.py +++ b/rhodecode/tests/__init__.py @@ -37,7 +37,7 @@ from rhodecode.lib.hash_utils import sha log = logging.getLogger(__name__) __all__ = [ - 'get_new_dir', 'TestController', 'route_path_generator', + 'get_new_dir', 'TestController', 'clear_cache_regions', 'assert_session_flash', 'login_user', 'no_newline_id_generator', 'TESTS_TMP_PATH', 'HG_REPO', 'GIT_REPO', 'SVN_REPO', @@ -242,11 +242,3 @@ def no_newline_id_generator(test_name): return test_name or 'test-with-empty-name' - -def route_path_generator(url_defs, name, params=None, **kwargs): - - base_url = url_defs[name].format(**kwargs) - - if params: - base_url = '{}?{}'.format(base_url, urllib.parse.urlencode(params)) - return base_url diff --git a/rhodecode/tests/functional/test_delegated_admin.py b/rhodecode/tests/functional/test_delegated_admin.py --- a/rhodecode/tests/functional/test_delegated_admin.py +++ b/rhodecode/tests/functional/test_delegated_admin.py @@ -22,34 +22,7 @@ import pytest from rhodecode.tests import TestController from rhodecode.tests.fixture import Fixture - - -def route_path(name, params=None, **kwargs): - import urllib.request - import urllib.parse - import urllib.error - from rhodecode.apps._base import ADMIN_PREFIX - - base_url = { - 'home': '/', - 'admin_home': ADMIN_PREFIX, - 'repos': - ADMIN_PREFIX + '/repos', - 'repos_data': - ADMIN_PREFIX + '/repos_data', - 'repo_groups': - ADMIN_PREFIX + '/repo_groups', - 'repo_groups_data': - ADMIN_PREFIX + '/repo_groups_data', - 'user_groups': - ADMIN_PREFIX + '/user_groups', - 'user_groups_data': - ADMIN_PREFIX + '/user_groups_data', - }[name].format(**kwargs) - - if params: - base_url = '{}?{}'.format(base_url, urllib.parse.urlencode(params)) - return base_url +from rhodecode.tests.routes import route_path fixture = Fixture() diff --git a/rhodecode/tests/functional/test_sessions.py b/rhodecode/tests/functional/test_sessions.py --- a/rhodecode/tests/functional/test_sessions.py +++ b/rhodecode/tests/functional/test_sessions.py @@ -21,12 +21,7 @@ import mock import pytest from rhodecode.tests import TEST_USER_ADMIN_LOGIN - - -def route_path(name, **kwargs): - return { - 'home': '/', - }[name].format(**kwargs) +from rhodecode.tests.routes import route_path class TestSessionBehaviorOnPasswordChange(object): diff --git a/rhodecode/tests/routes.py b/rhodecode/tests/routes.py new file mode 100644 --- /dev/null +++ b/rhodecode/tests/routes.py @@ -0,0 +1,290 @@ +# Copyright (C) 2010-2023 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/ + + +def get_url_defs(): + from rhodecode.apps._base import ADMIN_PREFIX + + return { + "home": "/", + "main_page_repos_data": "/_home_repos", + "main_page_repo_groups_data": "/_home_repo_groups", + "repo_group_home": "/{repo_group_name}", + "user_autocomplete_data": "/_users", + "user_group_autocomplete_data": "/_user_groups", + "repo_list_data": "/_repos", + "goto_switcher_data": "/_goto_data", + "admin_home": ADMIN_PREFIX + "", + "admin_audit_logs": ADMIN_PREFIX + "/audit_logs", + "admin_defaults_repositories": ADMIN_PREFIX + "/defaults/repositories", + "admin_defaults_repositories_update": ADMIN_PREFIX + "/defaults/repositories/update", + "search": ADMIN_PREFIX + "/search", + "search_repo": "/{repo_name}/search", + "my_account_auth_tokens": ADMIN_PREFIX + "/my_account/auth_tokens", + "my_account_auth_tokens_add": ADMIN_PREFIX + "/my_account/auth_tokens/new", + "my_account_auth_tokens_delete": ADMIN_PREFIX + "/my_account/auth_tokens/delete", + "repos": ADMIN_PREFIX + "/repos", + "repos_data": ADMIN_PREFIX + "/repos_data", + "repo_groups": ADMIN_PREFIX + "/repo_groups", + "repo_groups_data": ADMIN_PREFIX + "/repo_groups_data", + "user_groups": ADMIN_PREFIX + "/user_groups", + "user_groups_data": ADMIN_PREFIX + "/user_groups_data", + "user_profile": "/_profiles/{username}", + "profile_user_group": "/_profile_user_group/{user_group_name}", + "repo_summary": "/{repo_name}", + "repo_creating_check": "/{repo_name}/repo_creating_check", + "edit_repo": "/{repo_name}/settings", + "edit_repo_vcs": "/{repo_name}/settings/vcs", + "edit_repo_vcs_update": "/{repo_name}/settings/vcs/update", + "edit_repo_vcs_svn_pattern_delete": "/{repo_name}/settings/vcs/svn_pattern/delete", + "repo_archivefile": "/{repo_name}/archive/{fname}", + "repo_files_diff": "/{repo_name}/diff/{f_path}", + "repo_files_diff_2way_redirect": "/{repo_name}/diff-2way/{f_path}", + "repo_files": "/{repo_name}/files/{commit_id}/{f_path}", + "repo_files:default_path": "/{repo_name}/files/{commit_id}/", + "repo_files:default_commit": "/{repo_name}/files", + "repo_files:rendered": "/{repo_name}/render/{commit_id}/{f_path}", + "repo_files:annotated": "/{repo_name}/annotate/{commit_id}/{f_path}", + "repo_files:annotated_previous": "/{repo_name}/annotate-previous/{commit_id}/{f_path}", + "repo_files_nodelist": "/{repo_name}/nodelist/{commit_id}/{f_path}", + "repo_file_raw": "/{repo_name}/raw/{commit_id}/{f_path}", + "repo_file_download": "/{repo_name}/download/{commit_id}/{f_path}", + "repo_file_history": "/{repo_name}/history/{commit_id}/{f_path}", + "repo_file_authors": "/{repo_name}/authors/{commit_id}/{f_path}", + "repo_files_remove_file": "/{repo_name}/remove_file/{commit_id}/{f_path}", + "repo_files_delete_file": "/{repo_name}/delete_file/{commit_id}/{f_path}", + "repo_files_edit_file": "/{repo_name}/edit_file/{commit_id}/{f_path}", + "repo_files_update_file": "/{repo_name}/update_file/{commit_id}/{f_path}", + "repo_files_add_file": "/{repo_name}/add_file/{commit_id}/{f_path}", + "repo_files_upload_file": "/{repo_name}/upload_file/{commit_id}/{f_path}", + "repo_files_create_file": "/{repo_name}/create_file/{commit_id}/{f_path}", + "repo_nodetree_full": "/{repo_name}/nodetree_full/{commit_id}/{f_path}", + "repo_nodetree_full:default_path": "/{repo_name}/nodetree_full/{commit_id}/", + "journal": ADMIN_PREFIX + "/journal", + "journal_rss": ADMIN_PREFIX + "/journal/rss", + "journal_atom": ADMIN_PREFIX + "/journal/atom", + "journal_public": ADMIN_PREFIX + "/public_journal", + "journal_public_atom": ADMIN_PREFIX + "/public_journal/atom", + "journal_public_atom_old": ADMIN_PREFIX + "/public_journal_atom", + "journal_public_rss": ADMIN_PREFIX + "/public_journal/rss", + "journal_public_rss_old": ADMIN_PREFIX + "/public_journal_rss", + "toggle_following": ADMIN_PREFIX + "/toggle_following", + "upload_file": "/_file_store/upload", + "download_file": "/_file_store/download/{fid}", + "download_file_by_token": "/_file_store/token-download/{_auth_token}/{fid}", + "gists_show": ADMIN_PREFIX + "/gists", + "gists_new": ADMIN_PREFIX + "/gists/new", + "gists_create": ADMIN_PREFIX + "/gists/create", + "gist_show": ADMIN_PREFIX + "/gists/{gist_id}", + "gist_delete": ADMIN_PREFIX + "/gists/{gist_id}/delete", + "gist_edit": ADMIN_PREFIX + "/gists/{gist_id}/edit", + "gist_edit_check_revision": ADMIN_PREFIX + "/gists/{gist_id}/edit/check_revision", + "gist_update": ADMIN_PREFIX + "/gists/{gist_id}/update", + "gist_show_rev": ADMIN_PREFIX + "/gists/{gist_id}/rev/{revision}", + "gist_show_formatted": ADMIN_PREFIX + "/gists/{gist_id}/rev/{revision}/{format}", + "gist_show_formatted_path": ADMIN_PREFIX + "/gists/{gist_id}/rev/{revision}/{format}/{f_path}", + "login": ADMIN_PREFIX + "/login", + "logout": ADMIN_PREFIX + "/logout", + "register": ADMIN_PREFIX + "/register", + "reset_password": ADMIN_PREFIX + "/password_reset", + "reset_password_confirmation": ADMIN_PREFIX + "/password_reset_confirmation", + "admin_permissions_application": ADMIN_PREFIX + "/permissions/application", + "admin_permissions_application_update": ADMIN_PREFIX + "/permissions/application/update", + "repo_commit_raw": "/{repo_name}/changeset-diff/{commit_id}", + "user_group_members_data": ADMIN_PREFIX + "/user_groups/{user_group_id}/members", + "user_groups_new": ADMIN_PREFIX + "/user_groups/new", + "user_groups_create": ADMIN_PREFIX + "/user_groups/create", + "edit_user_group": ADMIN_PREFIX + "/user_groups/{user_group_id}/edit", + "edit_user_group_advanced_sync": ADMIN_PREFIX + "/user_groups/{user_group_id}/edit/advanced/sync", + "edit_user_group_global_perms_update": ADMIN_PREFIX + "/user_groups/{user_group_id}/edit/global_permissions/update", + "user_groups_update": ADMIN_PREFIX + "/user_groups/{user_group_id}/update", + "user_groups_delete": ADMIN_PREFIX + "/user_groups/{user_group_id}/delete", + "edit_user_group_perms": ADMIN_PREFIX + "/user_groups/{user_group_id}/edit/permissions", + "edit_user_group_perms_update": ADMIN_PREFIX + "/user_groups/{user_group_id}/edit/permissions/update", + "edit_repo_group": "/{repo_group_name}/_edit", + "edit_repo_group_perms": "/{repo_group_name:}/_settings/permissions", + "edit_repo_group_perms_update": "/{repo_group_name}/_settings/permissions/update", + "edit_repo_group_advanced": "/{repo_group_name}/_settings/advanced", + "edit_repo_group_advanced_delete": "/{repo_group_name}/_settings/advanced/delete", + "edit_user_ssh_keys": ADMIN_PREFIX + "/users/{user_id}/edit/ssh_keys", + "edit_user_ssh_keys_generate_keypair": ADMIN_PREFIX + "/users/{user_id}/edit/ssh_keys/generate", + "edit_user_ssh_keys_add": ADMIN_PREFIX + "/users/{user_id}/edit/ssh_keys/new", + "edit_user_ssh_keys_delete": ADMIN_PREFIX + "/users/{user_id}/edit/ssh_keys/delete", + "users": ADMIN_PREFIX + "/users", + "users_data": ADMIN_PREFIX + "/users_data", + "users_create": ADMIN_PREFIX + "/users/create", + "users_new": ADMIN_PREFIX + "/users/new", + "user_edit": ADMIN_PREFIX + "/users/{user_id}/edit", + "user_edit_advanced": ADMIN_PREFIX + "/users/{user_id}/edit/advanced", + "user_edit_global_perms": ADMIN_PREFIX + "/users/{user_id}/edit/global_permissions", + "user_edit_global_perms_update": ADMIN_PREFIX + "/users/{user_id}/edit/global_permissions/update", + "user_update": ADMIN_PREFIX + "/users/{user_id}/update", + "user_delete": ADMIN_PREFIX + "/users/{user_id}/delete", + "user_create_personal_repo_group": ADMIN_PREFIX + "/users/{user_id}/create_repo_group", + "edit_user_auth_tokens": ADMIN_PREFIX + "/users/{user_id}/edit/auth_tokens", + "edit_user_auth_tokens_add": ADMIN_PREFIX + "/users/{user_id}/edit/auth_tokens/new", + "edit_user_auth_tokens_delete": ADMIN_PREFIX + "/users/{user_id}/edit/auth_tokens/delete", + "edit_user_emails": ADMIN_PREFIX + "/users/{user_id}/edit/emails", + "edit_user_emails_add": ADMIN_PREFIX + "/users/{user_id}/edit/emails/new", + "edit_user_emails_delete": ADMIN_PREFIX + "/users/{user_id}/edit/emails/delete", + "edit_user_ips": ADMIN_PREFIX + "/users/{user_id}/edit/ips", + "edit_user_ips_add": ADMIN_PREFIX + "/users/{user_id}/edit/ips/new", + "edit_user_ips_delete": ADMIN_PREFIX + "/users/{user_id}/edit/ips/delete", + "edit_user_perms_summary": ADMIN_PREFIX + "/users/{user_id}/edit/permissions_summary", + "edit_user_perms_summary_json": ADMIN_PREFIX + "/users/{user_id}/edit/permissions_summary/json", + "edit_user_audit_logs": ADMIN_PREFIX + "/users/{user_id}/edit/audit", + "edit_user_audit_logs_download": ADMIN_PREFIX + "/users/{user_id}/edit/audit/download", + "admin_settings": ADMIN_PREFIX + "/settings", + "admin_settings_update": ADMIN_PREFIX + "/settings/update", + "admin_settings_global": ADMIN_PREFIX + "/settings/global", + "admin_settings_global_update": ADMIN_PREFIX + "/settings/global/update", + "admin_settings_vcs": ADMIN_PREFIX + "/settings/vcs", + "admin_settings_vcs_update": ADMIN_PREFIX + "/settings/vcs/update", + "admin_settings_vcs_svn_pattern_delete": ADMIN_PREFIX + "/settings/vcs/svn_pattern_delete", + "admin_settings_mapping": ADMIN_PREFIX + "/settings/mapping", + "admin_settings_mapping_update": ADMIN_PREFIX + "/settings/mapping/update", + "admin_settings_visual": ADMIN_PREFIX + "/settings/visual", + "admin_settings_visual_update": ADMIN_PREFIX + "/settings/visual/update", + "admin_settings_issuetracker": ADMIN_PREFIX + "/settings/issue-tracker", + "admin_settings_issuetracker_update": ADMIN_PREFIX + "/settings/issue-tracker/update", + "admin_settings_issuetracker_test": ADMIN_PREFIX + "/settings/issue-tracker/test", + "admin_settings_issuetracker_delete": ADMIN_PREFIX + "/settings/issue-tracker/delete", + "admin_settings_email": ADMIN_PREFIX + "/settings/email", + "admin_settings_email_update": ADMIN_PREFIX + "/settings/email/update", + "admin_settings_hooks": ADMIN_PREFIX + "/settings/hooks", + "admin_settings_hooks_update": ADMIN_PREFIX + "/settings/hooks/update", + "admin_settings_hooks_delete": ADMIN_PREFIX + "/settings/hooks/delete", + "admin_settings_search": ADMIN_PREFIX + "/settings/search", + "admin_settings_labs": ADMIN_PREFIX + "/settings/labs", + "admin_settings_labs_update": ADMIN_PREFIX + "/settings/labs/update", + "admin_settings_sessions": ADMIN_PREFIX + "/settings/sessions", + "admin_settings_sessions_cleanup": ADMIN_PREFIX + "/settings/sessions/cleanup", + "admin_settings_system": ADMIN_PREFIX + "/settings/system", + "admin_settings_system_update": ADMIN_PREFIX + "/settings/system/updates", + "admin_settings_open_source": ADMIN_PREFIX + "/settings/open_source", + "repo_group_new": ADMIN_PREFIX + "/repo_group/new", + "repo_group_create": ADMIN_PREFIX + "/repo_group/create", + "repo_new": ADMIN_PREFIX + "/repos/new", + "repo_create": ADMIN_PREFIX + "/repos/create", + "admin_permissions_global": ADMIN_PREFIX + "/permissions/global", + "admin_permissions_global_update": ADMIN_PREFIX + "/permissions/global/update", + "admin_permissions_object": ADMIN_PREFIX + "/permissions/object", + "admin_permissions_object_update": ADMIN_PREFIX + "/permissions/object/update", + "admin_permissions_ips": ADMIN_PREFIX + "/permissions/ips", + "admin_permissions_overview": ADMIN_PREFIX + "/permissions/overview", + "admin_permissions_ssh_keys": ADMIN_PREFIX + "/permissions/ssh_keys", + "admin_permissions_ssh_keys_data": ADMIN_PREFIX + "/permissions/ssh_keys/data", + "admin_permissions_ssh_keys_update": ADMIN_PREFIX + "/permissions/ssh_keys/update", + "pullrequest_show": "/{repo_name}/pull-request/{pull_request_id}", + "pull_requests_global": ADMIN_PREFIX + "/pull-request/{pull_request_id}", + "pull_requests_global_0": ADMIN_PREFIX + "/pull_requests/{pull_request_id}", + "pull_requests_global_1": ADMIN_PREFIX + "/pull-requests/{pull_request_id}", + "notifications_show_all": ADMIN_PREFIX + "/notifications", + "notifications_mark_all_read": ADMIN_PREFIX + "/notifications_mark_all_read", + "notifications_show": ADMIN_PREFIX + "/notifications/{notification_id}", + "notifications_update": ADMIN_PREFIX + "/notifications/{notification_id}/update", + "notifications_delete": ADMIN_PREFIX + "/notifications/{notification_id}/delete", + "my_account": ADMIN_PREFIX + "/my_account/profile", + "my_account_edit": ADMIN_PREFIX + "/my_account/edit", + "my_account_update": ADMIN_PREFIX + "/my_account/update", + "my_account_pullrequests": ADMIN_PREFIX + "/my_account/pull_requests", + "my_account_pullrequests_data": ADMIN_PREFIX + "/my_account/pull_requests/data", + "my_account_emails": ADMIN_PREFIX + "/my_account/emails", + "my_account_emails_add": ADMIN_PREFIX + "/my_account/emails/new", + "my_account_emails_delete": ADMIN_PREFIX + "/my_account/emails/delete", + "my_account_password": ADMIN_PREFIX + "/my_account/password", + "my_account_password_update": ADMIN_PREFIX + "/my_account/password/update", + "my_account_repos": ADMIN_PREFIX + "/my_account/repos", + "my_account_watched": ADMIN_PREFIX + "/my_account/watched", + "my_account_perms": ADMIN_PREFIX + "/my_account/perms", + "my_account_notifications": ADMIN_PREFIX + "/my_account/notifications", + "my_account_ssh_keys": ADMIN_PREFIX + "/my_account/ssh_keys", + "my_account_ssh_keys_generate": ADMIN_PREFIX + "/my_account/ssh_keys/generate", + "my_account_ssh_keys_add": ADMIN_PREFIX + "/my_account/ssh_keys/new", + "my_account_ssh_keys_delete": ADMIN_PREFIX + "/my_account/ssh_keys/delete", + "pullrequest_show_all": "/{repo_name}/pull-request", + "pullrequest_show_all_data": "/{repo_name}/pull-request-data", + "bookmarks_home": "/{repo_name}/bookmarks", + "branches_home": "/{repo_name}/branches", + "tags_home": "/{repo_name}/tags", + "repo_changelog": "/{repo_name}/changelog", + "repo_commits": "/{repo_name}/commits", + "repo_commits_file": "/{repo_name}/commits/{commit_id}/{f_path}", + "repo_commits_elements": "/{repo_name}/commits_elements", + "repo_commit": "/{repo_name}/changeset/{commit_id}", + "repo_commit_comment_create": "/{repo_name}/changeset/{commit_id}/comment/create", + "repo_commit_comment_preview": "/{repo_name}/changeset/{commit_id}/comment/preview", + "repo_commit_comment_delete": "/{repo_name}/changeset/{commit_id}/comment/{comment_id}/delete", + "repo_commit_comment_edit": "/{repo_name}/changeset/{commit_id}/comment/{comment_id}/edit", + "repo_commit_children": "/{repo_name}/changeset_children/{commit_id}", + "repo_commit_parents": "/{repo_name}/changeset_parents/{commit_id}", + "repo_commit_patch": "/{repo_name}/changeset-patch/{commit_id}", + "repo_commit_download": "/{repo_name}/changeset-download/{commit_id}", + "repo_commit_data": "/{repo_name}/changeset-data/{commit_id}", + "repo_compare": "/{repo_name}/compare/{source_ref_type}@{source_ref}...{target_ref_type}@{target_ref}", + "repo_compare_select": "/{repo_name}/compare", + "rss_feed_home": "/{repo_name}/feed-rss", + "atom_feed_home": "/{repo_name}/feed-atom", + "rss_feed_home_old": "/{repo_name}/feed/rss", + "atom_feed_home_old": "/{repo_name}/feed/atom", + "repo_fork_new": "/{repo_name}/fork", + "repo_fork_create": "/{repo_name}/fork/create", + "repo_forks_show_all": "/{repo_name}/forks", + "repo_forks_data": "/{repo_name}/forks/data", + "edit_repo_issuetracker": "/{repo_name}/settings/issue_trackers", + "edit_repo_issuetracker_test": "/{repo_name}/settings/issue_trackers/test", + "edit_repo_issuetracker_delete": "/{repo_name}/settings/issue_trackers/delete", + "edit_repo_issuetracker_update": "/{repo_name}/settings/issue_trackers/update", + "edit_repo_maintenance": "/{repo_name}/settings/maintenance", + "edit_repo_maintenance_execute": "/{repo_name}/settings/maintenance/execute", + "repo_changelog_file": "/{repo_name}/changelog/{commit_id}/{f_path}", + "pullrequest_repo_refs": "/{repo_name}/pull-request/refs/{target_repo_name:.*?[^/]}", + "pullrequest_repo_targets": "/{repo_name}/pull-request/repo-destinations", + "pullrequest_new": "/{repo_name}/pull-request/new", + "pullrequest_create": "/{repo_name}/pull-request/create", + "pullrequest_update": "/{repo_name}/pull-request/{pull_request_id}/update", + "pullrequest_merge": "/{repo_name}/pull-request/{pull_request_id}/merge", + "pullrequest_delete": "/{repo_name}/pull-request/{pull_request_id}/delete", + "pullrequest_comment_create": "/{repo_name}/pull-request/{pull_request_id}/comment", + "pullrequest_comment_delete": "/{repo_name}/pull-request/{pull_request_id}/comment/{comment_id}/delete", + "pullrequest_comment_edit": "/{repo_name}/pull-request/{pull_request_id}/comment/{comment_id}/edit", + "edit_repo_caches": "/{repo_name}/settings/caches", + "edit_repo_perms": "/{repo_name}/settings/permissions", + "edit_repo_fields": "/{repo_name}/settings/fields", + "edit_repo_remote": "/{repo_name}/settings/remote", + "edit_repo_statistics": "/{repo_name}/settings/statistics", + "edit_repo_advanced": "/{repo_name}/settings/advanced", + "edit_repo_advanced_delete": "/{repo_name}/settings/advanced/delete", + "edit_repo_advanced_archive": "/{repo_name}/settings/advanced/archive", + "edit_repo_advanced_fork": "/{repo_name}/settings/advanced/fork", + "edit_repo_advanced_locking": "/{repo_name}/settings/advanced/locking", + "edit_repo_advanced_journal": "/{repo_name}/settings/advanced/journal", + "repo_stats": "/{repo_name}/repo_stats/{commit_id}", + "repo_refs_data": "/{repo_name}/refs-data", + "repo_refs_changelog_data": "/{repo_name}/refs-data-changelog" + } + + +def route_path(name, params=None, **kwargs): + import urllib.parse + + base_url = get_url_defs()[name].format(**kwargs) + + if params: + base_url = f"{base_url}?{urllib.parse.urlencode(params)}" + return base_url diff --git a/rhodecode/tests/utils.py b/rhodecode/tests/utils.py --- a/rhodecode/tests/utils.py +++ b/rhodecode/tests/utils.py @@ -1,4 +1,3 @@ - # Copyright (C) 2010-2023 RhodeCode GmbH # # This program is free software: you can redistribute it and/or modify