##// 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 # make the whole above block safe
163 # make the whole above block safe
164 pass
164 pass
165
165
166 fault_message = "No such method: {}. Similar methods: {}".format(
166 fault_message = f"No such method: {method}. Similar methods: {similar}"
167 method, similar)
168 else:
167 else:
169 fault_message = 'undefined error'
168 fault_message = 'undefined error'
170 exc_info = exc.exc_info()
169 exc_info = exc.exc_info()
@@ -25,28 +25,12 b' import pytest'
25
25
26 from rhodecode.lib.str_utils import safe_str
26 from rhodecode.lib.str_utils import safe_str
27 from rhodecode.tests import *
27 from rhodecode.tests import *
28 from rhodecode.tests.routes import route_path
28 from rhodecode.tests.fixture import FIXTURES
29 from rhodecode.tests.fixture import FIXTURES
29 from rhodecode.model.db import UserLog
30 from rhodecode.model.db import UserLog
30 from rhodecode.model.meta import Session
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 @pytest.mark.usefixtures('app')
34 @pytest.mark.usefixtures('app')
51 class TestAdminController(object):
35 class TestAdminController(object):
52
36
@@ -20,27 +20,10 b''
20 import pytest
20 import pytest
21
21
22 from rhodecode.tests import assert_session_flash
22 from rhodecode.tests import assert_session_flash
23 from rhodecode.tests.routes import route_path
23 from rhodecode.model.settings import SettingsModel
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 @pytest.mark.usefixtures("app")
27 @pytest.mark.usefixtures("app")
45 class TestDefaultsView(object):
28 class TestDefaultsView(object):
46
29
@@ -21,30 +21,11 b' import pytest'
21
21
22 from rhodecode.tests import TestController
22 from rhodecode.tests import TestController
23 from rhodecode.tests.fixture import Fixture
23 from rhodecode.tests.fixture import Fixture
24 from rhodecode.tests.routes import route_path
24
25
25 fixture = Fixture()
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 class TestAdminMainView(TestController):
29 class TestAdminMainView(TestController):
49
30
50 def test_access_admin_home(self):
31 def test_access_admin_home(self):
@@ -25,54 +25,7 b' from rhodecode.model.permission import P'
25 from rhodecode.model.ssh_key import SshKeyModel
25 from rhodecode.model.ssh_key import SshKeyModel
26 from rhodecode.tests import (
26 from rhodecode.tests import (
27 TestController, clear_cache_regions, assert_session_flash)
27 TestController, clear_cache_regions, assert_session_flash)
28
28 from rhodecode.tests.routes import route_path
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
76
29
77
30
78 class TestAdminPermissionsController(TestController):
31 class TestAdminPermissionsController(TestController):
@@ -38,30 +38,12 b' from rhodecode.tests import ('
38 login_user_session, assert_session_flash, TEST_USER_ADMIN_LOGIN,
38 login_user_session, assert_session_flash, TEST_USER_ADMIN_LOGIN,
39 TEST_USER_REGULAR_LOGIN, TEST_USER_REGULAR_PASS)
39 TEST_USER_REGULAR_LOGIN, TEST_USER_REGULAR_PASS)
40 from rhodecode.tests.fixture import Fixture, error_function
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 fixture = Fixture()
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 def _get_permission_for_user(user, repo):
47 def _get_permission_for_user(user, repo):
66 perm = UserRepoToPerm.query()\
48 perm = UserRepoToPerm.query()\
67 .filter(UserRepoToPerm.repository ==
49 .filter(UserRepoToPerm.repository ==
@@ -28,26 +28,10 b' from rhodecode.model.repo_group import R'
28 from rhodecode.tests import (
28 from rhodecode.tests import (
29 assert_session_flash, TEST_USER_REGULAR_LOGIN, TESTS_TMP_PATH)
29 assert_session_flash, TEST_USER_REGULAR_LOGIN, TESTS_TMP_PATH)
30 from rhodecode.tests.fixture import Fixture
30 from rhodecode.tests.fixture import Fixture
31
31 from rhodecode.tests.routes import route_path
32 fixture = Fixture()
33
32
34
33
35 def route_path(name, params=None, **kwargs):
34 fixture = Fixture()
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
51
35
52
36
53 def _get_permission_for_user(user, repo):
37 def _get_permission_for_user(user, repo):
@@ -27,85 +27,12 b' from rhodecode.model.db import RhodeCode'
27 from rhodecode.model.meta import Session
27 from rhodecode.model.meta import Session
28 from rhodecode.model.settings import SettingsModel, IssueTrackerSettingsModel
28 from rhodecode.model.settings import SettingsModel, IssueTrackerSettingsModel
29 from rhodecode.tests import assert_session_flash
29 from rhodecode.tests import assert_session_flash
30 from rhodecode.tests.routes import route_path
30
31
31
32
32 UPDATE_DATA_QUALNAME = 'rhodecode.model.update.UpdateModel.get_update_data'
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 @pytest.mark.usefixtures('autologin_user', 'app')
36 @pytest.mark.usefixtures('autologin_user', 'app')
110 class TestAdminSettingsController(object):
37 class TestAdminSettingsController(object):
111
38
@@ -23,32 +23,13 b' from rhodecode.model.db import UserGroup'
23 from rhodecode.model.meta import Session
23 from rhodecode.model.meta import Session
24
24
25 from rhodecode.tests import (
25 from rhodecode.tests import (
26 TestController, TEST_USER_REGULAR_LOGIN, assert_session_flash)
26 TestController, assert_session_flash)
27 from rhodecode.tests.fixture import Fixture
27 from rhodecode.tests.fixture import Fixture
28 from rhodecode.tests.routes import route_path
28
29
29 fixture = Fixture()
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 class TestAdminUserGroupsView(TestController):
33 class TestAdminUserGroupsView(TestController):
53
34
54 def test_show_users(self):
35 def test_show_users(self):
@@ -29,79 +29,11 b' from rhodecode.model.user import UserMod'
29 from rhodecode.tests import (
29 from rhodecode.tests import (
30 TestController, TEST_USER_REGULAR_LOGIN, assert_session_flash)
30 TestController, TEST_USER_REGULAR_LOGIN, assert_session_flash)
31 from rhodecode.tests.fixture import Fixture
31 from rhodecode.tests.fixture import Fixture
32 from rhodecode.tests.routes import route_path
32
33
33 fixture = Fixture()
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 class TestAdminUsersView(TestController):
37 class TestAdminUsersView(TestController):
106
38
107 def test_show_users(self):
39 def test_show_users(self):
@@ -23,33 +23,11 b' from rhodecode.model.db import User, Use'
23
23
24 from rhodecode.tests import TestController, assert_session_flash
24 from rhodecode.tests import TestController, assert_session_flash
25 from rhodecode.tests.fixture import Fixture
25 from rhodecode.tests.fixture import Fixture
26 from rhodecode.tests.routes import route_path
26
27
27 fixture = Fixture()
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 class TestAdminUsersSshKeysView(TestController):
31 class TestAdminUsersSshKeysView(TestController):
54 INVALID_KEY = """\
32 INVALID_KEY = """\
55 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDk+77sjDzVeB6vevJsuZds1iNU5
33 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDk+77sjDzVeB6vevJsuZds1iNU5
@@ -21,25 +21,10 b' import pytest'
21 from rhodecode.lib.ext_json import json
21 from rhodecode.lib.ext_json import json
22 from rhodecode.model.auth_token import AuthTokenModel
22 from rhodecode.model.auth_token import AuthTokenModel
23 from rhodecode.model.db import Session, FileStore, Repository, User
23 from rhodecode.model.db import Session, FileStore, Repository, User
24 from rhodecode.tests import TestController
25 from rhodecode.apps.file_store import utils, config_keys
24 from rhodecode.apps.file_store import utils, config_keys
26
25
27
26 from rhodecode.tests import TestController
28 def route_path(name, params=None, **kwargs):
27 from rhodecode.tests.routes import route_path
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
43
28
44
29
45 class TestFileStoreViews(TestController):
30 class TestFileStoreViews(TestController):
@@ -26,31 +26,7 b' from rhodecode.model.meta import Session'
26 from rhodecode.tests import (
26 from rhodecode.tests import (
27 TEST_USER_ADMIN_LOGIN, TEST_USER_REGULAR_LOGIN, TEST_USER_REGULAR_PASS,
27 TEST_USER_ADMIN_LOGIN, TEST_USER_REGULAR_LOGIN, TEST_USER_REGULAR_PASS,
28 TestController, assert_session_flash)
28 TestController, assert_session_flash)
29
29 from rhodecode.tests.routes import route_path
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
54
30
55
31
56 class GistUtility(object):
32 class GistUtility(object):
@@ -19,8 +19,6 b''
19 import pytest
19 import pytest
20
20
21 from . import assert_and_get_main_filter_content
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 from rhodecode.lib.utils import map_groups
23 from rhodecode.lib.utils import map_groups
26 from rhodecode.lib.ext_json import json
24 from rhodecode.lib.ext_json import json
@@ -28,21 +26,11 b' from rhodecode.model.repo import RepoMod'
28 from rhodecode.model.repo_group import RepoGroupModel
26 from rhodecode.model.repo_group import RepoGroupModel
29 from rhodecode.model.db import Session, Repository, RepoGroup
27 from rhodecode.model.db import Session, Repository, RepoGroup
30
28
31 fixture = Fixture()
29 from rhodecode.tests import TestController, TEST_USER_ADMIN_LOGIN
32
30 from rhodecode.tests.fixture import Fixture
33
31 from rhodecode.tests.routes import route_path
34 def route_path(name, params=None, **kwargs):
35 import urllib.request
36 import urllib.parse
37 import urllib.error
38
32
39 base_url = {
33 fixture = Fixture()
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
46
34
47
35
48 class TestGotoSwitcherData(TestController):
36 class TestGotoSwitcherData(TestController):
@@ -17,29 +17,17 b''
17 # and proprietary license terms, please see https://rhodecode.com/licenses/
17 # and proprietary license terms, please see https://rhodecode.com/licenses/
18
18
19 from . import assert_and_get_repo_list_content
19 from . import assert_and_get_repo_list_content
20 from rhodecode.tests import TestController
20
21 from rhodecode.tests.fixture import Fixture
22 from rhodecode.model.db import Repository
21 from rhodecode.model.db import Repository
23 from rhodecode.lib.ext_json import json
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 fixture = Fixture()
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 class TestRepoListData(TestController):
31 class TestRepoListData(TestController):
44
32
45 def test_returns_list_of_repos_and_groups(self, xhr_header):
33 def test_returns_list_of_repos_and_groups(self, xhr_header):
@@ -17,28 +17,15 b''
17 # and proprietary license terms, please see https://rhodecode.com/licenses/
17 # and proprietary license terms, please see https://rhodecode.com/licenses/
18 import pytest
18 import pytest
19
19
20 from rhodecode.lib.ext_json import json
21
20 from rhodecode.tests import TestController
22 from rhodecode.tests import TestController
21 from rhodecode.tests.fixture import Fixture
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 fixture = Fixture()
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 class TestUserAutocompleteData(TestController):
29 class TestUserAutocompleteData(TestController):
43
30
44 def test_returns_list_of_users(self, user_util, xhr_header):
31 def test_returns_list_of_users(self, user_util, xhr_header):
@@ -37,29 +37,15 b''
37
37
38 import pytest
38 import pytest
39
39
40 from rhodecode.lib.ext_json import json
41
40 from rhodecode.tests import TestController
42 from rhodecode.tests import TestController
41 from rhodecode.tests.fixture import Fixture
43 from rhodecode.tests.fixture import Fixture
42 from rhodecode.lib.ext_json import json
44 from rhodecode.tests.routes import route_path
43
44
45
45 fixture = Fixture()
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 class TestUserGroupAutocompleteData(TestController):
49 class TestUserGroupAutocompleteData(TestController):
64
50
65 def test_returns_list_of_user_groups(self, user_util, xhr_header):
51 def test_returns_list_of_user_groups(self, user_util, xhr_header):
@@ -22,23 +22,13 b' import pytest'
22 import rhodecode
22 import rhodecode
23 from rhodecode.model.db import Repository, RepoGroup, User
23 from rhodecode.model.db import Repository, RepoGroup, User
24 from rhodecode.model.meta import Session
24 from rhodecode.model.meta import Session
25 from rhodecode.model.repo import RepoModel
26 from rhodecode.model.repo_group import RepoGroupModel
27 from rhodecode.model.settings import SettingsModel
25 from rhodecode.model.settings import SettingsModel
28 from rhodecode.tests import TestController
26 from rhodecode.tests import TestController
29 from rhodecode.tests.fixture import Fixture
27 from rhodecode.tests.fixture import Fixture
30 from rhodecode.lib import helpers as h
28 from rhodecode.tests.routes import route_path
31
32 fixture = Fixture()
33
29
34
30
35 def route_path(name, **kwargs):
31 fixture = Fixture()
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)
42
32
43
33
44 class TestHomeController(TestController):
34 class TestHomeController(TestController):
@@ -22,30 +22,10 b' import datetime'
22 import pytest
22 import pytest
23
23
24 from rhodecode.apps._base import ADMIN_PREFIX
24 from rhodecode.apps._base import ADMIN_PREFIX
25 from rhodecode.tests import TestController
26 from rhodecode.model.db import UserFollowing, Repository
25 from rhodecode.model.db import UserFollowing, Repository
27
26
28
27 from rhodecode.tests import TestController
29 def route_path(name, params=None, **kwargs):
28 from rhodecode.tests.routes import route_path
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
49
29
50
30
51 class TestJournalViews(TestController):
31 class TestJournalViews(TestController):
@@ -21,50 +21,24 b' import urllib.parse'
21 import mock
21 import mock
22 import pytest
22 import pytest
23
23
24 from rhodecode.tests import (
24
25 assert_session_flash, HG_REPO, TEST_USER_ADMIN_LOGIN,
26 no_newline_id_generator)
27 from rhodecode.tests.fixture import Fixture
28 from rhodecode.lib.auth import check_password
25 from rhodecode.lib.auth import check_password
29 from rhodecode.lib import helpers as h
26 from rhodecode.lib import helpers as h
30 from rhodecode.model.auth_token import AuthTokenModel
27 from rhodecode.model.auth_token import AuthTokenModel
31 from rhodecode.model.db import User, Notification, UserApiKeys
28 from rhodecode.model.db import User, Notification, UserApiKeys
32 from rhodecode.model.meta import Session
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 fixture = Fixture()
37 fixture = Fixture()
35
38
36 whitelist_view = ['RepoCommitsView:repo_commit_raw']
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 @pytest.mark.usefixtures('app')
42 @pytest.mark.usefixtures('app')
69 class TestLoginController(object):
43 class TestLoginController(object):
70 destroy_users = set()
44 destroy_users = set()
@@ -24,34 +24,10 b' from rhodecode.tests import ('
24 TEST_USER_ADMIN_LOGIN, TEST_USER_ADMIN_PASS)
24 TEST_USER_ADMIN_LOGIN, TEST_USER_ADMIN_PASS)
25 from rhodecode.tests.fixture import Fixture
25 from rhodecode.tests.fixture import Fixture
26 from rhodecode.tests.utils import AssertResponse
26 from rhodecode.tests.utils import AssertResponse
27
27 from rhodecode.tests.routes import route_path
28 fixture = Fixture()
29
28
30
29
31 def route_path(name, params=None, **kwargs):
30 fixture = Fixture()
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
55
31
56
32
57 class TestPasswordReset(TestController):
33 class TestPasswordReset(TestController):
@@ -21,23 +21,12 b' import pytest'
21 from rhodecode.apps._base import ADMIN_PREFIX
21 from rhodecode.apps._base import ADMIN_PREFIX
22 from rhodecode.model.db import User
22 from rhodecode.model.db import User
23 from rhodecode.tests import (
23 from rhodecode.tests import (
24 TestController, route_path_generator, assert_session_flash)
24 TestController, assert_session_flash)
25 from rhodecode.tests.fixture import Fixture
25 from rhodecode.tests.fixture import Fixture
26 from rhodecode.tests.utils import AssertResponse
26 from rhodecode.tests.routes import route_path
27
28 fixture = Fixture()
29
27
30
28
31 def route_path(name, params=None, **kwargs):
29 fixture = Fixture()
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)
41
30
42
31
43 class TestMyAccountAuthTokens(TestController):
32 class TestMyAccountAuthTokens(TestController):
@@ -39,25 +39,7 b' import pytest'
39
39
40 from rhodecode.model.db import User
40 from rhodecode.model.db import User
41 from rhodecode.tests import TestController, assert_session_flash
41 from rhodecode.tests import TestController, assert_session_flash
42 from rhodecode.lib import helpers as h
42 from rhodecode.tests.routes import route_path
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
61
43
62
44
63 class TestMyAccountEdit(TestController):
45 class TestMyAccountEdit(TestController):
@@ -24,19 +24,10 b' from rhodecode.tests import ('
24 TestController, TEST_USER_ADMIN_LOGIN, TEST_USER_REGULAR_EMAIL,
24 TestController, TEST_USER_ADMIN_LOGIN, TEST_USER_REGULAR_EMAIL,
25 assert_session_flash, TEST_USER_REGULAR_PASS)
25 assert_session_flash, TEST_USER_REGULAR_PASS)
26 from rhodecode.tests.fixture import Fixture
26 from rhodecode.tests.fixture import Fixture
27
27 from rhodecode.tests.routes import route_path
28 fixture = Fixture()
29
28
30
29
31 def route_path(name, **kwargs):
30 fixture = Fixture()
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)
40
31
41
32
42 class TestMyAccountEmails(TestController):
33 class TestMyAccountEmails(TestController):
@@ -18,40 +18,19 b''
18
18
19 import pytest
19 import pytest
20
20
21 from rhodecode.apps._base import ADMIN_PREFIX
22 from rhodecode.tests import (
21 from rhodecode.tests import (
23 TestController, TEST_USER_REGULAR_LOGIN, TEST_USER_REGULAR_PASS,
22 TestController, TEST_USER_REGULAR_LOGIN, TEST_USER_REGULAR_PASS,
24 TEST_USER_ADMIN_LOGIN, TEST_USER_ADMIN_PASS)
23 TEST_USER_ADMIN_LOGIN, TEST_USER_ADMIN_PASS)
25 from rhodecode.tests.fixture import Fixture
24 from rhodecode.tests.fixture import Fixture
25 from rhodecode.tests.routes import route_path
26
26
27 from rhodecode.model.db import Notification, User
27 from rhodecode.model.db import Notification, User
28 from rhodecode.model.user import UserModel
29 from rhodecode.model.notification import NotificationModel
28 from rhodecode.model.notification import NotificationModel
30 from rhodecode.model.meta import Session
29 from rhodecode.model.meta import Session
31
30
32 fixture = Fixture()
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 class TestNotificationsController(TestController):
34 class TestNotificationsController(TestController):
56
35
57 def teardown_method(self, method):
36 def teardown_method(self, method):
@@ -27,20 +27,11 b' from rhodecode.model.meta import Session'
27 from rhodecode.model.user import UserModel
27 from rhodecode.model.user import UserModel
28 from rhodecode.tests import assert_session_flash
28 from rhodecode.tests import assert_session_flash
29 from rhodecode.tests.fixture import Fixture, TestController, error_function
29 from rhodecode.tests.fixture import Fixture, TestController, error_function
30 from rhodecode.tests.routes import route_path
30
31
31 fixture = Fixture()
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 test_user_1 = 'testme'
35 test_user_1 = 'testme'
45 test_user_1_password = '0jd83nHNS/d23n'
36 test_user_1_password = '0jd83nHNS/d23n'
46
37
@@ -17,24 +17,15 b''
17 # RhodeCode Enterprise Edition, including its added features, Support services,
17 # RhodeCode Enterprise Edition, including its added features, Support services,
18 # and proprietary license terms, please see https://rhodecode.com/licenses/
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.tests import (
20 from rhodecode.tests import (
24 TestController, TEST_USER_ADMIN_LOGIN,
21 TestController, TEST_USER_ADMIN_LOGIN,
25 TEST_USER_REGULAR_LOGIN, TEST_USER_REGULAR_PASS)
22 TEST_USER_REGULAR_LOGIN, TEST_USER_REGULAR_PASS)
26 from rhodecode.tests.fixture import Fixture
23 from rhodecode.tests.fixture import Fixture
24 from rhodecode.tests.routes import route_path
27
25
28 fixture = Fixture()
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 class TestMyAccountProfile(TestController):
29 class TestMyAccountProfile(TestController):
39
30
40 def test_my_account(self):
31 def test_my_account(self):
@@ -17,31 +17,14 b''
17 # RhodeCode Enterprise Edition, including its added features, Support services,
17 # RhodeCode Enterprise Edition, including its added features, Support services,
18 # and proprietary license terms, please see https://rhodecode.com/licenses/
18 # and proprietary license terms, please see https://rhodecode.com/licenses/
19
19
20 import pytest
20 from rhodecode.model.db import User, Repository, UserFollowing
21
21 from rhodecode.tests import TestController, TEST_USER_ADMIN_LOGIN
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)
27 from rhodecode.tests.fixture import Fixture
22 from rhodecode.tests.fixture import Fixture
23 from rhodecode.tests.routes import route_path
28
24
29 fixture = Fixture()
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 class TestMyAccountSimpleViews(TestController):
28 class TestMyAccountSimpleViews(TestController):
46
29
47 def test_my_account_my_repos(self, autologin_user):
30 def test_my_account_my_repos(self, autologin_user):
@@ -17,38 +17,16 b''
17 # RhodeCode Enterprise Edition, including its added features, Support services,
17 # RhodeCode Enterprise Edition, including its added features, Support services,
18 # and proprietary license terms, please see https://rhodecode.com/licenses/
18 # and proprietary license terms, please see https://rhodecode.com/licenses/
19
19
20 import pytest
21
20
22 from rhodecode.model.db import User, UserSshKeys
21 from rhodecode.model.db import User, UserSshKeys
23
22
24 from rhodecode.tests import TestController, assert_session_flash
23 from rhodecode.tests import TestController, assert_session_flash
25 from rhodecode.tests.fixture import Fixture
24 from rhodecode.tests.fixture import Fixture
25 from rhodecode.tests.routes import route_path
26
26
27 fixture = Fixture()
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 class TestMyAccountSshKeysView(TestController):
30 class TestMyAccountSshKeysView(TestController):
53 INVALID_KEY = """\
31 INVALID_KEY = """\
54 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDk+77sjDzVeB6vevJsuZds1iNU5
32 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDk+77sjDzVeB6vevJsuZds1iNU5
@@ -19,23 +19,7 b''
19 import pytest
19 import pytest
20
20
21 from rhodecode.tests import assert_session_flash
21 from rhodecode.tests import assert_session_flash
22
22 from rhodecode.tests.routes import route_path
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
39
23
40
24
41 @pytest.mark.usefixtures("app")
25 @pytest.mark.usefixtures("app")
@@ -19,23 +19,7 b''
19 import pytest
19 import pytest
20
20
21 from rhodecode.tests.utils import permission_update_data_generator
21 from rhodecode.tests.utils import permission_update_data_generator
22
22 from rhodecode.tests.routes import route_path
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
39
23
40
24
41 @pytest.mark.usefixtures("app")
25 @pytest.mark.usefixtures("app")
@@ -20,21 +20,8 b''
20 import pytest
20 import pytest
21
21
22 from rhodecode.tests import assert_session_flash
22 from rhodecode.tests import assert_session_flash
23
23 from rhodecode.tests.routes import route_path
24
25 def route_path(name, params=None, **kwargs):
26 import urllib.request
27 import urllib.parse
28 import urllib.error
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 @pytest.mark.usefixtures("app")
27 @pytest.mark.usefixtures("app")
@@ -17,22 +17,7 b''
17 # and proprietary license terms, please see https://rhodecode.com/licenses/
17 # and proprietary license terms, please see https://rhodecode.com/licenses/
18
18
19 import pytest
19 import pytest
20 from rhodecode.model.db import Repository
20 from rhodecode.tests.routes import route_path
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
36
21
37
22
38 @pytest.mark.backends("git", "hg")
23 @pytest.mark.backends("git", "hg")
@@ -18,20 +18,8 b''
18
18
19 import pytest
19 import pytest
20 from rhodecode.model.db import Repository
20 from rhodecode.model.db import Repository
21
21 from rhodecode.tests.routes import route_path
22
23 def route_path(name, params=None, **kwargs):
24 import urllib.request
25 import urllib.parse
26 import urllib.error
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 @pytest.mark.usefixtures('autologin_user', 'app')
25 @pytest.mark.usefixtures('autologin_user', 'app')
@@ -18,20 +18,7 b''
18
18
19 import pytest
19 import pytest
20 from rhodecode.model.db import Repository
20 from rhodecode.model.db import Repository
21
21 from rhodecode.tests.routes import route_path
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
35
22
36
23
37 @pytest.mark.usefixtures('autologin_user', 'app')
24 @pytest.mark.usefixtures('autologin_user', 'app')
@@ -22,25 +22,10 b' import pytest'
22
22
23 from rhodecode.apps.repository.views.repo_changelog import DEFAULT_CHANGELOG_SIZE
23 from rhodecode.apps.repository.views.repo_changelog import DEFAULT_CHANGELOG_SIZE
24 from rhodecode.tests import TestController
24 from rhodecode.tests import TestController
25
25 from rhodecode.tests.routes import route_path
26 MATCH_HASH = re.compile(r'<span class="commit_hash">r(\d+):[\da-f]+</span>')
27
26
28
27
29 def route_path(name, params=None, **kwargs):
28 MATCH_HASH = re.compile(r'<span class="commit_hash">r(\d+):[\da-f]+</span>')
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
44
29
45
30
46 def assert_commits_on_page(response, indexes):
31 def assert_commits_on_page(response, indexes):
@@ -19,29 +19,12 b''
19 import pytest
19 import pytest
20
20
21 from rhodecode.tests import TestController
21 from rhodecode.tests import TestController
22
22 from rhodecode.tests.routes import route_path
23 from rhodecode.model.db import ChangesetComment, Notification
23 from rhodecode.model.db import ChangesetComment, Notification
24 from rhodecode.model.meta import Session
24 from rhodecode.model.meta import Session
25 from rhodecode.lib import helpers as h
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 @pytest.mark.backends("git", "hg", "svn")
29 @pytest.mark.backends("git", "hg", "svn")
47 class TestRepoCommitCommentsView(TestController):
30 class TestRepoCommitCommentsView(TestController):
@@ -21,27 +21,7 b' import pytest'
21
21
22 from rhodecode.apps.repository.tests.test_repo_compare import ComparePage
22 from rhodecode.apps.repository.tests.test_repo_compare import ComparePage
23 from rhodecode.lib.helpers import _shorten_commit_id
23 from rhodecode.lib.helpers import _shorten_commit_id
24
24 from rhodecode.tests.routes import route_path
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
45
25
46
26
47 @pytest.mark.usefixtures("app")
27 @pytest.mark.usefixtures("app")
@@ -24,21 +24,7 b' import lxml.html'
24 from rhodecode.lib.vcs.exceptions import RepositoryRequirementError
24 from rhodecode.lib.vcs.exceptions import RepositoryRequirementError
25 from rhodecode.tests import assert_session_flash
25 from rhodecode.tests import assert_session_flash
26 from rhodecode.tests.utils import AssertResponse, commit_change
26 from rhodecode.tests.utils import AssertResponse, commit_change
27
27 from rhodecode.tests.routes import route_path
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
42
28
43
29
44 @pytest.mark.usefixtures("autologin_user", "app")
30 @pytest.mark.usefixtures("autologin_user", "app")
@@ -165,7 +151,7 b' class TestCompareView(object):'
165 compare_page.target_source_are_disabled()
151 compare_page.target_source_are_disabled()
166
152
167 @pytest.mark.xfail_backends("svn", reason="Depends on branch support")
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 repo1 = backend.create_repo()
155 repo1 = backend.create_repo()
170
156
171 # commit something !
157 # commit something !
@@ -203,13 +189,13 b' class TestCompareView(object):'
203 params=dict(merge='1', target_repo=repo2.repo_name),
189 params=dict(merge='1', target_repo=repo2.repo_name),
204 ))
190 ))
205
191
206 response.mustcontain('%s@%s' % (repo1.repo_name, commit_id2))
192 response.mustcontain(f'{repo1.repo_name}@{commit_id2}')
207 response.mustcontain('%s@%s' % (repo2.repo_name, commit_id1))
193 response.mustcontain(f'{repo2.repo_name}@{commit_id1}')
208
194
209 compare_page = ComparePage(response)
195 compare_page = ComparePage(response)
210 compare_page.contains_change_summary(1, 2, 0)
196 compare_page.contains_change_summary(1, 2, 0)
211 compare_page.contains_commits([commit1, commit2])
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 compare_page.contains_file_links_and_anchors([('file1', anchor), ])
199 compare_page.contains_file_links_and_anchors([('file1', anchor), ])
214
200
215 # Swap is removed when comparing branches since it's a PR feature and
201 # Swap is removed when comparing branches since it's a PR feature and
@@ -20,21 +20,7 b''
20 import pytest
20 import pytest
21
21
22 from .test_repo_compare import ComparePage
22 from .test_repo_compare import ComparePage
23
23 from rhodecode.tests.routes import route_path
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
38
24
39
25
40 @pytest.mark.usefixtures("autologin_user", "app")
26 @pytest.mark.usefixtures("autologin_user", "app")
@@ -24,23 +24,10 b' from rhodecode.lib.vcs import nodes'
24 from rhodecode.lib.vcs.backends.base import EmptyCommit
24 from rhodecode.lib.vcs.backends.base import EmptyCommit
25 from rhodecode.tests.fixture import Fixture
25 from rhodecode.tests.fixture import Fixture
26 from rhodecode.tests.utils import commit_change
26 from rhodecode.tests.utils import commit_change
27
27 from rhodecode.tests.routes import route_path
28 fixture = Fixture()
29
28
30
29
31 def route_path(name, params=None, **kwargs):
30 fixture = Fixture()
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
44
31
45
32
46 @pytest.mark.usefixtures("autologin_user", "app")
33 @pytest.mark.usefixtures("autologin_user", "app")
@@ -20,23 +20,7 b''
20 import pytest
20 import pytest
21 from rhodecode.model.auth_token import AuthTokenModel
21 from rhodecode.model.auth_token import AuthTokenModel
22 from rhodecode.tests import TestController
22 from rhodecode.tests import TestController
23
23 from rhodecode.tests.routes import route_path
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
40
24
41
25
42 class TestFeedView(TestController):
26 class TestFeedView(TestController):
@@ -34,6 +34,8 b' from rhodecode.model.db import Session, '
34
34
35 from rhodecode.tests import assert_session_flash
35 from rhodecode.tests import assert_session_flash
36 from rhodecode.tests.fixture import Fixture
36 from rhodecode.tests.fixture import Fixture
37 from rhodecode.tests.routes import route_path
38
37
39
38 fixture = Fixture()
40 fixture = Fixture()
39
41
@@ -46,43 +48,6 b' def get_node_history(backend_type):'
46 }[backend_type]
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 def assert_files_in_response(response, files, params):
51 def assert_files_in_response(response, files, params):
87 template = (
52 template = (
88 'href="/%(repo_name)s/files/%(commit_id)s/%(name)s"')
53 'href="/%(repo_name)s/files/%(commit_id)s/%(name)s"')
@@ -28,27 +28,10 b' from rhodecode.model.db import Repositor'
28 from rhodecode.model.repo import RepoModel
28 from rhodecode.model.repo import RepoModel
29 from rhodecode.model.user import UserModel
29 from rhodecode.model.user import UserModel
30 from rhodecode.model.meta import Session
30 from rhodecode.model.meta import Session
31
31 from rhodecode.tests.routes import route_path
32 fixture = Fixture()
33
32
34
33
35 def route_path(name, params=None, **kwargs):
34 fixture = Fixture()
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
52
35
53
36
54 FORK_NAME = {
37 FORK_NAME = {
@@ -23,24 +23,8 b' from rhodecode.lib.hash_utils import md5'
23 from rhodecode.model.db import Repository
23 from rhodecode.model.db import Repository
24 from rhodecode.model.meta import Session
24 from rhodecode.model.meta import Session
25 from rhodecode.model.settings import SettingsModel, IssueTrackerSettingsModel
25 from rhodecode.model.settings import SettingsModel, IssueTrackerSettingsModel
26
26 from rhodecode.tests.routes import route_path
27
28 def route_path(name, params=None, **kwargs):
29 import urllib.request
30 import urllib.parse
31 import urllib.error
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 @pytest.mark.usefixtures("app")
30 @pytest.mark.usefixtures("app")
@@ -17,36 +17,16 b''
17 # RhodeCode Enterprise Edition, including its added features, Support services,
17 # RhodeCode Enterprise Edition, including its added features, Support services,
18 # and proprietary license terms, please see https://rhodecode.com/licenses/
18 # and proprietary license terms, please see https://rhodecode.com/licenses/
19
19
20 import mock
21 import pytest
20 import pytest
22
21
23 from rhodecode.lib.utils2 import str2bool
24 from rhodecode.lib.vcs.exceptions import RepositoryRequirementError
25 from rhodecode.model.db import Repository, UserRepoToPerm, Permission, User
22 from rhodecode.model.db import Repository, UserRepoToPerm, Permission, User
26 from rhodecode.model.meta import Session
23
27 from rhodecode.tests import (
28 TEST_USER_ADMIN_LOGIN, TEST_USER_REGULAR_LOGIN, assert_session_flash)
29 from rhodecode.tests.fixture import Fixture
24 from rhodecode.tests.fixture import Fixture
25 from rhodecode.tests.routes import route_path
30
26
31 fixture = Fixture()
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 def _get_permission_for_user(user, repo):
30 def _get_permission_for_user(user, repo):
51 perm = UserRepoToPerm.query()\
31 perm = UserRepoToPerm.query()\
52 .filter(UserRepoToPerm.repository ==
32 .filter(UserRepoToPerm.repository ==
@@ -20,21 +20,7 b''
20 import pytest
20 import pytest
21
21
22 from rhodecode.tests.utils import permission_update_data_generator
22 from rhodecode.tests.utils import permission_update_data_generator
23
23 from rhodecode.tests.routes import route_path
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
38
24
39
25
40 @pytest.mark.usefixtures("app")
26 @pytest.mark.usefixtures("app")
@@ -33,36 +33,7 b' from rhodecode.model.user import UserMod'
33 from rhodecode.model.comment import CommentsModel
33 from rhodecode.model.comment import CommentsModel
34 from rhodecode.tests import (
34 from rhodecode.tests import (
35 assert_session_flash, TEST_USER_ADMIN_LOGIN, TEST_USER_REGULAR_LOGIN)
35 assert_session_flash, TEST_USER_ADMIN_LOGIN, TEST_USER_REGULAR_LOGIN)
36
36 from rhodecode.tests.routes import route_path
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
66
37
67
38
68 @pytest.mark.usefixtures('app', 'autologin_user')
39 @pytest.mark.usefixtures('app', 'autologin_user')
@@ -27,32 +27,11 b' from rhodecode.model.meta import Session'
27 from rhodecode.tests import (
27 from rhodecode.tests import (
28 TEST_USER_ADMIN_LOGIN, TEST_USER_REGULAR_LOGIN, assert_session_flash)
28 TEST_USER_ADMIN_LOGIN, TEST_USER_REGULAR_LOGIN, assert_session_flash)
29 from rhodecode.tests.fixture import Fixture
29 from rhodecode.tests.fixture import Fixture
30 from rhodecode.tests.routes import route_path
30
31
31 fixture = Fixture()
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 def _get_permission_for_user(user, repo):
35 def _get_permission_for_user(user, repo):
57 perm = UserRepoToPerm.query()\
36 perm = UserRepoToPerm.query()\
58 .filter(UserRepoToPerm.repository ==
37 .filter(UserRepoToPerm.repository ==
@@ -26,32 +26,11 b' from rhodecode.tests import ('
26 HG_REPO, GIT_REPO, assert_session_flash, no_newline_id_generator)
26 HG_REPO, GIT_REPO, assert_session_flash, no_newline_id_generator)
27 from rhodecode.tests.fixture import Fixture
27 from rhodecode.tests.fixture import Fixture
28 from rhodecode.tests.utils import repo_on_filesystem
28 from rhodecode.tests.utils import repo_on_filesystem
29 from rhodecode.tests.routes import route_path
29
30
30 fixture = Fixture()
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 @pytest.mark.usefixtures('autologin_user', 'app')
34 @pytest.mark.usefixtures('autologin_user', 'app')
56 class TestAdminRepoSettingsAdvanced(object):
35 class TestAdminRepoSettingsAdvanced(object):
57
36
@@ -34,29 +34,12 b' from rhodecode.model.scm import ScmModel'
34 from rhodecode.tests import assert_session_flash
34 from rhodecode.tests import assert_session_flash
35 from rhodecode.tests.fixture import Fixture
35 from rhodecode.tests.fixture import Fixture
36 from rhodecode.tests.utils import AssertResponse, repo_on_filesystem
36 from rhodecode.tests.utils import AssertResponse, repo_on_filesystem
37 from rhodecode.tests.routes import route_path
37
38
38
39
39 fixture = Fixture()
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 def assert_clone_url(response, server, repo, disabled=False):
43 def assert_clone_url(response, server, repo, disabled=False):
61
44
62 response.mustcontain(
45 response.mustcontain(
@@ -19,20 +19,7 b''
19
19
20 import pytest
20 import pytest
21 from rhodecode.model.db import Repository
21 from rhodecode.model.db import Repository
22
22 from rhodecode.tests.routes import route_path
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
36
23
37
24
38 @pytest.mark.usefixtures('autologin_user', 'app')
25 @pytest.mark.usefixtures('autologin_user', 'app')
@@ -32,29 +32,11 b' from rhodecode.tests import ('
32 TEST_USER_REGULAR_LOGIN, TEST_USER_REGULAR_PASS)
32 TEST_USER_REGULAR_LOGIN, TEST_USER_REGULAR_PASS)
33 from rhodecode.tests.fixture import Fixture
33 from rhodecode.tests.fixture import Fixture
34 from rhodecode.tests.utils import AssertResponse
34 from rhodecode.tests.utils import AssertResponse
35 from rhodecode.tests.routes import route_path
35
36
36 fixture = Fixture()
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 @pytest.mark.usefixtures("app")
40 @pytest.mark.usefixtures("app")
59 class TestVcsSettings(object):
41 class TestVcsSettings(object):
60 FORM_DATA = {
42 FORM_DATA = {
@@ -23,23 +23,7 b' import pytest'
23 import rhodecode
23 import rhodecode
24 from rhodecode.model.db import Repository
24 from rhodecode.model.db import Repository
25 from rhodecode.model.settings import SettingsModel
25 from rhodecode.model.settings import SettingsModel
26 from rhodecode.tests.utils import AssertResponse
26 from rhodecode.tests.routes import route_path
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
43
27
44
28
45 @pytest.mark.usefixtures('autologin_user', 'app')
29 @pytest.mark.usefixtures('autologin_user', 'app')
@@ -23,20 +23,9 b' import pytest'
23 from whoosh import query
23 from whoosh import query
24
24
25 from rhodecode.tests import (
25 from rhodecode.tests import (
26 TestController, route_path_generator, HG_REPO,
26 TestController, HG_REPO,
27 TEST_USER_REGULAR_LOGIN, TEST_USER_REGULAR_PASS)
27 TEST_USER_REGULAR_LOGIN, TEST_USER_REGULAR_PASS)
28 from rhodecode.tests.utils import AssertResponse
28 from rhodecode.tests.routes import route_path
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)
40
29
41
30
42 class TestSearchController(TestController):
31 class TestSearchController(TestController):
@@ -23,35 +23,11 b' from rhodecode.tests import ('
23 from rhodecode.model.db import UserGroup
23 from rhodecode.model.db import UserGroup
24 from rhodecode.model.meta import Session
24 from rhodecode.model.meta import Session
25 from rhodecode.tests.fixture import Fixture
25 from rhodecode.tests.fixture import Fixture
26 from rhodecode.tests.routes import route_path
26
27
27 fixture = Fixture()
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 class TestUserGroupsView(TestController):
31 class TestUserGroupsView(TestController):
56
32
57 def test_set_synchronization(self, user_util):
33 def test_set_synchronization(self, user_util):
@@ -19,24 +19,7 b''
19 import pytest
19 import pytest
20
20
21 from rhodecode.tests.utils import permission_update_data_generator
21 from rhodecode.tests.utils import permission_update_data_generator
22
22 from rhodecode.tests.routes import route_path
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
40
23
41
24
42 @pytest.mark.usefixtures("app")
25 @pytest.mark.usefixtures("app")
@@ -19,15 +19,11 b' from rhodecode.model.user_group import U'
19 from rhodecode.tests import (
19 from rhodecode.tests import (
20 TestController, TEST_USER_REGULAR_LOGIN, TEST_USER_REGULAR_PASS)
20 TestController, TEST_USER_REGULAR_LOGIN, TEST_USER_REGULAR_PASS)
21 from rhodecode.tests.fixture import Fixture
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 fixture = Fixture()
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 class TestUsersController(TestController):
27 class TestUsersController(TestController):
32
28
33 def test_user_group_profile(self, user_util):
29 def test_user_group_profile(self, user_util):
@@ -24,14 +24,11 b' from rhodecode.tests import ('
24 TEST_USER_REGULAR_LOGIN, TEST_USER_REGULAR_PASS)
24 TEST_USER_REGULAR_LOGIN, TEST_USER_REGULAR_PASS)
25 from rhodecode.tests.fixture import Fixture
25 from rhodecode.tests.fixture import Fixture
26 from rhodecode.tests.utils import AssertResponse
26 from rhodecode.tests.utils import AssertResponse
27 from rhodecode.tests.routes import route_path
27
28
28 fixture = Fixture()
29 fixture = Fixture()
29
30
30
31
31 def route_path(name, **kwargs):
32 return '/_profiles/{username}'.format(**kwargs)
33
34
35 class TestUsersController(TestController):
32 class TestUsersController(TestController):
36
33
37 def test_user_profile(self, user_util):
34 def test_user_profile(self, user_util):
@@ -258,6 +258,8 b' def error_handler(exception, request):'
258 '/errors/error_document.mako', {'c': c, 'h': helpers}, request=request,
258 '/errors/error_document.mako', {'c': c, 'h': helpers}, request=request,
259 response=base_response)
259 response=base_response)
260
260
261 response.headers["X-RC-Exception-Id"] = str(c.exception_id)
262
261 statsd = request.registry.statsd
263 statsd = request.registry.statsd
262 if statsd and base_response.status_code > 499:
264 if statsd and base_response.status_code > 499:
263 exc_type = f"{exception.__class__.__module__}.{exception.__class__.__name__}"
265 exc_type = f"{exception.__class__.__module__}.{exception.__class__.__name__}"
@@ -22,12 +22,7 b' from rhodecode.apps._base import ADMIN_P'
22 from rhodecode.model.db import Integration
22 from rhodecode.model.db import Integration
23 from rhodecode.model.meta import Session
23 from rhodecode.model.meta import Session
24 from rhodecode.integrations import integration_type_registry
24 from rhodecode.integrations import integration_type_registry
25
25 from rhodecode.tests.routes import route_path
26
27 def route_path(name, **kwargs):
28 return {
29 'home': '/',
30 }[name].format(**kwargs)
31
26
32
27
33 def _post_integration_test_helper(app, url, csrf_token, repo, repo_group,
28 def _post_integration_test_helper(app, url, csrf_token, repo, repo_group,
@@ -12,16 +12,14 b''
12 ******************************************************************************/
12 ******************************************************************************/
13 function registerRCRoutes() {
13 function registerRCRoutes() {
14 // routes registration
14 // routes registration
15 pyroutes.register('admin_artifacts', '/_admin/artifacts', []);
15 pyroutes.register('admin_artifacts', '/_admin/_admin/artifacts', []);
16 pyroutes.register('admin_artifacts_data', '/_admin/artifacts-data', []);
16 pyroutes.register('admin_artifacts_delete', '/_admin/_admin/artifacts/%(uid)s/delete', ['uid']);
17 pyroutes.register('admin_artifacts_delete', '/_admin/artifacts/%(uid)s/delete', ['uid']);
17 pyroutes.register('admin_artifacts_show_all', '/_admin/_admin/artifacts', []);
18 pyroutes.register('admin_artifacts_show_all', '/_admin/artifacts', []);
18 pyroutes.register('admin_artifacts_show_info', '/_admin/_admin/artifacts/%(uid)s', ['uid']);
19 pyroutes.register('admin_artifacts_show_info', '/_admin/artifacts/%(uid)s', ['uid']);
19 pyroutes.register('admin_artifacts_update', '/_admin/_admin/artifacts/%(uid)s/update', ['uid']);
20 pyroutes.register('admin_artifacts_update', '/_admin/artifacts/%(uid)s/update', ['uid']);
21 pyroutes.register('admin_audit_log_entry', '/_admin/audit_logs/%(audit_log_id)s', ['audit_log_id']);
20 pyroutes.register('admin_audit_log_entry', '/_admin/audit_logs/%(audit_log_id)s', ['audit_log_id']);
22 pyroutes.register('admin_audit_logs', '/_admin/audit_logs', []);
21 pyroutes.register('admin_audit_logs', '/_admin/audit_logs', []);
23 pyroutes.register('admin_automation', '/_admin/automation', []);
22 pyroutes.register('admin_automation', '/_admin/_admin/automation', []);
24 pyroutes.register('admin_automation_update', '/_admin/automation/%(entry_id)s/update', ['entry_id']);
25 pyroutes.register('admin_defaults_repositories', '/_admin/defaults/repositories', []);
23 pyroutes.register('admin_defaults_repositories', '/_admin/defaults/repositories', []);
26 pyroutes.register('admin_defaults_repositories_update', '/_admin/defaults/repositories/update', []);
24 pyroutes.register('admin_defaults_repositories_update', '/_admin/defaults/repositories/update', []);
27 pyroutes.register('admin_home', '/_admin', []);
25 pyroutes.register('admin_home', '/_admin', []);
@@ -29,7 +27,6 b' function registerRCRoutes() {'
29 pyroutes.register('admin_permissions_application_update', '/_admin/permissions/application/update', []);
27 pyroutes.register('admin_permissions_application_update', '/_admin/permissions/application/update', []);
30 pyroutes.register('admin_permissions_auth_token_access', '/_admin/permissions/auth_token_access', []);
28 pyroutes.register('admin_permissions_auth_token_access', '/_admin/permissions/auth_token_access', []);
31 pyroutes.register('admin_permissions_branch', '/_admin/permissions/branch', []);
29 pyroutes.register('admin_permissions_branch', '/_admin/permissions/branch', []);
32 pyroutes.register('admin_permissions_branch_update', '/_admin/permissions/branch/update', []);
33 pyroutes.register('admin_permissions_global', '/_admin/permissions/global', []);
30 pyroutes.register('admin_permissions_global', '/_admin/permissions/global', []);
34 pyroutes.register('admin_permissions_global_update', '/_admin/permissions/global/update', []);
31 pyroutes.register('admin_permissions_global_update', '/_admin/permissions/global/update', []);
35 pyroutes.register('admin_permissions_ips', '/_admin/permissions/ips', []);
32 pyroutes.register('admin_permissions_ips', '/_admin/permissions/ips', []);
@@ -39,8 +36,7 b' function registerRCRoutes() {'
39 pyroutes.register('admin_permissions_ssh_keys', '/_admin/permissions/ssh_keys', []);
36 pyroutes.register('admin_permissions_ssh_keys', '/_admin/permissions/ssh_keys', []);
40 pyroutes.register('admin_permissions_ssh_keys_data', '/_admin/permissions/ssh_keys/data', []);
37 pyroutes.register('admin_permissions_ssh_keys_data', '/_admin/permissions/ssh_keys/data', []);
41 pyroutes.register('admin_permissions_ssh_keys_update', '/_admin/permissions/ssh_keys/update', []);
38 pyroutes.register('admin_permissions_ssh_keys_update', '/_admin/permissions/ssh_keys/update', []);
42 pyroutes.register('admin_scheduler', '/_admin/scheduler', []);
39 pyroutes.register('admin_scheduler', '/_admin/_admin/scheduler', []);
43 pyroutes.register('admin_scheduler_show_tasks', '/_admin/scheduler/_tasks', []);
44 pyroutes.register('admin_settings', '/_admin/settings', []);
40 pyroutes.register('admin_settings', '/_admin/settings', []);
45 pyroutes.register('admin_settings_email', '/_admin/settings/email', []);
41 pyroutes.register('admin_settings_email', '/_admin/settings/email', []);
46 pyroutes.register('admin_settings_email_update', '/_admin/settings/email/update', []);
42 pyroutes.register('admin_settings_email_update', '/_admin/settings/email/update', []);
@@ -59,8 +55,6 b' function registerRCRoutes() {'
59 pyroutes.register('admin_settings_issuetracker_update', '/_admin/settings/issue-tracker/update', []);
55 pyroutes.register('admin_settings_issuetracker_update', '/_admin/settings/issue-tracker/update', []);
60 pyroutes.register('admin_settings_labs', '/_admin/settings/labs', []);
56 pyroutes.register('admin_settings_labs', '/_admin/settings/labs', []);
61 pyroutes.register('admin_settings_labs_update', '/_admin/settings/labs/update', []);
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 pyroutes.register('admin_settings_mapping', '/_admin/settings/mapping', []);
58 pyroutes.register('admin_settings_mapping', '/_admin/settings/mapping', []);
65 pyroutes.register('admin_settings_mapping_update', '/_admin/settings/mapping/update', []);
59 pyroutes.register('admin_settings_mapping_update', '/_admin/settings/mapping/update', []);
66 pyroutes.register('admin_settings_open_source', '/_admin/settings/open_source', []);
60 pyroutes.register('admin_settings_open_source', '/_admin/settings/open_source', []);
@@ -68,12 +62,6 b' function registerRCRoutes() {'
68 pyroutes.register('admin_settings_process_management_data', '/_admin/settings/process_management/data', []);
62 pyroutes.register('admin_settings_process_management_data', '/_admin/settings/process_management/data', []);
69 pyroutes.register('admin_settings_process_management_master_signal', '/_admin/settings/process_management/master_signal', []);
63 pyroutes.register('admin_settings_process_management_master_signal', '/_admin/settings/process_management/master_signal', []);
70 pyroutes.register('admin_settings_process_management_signal', '/_admin/settings/process_management/signal', []);
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 pyroutes.register('admin_settings_search', '/_admin/settings/search', []);
65 pyroutes.register('admin_settings_search', '/_admin/settings/search', []);
78 pyroutes.register('admin_settings_sessions', '/_admin/settings/sessions', []);
66 pyroutes.register('admin_settings_sessions', '/_admin/settings/sessions', []);
79 pyroutes.register('admin_settings_sessions_cleanup', '/_admin/settings/sessions/cleanup', []);
67 pyroutes.register('admin_settings_sessions_cleanup', '/_admin/settings/sessions/cleanup', []);
@@ -95,7 +83,6 b' function registerRCRoutes() {'
95 pyroutes.register('channelstream_connect', '/_admin/channelstream/connect', []);
83 pyroutes.register('channelstream_connect', '/_admin/channelstream/connect', []);
96 pyroutes.register('channelstream_proxy', '/_channelstream', []);
84 pyroutes.register('channelstream_proxy', '/_channelstream', []);
97 pyroutes.register('channelstream_subscribe', '/_admin/channelstream/subscribe', []);
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 pyroutes.register('debug_style_email', '/_admin/debug_style/email/%(email_id)s', ['email_id']);
86 pyroutes.register('debug_style_email', '/_admin/debug_style/email/%(email_id)s', ['email_id']);
100 pyroutes.register('debug_style_email_plain_rendered', '/_admin/debug_style/email-rendered/%(email_id)s', ['email_id']);
87 pyroutes.register('debug_style_email_plain_rendered', '/_admin/debug_style/email-rendered/%(email_id)s', ['email_id']);
101 pyroutes.register('debug_style_home', '/_admin/debug_style', []);
88 pyroutes.register('debug_style_home', '/_admin/debug_style', []);
@@ -218,8 +205,6 b' function registerRCRoutes() {'
218 pyroutes.register('my_account_emails', '/_admin/my_account/emails', []);
205 pyroutes.register('my_account_emails', '/_admin/my_account/emails', []);
219 pyroutes.register('my_account_emails_add', '/_admin/my_account/emails/new', []);
206 pyroutes.register('my_account_emails_add', '/_admin/my_account/emails/new', []);
220 pyroutes.register('my_account_emails_delete', '/_admin/my_account/emails/delete', []);
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 pyroutes.register('my_account_goto_bookmark', '/_admin/my_account/bookmark/%(bookmark_id)s', ['bookmark_id']);
208 pyroutes.register('my_account_goto_bookmark', '/_admin/my_account/bookmark/%(bookmark_id)s', ['bookmark_id']);
224 pyroutes.register('my_account_notifications', '/_admin/my_account/notifications', []);
209 pyroutes.register('my_account_notifications', '/_admin/my_account/notifications', []);
225 pyroutes.register('my_account_notifications_test_channelstream', '/_admin/my_account/test_channelstream', []);
210 pyroutes.register('my_account_notifications_test_channelstream', '/_admin/my_account/test_channelstream', []);
@@ -247,7 +232,6 b' function registerRCRoutes() {'
247 pyroutes.register('ops_healthcheck', '/_admin/ops/status', []);
232 pyroutes.register('ops_healthcheck', '/_admin/ops/status', []);
248 pyroutes.register('ops_ping', '/_admin/ops/ping', []);
233 pyroutes.register('ops_ping', '/_admin/ops/ping', []);
249 pyroutes.register('ops_redirect_test', '/_admin/ops/redirect', []);
234 pyroutes.register('ops_redirect_test', '/_admin/ops/redirect', []);
250 pyroutes.register('plugin_admin_chat', '/_admin/plugin_admin_chat/%(action)s', ['action']);
251 pyroutes.register('pull_requests_global', '/_admin/pull-request/%(pull_request_id)s', ['pull_request_id']);
235 pyroutes.register('pull_requests_global', '/_admin/pull-request/%(pull_request_id)s', ['pull_request_id']);
252 pyroutes.register('pull_requests_global_0', '/_admin/pull_requests/%(pull_request_id)s', ['pull_request_id']);
236 pyroutes.register('pull_requests_global_0', '/_admin/pull_requests/%(pull_request_id)s', ['pull_request_id']);
253 pyroutes.register('pull_requests_global_1', '/_admin/pull-requests/%(pull_request_id)s', ['pull_request_id']);
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 pyroutes.register('pullrequest_comments', '/%(repo_name)s/pull-request/%(pull_request_id)s/comments', ['repo_name', 'pull_request_id']);
241 pyroutes.register('pullrequest_comments', '/%(repo_name)s/pull-request/%(pull_request_id)s/comments', ['repo_name', 'pull_request_id']);
258 pyroutes.register('pullrequest_create', '/%(repo_name)s/pull-request/create', ['repo_name']);
242 pyroutes.register('pullrequest_create', '/%(repo_name)s/pull-request/create', ['repo_name']);
259 pyroutes.register('pullrequest_delete', '/%(repo_name)s/pull-request/%(pull_request_id)s/delete', ['repo_name', 'pull_request_id']);
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 pyroutes.register('pullrequest_drafts', '/%(repo_name)s/pull-request/%(pull_request_id)s/drafts', ['repo_name', 'pull_request_id']);
244 pyroutes.register('pullrequest_drafts', '/%(repo_name)s/pull-request/%(pull_request_id)s/drafts', ['repo_name', 'pull_request_id']);
262 pyroutes.register('pullrequest_merge', '/%(repo_name)s/pull-request/%(pull_request_id)s/merge', ['repo_name', 'pull_request_id']);
245 pyroutes.register('pullrequest_merge', '/%(repo_name)s/pull-request/%(pull_request_id)s/merge', ['repo_name', 'pull_request_id']);
263 pyroutes.register('pullrequest_new', '/%(repo_name)s/pull-request/new', ['repo_name']);
246 pyroutes.register('pullrequest_new', '/%(repo_name)s/pull-request/new', ['repo_name']);
@@ -270,18 +253,8 b' function registerRCRoutes() {'
270 pyroutes.register('pullrequest_update', '/%(repo_name)s/pull-request/%(pull_request_id)s/update', ['repo_name', 'pull_request_id']);
253 pyroutes.register('pullrequest_update', '/%(repo_name)s/pull-request/%(pull_request_id)s/update', ['repo_name', 'pull_request_id']);
271 pyroutes.register('register', '/_admin/register', []);
254 pyroutes.register('register', '/_admin/register', []);
272 pyroutes.register('repo_archivefile', '/%(repo_name)s/archive/%(fname)s', ['repo_name', 'fname']);
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 pyroutes.register('repo_artifacts_list', '/%(repo_name)s/artifacts', ['repo_name']);
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 pyroutes.register('repo_automation', '/%(repo_name)s/settings/automation', ['repo_name']);
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 pyroutes.register('repo_changelog', '/%(repo_name)s/changelog', ['repo_name']);
258 pyroutes.register('repo_changelog', '/%(repo_name)s/changelog', ['repo_name']);
286 pyroutes.register('repo_changelog_file', '/%(repo_name)s/changelog/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
259 pyroutes.register('repo_changelog_file', '/%(repo_name)s/changelog/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
287 pyroutes.register('repo_commit', '/%(repo_name)s/changeset/%(commit_id)s', ['repo_name', 'commit_id']);
260 pyroutes.register('repo_commit', '/%(repo_name)s/changeset/%(commit_id)s', ['repo_name', 'commit_id']);
@@ -358,9 +331,6 b' function registerRCRoutes() {'
358 pyroutes.register('repo_refs_changelog_data', '/%(repo_name)s/refs-data-changelog', ['repo_name']);
331 pyroutes.register('repo_refs_changelog_data', '/%(repo_name)s/refs-data-changelog', ['repo_name']);
359 pyroutes.register('repo_refs_data', '/%(repo_name)s/refs-data', ['repo_name']);
332 pyroutes.register('repo_refs_data', '/%(repo_name)s/refs-data', ['repo_name']);
360 pyroutes.register('repo_reviewers', '/%(repo_name)s/settings/review/rules', ['repo_name']);
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 pyroutes.register('repo_settings_quick_actions', '/%(repo_name)s/settings/quick-action', ['repo_name']);
334 pyroutes.register('repo_settings_quick_actions', '/%(repo_name)s/settings/quick-action', ['repo_name']);
365 pyroutes.register('repo_stats', '/%(repo_name)s/repo_stats/%(commit_id)s', ['repo_name', 'commit_id']);
335 pyroutes.register('repo_stats', '/%(repo_name)s/repo_stats/%(commit_id)s', ['repo_name', 'commit_id']);
366 pyroutes.register('repo_summary', '/%(repo_name)s', ['repo_name']);
336 pyroutes.register('repo_summary', '/%(repo_name)s', ['repo_name']);
@@ -37,7 +37,7 b' from rhodecode.lib.hash_utils import sha'
37 log = logging.getLogger(__name__)
37 log = logging.getLogger(__name__)
38
38
39 __all__ = [
39 __all__ = [
40 'get_new_dir', 'TestController', 'route_path_generator',
40 'get_new_dir', 'TestController',
41 'clear_cache_regions',
41 'clear_cache_regions',
42 'assert_session_flash', 'login_user', 'no_newline_id_generator',
42 'assert_session_flash', 'login_user', 'no_newline_id_generator',
43 'TESTS_TMP_PATH', 'HG_REPO', 'GIT_REPO', 'SVN_REPO',
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 return test_name or 'test-with-empty-name'
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 from rhodecode.tests import TestController
23 from rhodecode.tests import TestController
24 from rhodecode.tests.fixture import Fixture
24 from rhodecode.tests.fixture import Fixture
25
25 from rhodecode.tests.routes import route_path
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
53
26
54
27
55 fixture = Fixture()
28 fixture = Fixture()
@@ -21,12 +21,7 b' import mock'
21 import pytest
21 import pytest
22
22
23 from rhodecode.tests import TEST_USER_ADMIN_LOGIN
23 from rhodecode.tests import TEST_USER_ADMIN_LOGIN
24
24 from rhodecode.tests.routes import route_path
25
26 def route_path(name, **kwargs):
27 return {
28 'home': '/',
29 }[name].format(**kwargs)
30
25
31
26
32 class TestSessionBehaviorOnPasswordChange(object):
27 class TestSessionBehaviorOnPasswordChange(object):
@@ -1,4 +1,3 b''
1
2 # Copyright (C) 2010-2023 RhodeCode GmbH
1 # Copyright (C) 2010-2023 RhodeCode GmbH
3 #
2 #
4 # This program is free software: you can redistribute it and/or modify
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