##// END OF EJS Templates
tests: refactor code to use a single test url generator
super-admin -
r5173:95a4b30f default
parent child Browse files
Show More
@@ -0,0 +1,290 b''
1 # Copyright (C) 2010-2023 RhodeCode GmbH
2 #
3 # This program is free software: you can redistribute it and/or modify
4 # it under the terms of the GNU Affero General Public License, version 3
5 # (only), as published by the Free Software Foundation.
6 #
7 # This program is distributed in the hope that it will be useful,
8 # but WITHOUT ANY WARRANTY; without even the implied warranty of
9 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 # GNU General Public License for more details.
11 #
12 # You should have received a copy of the GNU Affero General Public License
13 # along with this program. If not, see <http://www.gnu.org/licenses/>.
14 #
15 # This program is dual-licensed. If you wish to learn more about the
16 # RhodeCode Enterprise Edition, including its added features, Support services,
17 # and proprietary license terms, please see https://rhodecode.com/licenses/
18
19
20 def get_url_defs():
21 from rhodecode.apps._base import ADMIN_PREFIX
22
23 return {
24 "home": "/",
25 "main_page_repos_data": "/_home_repos",
26 "main_page_repo_groups_data": "/_home_repo_groups",
27 "repo_group_home": "/{repo_group_name}",
28 "user_autocomplete_data": "/_users",
29 "user_group_autocomplete_data": "/_user_groups",
30 "repo_list_data": "/_repos",
31 "goto_switcher_data": "/_goto_data",
32 "admin_home": ADMIN_PREFIX + "",
33 "admin_audit_logs": ADMIN_PREFIX + "/audit_logs",
34 "admin_defaults_repositories": ADMIN_PREFIX + "/defaults/repositories",
35 "admin_defaults_repositories_update": ADMIN_PREFIX + "/defaults/repositories/update",
36 "search": ADMIN_PREFIX + "/search",
37 "search_repo": "/{repo_name}/search",
38 "my_account_auth_tokens": ADMIN_PREFIX + "/my_account/auth_tokens",
39 "my_account_auth_tokens_add": ADMIN_PREFIX + "/my_account/auth_tokens/new",
40 "my_account_auth_tokens_delete": ADMIN_PREFIX + "/my_account/auth_tokens/delete",
41 "repos": ADMIN_PREFIX + "/repos",
42 "repos_data": ADMIN_PREFIX + "/repos_data",
43 "repo_groups": ADMIN_PREFIX + "/repo_groups",
44 "repo_groups_data": ADMIN_PREFIX + "/repo_groups_data",
45 "user_groups": ADMIN_PREFIX + "/user_groups",
46 "user_groups_data": ADMIN_PREFIX + "/user_groups_data",
47 "user_profile": "/_profiles/{username}",
48 "profile_user_group": "/_profile_user_group/{user_group_name}",
49 "repo_summary": "/{repo_name}",
50 "repo_creating_check": "/{repo_name}/repo_creating_check",
51 "edit_repo": "/{repo_name}/settings",
52 "edit_repo_vcs": "/{repo_name}/settings/vcs",
53 "edit_repo_vcs_update": "/{repo_name}/settings/vcs/update",
54 "edit_repo_vcs_svn_pattern_delete": "/{repo_name}/settings/vcs/svn_pattern/delete",
55 "repo_archivefile": "/{repo_name}/archive/{fname}",
56 "repo_files_diff": "/{repo_name}/diff/{f_path}",
57 "repo_files_diff_2way_redirect": "/{repo_name}/diff-2way/{f_path}",
58 "repo_files": "/{repo_name}/files/{commit_id}/{f_path}",
59 "repo_files:default_path": "/{repo_name}/files/{commit_id}/",
60 "repo_files:default_commit": "/{repo_name}/files",
61 "repo_files:rendered": "/{repo_name}/render/{commit_id}/{f_path}",
62 "repo_files:annotated": "/{repo_name}/annotate/{commit_id}/{f_path}",
63 "repo_files:annotated_previous": "/{repo_name}/annotate-previous/{commit_id}/{f_path}",
64 "repo_files_nodelist": "/{repo_name}/nodelist/{commit_id}/{f_path}",
65 "repo_file_raw": "/{repo_name}/raw/{commit_id}/{f_path}",
66 "repo_file_download": "/{repo_name}/download/{commit_id}/{f_path}",
67 "repo_file_history": "/{repo_name}/history/{commit_id}/{f_path}",
68 "repo_file_authors": "/{repo_name}/authors/{commit_id}/{f_path}",
69 "repo_files_remove_file": "/{repo_name}/remove_file/{commit_id}/{f_path}",
70 "repo_files_delete_file": "/{repo_name}/delete_file/{commit_id}/{f_path}",
71 "repo_files_edit_file": "/{repo_name}/edit_file/{commit_id}/{f_path}",
72 "repo_files_update_file": "/{repo_name}/update_file/{commit_id}/{f_path}",
73 "repo_files_add_file": "/{repo_name}/add_file/{commit_id}/{f_path}",
74 "repo_files_upload_file": "/{repo_name}/upload_file/{commit_id}/{f_path}",
75 "repo_files_create_file": "/{repo_name}/create_file/{commit_id}/{f_path}",
76 "repo_nodetree_full": "/{repo_name}/nodetree_full/{commit_id}/{f_path}",
77 "repo_nodetree_full:default_path": "/{repo_name}/nodetree_full/{commit_id}/",
78 "journal": ADMIN_PREFIX + "/journal",
79 "journal_rss": ADMIN_PREFIX + "/journal/rss",
80 "journal_atom": ADMIN_PREFIX + "/journal/atom",
81 "journal_public": ADMIN_PREFIX + "/public_journal",
82 "journal_public_atom": ADMIN_PREFIX + "/public_journal/atom",
83 "journal_public_atom_old": ADMIN_PREFIX + "/public_journal_atom",
84 "journal_public_rss": ADMIN_PREFIX + "/public_journal/rss",
85 "journal_public_rss_old": ADMIN_PREFIX + "/public_journal_rss",
86 "toggle_following": ADMIN_PREFIX + "/toggle_following",
87 "upload_file": "/_file_store/upload",
88 "download_file": "/_file_store/download/{fid}",
89 "download_file_by_token": "/_file_store/token-download/{_auth_token}/{fid}",
90 "gists_show": ADMIN_PREFIX + "/gists",
91 "gists_new": ADMIN_PREFIX + "/gists/new",
92 "gists_create": ADMIN_PREFIX + "/gists/create",
93 "gist_show": ADMIN_PREFIX + "/gists/{gist_id}",
94 "gist_delete": ADMIN_PREFIX + "/gists/{gist_id}/delete",
95 "gist_edit": ADMIN_PREFIX + "/gists/{gist_id}/edit",
96 "gist_edit_check_revision": ADMIN_PREFIX + "/gists/{gist_id}/edit/check_revision",
97 "gist_update": ADMIN_PREFIX + "/gists/{gist_id}/update",
98 "gist_show_rev": ADMIN_PREFIX + "/gists/{gist_id}/rev/{revision}",
99 "gist_show_formatted": ADMIN_PREFIX + "/gists/{gist_id}/rev/{revision}/{format}",
100 "gist_show_formatted_path": ADMIN_PREFIX + "/gists/{gist_id}/rev/{revision}/{format}/{f_path}",
101 "login": ADMIN_PREFIX + "/login",
102 "logout": ADMIN_PREFIX + "/logout",
103 "register": ADMIN_PREFIX + "/register",
104 "reset_password": ADMIN_PREFIX + "/password_reset",
105 "reset_password_confirmation": ADMIN_PREFIX + "/password_reset_confirmation",
106 "admin_permissions_application": ADMIN_PREFIX + "/permissions/application",
107 "admin_permissions_application_update": ADMIN_PREFIX + "/permissions/application/update",
108 "repo_commit_raw": "/{repo_name}/changeset-diff/{commit_id}",
109 "user_group_members_data": ADMIN_PREFIX + "/user_groups/{user_group_id}/members",
110 "user_groups_new": ADMIN_PREFIX + "/user_groups/new",
111 "user_groups_create": ADMIN_PREFIX + "/user_groups/create",
112 "edit_user_group": ADMIN_PREFIX + "/user_groups/{user_group_id}/edit",
113 "edit_user_group_advanced_sync": ADMIN_PREFIX + "/user_groups/{user_group_id}/edit/advanced/sync",
114 "edit_user_group_global_perms_update": ADMIN_PREFIX + "/user_groups/{user_group_id}/edit/global_permissions/update",
115 "user_groups_update": ADMIN_PREFIX + "/user_groups/{user_group_id}/update",
116 "user_groups_delete": ADMIN_PREFIX + "/user_groups/{user_group_id}/delete",
117 "edit_user_group_perms": ADMIN_PREFIX + "/user_groups/{user_group_id}/edit/permissions",
118 "edit_user_group_perms_update": ADMIN_PREFIX + "/user_groups/{user_group_id}/edit/permissions/update",
119 "edit_repo_group": "/{repo_group_name}/_edit",
120 "edit_repo_group_perms": "/{repo_group_name:}/_settings/permissions",
121 "edit_repo_group_perms_update": "/{repo_group_name}/_settings/permissions/update",
122 "edit_repo_group_advanced": "/{repo_group_name}/_settings/advanced",
123 "edit_repo_group_advanced_delete": "/{repo_group_name}/_settings/advanced/delete",
124 "edit_user_ssh_keys": ADMIN_PREFIX + "/users/{user_id}/edit/ssh_keys",
125 "edit_user_ssh_keys_generate_keypair": ADMIN_PREFIX + "/users/{user_id}/edit/ssh_keys/generate",
126 "edit_user_ssh_keys_add": ADMIN_PREFIX + "/users/{user_id}/edit/ssh_keys/new",
127 "edit_user_ssh_keys_delete": ADMIN_PREFIX + "/users/{user_id}/edit/ssh_keys/delete",
128 "users": ADMIN_PREFIX + "/users",
129 "users_data": ADMIN_PREFIX + "/users_data",
130 "users_create": ADMIN_PREFIX + "/users/create",
131 "users_new": ADMIN_PREFIX + "/users/new",
132 "user_edit": ADMIN_PREFIX + "/users/{user_id}/edit",
133 "user_edit_advanced": ADMIN_PREFIX + "/users/{user_id}/edit/advanced",
134 "user_edit_global_perms": ADMIN_PREFIX + "/users/{user_id}/edit/global_permissions",
135 "user_edit_global_perms_update": ADMIN_PREFIX + "/users/{user_id}/edit/global_permissions/update",
136 "user_update": ADMIN_PREFIX + "/users/{user_id}/update",
137 "user_delete": ADMIN_PREFIX + "/users/{user_id}/delete",
138 "user_create_personal_repo_group": ADMIN_PREFIX + "/users/{user_id}/create_repo_group",
139 "edit_user_auth_tokens": ADMIN_PREFIX + "/users/{user_id}/edit/auth_tokens",
140 "edit_user_auth_tokens_add": ADMIN_PREFIX + "/users/{user_id}/edit/auth_tokens/new",
141 "edit_user_auth_tokens_delete": ADMIN_PREFIX + "/users/{user_id}/edit/auth_tokens/delete",
142 "edit_user_emails": ADMIN_PREFIX + "/users/{user_id}/edit/emails",
143 "edit_user_emails_add": ADMIN_PREFIX + "/users/{user_id}/edit/emails/new",
144 "edit_user_emails_delete": ADMIN_PREFIX + "/users/{user_id}/edit/emails/delete",
145 "edit_user_ips": ADMIN_PREFIX + "/users/{user_id}/edit/ips",
146 "edit_user_ips_add": ADMIN_PREFIX + "/users/{user_id}/edit/ips/new",
147 "edit_user_ips_delete": ADMIN_PREFIX + "/users/{user_id}/edit/ips/delete",
148 "edit_user_perms_summary": ADMIN_PREFIX + "/users/{user_id}/edit/permissions_summary",
149 "edit_user_perms_summary_json": ADMIN_PREFIX + "/users/{user_id}/edit/permissions_summary/json",
150 "edit_user_audit_logs": ADMIN_PREFIX + "/users/{user_id}/edit/audit",
151 "edit_user_audit_logs_download": ADMIN_PREFIX + "/users/{user_id}/edit/audit/download",
152 "admin_settings": ADMIN_PREFIX + "/settings",
153 "admin_settings_update": ADMIN_PREFIX + "/settings/update",
154 "admin_settings_global": ADMIN_PREFIX + "/settings/global",
155 "admin_settings_global_update": ADMIN_PREFIX + "/settings/global/update",
156 "admin_settings_vcs": ADMIN_PREFIX + "/settings/vcs",
157 "admin_settings_vcs_update": ADMIN_PREFIX + "/settings/vcs/update",
158 "admin_settings_vcs_svn_pattern_delete": ADMIN_PREFIX + "/settings/vcs/svn_pattern_delete",
159 "admin_settings_mapping": ADMIN_PREFIX + "/settings/mapping",
160 "admin_settings_mapping_update": ADMIN_PREFIX + "/settings/mapping/update",
161 "admin_settings_visual": ADMIN_PREFIX + "/settings/visual",
162 "admin_settings_visual_update": ADMIN_PREFIX + "/settings/visual/update",
163 "admin_settings_issuetracker": ADMIN_PREFIX + "/settings/issue-tracker",
164 "admin_settings_issuetracker_update": ADMIN_PREFIX + "/settings/issue-tracker/update",
165 "admin_settings_issuetracker_test": ADMIN_PREFIX + "/settings/issue-tracker/test",
166 "admin_settings_issuetracker_delete": ADMIN_PREFIX + "/settings/issue-tracker/delete",
167 "admin_settings_email": ADMIN_PREFIX + "/settings/email",
168 "admin_settings_email_update": ADMIN_PREFIX + "/settings/email/update",
169 "admin_settings_hooks": ADMIN_PREFIX + "/settings/hooks",
170 "admin_settings_hooks_update": ADMIN_PREFIX + "/settings/hooks/update",
171 "admin_settings_hooks_delete": ADMIN_PREFIX + "/settings/hooks/delete",
172 "admin_settings_search": ADMIN_PREFIX + "/settings/search",
173 "admin_settings_labs": ADMIN_PREFIX + "/settings/labs",
174 "admin_settings_labs_update": ADMIN_PREFIX + "/settings/labs/update",
175 "admin_settings_sessions": ADMIN_PREFIX + "/settings/sessions",
176 "admin_settings_sessions_cleanup": ADMIN_PREFIX + "/settings/sessions/cleanup",
177 "admin_settings_system": ADMIN_PREFIX + "/settings/system",
178 "admin_settings_system_update": ADMIN_PREFIX + "/settings/system/updates",
179 "admin_settings_open_source": ADMIN_PREFIX + "/settings/open_source",
180 "repo_group_new": ADMIN_PREFIX + "/repo_group/new",
181 "repo_group_create": ADMIN_PREFIX + "/repo_group/create",
182 "repo_new": ADMIN_PREFIX + "/repos/new",
183 "repo_create": ADMIN_PREFIX + "/repos/create",
184 "admin_permissions_global": ADMIN_PREFIX + "/permissions/global",
185 "admin_permissions_global_update": ADMIN_PREFIX + "/permissions/global/update",
186 "admin_permissions_object": ADMIN_PREFIX + "/permissions/object",
187 "admin_permissions_object_update": ADMIN_PREFIX + "/permissions/object/update",
188 "admin_permissions_ips": ADMIN_PREFIX + "/permissions/ips",
189 "admin_permissions_overview": ADMIN_PREFIX + "/permissions/overview",
190 "admin_permissions_ssh_keys": ADMIN_PREFIX + "/permissions/ssh_keys",
191 "admin_permissions_ssh_keys_data": ADMIN_PREFIX + "/permissions/ssh_keys/data",
192 "admin_permissions_ssh_keys_update": ADMIN_PREFIX + "/permissions/ssh_keys/update",
193 "pullrequest_show": "/{repo_name}/pull-request/{pull_request_id}",
194 "pull_requests_global": ADMIN_PREFIX + "/pull-request/{pull_request_id}",
195 "pull_requests_global_0": ADMIN_PREFIX + "/pull_requests/{pull_request_id}",
196 "pull_requests_global_1": ADMIN_PREFIX + "/pull-requests/{pull_request_id}",
197 "notifications_show_all": ADMIN_PREFIX + "/notifications",
198 "notifications_mark_all_read": ADMIN_PREFIX + "/notifications_mark_all_read",
199 "notifications_show": ADMIN_PREFIX + "/notifications/{notification_id}",
200 "notifications_update": ADMIN_PREFIX + "/notifications/{notification_id}/update",
201 "notifications_delete": ADMIN_PREFIX + "/notifications/{notification_id}/delete",
202 "my_account": ADMIN_PREFIX + "/my_account/profile",
203 "my_account_edit": ADMIN_PREFIX + "/my_account/edit",
204 "my_account_update": ADMIN_PREFIX + "/my_account/update",
205 "my_account_pullrequests": ADMIN_PREFIX + "/my_account/pull_requests",
206 "my_account_pullrequests_data": ADMIN_PREFIX + "/my_account/pull_requests/data",
207 "my_account_emails": ADMIN_PREFIX + "/my_account/emails",
208 "my_account_emails_add": ADMIN_PREFIX + "/my_account/emails/new",
209 "my_account_emails_delete": ADMIN_PREFIX + "/my_account/emails/delete",
210 "my_account_password": ADMIN_PREFIX + "/my_account/password",
211 "my_account_password_update": ADMIN_PREFIX + "/my_account/password/update",
212 "my_account_repos": ADMIN_PREFIX + "/my_account/repos",
213 "my_account_watched": ADMIN_PREFIX + "/my_account/watched",
214 "my_account_perms": ADMIN_PREFIX + "/my_account/perms",
215 "my_account_notifications": ADMIN_PREFIX + "/my_account/notifications",
216 "my_account_ssh_keys": ADMIN_PREFIX + "/my_account/ssh_keys",
217 "my_account_ssh_keys_generate": ADMIN_PREFIX + "/my_account/ssh_keys/generate",
218 "my_account_ssh_keys_add": ADMIN_PREFIX + "/my_account/ssh_keys/new",
219 "my_account_ssh_keys_delete": ADMIN_PREFIX + "/my_account/ssh_keys/delete",
220 "pullrequest_show_all": "/{repo_name}/pull-request",
221 "pullrequest_show_all_data": "/{repo_name}/pull-request-data",
222 "bookmarks_home": "/{repo_name}/bookmarks",
223 "branches_home": "/{repo_name}/branches",
224 "tags_home": "/{repo_name}/tags",
225 "repo_changelog": "/{repo_name}/changelog",
226 "repo_commits": "/{repo_name}/commits",
227 "repo_commits_file": "/{repo_name}/commits/{commit_id}/{f_path}",
228 "repo_commits_elements": "/{repo_name}/commits_elements",
229 "repo_commit": "/{repo_name}/changeset/{commit_id}",
230 "repo_commit_comment_create": "/{repo_name}/changeset/{commit_id}/comment/create",
231 "repo_commit_comment_preview": "/{repo_name}/changeset/{commit_id}/comment/preview",
232 "repo_commit_comment_delete": "/{repo_name}/changeset/{commit_id}/comment/{comment_id}/delete",
233 "repo_commit_comment_edit": "/{repo_name}/changeset/{commit_id}/comment/{comment_id}/edit",
234 "repo_commit_children": "/{repo_name}/changeset_children/{commit_id}",
235 "repo_commit_parents": "/{repo_name}/changeset_parents/{commit_id}",
236 "repo_commit_patch": "/{repo_name}/changeset-patch/{commit_id}",
237 "repo_commit_download": "/{repo_name}/changeset-download/{commit_id}",
238 "repo_commit_data": "/{repo_name}/changeset-data/{commit_id}",
239 "repo_compare": "/{repo_name}/compare/{source_ref_type}@{source_ref}...{target_ref_type}@{target_ref}",
240 "repo_compare_select": "/{repo_name}/compare",
241 "rss_feed_home": "/{repo_name}/feed-rss",
242 "atom_feed_home": "/{repo_name}/feed-atom",
243 "rss_feed_home_old": "/{repo_name}/feed/rss",
244 "atom_feed_home_old": "/{repo_name}/feed/atom",
245 "repo_fork_new": "/{repo_name}/fork",
246 "repo_fork_create": "/{repo_name}/fork/create",
247 "repo_forks_show_all": "/{repo_name}/forks",
248 "repo_forks_data": "/{repo_name}/forks/data",
249 "edit_repo_issuetracker": "/{repo_name}/settings/issue_trackers",
250 "edit_repo_issuetracker_test": "/{repo_name}/settings/issue_trackers/test",
251 "edit_repo_issuetracker_delete": "/{repo_name}/settings/issue_trackers/delete",
252 "edit_repo_issuetracker_update": "/{repo_name}/settings/issue_trackers/update",
253 "edit_repo_maintenance": "/{repo_name}/settings/maintenance",
254 "edit_repo_maintenance_execute": "/{repo_name}/settings/maintenance/execute",
255 "repo_changelog_file": "/{repo_name}/changelog/{commit_id}/{f_path}",
256 "pullrequest_repo_refs": "/{repo_name}/pull-request/refs/{target_repo_name:.*?[^/]}",
257 "pullrequest_repo_targets": "/{repo_name}/pull-request/repo-destinations",
258 "pullrequest_new": "/{repo_name}/pull-request/new",
259 "pullrequest_create": "/{repo_name}/pull-request/create",
260 "pullrequest_update": "/{repo_name}/pull-request/{pull_request_id}/update",
261 "pullrequest_merge": "/{repo_name}/pull-request/{pull_request_id}/merge",
262 "pullrequest_delete": "/{repo_name}/pull-request/{pull_request_id}/delete",
263 "pullrequest_comment_create": "/{repo_name}/pull-request/{pull_request_id}/comment",
264 "pullrequest_comment_delete": "/{repo_name}/pull-request/{pull_request_id}/comment/{comment_id}/delete",
265 "pullrequest_comment_edit": "/{repo_name}/pull-request/{pull_request_id}/comment/{comment_id}/edit",
266 "edit_repo_caches": "/{repo_name}/settings/caches",
267 "edit_repo_perms": "/{repo_name}/settings/permissions",
268 "edit_repo_fields": "/{repo_name}/settings/fields",
269 "edit_repo_remote": "/{repo_name}/settings/remote",
270 "edit_repo_statistics": "/{repo_name}/settings/statistics",
271 "edit_repo_advanced": "/{repo_name}/settings/advanced",
272 "edit_repo_advanced_delete": "/{repo_name}/settings/advanced/delete",
273 "edit_repo_advanced_archive": "/{repo_name}/settings/advanced/archive",
274 "edit_repo_advanced_fork": "/{repo_name}/settings/advanced/fork",
275 "edit_repo_advanced_locking": "/{repo_name}/settings/advanced/locking",
276 "edit_repo_advanced_journal": "/{repo_name}/settings/advanced/journal",
277 "repo_stats": "/{repo_name}/repo_stats/{commit_id}",
278 "repo_refs_data": "/{repo_name}/refs-data",
279 "repo_refs_changelog_data": "/{repo_name}/refs-data-changelog"
280 }
281
282
283 def route_path(name, params=None, **kwargs):
284 import urllib.parse
285
286 base_url = get_url_defs()[name].format(**kwargs)
287
288 if params:
289 base_url = f"{base_url}?{urllib.parse.urlencode(params)}"
290 return base_url
@@ -163,8 +163,7 b' def exception_view(exc, request):'
163 163 # make the whole above block safe
164 164 pass
165 165
166 fault_message = "No such method: {}. Similar methods: {}".format(
167 method, similar)
166 fault_message = f"No such method: {method}. Similar methods: {similar}"
168 167 else:
169 168 fault_message = 'undefined error'
170 169 exc_info = exc.exc_info()
@@ -25,28 +25,12 b' import pytest'
25 25
26 26 from rhodecode.lib.str_utils import safe_str
27 27 from rhodecode.tests import *
28 from rhodecode.tests.routes import route_path
28 29 from rhodecode.tests.fixture import FIXTURES
29 30 from rhodecode.model.db import UserLog
30 31 from rhodecode.model.meta import Session
31 32
32 33
33 def route_path(name, params=None, **kwargs):
34 import urllib.request
35 import urllib.parse
36 import urllib.error
37 from rhodecode.apps._base import ADMIN_PREFIX
38
39 base_url = {
40 'admin_home': ADMIN_PREFIX,
41 'admin_audit_logs': ADMIN_PREFIX + '/audit_logs',
42
43 }[name].format(**kwargs)
44
45 if params:
46 base_url = '{}?{}'.format(base_url, urllib.parse.urlencode(params))
47 return base_url
48
49
50 34 @pytest.mark.usefixtures('app')
51 35 class TestAdminController(object):
52 36
@@ -20,27 +20,10 b''
20 20 import pytest
21 21
22 22 from rhodecode.tests import assert_session_flash
23 from rhodecode.tests.routes import route_path
23 24 from rhodecode.model.settings import SettingsModel
24 25
25 26
26 def route_path(name, params=None, **kwargs):
27 import urllib.request
28 import urllib.parse
29 import urllib.error
30 from rhodecode.apps._base import ADMIN_PREFIX
31
32 base_url = {
33 'admin_defaults_repositories':
34 ADMIN_PREFIX + '/defaults/repositories',
35 'admin_defaults_repositories_update':
36 ADMIN_PREFIX + '/defaults/repositories/update',
37 }[name].format(**kwargs)
38
39 if params:
40 base_url = '{}?{}'.format(base_url, urllib.parse.urlencode(params))
41 return base_url
42
43
44 27 @pytest.mark.usefixtures("app")
45 28 class TestDefaultsView(object):
46 29
@@ -21,30 +21,11 b' import pytest'
21 21
22 22 from rhodecode.tests import TestController
23 23 from rhodecode.tests.fixture import Fixture
24 from rhodecode.tests.routes import route_path
24 25
25 26 fixture = Fixture()
26 27
27 28
28 def route_path(name, params=None, **kwargs):
29 import urllib.request
30 import urllib.parse
31 import urllib.error
32 from rhodecode.apps._base import ADMIN_PREFIX
33
34 base_url = {
35 'admin_home': ADMIN_PREFIX,
36 'pullrequest_show': '/{repo_name}/pull-request/{pull_request_id}',
37 'pull_requests_global': ADMIN_PREFIX + '/pull-request/{pull_request_id}',
38 'pull_requests_global_0': ADMIN_PREFIX + '/pull_requests/{pull_request_id}',
39 'pull_requests_global_1': ADMIN_PREFIX + '/pull-requests/{pull_request_id}',
40
41 }[name].format(**kwargs)
42
43 if params:
44 base_url = '{}?{}'.format(base_url, urllib.parse.urlencode(params))
45 return base_url
46
47
48 29 class TestAdminMainView(TestController):
49 30
50 31 def test_access_admin_home(self):
@@ -25,54 +25,7 b' from rhodecode.model.permission import P'
25 25 from rhodecode.model.ssh_key import SshKeyModel
26 26 from rhodecode.tests import (
27 27 TestController, clear_cache_regions, assert_session_flash)
28
29
30 def route_path(name, params=None, **kwargs):
31 import urllib.request
32 import urllib.parse
33 import urllib.error
34 from rhodecode.apps._base import ADMIN_PREFIX
35
36 base_url = {
37 'edit_user_ips':
38 ADMIN_PREFIX + '/users/{user_id}/edit/ips',
39 'edit_user_ips_add':
40 ADMIN_PREFIX + '/users/{user_id}/edit/ips/new',
41 'edit_user_ips_delete':
42 ADMIN_PREFIX + '/users/{user_id}/edit/ips/delete',
43
44 'admin_permissions_application':
45 ADMIN_PREFIX + '/permissions/application',
46 'admin_permissions_application_update':
47 ADMIN_PREFIX + '/permissions/application/update',
48
49 'admin_permissions_global':
50 ADMIN_PREFIX + '/permissions/global',
51 'admin_permissions_global_update':
52 ADMIN_PREFIX + '/permissions/global/update',
53
54 'admin_permissions_object':
55 ADMIN_PREFIX + '/permissions/object',
56 'admin_permissions_object_update':
57 ADMIN_PREFIX + '/permissions/object/update',
58
59 'admin_permissions_ips':
60 ADMIN_PREFIX + '/permissions/ips',
61 'admin_permissions_overview':
62 ADMIN_PREFIX + '/permissions/overview',
63
64 'admin_permissions_ssh_keys':
65 ADMIN_PREFIX + '/permissions/ssh_keys',
66 'admin_permissions_ssh_keys_data':
67 ADMIN_PREFIX + '/permissions/ssh_keys/data',
68 'admin_permissions_ssh_keys_update':
69 ADMIN_PREFIX + '/permissions/ssh_keys/update'
70
71 }[name].format(**kwargs)
72
73 if params:
74 base_url = '{}?{}'.format(base_url, urllib.parse.urlencode(params))
75 return base_url
28 from rhodecode.tests.routes import route_path
76 29
77 30
78 31 class TestAdminPermissionsController(TestController):
@@ -38,30 +38,12 b' from rhodecode.tests import ('
38 38 login_user_session, assert_session_flash, TEST_USER_ADMIN_LOGIN,
39 39 TEST_USER_REGULAR_LOGIN, TEST_USER_REGULAR_PASS)
40 40 from rhodecode.tests.fixture import Fixture, error_function
41 from rhodecode.tests.utils import AssertResponse, repo_on_filesystem
41 from rhodecode.tests.utils import repo_on_filesystem
42 from rhodecode.tests.routes import route_path
42 43
43 44 fixture = Fixture()
44 45
45 46
46 def route_path(name, params=None, **kwargs):
47 import urllib.request
48 import urllib.parse
49 import urllib.error
50
51 base_url = {
52 'repos': ADMIN_PREFIX + '/repos',
53 'repos_data': ADMIN_PREFIX + '/repos_data',
54 'repo_new': ADMIN_PREFIX + '/repos/new',
55 'repo_create': ADMIN_PREFIX + '/repos/create',
56
57 'repo_creating_check': '/{repo_name}/repo_creating_check',
58 }[name].format(**kwargs)
59
60 if params:
61 base_url = '{}?{}'.format(base_url, urllib.parse.urlencode(params))
62 return base_url
63
64
65 47 def _get_permission_for_user(user, repo):
66 48 perm = UserRepoToPerm.query()\
67 49 .filter(UserRepoToPerm.repository ==
@@ -28,26 +28,10 b' from rhodecode.model.repo_group import R'
28 28 from rhodecode.tests import (
29 29 assert_session_flash, TEST_USER_REGULAR_LOGIN, TESTS_TMP_PATH)
30 30 from rhodecode.tests.fixture import Fixture
31
32 fixture = Fixture()
31 from rhodecode.tests.routes import route_path
33 32
34 33
35 def route_path(name, params=None, **kwargs):
36 import urllib.request
37 import urllib.parse
38 import urllib.error
39
40 base_url = {
41 'repo_groups': ADMIN_PREFIX + '/repo_groups',
42 'repo_groups_data': ADMIN_PREFIX + '/repo_groups_data',
43 'repo_group_new': ADMIN_PREFIX + '/repo_group/new',
44 'repo_group_create': ADMIN_PREFIX + '/repo_group/create',
45
46 }[name].format(**kwargs)
47
48 if params:
49 base_url = '{}?{}'.format(base_url, urllib.parse.urlencode(params))
50 return base_url
34 fixture = Fixture()
51 35
52 36
53 37 def _get_permission_for_user(user, repo):
@@ -27,85 +27,12 b' from rhodecode.model.db import RhodeCode'
27 27 from rhodecode.model.meta import Session
28 28 from rhodecode.model.settings import SettingsModel, IssueTrackerSettingsModel
29 29 from rhodecode.tests import assert_session_flash
30 from rhodecode.tests.routes import route_path
30 31
31 32
32 33 UPDATE_DATA_QUALNAME = 'rhodecode.model.update.UpdateModel.get_update_data'
33 34
34 35
35 def route_path(name, params=None, **kwargs):
36 import urllib.request
37 import urllib.parse
38 import urllib.error
39 from rhodecode.apps._base import ADMIN_PREFIX
40
41 base_url = {
42
43 'admin_settings':
44 ADMIN_PREFIX +'/settings',
45 'admin_settings_update':
46 ADMIN_PREFIX + '/settings/update',
47 'admin_settings_global':
48 ADMIN_PREFIX + '/settings/global',
49 'admin_settings_global_update':
50 ADMIN_PREFIX + '/settings/global/update',
51 'admin_settings_vcs':
52 ADMIN_PREFIX + '/settings/vcs',
53 'admin_settings_vcs_update':
54 ADMIN_PREFIX + '/settings/vcs/update',
55 'admin_settings_vcs_svn_pattern_delete':
56 ADMIN_PREFIX + '/settings/vcs/svn_pattern_delete',
57 'admin_settings_mapping':
58 ADMIN_PREFIX + '/settings/mapping',
59 'admin_settings_mapping_update':
60 ADMIN_PREFIX + '/settings/mapping/update',
61 'admin_settings_visual':
62 ADMIN_PREFIX + '/settings/visual',
63 'admin_settings_visual_update':
64 ADMIN_PREFIX + '/settings/visual/update',
65 'admin_settings_issuetracker':
66 ADMIN_PREFIX + '/settings/issue-tracker',
67 'admin_settings_issuetracker_update':
68 ADMIN_PREFIX + '/settings/issue-tracker/update',
69 'admin_settings_issuetracker_test':
70 ADMIN_PREFIX + '/settings/issue-tracker/test',
71 'admin_settings_issuetracker_delete':
72 ADMIN_PREFIX + '/settings/issue-tracker/delete',
73 'admin_settings_email':
74 ADMIN_PREFIX + '/settings/email',
75 'admin_settings_email_update':
76 ADMIN_PREFIX + '/settings/email/update',
77 'admin_settings_hooks':
78 ADMIN_PREFIX + '/settings/hooks',
79 'admin_settings_hooks_update':
80 ADMIN_PREFIX + '/settings/hooks/update',
81 'admin_settings_hooks_delete':
82 ADMIN_PREFIX + '/settings/hooks/delete',
83 'admin_settings_search':
84 ADMIN_PREFIX + '/settings/search',
85 'admin_settings_labs':
86 ADMIN_PREFIX + '/settings/labs',
87 'admin_settings_labs_update':
88 ADMIN_PREFIX + '/settings/labs/update',
89
90 'admin_settings_sessions':
91 ADMIN_PREFIX + '/settings/sessions',
92 'admin_settings_sessions_cleanup':
93 ADMIN_PREFIX + '/settings/sessions/cleanup',
94 'admin_settings_system':
95 ADMIN_PREFIX + '/settings/system',
96 'admin_settings_system_update':
97 ADMIN_PREFIX + '/settings/system/updates',
98 'admin_settings_open_source':
99 ADMIN_PREFIX + '/settings/open_source',
100
101
102 }[name].format(**kwargs)
103
104 if params:
105 base_url = '{}?{}'.format(base_url, urllib.parse.urlencode(params))
106 return base_url
107
108
109 36 @pytest.mark.usefixtures('autologin_user', 'app')
110 37 class TestAdminSettingsController(object):
111 38
@@ -23,32 +23,13 b' from rhodecode.model.db import UserGroup'
23 23 from rhodecode.model.meta import Session
24 24
25 25 from rhodecode.tests import (
26 TestController, TEST_USER_REGULAR_LOGIN, assert_session_flash)
26 TestController, assert_session_flash)
27 27 from rhodecode.tests.fixture import Fixture
28 from rhodecode.tests.routes import route_path
28 29
29 30 fixture = Fixture()
30 31
31 32
32 def route_path(name, params=None, **kwargs):
33 import urllib.request
34 import urllib.parse
35 import urllib.error
36 from rhodecode.apps._base import ADMIN_PREFIX
37
38 base_url = {
39 'user_groups': ADMIN_PREFIX + '/user_groups',
40 'user_groups_data': ADMIN_PREFIX + '/user_groups_data',
41 'user_group_members_data': ADMIN_PREFIX + '/user_groups/{user_group_id}/members',
42 'user_groups_new': ADMIN_PREFIX + '/user_groups/new',
43 'user_groups_create': ADMIN_PREFIX + '/user_groups/create',
44 'edit_user_group': ADMIN_PREFIX + '/user_groups/{user_group_id}/edit',
45 }[name].format(**kwargs)
46
47 if params:
48 base_url = '{}?{}'.format(base_url, urllib.parse.urlencode(params))
49 return base_url
50
51
52 33 class TestAdminUserGroupsView(TestController):
53 34
54 35 def test_show_users(self):
@@ -29,79 +29,11 b' from rhodecode.model.user import UserMod'
29 29 from rhodecode.tests import (
30 30 TestController, TEST_USER_REGULAR_LOGIN, assert_session_flash)
31 31 from rhodecode.tests.fixture import Fixture
32 from rhodecode.tests.routes import route_path
32 33
33 34 fixture = Fixture()
34 35
35 36
36 def route_path(name, params=None, **kwargs):
37 import urllib.request
38 import urllib.parse
39 import urllib.error
40 from rhodecode.apps._base import ADMIN_PREFIX
41
42 base_url = {
43 'users':
44 ADMIN_PREFIX + '/users',
45 'users_data':
46 ADMIN_PREFIX + '/users_data',
47 'users_create':
48 ADMIN_PREFIX + '/users/create',
49 'users_new':
50 ADMIN_PREFIX + '/users/new',
51 'user_edit':
52 ADMIN_PREFIX + '/users/{user_id}/edit',
53 'user_edit_advanced':
54 ADMIN_PREFIX + '/users/{user_id}/edit/advanced',
55 'user_edit_global_perms':
56 ADMIN_PREFIX + '/users/{user_id}/edit/global_permissions',
57 'user_edit_global_perms_update':
58 ADMIN_PREFIX + '/users/{user_id}/edit/global_permissions/update',
59 'user_update':
60 ADMIN_PREFIX + '/users/{user_id}/update',
61 'user_delete':
62 ADMIN_PREFIX + '/users/{user_id}/delete',
63 'user_create_personal_repo_group':
64 ADMIN_PREFIX + '/users/{user_id}/create_repo_group',
65
66 'edit_user_auth_tokens':
67 ADMIN_PREFIX + '/users/{user_id}/edit/auth_tokens',
68 'edit_user_auth_tokens_add':
69 ADMIN_PREFIX + '/users/{user_id}/edit/auth_tokens/new',
70 'edit_user_auth_tokens_delete':
71 ADMIN_PREFIX + '/users/{user_id}/edit/auth_tokens/delete',
72
73 'edit_user_emails':
74 ADMIN_PREFIX + '/users/{user_id}/edit/emails',
75 'edit_user_emails_add':
76 ADMIN_PREFIX + '/users/{user_id}/edit/emails/new',
77 'edit_user_emails_delete':
78 ADMIN_PREFIX + '/users/{user_id}/edit/emails/delete',
79
80 'edit_user_ips':
81 ADMIN_PREFIX + '/users/{user_id}/edit/ips',
82 'edit_user_ips_add':
83 ADMIN_PREFIX + '/users/{user_id}/edit/ips/new',
84 'edit_user_ips_delete':
85 ADMIN_PREFIX + '/users/{user_id}/edit/ips/delete',
86
87 'edit_user_perms_summary':
88 ADMIN_PREFIX + '/users/{user_id}/edit/permissions_summary',
89 'edit_user_perms_summary_json':
90 ADMIN_PREFIX + '/users/{user_id}/edit/permissions_summary/json',
91
92 'edit_user_audit_logs':
93 ADMIN_PREFIX + '/users/{user_id}/edit/audit',
94
95 'edit_user_audit_logs_download':
96 ADMIN_PREFIX + '/users/{user_id}/edit/audit/download',
97
98 }[name].format(**kwargs)
99
100 if params:
101 base_url = '{}?{}'.format(base_url, urllib.parse.urlencode(params))
102 return base_url
103
104
105 37 class TestAdminUsersView(TestController):
106 38
107 39 def test_show_users(self):
@@ -23,33 +23,11 b' from rhodecode.model.db import User, Use'
23 23
24 24 from rhodecode.tests import TestController, assert_session_flash
25 25 from rhodecode.tests.fixture import Fixture
26 from rhodecode.tests.routes import route_path
26 27
27 28 fixture = Fixture()
28 29
29 30
30 def route_path(name, params=None, **kwargs):
31 import urllib.request
32 import urllib.parse
33 import urllib.error
34 from rhodecode.apps._base import ADMIN_PREFIX
35
36 base_url = {
37 'edit_user_ssh_keys':
38 ADMIN_PREFIX + '/users/{user_id}/edit/ssh_keys',
39 'edit_user_ssh_keys_generate_keypair':
40 ADMIN_PREFIX + '/users/{user_id}/edit/ssh_keys/generate',
41 'edit_user_ssh_keys_add':
42 ADMIN_PREFIX + '/users/{user_id}/edit/ssh_keys/new',
43 'edit_user_ssh_keys_delete':
44 ADMIN_PREFIX + '/users/{user_id}/edit/ssh_keys/delete',
45
46 }[name].format(**kwargs)
47
48 if params:
49 base_url = '{}?{}'.format(base_url, urllib.parse.urlencode(params))
50 return base_url
51
52
53 31 class TestAdminUsersSshKeysView(TestController):
54 32 INVALID_KEY = """\
55 33 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDk+77sjDzVeB6vevJsuZds1iNU5
@@ -21,25 +21,10 b' import pytest'
21 21 from rhodecode.lib.ext_json import json
22 22 from rhodecode.model.auth_token import AuthTokenModel
23 23 from rhodecode.model.db import Session, FileStore, Repository, User
24 from rhodecode.tests import TestController
25 24 from rhodecode.apps.file_store import utils, config_keys
26 25
27
28 def route_path(name, params=None, **kwargs):
29 import urllib.request
30 import urllib.parse
31 import urllib.error
32
33 base_url = {
34 'upload_file': '/_file_store/upload',
35 'download_file': '/_file_store/download/{fid}',
36 'download_file_by_token': '/_file_store/token-download/{_auth_token}/{fid}'
37
38 }[name].format(**kwargs)
39
40 if params:
41 base_url = '{}?{}'.format(base_url, urllib.parse.urlencode(params))
42 return base_url
26 from rhodecode.tests import TestController
27 from rhodecode.tests.routes import route_path
43 28
44 29
45 30 class TestFileStoreViews(TestController):
@@ -26,31 +26,7 b' from rhodecode.model.meta import Session'
26 26 from rhodecode.tests import (
27 27 TEST_USER_ADMIN_LOGIN, TEST_USER_REGULAR_LOGIN, TEST_USER_REGULAR_PASS,
28 28 TestController, assert_session_flash)
29
30
31 def route_path(name, params=None, **kwargs):
32 import urllib.parse
33 import urllib.error
34 from rhodecode.apps._base import ADMIN_PREFIX
35
36 base_url = {
37 'gists_show': ADMIN_PREFIX + '/gists',
38 'gists_new': ADMIN_PREFIX + '/gists/new',
39 'gists_create': ADMIN_PREFIX + '/gists/create',
40 'gist_show': ADMIN_PREFIX + '/gists/{gist_id}',
41 'gist_delete': ADMIN_PREFIX + '/gists/{gist_id}/delete',
42 'gist_edit': ADMIN_PREFIX + '/gists/{gist_id}/edit',
43 'gist_edit_check_revision': ADMIN_PREFIX + '/gists/{gist_id}/edit/check_revision',
44 'gist_update': ADMIN_PREFIX + '/gists/{gist_id}/update',
45 'gist_show_rev': ADMIN_PREFIX + '/gists/{gist_id}/rev/{revision}',
46 'gist_show_formatted': ADMIN_PREFIX + '/gists/{gist_id}/rev/{revision}/{format}',
47 'gist_show_formatted_path': ADMIN_PREFIX + '/gists/{gist_id}/rev/{revision}/{format}/{f_path}',
48
49 }[name].format(**kwargs)
50
51 if params:
52 base_url = '{}?{}'.format(base_url, urllib.parse.urlencode(params))
53 return base_url
29 from rhodecode.tests.routes import route_path
54 30
55 31
56 32 class GistUtility(object):
@@ -19,8 +19,6 b''
19 19 import pytest
20 20
21 21 from . import assert_and_get_main_filter_content
22 from rhodecode.tests import TestController, TEST_USER_ADMIN_LOGIN
23 from rhodecode.tests.fixture import Fixture
24 22
25 23 from rhodecode.lib.utils import map_groups
26 24 from rhodecode.lib.ext_json import json
@@ -28,21 +26,11 b' from rhodecode.model.repo import RepoMod'
28 26 from rhodecode.model.repo_group import RepoGroupModel
29 27 from rhodecode.model.db import Session, Repository, RepoGroup
30 28
31 fixture = Fixture()
32
33
34 def route_path(name, params=None, **kwargs):
35 import urllib.request
36 import urllib.parse
37 import urllib.error
29 from rhodecode.tests import TestController, TEST_USER_ADMIN_LOGIN
30 from rhodecode.tests.fixture import Fixture
31 from rhodecode.tests.routes import route_path
38 32
39 base_url = {
40 'goto_switcher_data': '/_goto_data',
41 }[name].format(**kwargs)
42
43 if params:
44 base_url = '{}?{}'.format(base_url, urllib.parse.urlencode(params))
45 return base_url
33 fixture = Fixture()
46 34
47 35
48 36 class TestGotoSwitcherData(TestController):
@@ -17,29 +17,17 b''
17 17 # and proprietary license terms, please see https://rhodecode.com/licenses/
18 18
19 19 from . import assert_and_get_repo_list_content
20 from rhodecode.tests import TestController
21 from rhodecode.tests.fixture import Fixture
20
22 21 from rhodecode.model.db import Repository
23 22 from rhodecode.lib.ext_json import json
24 23
24 from rhodecode.tests import TestController
25 from rhodecode.tests.fixture import Fixture
26 from rhodecode.tests.routes import route_path
25 27
26 28 fixture = Fixture()
27 29
28 30
29 def route_path(name, params=None, **kwargs):
30 import urllib.request
31 import urllib.parse
32 import urllib.error
33
34 base_url = {
35 'repo_list_data': '/_repos',
36 }[name].format(**kwargs)
37
38 if params:
39 base_url = '{}?{}'.format(base_url, urllib.parse.urlencode(params))
40 return base_url
41
42
43 31 class TestRepoListData(TestController):
44 32
45 33 def test_returns_list_of_repos_and_groups(self, xhr_header):
@@ -17,28 +17,15 b''
17 17 # and proprietary license terms, please see https://rhodecode.com/licenses/
18 18 import pytest
19 19
20 from rhodecode.lib.ext_json import json
21
20 22 from rhodecode.tests import TestController
21 23 from rhodecode.tests.fixture import Fixture
22 from rhodecode.lib.ext_json import json
24 from rhodecode.tests.routes import route_path
23 25
24 26 fixture = Fixture()
25 27
26 28
27 def route_path(name, params=None, **kwargs):
28 import urllib.request
29 import urllib.parse
30 import urllib.error
31
32 base_url = {
33 'user_autocomplete_data': '/_users',
34 'user_group_autocomplete_data': '/_user_groups'
35 }[name].format(**kwargs)
36
37 if params:
38 base_url = '{}?{}'.format(base_url, urllib.parse.urlencode(params))
39 return base_url
40
41
42 29 class TestUserAutocompleteData(TestController):
43 30
44 31 def test_returns_list_of_users(self, user_util, xhr_header):
@@ -37,29 +37,15 b''
37 37
38 38 import pytest
39 39
40 from rhodecode.lib.ext_json import json
41
40 42 from rhodecode.tests import TestController
41 43 from rhodecode.tests.fixture import Fixture
42 from rhodecode.lib.ext_json import json
43
44 from rhodecode.tests.routes import route_path
44 45
45 46 fixture = Fixture()
46 47
47 48
48 def route_path(name, params=None, **kwargs):
49 import urllib.request
50 import urllib.parse
51 import urllib.error
52
53 base_url = {
54 'user_autocomplete_data': '/_users',
55 'user_group_autocomplete_data': '/_user_groups'
56 }[name].format(**kwargs)
57
58 if params:
59 base_url = '{}?{}'.format(base_url, urllib.parse.urlencode(params))
60 return base_url
61
62
63 49 class TestUserGroupAutocompleteData(TestController):
64 50
65 51 def test_returns_list_of_user_groups(self, user_util, xhr_header):
@@ -22,23 +22,13 b' import pytest'
22 22 import rhodecode
23 23 from rhodecode.model.db import Repository, RepoGroup, User
24 24 from rhodecode.model.meta import Session
25 from rhodecode.model.repo import RepoModel
26 from rhodecode.model.repo_group import RepoGroupModel
27 25 from rhodecode.model.settings import SettingsModel
28 26 from rhodecode.tests import TestController
29 27 from rhodecode.tests.fixture import Fixture
30 from rhodecode.lib import helpers as h
31
32 fixture = Fixture()
28 from rhodecode.tests.routes import route_path
33 29
34 30
35 def route_path(name, **kwargs):
36 return {
37 'home': '/',
38 'main_page_repos_data': '/_home_repos',
39 'main_page_repo_groups_data': '/_home_repo_groups',
40 'repo_group_home': '/{repo_group_name}'
41 }[name].format(**kwargs)
31 fixture = Fixture()
42 32
43 33
44 34 class TestHomeController(TestController):
@@ -22,30 +22,10 b' import datetime'
22 22 import pytest
23 23
24 24 from rhodecode.apps._base import ADMIN_PREFIX
25 from rhodecode.tests import TestController
26 25 from rhodecode.model.db import UserFollowing, Repository
27 26
28
29 def route_path(name, params=None, **kwargs):
30 import urllib.request
31 import urllib.parse
32 import urllib.error
33
34 base_url = {
35 'journal': ADMIN_PREFIX + '/journal',
36 'journal_rss': ADMIN_PREFIX + '/journal/rss',
37 'journal_atom': ADMIN_PREFIX + '/journal/atom',
38 'journal_public': ADMIN_PREFIX + '/public_journal',
39 'journal_public_atom': ADMIN_PREFIX + '/public_journal/atom',
40 'journal_public_atom_old': ADMIN_PREFIX + '/public_journal_atom',
41 'journal_public_rss': ADMIN_PREFIX + '/public_journal/rss',
42 'journal_public_rss_old': ADMIN_PREFIX + '/public_journal_rss',
43 'toggle_following': ADMIN_PREFIX + '/toggle_following',
44 }[name].format(**kwargs)
45
46 if params:
47 base_url = '{}?{}'.format(base_url, urllib.parse.urlencode(params))
48 return base_url
27 from rhodecode.tests import TestController
28 from rhodecode.tests.routes import route_path
49 29
50 30
51 31 class TestJournalViews(TestController):
@@ -21,50 +21,24 b' import urllib.parse'
21 21 import mock
22 22 import pytest
23 23
24 from rhodecode.tests import (
25 assert_session_flash, HG_REPO, TEST_USER_ADMIN_LOGIN,
26 no_newline_id_generator)
27 from rhodecode.tests.fixture import Fixture
24
28 25 from rhodecode.lib.auth import check_password
29 26 from rhodecode.lib import helpers as h
30 27 from rhodecode.model.auth_token import AuthTokenModel
31 28 from rhodecode.model.db import User, Notification, UserApiKeys
32 29 from rhodecode.model.meta import Session
33 30
31 from rhodecode.tests import (
32 assert_session_flash, HG_REPO, TEST_USER_ADMIN_LOGIN,
33 no_newline_id_generator)
34 from rhodecode.tests.fixture import Fixture
35 from rhodecode.tests.routes import route_path
36
34 37 fixture = Fixture()
35 38
36 39 whitelist_view = ['RepoCommitsView:repo_commit_raw']
37 40
38 41
39 def route_path(name, params=None, **kwargs):
40 import urllib.request
41 import urllib.parse
42 import urllib.error
43 from rhodecode.apps._base import ADMIN_PREFIX
44
45 base_url = {
46 'login': ADMIN_PREFIX + '/login',
47 'logout': ADMIN_PREFIX + '/logout',
48 'register': ADMIN_PREFIX + '/register',
49 'reset_password':
50 ADMIN_PREFIX + '/password_reset',
51 'reset_password_confirmation':
52 ADMIN_PREFIX + '/password_reset_confirmation',
53
54 'admin_permissions_application':
55 ADMIN_PREFIX + '/permissions/application',
56 'admin_permissions_application_update':
57 ADMIN_PREFIX + '/permissions/application/update',
58
59 'repo_commit_raw': '/{repo_name}/raw-changeset/{commit_id}'
60
61 }[name].format(**kwargs)
62
63 if params:
64 base_url = '{}?{}'.format(base_url, urllib.parse.urlencode(params))
65 return base_url
66
67
68 42 @pytest.mark.usefixtures('app')
69 43 class TestLoginController(object):
70 44 destroy_users = set()
@@ -24,34 +24,10 b' from rhodecode.tests import ('
24 24 TEST_USER_ADMIN_LOGIN, TEST_USER_ADMIN_PASS)
25 25 from rhodecode.tests.fixture import Fixture
26 26 from rhodecode.tests.utils import AssertResponse
27
28 fixture = Fixture()
27 from rhodecode.tests.routes import route_path
29 28
30 29
31 def route_path(name, params=None, **kwargs):
32 import urllib.request
33 import urllib.parse
34 import urllib.error
35 from rhodecode.apps._base import ADMIN_PREFIX
36
37 base_url = {
38 'login': ADMIN_PREFIX + '/login',
39 'logout': ADMIN_PREFIX + '/logout',
40 'register': ADMIN_PREFIX + '/register',
41 'reset_password':
42 ADMIN_PREFIX + '/password_reset',
43 'reset_password_confirmation':
44 ADMIN_PREFIX + '/password_reset_confirmation',
45
46 'admin_permissions_application':
47 ADMIN_PREFIX + '/permissions/application',
48 'admin_permissions_application_update':
49 ADMIN_PREFIX + '/permissions/application/update',
50 }[name].format(**kwargs)
51
52 if params:
53 base_url = '{}?{}'.format(base_url, urllib.parse.urlencode(params))
54 return base_url
30 fixture = Fixture()
55 31
56 32
57 33 class TestPasswordReset(TestController):
@@ -21,23 +21,12 b' import pytest'
21 21 from rhodecode.apps._base import ADMIN_PREFIX
22 22 from rhodecode.model.db import User
23 23 from rhodecode.tests import (
24 TestController, route_path_generator, assert_session_flash)
24 TestController, assert_session_flash)
25 25 from rhodecode.tests.fixture import Fixture
26 from rhodecode.tests.utils import AssertResponse
27
28 fixture = Fixture()
26 from rhodecode.tests.routes import route_path
29 27
30 28
31 def route_path(name, params=None, **kwargs):
32 url_defs = {
33 'my_account_auth_tokens':
34 ADMIN_PREFIX + '/my_account/auth_tokens',
35 'my_account_auth_tokens_add':
36 ADMIN_PREFIX + '/my_account/auth_tokens/new',
37 'my_account_auth_tokens_delete':
38 ADMIN_PREFIX + '/my_account/auth_tokens/delete',
39 }
40 return route_path_generator(url_defs, name=name, params=params, **kwargs)
29 fixture = Fixture()
41 30
42 31
43 32 class TestMyAccountAuthTokens(TestController):
@@ -39,25 +39,7 b' import pytest'
39 39
40 40 from rhodecode.model.db import User
41 41 from rhodecode.tests import TestController, assert_session_flash
42 from rhodecode.lib import helpers as h
43
44
45 def route_path(name, params=None, **kwargs):
46 import urllib.request
47 import urllib.parse
48 import urllib.error
49 from rhodecode.apps._base import ADMIN_PREFIX
50
51 base_url = {
52 'my_account_edit': ADMIN_PREFIX + '/my_account/edit',
53 'my_account_update': ADMIN_PREFIX + '/my_account/update',
54 'my_account_pullrequests': ADMIN_PREFIX + '/my_account/pull_requests',
55 'my_account_pullrequests_data': ADMIN_PREFIX + '/my_account/pull_requests/data',
56 }[name].format(**kwargs)
57
58 if params:
59 base_url = '{}?{}'.format(base_url, urllib.parse.urlencode(params))
60 return base_url
42 from rhodecode.tests.routes import route_path
61 43
62 44
63 45 class TestMyAccountEdit(TestController):
@@ -24,19 +24,10 b' from rhodecode.tests import ('
24 24 TestController, TEST_USER_ADMIN_LOGIN, TEST_USER_REGULAR_EMAIL,
25 25 assert_session_flash, TEST_USER_REGULAR_PASS)
26 26 from rhodecode.tests.fixture import Fixture
27
28 fixture = Fixture()
27 from rhodecode.tests.routes import route_path
29 28
30 29
31 def route_path(name, **kwargs):
32 return {
33 'my_account_emails':
34 ADMIN_PREFIX + '/my_account/emails',
35 'my_account_emails_add':
36 ADMIN_PREFIX + '/my_account/emails/new',
37 'my_account_emails_delete':
38 ADMIN_PREFIX + '/my_account/emails/delete',
39 }[name].format(**kwargs)
30 fixture = Fixture()
40 31
41 32
42 33 class TestMyAccountEmails(TestController):
@@ -18,40 +18,19 b''
18 18
19 19 import pytest
20 20
21 from rhodecode.apps._base import ADMIN_PREFIX
22 21 from rhodecode.tests import (
23 22 TestController, TEST_USER_REGULAR_LOGIN, TEST_USER_REGULAR_PASS,
24 23 TEST_USER_ADMIN_LOGIN, TEST_USER_ADMIN_PASS)
25 24 from rhodecode.tests.fixture import Fixture
25 from rhodecode.tests.routes import route_path
26 26
27 27 from rhodecode.model.db import Notification, User
28 from rhodecode.model.user import UserModel
29 28 from rhodecode.model.notification import NotificationModel
30 29 from rhodecode.model.meta import Session
31 30
32 31 fixture = Fixture()
33 32
34 33
35 def route_path(name, params=None, **kwargs):
36 import urllib.request
37 import urllib.parse
38 import urllib.error
39 from rhodecode.apps._base import ADMIN_PREFIX
40
41 base_url = {
42 'notifications_show_all': ADMIN_PREFIX + '/notifications',
43 'notifications_mark_all_read': ADMIN_PREFIX + '/notifications_mark_all_read',
44 'notifications_show': ADMIN_PREFIX + '/notifications/{notification_id}',
45 'notifications_update': ADMIN_PREFIX + '/notifications/{notification_id}/update',
46 'notifications_delete': ADMIN_PREFIX + '/notifications/{notification_id}/delete',
47
48 }[name].format(**kwargs)
49
50 if params:
51 base_url = '{}?{}'.format(base_url, urllib.parse.urlencode(params))
52 return base_url
53
54
55 34 class TestNotificationsController(TestController):
56 35
57 36 def teardown_method(self, method):
@@ -27,20 +27,11 b' from rhodecode.model.meta import Session'
27 27 from rhodecode.model.user import UserModel
28 28 from rhodecode.tests import assert_session_flash
29 29 from rhodecode.tests.fixture import Fixture, TestController, error_function
30 from rhodecode.tests.routes import route_path
30 31
31 32 fixture = Fixture()
32 33
33 34
34 def route_path(name, **kwargs):
35 return {
36 'home': '/',
37 'my_account_password':
38 ADMIN_PREFIX + '/my_account/password',
39 'my_account_password_update':
40 ADMIN_PREFIX + '/my_account/password/update',
41 }[name].format(**kwargs)
42
43
44 35 test_user_1 = 'testme'
45 36 test_user_1_password = '0jd83nHNS/d23n'
46 37
@@ -17,24 +17,15 b''
17 17 # RhodeCode Enterprise Edition, including its added features, Support services,
18 18 # and proprietary license terms, please see https://rhodecode.com/licenses/
19 19
20 import pytest
21
22 from rhodecode.apps._base import ADMIN_PREFIX
23 20 from rhodecode.tests import (
24 21 TestController, TEST_USER_ADMIN_LOGIN,
25 22 TEST_USER_REGULAR_LOGIN, TEST_USER_REGULAR_PASS)
26 23 from rhodecode.tests.fixture import Fixture
24 from rhodecode.tests.routes import route_path
27 25
28 26 fixture = Fixture()
29 27
30 28
31 def route_path(name, **kwargs):
32 return {
33 'my_account':
34 ADMIN_PREFIX + '/my_account/profile',
35 }[name].format(**kwargs)
36
37
38 29 class TestMyAccountProfile(TestController):
39 30
40 31 def test_my_account(self):
@@ -17,31 +17,14 b''
17 17 # RhodeCode Enterprise Edition, including its added features, Support services,
18 18 # and proprietary license terms, please see https://rhodecode.com/licenses/
19 19
20 import pytest
21
22 from rhodecode.apps._base import ADMIN_PREFIX
23 from rhodecode.model.db import User, UserEmailMap, Repository, UserFollowing
24 from rhodecode.tests import (
25 TestController, TEST_USER_ADMIN_LOGIN, TEST_USER_REGULAR_EMAIL,
26 assert_session_flash)
20 from rhodecode.model.db import User, Repository, UserFollowing
21 from rhodecode.tests import TestController, TEST_USER_ADMIN_LOGIN
27 22 from rhodecode.tests.fixture import Fixture
23 from rhodecode.tests.routes import route_path
28 24
29 25 fixture = Fixture()
30 26
31 27
32 def route_path(name, **kwargs):
33 return {
34 'my_account_repos':
35 ADMIN_PREFIX + '/my_account/repos',
36 'my_account_watched':
37 ADMIN_PREFIX + '/my_account/watched',
38 'my_account_perms':
39 ADMIN_PREFIX + '/my_account/perms',
40 'my_account_notifications':
41 ADMIN_PREFIX + '/my_account/notifications',
42 }[name].format(**kwargs)
43
44
45 28 class TestMyAccountSimpleViews(TestController):
46 29
47 30 def test_my_account_my_repos(self, autologin_user):
@@ -17,38 +17,16 b''
17 17 # RhodeCode Enterprise Edition, including its added features, Support services,
18 18 # and proprietary license terms, please see https://rhodecode.com/licenses/
19 19
20 import pytest
21 20
22 21 from rhodecode.model.db import User, UserSshKeys
23 22
24 23 from rhodecode.tests import TestController, assert_session_flash
25 24 from rhodecode.tests.fixture import Fixture
25 from rhodecode.tests.routes import route_path
26 26
27 27 fixture = Fixture()
28 28
29 29
30 def route_path(name, params=None, **kwargs):
31 import urllib.request
32 import urllib.parse
33 import urllib.error
34 from rhodecode.apps._base import ADMIN_PREFIX
35
36 base_url = {
37 'my_account_ssh_keys':
38 ADMIN_PREFIX + '/my_account/ssh_keys',
39 'my_account_ssh_keys_generate':
40 ADMIN_PREFIX + '/my_account/ssh_keys/generate',
41 'my_account_ssh_keys_add':
42 ADMIN_PREFIX + '/my_account/ssh_keys/new',
43 'my_account_ssh_keys_delete':
44 ADMIN_PREFIX + '/my_account/ssh_keys/delete',
45 }[name].format(**kwargs)
46
47 if params:
48 base_url = '{}?{}'.format(base_url, urllib.parse.urlencode(params))
49 return base_url
50
51
52 30 class TestMyAccountSshKeysView(TestController):
53 31 INVALID_KEY = """\
54 32 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDk+77sjDzVeB6vevJsuZds1iNU5
@@ -19,23 +19,7 b''
19 19 import pytest
20 20
21 21 from rhodecode.tests import assert_session_flash
22
23
24 def route_path(name, params=None, **kwargs):
25 import urllib.request
26 import urllib.parse
27 import urllib.error
28
29 base_url = {
30 'edit_repo_group_advanced':
31 '/{repo_group_name}/_settings/advanced',
32 'edit_repo_group_advanced_delete':
33 '/{repo_group_name}/_settings/advanced/delete',
34 }[name].format(**kwargs)
35
36 if params:
37 base_url = '{}?{}'.format(base_url, urllib.parse.urlencode(params))
38 return base_url
22 from rhodecode.tests.routes import route_path
39 23
40 24
41 25 @pytest.mark.usefixtures("app")
@@ -19,23 +19,7 b''
19 19 import pytest
20 20
21 21 from rhodecode.tests.utils import permission_update_data_generator
22
23
24 def route_path(name, params=None, **kwargs):
25 import urllib.request
26 import urllib.parse
27 import urllib.error
28
29 base_url = {
30 'edit_repo_group_perms':
31 '/{repo_group_name:}/_settings/permissions',
32 'edit_repo_group_perms_update':
33 '/{repo_group_name}/_settings/permissions/update',
34 }[name].format(**kwargs)
35
36 if params:
37 base_url = '{}?{}'.format(base_url, urllib.parse.urlencode(params))
38 return base_url
22 from rhodecode.tests.routes import route_path
39 23
40 24
41 25 @pytest.mark.usefixtures("app")
@@ -20,21 +20,8 b''
20 20 import pytest
21 21
22 22 from rhodecode.tests import assert_session_flash
23
24
25 def route_path(name, params=None, **kwargs):
26 import urllib.request
27 import urllib.parse
28 import urllib.error
23 from rhodecode.tests.routes import route_path
29 24
30 base_url = {
31 'edit_repo_group': '/{repo_group_name}/_edit',
32 # Update is POST to the above url
33 }[name].format(**kwargs)
34
35 if params:
36 base_url = '{}?{}'.format(base_url, urllib.parse.urlencode(params))
37 return base_url
38 25
39 26
40 27 @pytest.mark.usefixtures("app")
@@ -17,22 +17,7 b''
17 17 # and proprietary license terms, please see https://rhodecode.com/licenses/
18 18
19 19 import pytest
20 from rhodecode.model.db import Repository
21
22
23 def route_path(name, params=None, **kwargs):
24 import urllib.request
25 import urllib.parse
26 import urllib.error
27
28 base_url = {
29 'pullrequest_show_all': '/{repo_name}/pull-request',
30 'pullrequest_show_all_data': '/{repo_name}/pull-request-data',
31 }[name].format(**kwargs)
32
33 if params:
34 base_url = '{}?{}'.format(base_url, urllib.parse.urlencode(params))
35 return base_url
20 from rhodecode.tests.routes import route_path
36 21
37 22
38 23 @pytest.mark.backends("git", "hg")
@@ -18,20 +18,8 b''
18 18
19 19 import pytest
20 20 from rhodecode.model.db import Repository
21
22
23 def route_path(name, params=None, **kwargs):
24 import urllib.request
25 import urllib.parse
26 import urllib.error
21 from rhodecode.tests.routes import route_path
27 22
28 base_url = {
29 'bookmarks_home': '/{repo_name}/bookmarks',
30 }[name].format(**kwargs)
31
32 if params:
33 base_url = '{}?{}'.format(base_url, urllib.parse.urlencode(params))
34 return base_url
35 23
36 24
37 25 @pytest.mark.usefixtures('autologin_user', 'app')
@@ -18,20 +18,7 b''
18 18
19 19 import pytest
20 20 from rhodecode.model.db import Repository
21
22
23 def route_path(name, params=None, **kwargs):
24 import urllib.request
25 import urllib.parse
26 import urllib.error
27
28 base_url = {
29 'branches_home': '/{repo_name}/branches',
30 }[name].format(**kwargs)
31
32 if params:
33 base_url = '{}?{}'.format(base_url, urllib.parse.urlencode(params))
34 return base_url
21 from rhodecode.tests.routes import route_path
35 22
36 23
37 24 @pytest.mark.usefixtures('autologin_user', 'app')
@@ -22,25 +22,10 b' import pytest'
22 22
23 23 from rhodecode.apps.repository.views.repo_changelog import DEFAULT_CHANGELOG_SIZE
24 24 from rhodecode.tests import TestController
25
26 MATCH_HASH = re.compile(r'<span class="commit_hash">r(\d+):[\da-f]+</span>')
25 from rhodecode.tests.routes import route_path
27 26
28 27
29 def route_path(name, params=None, **kwargs):
30 import urllib.request
31 import urllib.parse
32 import urllib.error
33
34 base_url = {
35 'repo_changelog': '/{repo_name}/changelog',
36 'repo_commits': '/{repo_name}/commits',
37 'repo_commits_file': '/{repo_name}/commits/{commit_id}/{f_path}',
38 'repo_commits_elements': '/{repo_name}/commits_elements',
39 }[name].format(**kwargs)
40
41 if params:
42 base_url = '{}?{}'.format(base_url, urllib.parse.urlencode(params))
43 return base_url
28 MATCH_HASH = re.compile(r'<span class="commit_hash">r(\d+):[\da-f]+</span>')
44 29
45 30
46 31 def assert_commits_on_page(response, indexes):
@@ -19,29 +19,12 b''
19 19 import pytest
20 20
21 21 from rhodecode.tests import TestController
22
22 from rhodecode.tests.routes import route_path
23 23 from rhodecode.model.db import ChangesetComment, Notification
24 24 from rhodecode.model.meta import Session
25 25 from rhodecode.lib import helpers as h
26 26
27 27
28 def route_path(name, params=None, **kwargs):
29 import urllib.request
30 import urllib.parse
31 import urllib.error
32
33 base_url = {
34 'repo_commit': '/{repo_name}/changeset/{commit_id}',
35 'repo_commit_comment_create': '/{repo_name}/changeset/{commit_id}/comment/create',
36 'repo_commit_comment_preview': '/{repo_name}/changeset/{commit_id}/comment/preview',
37 'repo_commit_comment_delete': '/{repo_name}/changeset/{commit_id}/comment/{comment_id}/delete',
38 'repo_commit_comment_edit': '/{repo_name}/changeset/{commit_id}/comment/{comment_id}/edit',
39 }[name].format(**kwargs)
40
41 if params:
42 base_url = '{}?{}'.format(base_url, urllib.parse.urlencode(params))
43 return base_url
44
45 28
46 29 @pytest.mark.backends("git", "hg", "svn")
47 30 class TestRepoCommitCommentsView(TestController):
@@ -21,27 +21,7 b' import pytest'
21 21
22 22 from rhodecode.apps.repository.tests.test_repo_compare import ComparePage
23 23 from rhodecode.lib.helpers import _shorten_commit_id
24
25
26 def route_path(name, params=None, **kwargs):
27 import urllib.request
28 import urllib.parse
29 import urllib.error
30
31 base_url = {
32 'repo_commit': '/{repo_name}/changeset/{commit_id}',
33 'repo_commit_children': '/{repo_name}/changeset_children/{commit_id}',
34 'repo_commit_parents': '/{repo_name}/changeset_parents/{commit_id}',
35 'repo_commit_raw': '/{repo_name}/changeset-diff/{commit_id}',
36 'repo_commit_patch': '/{repo_name}/changeset-patch/{commit_id}',
37 'repo_commit_download': '/{repo_name}/changeset-download/{commit_id}',
38 'repo_commit_data': '/{repo_name}/changeset-data/{commit_id}',
39 'repo_compare': '/{repo_name}/compare/{source_ref_type}@{source_ref}...{target_ref_type}@{target_ref}',
40 }[name].format(**kwargs)
41
42 if params:
43 base_url = '{}?{}'.format(base_url, urllib.parse.urlencode(params))
44 return base_url
24 from rhodecode.tests.routes import route_path
45 25
46 26
47 27 @pytest.mark.usefixtures("app")
@@ -24,21 +24,7 b' import lxml.html'
24 24 from rhodecode.lib.vcs.exceptions import RepositoryRequirementError
25 25 from rhodecode.tests import assert_session_flash
26 26 from rhodecode.tests.utils import AssertResponse, commit_change
27
28
29 def route_path(name, params=None, **kwargs):
30 import urllib.request
31 import urllib.parse
32 import urllib.error
33
34 base_url = {
35 'repo_compare_select': '/{repo_name}/compare',
36 'repo_compare': '/{repo_name}/compare/{source_ref_type}@{source_ref}...{target_ref_type}@{target_ref}',
37 }[name].format(**kwargs)
38
39 if params:
40 base_url = '{}?{}'.format(base_url, urllib.parse.urlencode(params))
41 return base_url
27 from rhodecode.tests.routes import route_path
42 28
43 29
44 30 @pytest.mark.usefixtures("autologin_user", "app")
@@ -165,7 +151,7 b' class TestCompareView(object):'
165 151 compare_page.target_source_are_disabled()
166 152
167 153 @pytest.mark.xfail_backends("svn", reason="Depends on branch support")
168 def test_compare_forks_on_branch_extra_commits_origin_has_incomming(self, backend):
154 def test_compare_forks_on_branch_extra_commits_origin_has_incoming(self, backend):
169 155 repo1 = backend.create_repo()
170 156
171 157 # commit something !
@@ -203,13 +189,13 b' class TestCompareView(object):'
203 189 params=dict(merge='1', target_repo=repo2.repo_name),
204 190 ))
205 191
206 response.mustcontain('%s@%s' % (repo1.repo_name, commit_id2))
207 response.mustcontain('%s@%s' % (repo2.repo_name, commit_id1))
192 response.mustcontain(f'{repo1.repo_name}@{commit_id2}')
193 response.mustcontain(f'{repo2.repo_name}@{commit_id1}')
208 194
209 195 compare_page = ComparePage(response)
210 196 compare_page.contains_change_summary(1, 2, 0)
211 197 compare_page.contains_commits([commit1, commit2])
212 anchor = 'a_c-{}-826e8142e6ba'.format(commit0.short_id)
198 anchor = f'a_c-{commit0.short_id}-826e8142e6ba'
213 199 compare_page.contains_file_links_and_anchors([('file1', anchor), ])
214 200
215 201 # Swap is removed when comparing branches since it's a PR feature and
@@ -20,21 +20,7 b''
20 20 import pytest
21 21
22 22 from .test_repo_compare import ComparePage
23
24
25 def route_path(name, params=None, **kwargs):
26 import urllib.request
27 import urllib.parse
28 import urllib.error
29
30 base_url = {
31 'repo_compare_select': '/{repo_name}/compare',
32 'repo_compare': '/{repo_name}/compare/{source_ref_type}@{source_ref}...{target_ref_type}@{target_ref}',
33 }[name].format(**kwargs)
34
35 if params:
36 base_url = '{}?{}'.format(base_url, urllib.parse.urlencode(params))
37 return base_url
23 from rhodecode.tests.routes import route_path
38 24
39 25
40 26 @pytest.mark.usefixtures("autologin_user", "app")
@@ -24,23 +24,10 b' from rhodecode.lib.vcs import nodes'
24 24 from rhodecode.lib.vcs.backends.base import EmptyCommit
25 25 from rhodecode.tests.fixture import Fixture
26 26 from rhodecode.tests.utils import commit_change
27
28 fixture = Fixture()
27 from rhodecode.tests.routes import route_path
29 28
30 29
31 def route_path(name, params=None, **kwargs):
32 import urllib.request
33 import urllib.parse
34 import urllib.error
35
36 base_url = {
37 'repo_compare_select': '/{repo_name}/compare',
38 'repo_compare': '/{repo_name}/compare/{source_ref_type}@{source_ref}...{target_ref_type}@{target_ref}',
39 }[name].format(**kwargs)
40
41 if params:
42 base_url = '{}?{}'.format(base_url, urllib.parse.urlencode(params))
43 return base_url
30 fixture = Fixture()
44 31
45 32
46 33 @pytest.mark.usefixtures("autologin_user", "app")
@@ -20,23 +20,7 b''
20 20 import pytest
21 21 from rhodecode.model.auth_token import AuthTokenModel
22 22 from rhodecode.tests import TestController
23
24
25 def route_path(name, params=None, **kwargs):
26 import urllib.request
27 import urllib.parse
28 import urllib.error
29
30 base_url = {
31 'rss_feed_home': '/{repo_name}/feed-rss',
32 'atom_feed_home': '/{repo_name}/feed-atom',
33 'rss_feed_home_old': '/{repo_name}/feed/rss',
34 'atom_feed_home_old': '/{repo_name}/feed/atom',
35 }[name].format(**kwargs)
36
37 if params:
38 base_url = '{}?{}'.format(base_url, urllib.parse.urlencode(params))
39 return base_url
23 from rhodecode.tests.routes import route_path
40 24
41 25
42 26 class TestFeedView(TestController):
@@ -34,6 +34,8 b' from rhodecode.model.db import Session, '
34 34
35 35 from rhodecode.tests import assert_session_flash
36 36 from rhodecode.tests.fixture import Fixture
37 from rhodecode.tests.routes import route_path
38
37 39
38 40 fixture = Fixture()
39 41
@@ -46,43 +48,6 b' def get_node_history(backend_type):'
46 48 }[backend_type]
47 49
48 50
49 def route_path(name, params=None, **kwargs):
50 import urllib.request
51 import urllib.parse
52 import urllib.error
53
54 base_url = {
55 'repo_summary': '/{repo_name}',
56 'repo_archivefile': '/{repo_name}/archive/{fname}',
57 'repo_files_diff': '/{repo_name}/diff/{f_path}',
58 'repo_files_diff_2way_redirect': '/{repo_name}/diff-2way/{f_path}',
59 'repo_files': '/{repo_name}/files/{commit_id}/{f_path}',
60 'repo_files:default_path': '/{repo_name}/files/{commit_id}/',
61 'repo_files:default_commit': '/{repo_name}/files',
62 'repo_files:rendered': '/{repo_name}/render/{commit_id}/{f_path}',
63 'repo_files:annotated': '/{repo_name}/annotate/{commit_id}/{f_path}',
64 'repo_files:annotated_previous': '/{repo_name}/annotate-previous/{commit_id}/{f_path}',
65 'repo_files_nodelist': '/{repo_name}/nodelist/{commit_id}/{f_path}',
66 'repo_file_raw': '/{repo_name}/raw/{commit_id}/{f_path}',
67 'repo_file_download': '/{repo_name}/download/{commit_id}/{f_path}',
68 'repo_file_history': '/{repo_name}/history/{commit_id}/{f_path}',
69 'repo_file_authors': '/{repo_name}/authors/{commit_id}/{f_path}',
70 'repo_files_remove_file': '/{repo_name}/remove_file/{commit_id}/{f_path}',
71 'repo_files_delete_file': '/{repo_name}/delete_file/{commit_id}/{f_path}',
72 'repo_files_edit_file': '/{repo_name}/edit_file/{commit_id}/{f_path}',
73 'repo_files_update_file': '/{repo_name}/update_file/{commit_id}/{f_path}',
74 'repo_files_add_file': '/{repo_name}/add_file/{commit_id}/{f_path}',
75 'repo_files_upload_file': '/{repo_name}/upload_file/{commit_id}/{f_path}',
76 'repo_files_create_file': '/{repo_name}/create_file/{commit_id}/{f_path}',
77 'repo_nodetree_full': '/{repo_name}/nodetree_full/{commit_id}/{f_path}',
78 'repo_nodetree_full:default_path': '/{repo_name}/nodetree_full/{commit_id}/',
79 }[name].format(**kwargs)
80
81 if params:
82 base_url = '{}?{}'.format(base_url, urllib.parse.urlencode(params))
83 return base_url
84
85
86 51 def assert_files_in_response(response, files, params):
87 52 template = (
88 53 'href="/%(repo_name)s/files/%(commit_id)s/%(name)s"')
@@ -28,27 +28,10 b' from rhodecode.model.db import Repositor'
28 28 from rhodecode.model.repo import RepoModel
29 29 from rhodecode.model.user import UserModel
30 30 from rhodecode.model.meta import Session
31
32 fixture = Fixture()
31 from rhodecode.tests.routes import route_path
33 32
34 33
35 def route_path(name, params=None, **kwargs):
36 import urllib.request
37 import urllib.parse
38 import urllib.error
39
40 base_url = {
41 'repo_summary': '/{repo_name}',
42 'repo_creating_check': '/{repo_name}/repo_creating_check',
43 'repo_fork_new': '/{repo_name}/fork',
44 'repo_fork_create': '/{repo_name}/fork/create',
45 'repo_forks_show_all': '/{repo_name}/forks',
46 'repo_forks_data': '/{repo_name}/forks/data',
47 }[name].format(**kwargs)
48
49 if params:
50 base_url = '{}?{}'.format(base_url, urllib.parse.urlencode(params))
51 return base_url
34 fixture = Fixture()
52 35
53 36
54 37 FORK_NAME = {
@@ -23,24 +23,8 b' from rhodecode.lib.hash_utils import md5'
23 23 from rhodecode.model.db import Repository
24 24 from rhodecode.model.meta import Session
25 25 from rhodecode.model.settings import SettingsModel, IssueTrackerSettingsModel
26
27
28 def route_path(name, params=None, **kwargs):
29 import urllib.request
30 import urllib.parse
31 import urllib.error
26 from rhodecode.tests.routes import route_path
32 27
33 base_url = {
34 'repo_summary': '/{repo_name}',
35 'edit_repo_issuetracker': '/{repo_name}/settings/issue_trackers',
36 'edit_repo_issuetracker_test': '/{repo_name}/settings/issue_trackers/test',
37 'edit_repo_issuetracker_delete': '/{repo_name}/settings/issue_trackers/delete',
38 'edit_repo_issuetracker_update': '/{repo_name}/settings/issue_trackers/update',
39 }[name].format(**kwargs)
40
41 if params:
42 base_url = '{}?{}'.format(base_url, urllib.parse.urlencode(params))
43 return base_url
44 28
45 29
46 30 @pytest.mark.usefixtures("app")
@@ -17,36 +17,16 b''
17 17 # RhodeCode Enterprise Edition, including its added features, Support services,
18 18 # and proprietary license terms, please see https://rhodecode.com/licenses/
19 19
20 import mock
21 20 import pytest
22 21
23 from rhodecode.lib.utils2 import str2bool
24 from rhodecode.lib.vcs.exceptions import RepositoryRequirementError
25 22 from rhodecode.model.db import Repository, UserRepoToPerm, Permission, User
26 from rhodecode.model.meta import Session
27 from rhodecode.tests import (
28 TEST_USER_ADMIN_LOGIN, TEST_USER_REGULAR_LOGIN, assert_session_flash)
23
29 24 from rhodecode.tests.fixture import Fixture
25 from rhodecode.tests.routes import route_path
30 26
31 27 fixture = Fixture()
32 28
33 29
34 def route_path(name, params=None, **kwargs):
35 import urllib.request
36 import urllib.parse
37 import urllib.error
38
39 base_url = {
40 'edit_repo_maintenance': '/{repo_name}/settings/maintenance',
41 'edit_repo_maintenance_execute': '/{repo_name}/settings/maintenance/execute',
42
43 }[name].format(**kwargs)
44
45 if params:
46 base_url = '{}?{}'.format(base_url, urllib.parse.urlencode(params))
47 return base_url
48
49
50 30 def _get_permission_for_user(user, repo):
51 31 perm = UserRepoToPerm.query()\
52 32 .filter(UserRepoToPerm.repository ==
@@ -20,21 +20,7 b''
20 20 import pytest
21 21
22 22 from rhodecode.tests.utils import permission_update_data_generator
23
24
25 def route_path(name, params=None, **kwargs):
26 import urllib.request
27 import urllib.parse
28 import urllib.error
29
30 base_url = {
31 'edit_repo_perms': '/{repo_name}/settings/permissions'
32 # update is the same url
33 }[name].format(**kwargs)
34
35 if params:
36 base_url = '{}?{}'.format(base_url, urllib.parse.urlencode(params))
37 return base_url
23 from rhodecode.tests.routes import route_path
38 24
39 25
40 26 @pytest.mark.usefixtures("app")
@@ -33,36 +33,7 b' from rhodecode.model.user import UserMod'
33 33 from rhodecode.model.comment import CommentsModel
34 34 from rhodecode.tests import (
35 35 assert_session_flash, TEST_USER_ADMIN_LOGIN, TEST_USER_REGULAR_LOGIN)
36
37
38 def route_path(name, params=None, **kwargs):
39 import urllib.request
40 import urllib.parse
41 import urllib.error
42
43 base_url = {
44 'repo_changelog': '/{repo_name}/changelog',
45 'repo_changelog_file': '/{repo_name}/changelog/{commit_id}/{f_path}',
46 'repo_commits': '/{repo_name}/commits',
47 'repo_commits_file': '/{repo_name}/commits/{commit_id}/{f_path}',
48 'pullrequest_show': '/{repo_name}/pull-request/{pull_request_id}',
49 'pullrequest_show_all': '/{repo_name}/pull-request',
50 'pullrequest_show_all_data': '/{repo_name}/pull-request-data',
51 'pullrequest_repo_refs': '/{repo_name}/pull-request/refs/{target_repo_name:.*?[^/]}',
52 'pullrequest_repo_targets': '/{repo_name}/pull-request/repo-destinations',
53 'pullrequest_new': '/{repo_name}/pull-request/new',
54 'pullrequest_create': '/{repo_name}/pull-request/create',
55 'pullrequest_update': '/{repo_name}/pull-request/{pull_request_id}/update',
56 'pullrequest_merge': '/{repo_name}/pull-request/{pull_request_id}/merge',
57 'pullrequest_delete': '/{repo_name}/pull-request/{pull_request_id}/delete',
58 'pullrequest_comment_create': '/{repo_name}/pull-request/{pull_request_id}/comment',
59 'pullrequest_comment_delete': '/{repo_name}/pull-request/{pull_request_id}/comment/{comment_id}/delete',
60 'pullrequest_comment_edit': '/{repo_name}/pull-request/{pull_request_id}/comment/{comment_id}/edit',
61 }[name].format(**kwargs)
62
63 if params:
64 base_url = '{}?{}'.format(base_url, urllib.parse.urlencode(params))
65 return base_url
36 from rhodecode.tests.routes import route_path
66 37
67 38
68 39 @pytest.mark.usefixtures('app', 'autologin_user')
@@ -27,32 +27,11 b' from rhodecode.model.meta import Session'
27 27 from rhodecode.tests import (
28 28 TEST_USER_ADMIN_LOGIN, TEST_USER_REGULAR_LOGIN, assert_session_flash)
29 29 from rhodecode.tests.fixture import Fixture
30 from rhodecode.tests.routes import route_path
30 31
31 32 fixture = Fixture()
32 33
33 34
34 def route_path(name, params=None, **kwargs):
35 import urllib.request
36 import urllib.parse
37 import urllib.error
38
39 base_url = {
40 'edit_repo': '/{repo_name}/settings',
41 'edit_repo_advanced': '/{repo_name}/settings/advanced',
42 'edit_repo_caches': '/{repo_name}/settings/caches',
43 'edit_repo_perms': '/{repo_name}/settings/permissions',
44 'edit_repo_vcs': '/{repo_name}/settings/vcs',
45 'edit_repo_issuetracker': '/{repo_name}/settings/issue_trackers',
46 'edit_repo_fields': '/{repo_name}/settings/fields',
47 'edit_repo_remote': '/{repo_name}/settings/remote',
48 'edit_repo_statistics': '/{repo_name}/settings/statistics',
49 }[name].format(**kwargs)
50
51 if params:
52 base_url = '{}?{}'.format(base_url, urllib.parse.urlencode(params))
53 return base_url
54
55
56 35 def _get_permission_for_user(user, repo):
57 36 perm = UserRepoToPerm.query()\
58 37 .filter(UserRepoToPerm.repository ==
@@ -26,32 +26,11 b' from rhodecode.tests import ('
26 26 HG_REPO, GIT_REPO, assert_session_flash, no_newline_id_generator)
27 27 from rhodecode.tests.fixture import Fixture
28 28 from rhodecode.tests.utils import repo_on_filesystem
29 from rhodecode.tests.routes import route_path
29 30
30 31 fixture = Fixture()
31 32
32 33
33 def route_path(name, params=None, **kwargs):
34 import urllib.request
35 import urllib.parse
36 import urllib.error
37
38 base_url = {
39 'repo_summary_explicit': '/{repo_name}/summary',
40 'repo_summary': '/{repo_name}',
41 'edit_repo_advanced': '/{repo_name}/settings/advanced',
42 'edit_repo_advanced_delete': '/{repo_name}/settings/advanced/delete',
43 'edit_repo_advanced_archive': '/{repo_name}/settings/advanced/archive',
44 'edit_repo_advanced_fork': '/{repo_name}/settings/advanced/fork',
45 'edit_repo_advanced_locking': '/{repo_name}/settings/advanced/locking',
46 'edit_repo_advanced_journal': '/{repo_name}/settings/advanced/journal',
47
48 }[name].format(**kwargs)
49
50 if params:
51 base_url = '{}?{}'.format(base_url, urllib.parse.urlencode(params))
52 return base_url
53
54
55 34 @pytest.mark.usefixtures('autologin_user', 'app')
56 35 class TestAdminRepoSettingsAdvanced(object):
57 36
@@ -34,29 +34,12 b' from rhodecode.model.scm import ScmModel'
34 34 from rhodecode.tests import assert_session_flash
35 35 from rhodecode.tests.fixture import Fixture
36 36 from rhodecode.tests.utils import AssertResponse, repo_on_filesystem
37 from rhodecode.tests.routes import route_path
37 38
38 39
39 40 fixture = Fixture()
40 41
41 42
42 def route_path(name, params=None, **kwargs):
43 import urllib.request
44 import urllib.parse
45 import urllib.error
46
47 base_url = {
48 'repo_summary': '/{repo_name}',
49 'repo_stats': '/{repo_name}/repo_stats/{commit_id}',
50 'repo_refs_data': '/{repo_name}/refs-data',
51 'repo_refs_changelog_data': '/{repo_name}/refs-data-changelog',
52 'repo_creating_check': '/{repo_name}/repo_creating_check',
53 }[name].format(**kwargs)
54
55 if params:
56 base_url = '{}?{}'.format(base_url, urllib.parse.urlencode(params))
57 return base_url
58
59
60 43 def assert_clone_url(response, server, repo, disabled=False):
61 44
62 45 response.mustcontain(
@@ -19,20 +19,7 b''
19 19
20 20 import pytest
21 21 from rhodecode.model.db import Repository
22
23
24 def route_path(name, params=None, **kwargs):
25 import urllib.request
26 import urllib.parse
27 import urllib.error
28
29 base_url = {
30 'tags_home': '/{repo_name}/tags',
31 }[name].format(**kwargs)
32
33 if params:
34 base_url = '{}?{}'.format(base_url, urllib.parse.urlencode(params))
35 return base_url
22 from rhodecode.tests.routes import route_path
36 23
37 24
38 25 @pytest.mark.usefixtures('autologin_user', 'app')
@@ -32,29 +32,11 b' from rhodecode.tests import ('
32 32 TEST_USER_REGULAR_LOGIN, TEST_USER_REGULAR_PASS)
33 33 from rhodecode.tests.fixture import Fixture
34 34 from rhodecode.tests.utils import AssertResponse
35 from rhodecode.tests.routes import route_path
35 36
36 37 fixture = Fixture()
37 38
38 39
39 def route_path(name, params=None, **kwargs):
40 import urllib.request
41 import urllib.parse
42 import urllib.error
43
44 base_url = {
45 'repo_summary': '/{repo_name}',
46 'repo_creating_check': '/{repo_name}/repo_creating_check',
47 'edit_repo': '/{repo_name}/settings',
48 'edit_repo_vcs': '/{repo_name}/settings/vcs',
49 'edit_repo_vcs_update': '/{repo_name}/settings/vcs/update',
50 'edit_repo_vcs_svn_pattern_delete': '/{repo_name}/settings/vcs/svn_pattern/delete'
51 }[name].format(**kwargs)
52
53 if params:
54 base_url = '{}?{}'.format(base_url, urllib.parse.urlencode(params))
55 return base_url
56
57
58 40 @pytest.mark.usefixtures("app")
59 41 class TestVcsSettings(object):
60 42 FORM_DATA = {
@@ -23,23 +23,7 b' import pytest'
23 23 import rhodecode
24 24 from rhodecode.model.db import Repository
25 25 from rhodecode.model.settings import SettingsModel
26 from rhodecode.tests.utils import AssertResponse
27
28
29 def route_path(name, params=None, **kwargs):
30 import urllib.request
31 import urllib.parse
32 import urllib.error
33
34 base_url = {
35 'edit_repo': '/{repo_name}/settings',
36 'edit_repo_vcs': '/{repo_name}/settings/vcs',
37 'edit_repo_vcs_update': '/{repo_name}/settings/vcs/update',
38 }[name].format(**kwargs)
39
40 if params:
41 base_url = '{}?{}'.format(base_url, urllib.parse.urlencode(params))
42 return base_url
26 from rhodecode.tests.routes import route_path
43 27
44 28
45 29 @pytest.mark.usefixtures('autologin_user', 'app')
@@ -23,20 +23,9 b' import pytest'
23 23 from whoosh import query
24 24
25 25 from rhodecode.tests import (
26 TestController, route_path_generator, HG_REPO,
26 TestController, HG_REPO,
27 27 TEST_USER_REGULAR_LOGIN, TEST_USER_REGULAR_PASS)
28 from rhodecode.tests.utils import AssertResponse
29
30
31 def route_path(name, params=None, **kwargs):
32 from rhodecode.apps._base import ADMIN_PREFIX
33 url_defs = {
34 'search':
35 ADMIN_PREFIX + '/search',
36 'search_repo':
37 '/{repo_name}/search',
38 }
39 return route_path_generator(url_defs, name=name, params=params, **kwargs)
28 from rhodecode.tests.routes import route_path
40 29
41 30
42 31 class TestSearchController(TestController):
@@ -23,35 +23,11 b' from rhodecode.tests import ('
23 23 from rhodecode.model.db import UserGroup
24 24 from rhodecode.model.meta import Session
25 25 from rhodecode.tests.fixture import Fixture
26 from rhodecode.tests.routes import route_path
26 27
27 28 fixture = Fixture()
28 29
29 30
30 def route_path(name, params=None, **kwargs):
31 import urllib.request
32 import urllib.parse
33 import urllib.error
34 from rhodecode.apps._base import ADMIN_PREFIX
35
36 base_url = {
37 'user_groups': ADMIN_PREFIX + '/user_groups',
38 'user_groups_data': ADMIN_PREFIX + '/user_groups_data',
39 'user_group_members_data': ADMIN_PREFIX + '/user_groups/{user_group_id}/members',
40 'user_groups_new': ADMIN_PREFIX + '/user_groups/new',
41 'user_groups_create': ADMIN_PREFIX + '/user_groups/create',
42 'edit_user_group': ADMIN_PREFIX + '/user_groups/{user_group_id}/edit',
43 'edit_user_group_advanced_sync': ADMIN_PREFIX + '/user_groups/{user_group_id}/edit/advanced/sync',
44 'edit_user_group_global_perms_update': ADMIN_PREFIX + '/user_groups/{user_group_id}/edit/global_permissions/update',
45 'user_groups_update': ADMIN_PREFIX + '/user_groups/{user_group_id}/update',
46 'user_groups_delete': ADMIN_PREFIX + '/user_groups/{user_group_id}/delete',
47
48 }[name].format(**kwargs)
49
50 if params:
51 base_url = '{}?{}'.format(base_url, urllib.parse.urlencode(params))
52 return base_url
53
54
55 31 class TestUserGroupsView(TestController):
56 32
57 33 def test_set_synchronization(self, user_util):
@@ -19,24 +19,7 b''
19 19 import pytest
20 20
21 21 from rhodecode.tests.utils import permission_update_data_generator
22
23
24 def route_path(name, params=None, **kwargs):
25 import urllib.request
26 import urllib.parse
27 import urllib.error
28 from rhodecode.apps._base import ADMIN_PREFIX
29
30 base_url = {
31 'edit_user_group_perms':
32 ADMIN_PREFIX + '/user_groups/{user_group_id}/edit/permissions',
33 'edit_user_group_perms_update':
34 ADMIN_PREFIX + '/user_groups/{user_group_id}/edit/permissions/update',
35 }[name].format(**kwargs)
36
37 if params:
38 base_url = '{}?{}'.format(base_url, urllib.parse.urlencode(params))
39 return base_url
22 from rhodecode.tests.routes import route_path
40 23
41 24
42 25 @pytest.mark.usefixtures("app")
@@ -19,15 +19,11 b' from rhodecode.model.user_group import U'
19 19 from rhodecode.tests import (
20 20 TestController, TEST_USER_REGULAR_LOGIN, TEST_USER_REGULAR_PASS)
21 21 from rhodecode.tests.fixture import Fixture
22 from rhodecode.tests.utils import AssertResponse
22 from rhodecode.tests.routes import route_path
23 23
24 24 fixture = Fixture()
25 25
26 26
27 def route_path(name, **kwargs):
28 return '/_profile_user_group/{user_group_name}'.format(**kwargs)
29
30
31 27 class TestUsersController(TestController):
32 28
33 29 def test_user_group_profile(self, user_util):
@@ -24,14 +24,11 b' from rhodecode.tests import ('
24 24 TEST_USER_REGULAR_LOGIN, TEST_USER_REGULAR_PASS)
25 25 from rhodecode.tests.fixture import Fixture
26 26 from rhodecode.tests.utils import AssertResponse
27 from rhodecode.tests.routes import route_path
27 28
28 29 fixture = Fixture()
29 30
30 31
31 def route_path(name, **kwargs):
32 return '/_profiles/{username}'.format(**kwargs)
33
34
35 32 class TestUsersController(TestController):
36 33
37 34 def test_user_profile(self, user_util):
@@ -258,6 +258,8 b' def error_handler(exception, request):'
258 258 '/errors/error_document.mako', {'c': c, 'h': helpers}, request=request,
259 259 response=base_response)
260 260
261 response.headers["X-RC-Exception-Id"] = str(c.exception_id)
262
261 263 statsd = request.registry.statsd
262 264 if statsd and base_response.status_code > 499:
263 265 exc_type = f"{exception.__class__.__module__}.{exception.__class__.__name__}"
@@ -22,12 +22,7 b' from rhodecode.apps._base import ADMIN_P'
22 22 from rhodecode.model.db import Integration
23 23 from rhodecode.model.meta import Session
24 24 from rhodecode.integrations import integration_type_registry
25
26
27 def route_path(name, **kwargs):
28 return {
29 'home': '/',
30 }[name].format(**kwargs)
25 from rhodecode.tests.routes import route_path
31 26
32 27
33 28 def _post_integration_test_helper(app, url, csrf_token, repo, repo_group,
@@ -12,16 +12,14 b''
12 12 ******************************************************************************/
13 13 function registerRCRoutes() {
14 14 // routes registration
15 pyroutes.register('admin_artifacts', '/_admin/artifacts', []);
16 pyroutes.register('admin_artifacts_data', '/_admin/artifacts-data', []);
17 pyroutes.register('admin_artifacts_delete', '/_admin/artifacts/%(uid)s/delete', ['uid']);
18 pyroutes.register('admin_artifacts_show_all', '/_admin/artifacts', []);
19 pyroutes.register('admin_artifacts_show_info', '/_admin/artifacts/%(uid)s', ['uid']);
20 pyroutes.register('admin_artifacts_update', '/_admin/artifacts/%(uid)s/update', ['uid']);
15 pyroutes.register('admin_artifacts', '/_admin/_admin/artifacts', []);
16 pyroutes.register('admin_artifacts_delete', '/_admin/_admin/artifacts/%(uid)s/delete', ['uid']);
17 pyroutes.register('admin_artifacts_show_all', '/_admin/_admin/artifacts', []);
18 pyroutes.register('admin_artifacts_show_info', '/_admin/_admin/artifacts/%(uid)s', ['uid']);
19 pyroutes.register('admin_artifacts_update', '/_admin/_admin/artifacts/%(uid)s/update', ['uid']);
21 20 pyroutes.register('admin_audit_log_entry', '/_admin/audit_logs/%(audit_log_id)s', ['audit_log_id']);
22 21 pyroutes.register('admin_audit_logs', '/_admin/audit_logs', []);
23 pyroutes.register('admin_automation', '/_admin/automation', []);
24 pyroutes.register('admin_automation_update', '/_admin/automation/%(entry_id)s/update', ['entry_id']);
22 pyroutes.register('admin_automation', '/_admin/_admin/automation', []);
25 23 pyroutes.register('admin_defaults_repositories', '/_admin/defaults/repositories', []);
26 24 pyroutes.register('admin_defaults_repositories_update', '/_admin/defaults/repositories/update', []);
27 25 pyroutes.register('admin_home', '/_admin', []);
@@ -29,7 +27,6 b' function registerRCRoutes() {'
29 27 pyroutes.register('admin_permissions_application_update', '/_admin/permissions/application/update', []);
30 28 pyroutes.register('admin_permissions_auth_token_access', '/_admin/permissions/auth_token_access', []);
31 29 pyroutes.register('admin_permissions_branch', '/_admin/permissions/branch', []);
32 pyroutes.register('admin_permissions_branch_update', '/_admin/permissions/branch/update', []);
33 30 pyroutes.register('admin_permissions_global', '/_admin/permissions/global', []);
34 31 pyroutes.register('admin_permissions_global_update', '/_admin/permissions/global/update', []);
35 32 pyroutes.register('admin_permissions_ips', '/_admin/permissions/ips', []);
@@ -39,8 +36,7 b' function registerRCRoutes() {'
39 36 pyroutes.register('admin_permissions_ssh_keys', '/_admin/permissions/ssh_keys', []);
40 37 pyroutes.register('admin_permissions_ssh_keys_data', '/_admin/permissions/ssh_keys/data', []);
41 38 pyroutes.register('admin_permissions_ssh_keys_update', '/_admin/permissions/ssh_keys/update', []);
42 pyroutes.register('admin_scheduler', '/_admin/scheduler', []);
43 pyroutes.register('admin_scheduler_show_tasks', '/_admin/scheduler/_tasks', []);
39 pyroutes.register('admin_scheduler', '/_admin/_admin/scheduler', []);
44 40 pyroutes.register('admin_settings', '/_admin/settings', []);
45 41 pyroutes.register('admin_settings_email', '/_admin/settings/email', []);
46 42 pyroutes.register('admin_settings_email_update', '/_admin/settings/email/update', []);
@@ -59,8 +55,6 b' function registerRCRoutes() {'
59 55 pyroutes.register('admin_settings_issuetracker_update', '/_admin/settings/issue-tracker/update', []);
60 56 pyroutes.register('admin_settings_labs', '/_admin/settings/labs', []);
61 57 pyroutes.register('admin_settings_labs_update', '/_admin/settings/labs/update', []);
62 pyroutes.register('admin_settings_license', '/_admin/settings/license', []);
63 pyroutes.register('admin_settings_license_unlock', '/_admin/settings/license_unlock', []);
64 58 pyroutes.register('admin_settings_mapping', '/_admin/settings/mapping', []);
65 59 pyroutes.register('admin_settings_mapping_update', '/_admin/settings/mapping/update', []);
66 60 pyroutes.register('admin_settings_open_source', '/_admin/settings/open_source', []);
@@ -68,12 +62,6 b' function registerRCRoutes() {'
68 62 pyroutes.register('admin_settings_process_management_data', '/_admin/settings/process_management/data', []);
69 63 pyroutes.register('admin_settings_process_management_master_signal', '/_admin/settings/process_management/master_signal', []);
70 64 pyroutes.register('admin_settings_process_management_signal', '/_admin/settings/process_management/signal', []);
71 pyroutes.register('admin_settings_scheduler_create', '/_admin/scheduler/create', []);
72 pyroutes.register('admin_settings_scheduler_delete', '/_admin/scheduler/%(schedule_id)s/delete', ['schedule_id']);
73 pyroutes.register('admin_settings_scheduler_edit', '/_admin/scheduler/%(schedule_id)s', ['schedule_id']);
74 pyroutes.register('admin_settings_scheduler_execute', '/_admin/scheduler/%(schedule_id)s/execute', ['schedule_id']);
75 pyroutes.register('admin_settings_scheduler_new', '/_admin/scheduler/new', []);
76 pyroutes.register('admin_settings_scheduler_update', '/_admin/scheduler/%(schedule_id)s/update', ['schedule_id']);
77 65 pyroutes.register('admin_settings_search', '/_admin/settings/search', []);
78 66 pyroutes.register('admin_settings_sessions', '/_admin/settings/sessions', []);
79 67 pyroutes.register('admin_settings_sessions_cleanup', '/_admin/settings/sessions/cleanup', []);
@@ -95,7 +83,6 b' function registerRCRoutes() {'
95 83 pyroutes.register('channelstream_connect', '/_admin/channelstream/connect', []);
96 84 pyroutes.register('channelstream_proxy', '/_channelstream', []);
97 85 pyroutes.register('channelstream_subscribe', '/_admin/channelstream/subscribe', []);
98 pyroutes.register('commit_draft_comments_submit', '/%(repo_name)s/changeset/%(commit_id)s/draft_comments_submit', ['repo_name', 'commit_id']);
99 86 pyroutes.register('debug_style_email', '/_admin/debug_style/email/%(email_id)s', ['email_id']);
100 87 pyroutes.register('debug_style_email_plain_rendered', '/_admin/debug_style/email-rendered/%(email_id)s', ['email_id']);
101 88 pyroutes.register('debug_style_home', '/_admin/debug_style', []);
@@ -218,8 +205,6 b' function registerRCRoutes() {'
218 205 pyroutes.register('my_account_emails', '/_admin/my_account/emails', []);
219 206 pyroutes.register('my_account_emails_add', '/_admin/my_account/emails/new', []);
220 207 pyroutes.register('my_account_emails_delete', '/_admin/my_account/emails/delete', []);
221 pyroutes.register('my_account_external_identity', '/_admin/my_account/external-identity', []);
222 pyroutes.register('my_account_external_identity_delete', '/_admin/my_account/external-identity/delete', []);
223 208 pyroutes.register('my_account_goto_bookmark', '/_admin/my_account/bookmark/%(bookmark_id)s', ['bookmark_id']);
224 209 pyroutes.register('my_account_notifications', '/_admin/my_account/notifications', []);
225 210 pyroutes.register('my_account_notifications_test_channelstream', '/_admin/my_account/test_channelstream', []);
@@ -247,7 +232,6 b' function registerRCRoutes() {'
247 232 pyroutes.register('ops_healthcheck', '/_admin/ops/status', []);
248 233 pyroutes.register('ops_ping', '/_admin/ops/ping', []);
249 234 pyroutes.register('ops_redirect_test', '/_admin/ops/redirect', []);
250 pyroutes.register('plugin_admin_chat', '/_admin/plugin_admin_chat/%(action)s', ['action']);
251 235 pyroutes.register('pull_requests_global', '/_admin/pull-request/%(pull_request_id)s', ['pull_request_id']);
252 236 pyroutes.register('pull_requests_global_0', '/_admin/pull_requests/%(pull_request_id)s', ['pull_request_id']);
253 237 pyroutes.register('pull_requests_global_1', '/_admin/pull-requests/%(pull_request_id)s', ['pull_request_id']);
@@ -257,7 +241,6 b' function registerRCRoutes() {'
257 241 pyroutes.register('pullrequest_comments', '/%(repo_name)s/pull-request/%(pull_request_id)s/comments', ['repo_name', 'pull_request_id']);
258 242 pyroutes.register('pullrequest_create', '/%(repo_name)s/pull-request/create', ['repo_name']);
259 243 pyroutes.register('pullrequest_delete', '/%(repo_name)s/pull-request/%(pull_request_id)s/delete', ['repo_name', 'pull_request_id']);
260 pyroutes.register('pullrequest_draft_comments_submit', '/%(repo_name)s/pull-request/%(pull_request_id)s/draft_comments_submit', ['repo_name', 'pull_request_id']);
261 244 pyroutes.register('pullrequest_drafts', '/%(repo_name)s/pull-request/%(pull_request_id)s/drafts', ['repo_name', 'pull_request_id']);
262 245 pyroutes.register('pullrequest_merge', '/%(repo_name)s/pull-request/%(pull_request_id)s/merge', ['repo_name', 'pull_request_id']);
263 246 pyroutes.register('pullrequest_new', '/%(repo_name)s/pull-request/new', ['repo_name']);
@@ -270,18 +253,8 b' function registerRCRoutes() {'
270 253 pyroutes.register('pullrequest_update', '/%(repo_name)s/pull-request/%(pull_request_id)s/update', ['repo_name', 'pull_request_id']);
271 254 pyroutes.register('register', '/_admin/register', []);
272 255 pyroutes.register('repo_archivefile', '/%(repo_name)s/archive/%(fname)s', ['repo_name', 'fname']);
273 pyroutes.register('repo_artifacts_data', '/%(repo_name)s/artifacts_data', ['repo_name']);
274 pyroutes.register('repo_artifacts_delete', '/%(repo_name)s/artifacts/delete/%(uid)s', ['repo_name', 'uid']);
275 pyroutes.register('repo_artifacts_get', '/%(repo_name)s/artifacts/download/%(uid)s', ['repo_name', 'uid']);
276 pyroutes.register('repo_artifacts_info', '/%(repo_name)s/artifacts/info/%(uid)s', ['repo_name', 'uid']);
277 256 pyroutes.register('repo_artifacts_list', '/%(repo_name)s/artifacts', ['repo_name']);
278 pyroutes.register('repo_artifacts_new', '/%(repo_name)s/artifacts/new', ['repo_name']);
279 pyroutes.register('repo_artifacts_store', '/%(repo_name)s/artifacts/store', ['repo_name']);
280 pyroutes.register('repo_artifacts_stream_script', '/_file_store/stream-upload-script', []);
281 pyroutes.register('repo_artifacts_stream_store', '/_file_store/stream-upload', []);
282 pyroutes.register('repo_artifacts_update', '/%(repo_name)s/artifacts/update/%(uid)s', ['repo_name', 'uid']);
283 257 pyroutes.register('repo_automation', '/%(repo_name)s/settings/automation', ['repo_name']);
284 pyroutes.register('repo_automation_update', '/%(repo_name)s/settings/automation/%(entry_id)s/update', ['repo_name', 'entry_id']);
285 258 pyroutes.register('repo_changelog', '/%(repo_name)s/changelog', ['repo_name']);
286 259 pyroutes.register('repo_changelog_file', '/%(repo_name)s/changelog/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
287 260 pyroutes.register('repo_commit', '/%(repo_name)s/changeset/%(commit_id)s', ['repo_name', 'commit_id']);
@@ -358,9 +331,6 b' function registerRCRoutes() {'
358 331 pyroutes.register('repo_refs_changelog_data', '/%(repo_name)s/refs-data-changelog', ['repo_name']);
359 332 pyroutes.register('repo_refs_data', '/%(repo_name)s/refs-data', ['repo_name']);
360 333 pyroutes.register('repo_reviewers', '/%(repo_name)s/settings/review/rules', ['repo_name']);
361 pyroutes.register('repo_reviewers_review_rule_delete', '/%(repo_name)s/settings/review/rules/%(rule_id)s/delete', ['repo_name', 'rule_id']);
362 pyroutes.register('repo_reviewers_review_rule_edit', '/%(repo_name)s/settings/review/rules/%(rule_id)s', ['repo_name', 'rule_id']);
363 pyroutes.register('repo_reviewers_review_rule_new', '/%(repo_name)s/settings/review/rules/new', ['repo_name']);
364 334 pyroutes.register('repo_settings_quick_actions', '/%(repo_name)s/settings/quick-action', ['repo_name']);
365 335 pyroutes.register('repo_stats', '/%(repo_name)s/repo_stats/%(commit_id)s', ['repo_name', 'commit_id']);
366 336 pyroutes.register('repo_summary', '/%(repo_name)s', ['repo_name']);
@@ -37,7 +37,7 b' from rhodecode.lib.hash_utils import sha'
37 37 log = logging.getLogger(__name__)
38 38
39 39 __all__ = [
40 'get_new_dir', 'TestController', 'route_path_generator',
40 'get_new_dir', 'TestController',
41 41 'clear_cache_regions',
42 42 'assert_session_flash', 'login_user', 'no_newline_id_generator',
43 43 'TESTS_TMP_PATH', 'HG_REPO', 'GIT_REPO', 'SVN_REPO',
@@ -242,11 +242,3 b' def no_newline_id_generator(test_name):'
242 242
243 243 return test_name or 'test-with-empty-name'
244 244
245
246 def route_path_generator(url_defs, name, params=None, **kwargs):
247
248 base_url = url_defs[name].format(**kwargs)
249
250 if params:
251 base_url = '{}?{}'.format(base_url, urllib.parse.urlencode(params))
252 return base_url
@@ -22,34 +22,7 b' import pytest'
22 22
23 23 from rhodecode.tests import TestController
24 24 from rhodecode.tests.fixture import Fixture
25
26
27 def route_path(name, params=None, **kwargs):
28 import urllib.request
29 import urllib.parse
30 import urllib.error
31 from rhodecode.apps._base import ADMIN_PREFIX
32
33 base_url = {
34 'home': '/',
35 'admin_home': ADMIN_PREFIX,
36 'repos':
37 ADMIN_PREFIX + '/repos',
38 'repos_data':
39 ADMIN_PREFIX + '/repos_data',
40 'repo_groups':
41 ADMIN_PREFIX + '/repo_groups',
42 'repo_groups_data':
43 ADMIN_PREFIX + '/repo_groups_data',
44 'user_groups':
45 ADMIN_PREFIX + '/user_groups',
46 'user_groups_data':
47 ADMIN_PREFIX + '/user_groups_data',
48 }[name].format(**kwargs)
49
50 if params:
51 base_url = '{}?{}'.format(base_url, urllib.parse.urlencode(params))
52 return base_url
25 from rhodecode.tests.routes import route_path
53 26
54 27
55 28 fixture = Fixture()
@@ -21,12 +21,7 b' import mock'
21 21 import pytest
22 22
23 23 from rhodecode.tests import TEST_USER_ADMIN_LOGIN
24
25
26 def route_path(name, **kwargs):
27 return {
28 'home': '/',
29 }[name].format(**kwargs)
24 from rhodecode.tests.routes import route_path
30 25
31 26
32 27 class TestSessionBehaviorOnPasswordChange(object):
@@ -1,4 +1,3 b''
1
2 1 # Copyright (C) 2010-2023 RhodeCode GmbH
3 2 #
4 3 # This program is free software: you can redistribute it and/or modify
General Comments 0
You need to be logged in to leave comments. Login now