##// END OF EJS Templates
revert name change broken in 28305020a4ed127e8aca2f1a10e30d902efb6238
marcink -
r3675:7a5b11c2 beta
parent child Browse files
Show More
@@ -1,371 +1,371 b''
1 1 # -*- coding: utf-8 -*-
2 2
3 3 import os
4 4 import urllib
5 5
6 6 from rhodecode.lib import vcs
7 7 from rhodecode.model.db import Repository, RepoGroup, UserRepoToPerm, User,\
8 8 Permission
9 9 from rhodecode.tests import *
10 10 from rhodecode.model.repos_group import ReposGroupModel
11 11 from rhodecode.model.repo import RepoModel
12 12 from rhodecode.model.meta import Session
13 13 from rhodecode.tests.fixture import Fixture
14 14
15 15 fixture = Fixture()
16 16
17 17
18 18 def _get_permission_for_user(user, repo):
19 19 perm = UserRepoToPerm.query()\
20 20 .filter(UserRepoToPerm.repository ==
21 21 Repository.get_by_repo_name(repo))\
22 22 .filter(UserRepoToPerm.user == User.get_by_username(user))\
23 23 .all()
24 24 return perm
25 25
26 26
27 27 class TestAdminReposController(TestController):
28 28
29 29 def test_index(self):
30 30 self.log_user()
31 31 response = self.app.get(url('repos'))
32 32 # Test response...
33 33
34 34 def test_index_as_xml(self):
35 35 response = self.app.get(url('formatted_repos', format='xml'))
36 36
37 37 def test_create_hg(self):
38 38 self.log_user()
39 39 repo_name = NEW_HG_REPO
40 40 description = 'description for newly created repo'
41 41 response = self.app.post(url('repos'),
42 42 fixture._get_repo_create_params(repo_private=False,
43 43 repo_name=repo_name,
44 44 repo_description=description))
45 45 self.checkSessionFlash(response,
46 46 'Created repository <a href="/%s">%s</a>'
47 47 % (repo_name, repo_name))
48 48
49 49 #test if the repo was created in the database
50 50 new_repo = self.Session().query(Repository)\
51 51 .filter(Repository.repo_name == repo_name).one()
52 52
53 53 self.assertEqual(new_repo.repo_name, repo_name)
54 54 self.assertEqual(new_repo.description, description)
55 55
56 56 #test if repository is visible in the list ?
57 57 response = response.follow()
58 58
59 59 response.mustcontain(repo_name)
60 60
61 61 #test if repository was created on filesystem
62 62 try:
63 63 vcs.get_repo(os.path.join(TESTS_TMP_PATH, repo_name))
64 64 except Exception:
65 65 self.fail('no repo %s in filesystem' % repo_name)
66 66
67 67 def test_create_hg_non_ascii(self):
68 68 self.log_user()
69 69 non_ascii = "Δ…Δ™Ε‚"
70 70 repo_name = "%s%s" % (NEW_HG_REPO, non_ascii)
71 71 repo_name_unicode = repo_name.decode('utf8')
72 72 description = 'description for newly created repo' + non_ascii
73 73 description_unicode = description.decode('utf8')
74 74 private = False
75 75 response = self.app.post(url('repos'),
76 76 fixture._get_repo_create_params(repo_private=False,
77 77 repo_name=repo_name,
78 78 repo_description=description))
79 79 self.checkSessionFlash(response,
80 80 u'Created repository <a href="/%s">%s</a>'
81 81 % (urllib.quote(repo_name), repo_name_unicode))
82 82 #test if the repo was created in the database
83 83 new_repo = self.Session().query(Repository)\
84 84 .filter(Repository.repo_name == repo_name_unicode).one()
85 85
86 86 self.assertEqual(new_repo.repo_name, repo_name_unicode)
87 87 self.assertEqual(new_repo.description, description_unicode)
88 88
89 89 #test if repository is visible in the list ?
90 90 response = response.follow()
91 91
92 92 response.mustcontain(repo_name)
93 93
94 94 #test if repository was created on filesystem
95 95 try:
96 96 vcs.get_repo(os.path.join(TESTS_TMP_PATH, repo_name))
97 97 except Exception:
98 98 self.fail('no repo %s in filesystem' % repo_name)
99 99
100 def z(self):
100 def test_create_hg_in_group(self):
101 101 self.log_user()
102 102
103 103 ## create GROUP
104 104 group_name = 'sometest'
105 105 gr = ReposGroupModel().create(group_name=group_name,
106 106 group_description='test',
107 107 owner=TEST_USER_ADMIN_LOGIN)
108 108 self.Session().commit()
109 109
110 110 repo_name = 'ingroup'
111 111 repo_name_full = RepoGroup.url_sep().join([group_name, repo_name])
112 112 description = 'description for newly created repo'
113 113 response = self.app.post(url('repos'),
114 114 fixture._get_repo_create_params(repo_private=False,
115 115 repo_name=repo_name,
116 116 repo_description=description,
117 117 repo_group=gr.group_id,))
118 118
119 119 self.checkSessionFlash(response,
120 120 'Created repository <a href="/%s">%s</a>'
121 121 % (repo_name_full, repo_name))
122 122 #test if the repo was created in the database
123 123 new_repo = self.Session().query(Repository)\
124 124 .filter(Repository.repo_name == repo_name_full).one()
125 125
126 126 self.assertEqual(new_repo.repo_name, repo_name_full)
127 127 self.assertEqual(new_repo.description, description)
128 128
129 129 #test if repository is visible in the list ?
130 130 response = response.follow()
131 131
132 132 response.mustcontain(repo_name_full)
133 133
134 134 #test if repository was created on filesystem
135 135 try:
136 136 vcs.get_repo(os.path.join(TESTS_TMP_PATH, repo_name_full))
137 137 except Exception:
138 138 ReposGroupModel().delete(group_name)
139 139 self.Session().commit()
140 140 self.fail('no repo %s in filesystem' % repo_name)
141 141
142 142 RepoModel().delete(repo_name_full)
143 143 ReposGroupModel().delete(group_name)
144 144 self.Session().commit()
145 145
146 146 def test_create_git(self):
147 147 self.log_user()
148 148 repo_name = NEW_GIT_REPO
149 149 description = 'description for newly created repo'
150 150
151 151 response = self.app.post(url('repos'),
152 152 fixture._get_repo_create_params(repo_private=False,
153 153 repo_type='git',
154 154 repo_name=repo_name,
155 155 repo_description=description))
156 156 self.checkSessionFlash(response,
157 157 'Created repository <a href="/%s">%s</a>'
158 158 % (repo_name, repo_name))
159 159
160 160 #test if the repo was created in the database
161 161 new_repo = self.Session().query(Repository)\
162 162 .filter(Repository.repo_name == repo_name).one()
163 163
164 164 self.assertEqual(new_repo.repo_name, repo_name)
165 165 self.assertEqual(new_repo.description, description)
166 166
167 167 #test if repository is visible in the list ?
168 168 response = response.follow()
169 169
170 170 response.mustcontain(repo_name)
171 171
172 172 #test if repository was created on filesystem
173 173 try:
174 174 vcs.get_repo(os.path.join(TESTS_TMP_PATH, repo_name))
175 175 except Exception:
176 176 self.fail('no repo %s in filesystem' % repo_name)
177 177
178 178 def test_create_git_non_ascii(self):
179 179 self.log_user()
180 180 non_ascii = "Δ…Δ™Ε‚"
181 181 repo_name = "%s%s" % (NEW_GIT_REPO, non_ascii)
182 182 repo_name_unicode = repo_name.decode('utf8')
183 183 description = 'description for newly created repo' + non_ascii
184 184 description_unicode = description.decode('utf8')
185 185 private = False
186 186 response = self.app.post(url('repos'),
187 187 fixture._get_repo_create_params(repo_private=False,
188 188 repo_type='git',
189 189 repo_name=repo_name,
190 190 repo_description=description))
191 191
192 192 self.checkSessionFlash(response,
193 193 u'Created repository <a href="/%s">%s</a>'
194 194 % (urllib.quote(repo_name), repo_name_unicode))
195 195
196 196 #test if the repo was created in the database
197 197 new_repo = self.Session().query(Repository)\
198 198 .filter(Repository.repo_name == repo_name_unicode).one()
199 199
200 200 self.assertEqual(new_repo.repo_name, repo_name_unicode)
201 201 self.assertEqual(new_repo.description, description_unicode)
202 202
203 203 #test if repository is visible in the list ?
204 204 response = response.follow()
205 205
206 206 response.mustcontain(repo_name)
207 207
208 208 #test if repository was created on filesystem
209 209 try:
210 210 vcs.get_repo(os.path.join(TESTS_TMP_PATH, repo_name))
211 211 except Exception:
212 212 self.fail('no repo %s in filesystem' % repo_name)
213 213
214 214 def test_update(self):
215 215 response = self.app.put(url('repo', repo_name=HG_REPO))
216 216
217 217 def test_update_browser_fakeout(self):
218 218 response = self.app.post(url('repo', repo_name=HG_REPO),
219 219 params=dict(_method='put'))
220 220
221 221 def test_delete_hg(self):
222 222 self.log_user()
223 223 repo_name = 'vcs_test_new_to_delete'
224 224 description = 'description for newly created repo'
225 225 response = self.app.post(url('repos'),
226 226 fixture._get_repo_create_params(repo_private=False,
227 227 repo_type='hg',
228 228 repo_name=repo_name,
229 229 repo_description=description))
230 230
231 231 self.checkSessionFlash(response,
232 232 'Created repository <a href="/%s">%s</a>'
233 233 % (repo_name, repo_name))
234 234 #test if the repo was created in the database
235 235 new_repo = self.Session().query(Repository)\
236 236 .filter(Repository.repo_name == repo_name).one()
237 237
238 238 self.assertEqual(new_repo.repo_name, repo_name)
239 239 self.assertEqual(new_repo.description, description)
240 240
241 241 #test if repository is visible in the list ?
242 242 response = response.follow()
243 243
244 244 response.mustcontain(repo_name)
245 245
246 246 #test if repository was created on filesystem
247 247 try:
248 248 vcs.get_repo(os.path.join(TESTS_TMP_PATH, repo_name))
249 249 except Exception:
250 250 self.fail('no repo %s in filesystem' % repo_name)
251 251
252 252 response = self.app.delete(url('repo', repo_name=repo_name))
253 253
254 254 self.checkSessionFlash(response, 'Deleted repository %s' % (repo_name))
255 255
256 256 response.follow()
257 257
258 258 #check if repo was deleted from db
259 259 deleted_repo = self.Session().query(Repository)\
260 260 .filter(Repository.repo_name == repo_name).scalar()
261 261
262 262 self.assertEqual(deleted_repo, None)
263 263
264 264 self.assertEqual(os.path.isdir(os.path.join(TESTS_TMP_PATH, repo_name)),
265 265 False)
266 266
267 267 def test_delete_git(self):
268 268 self.log_user()
269 269 repo_name = 'vcs_test_new_to_delete'
270 270 description = 'description for newly created repo'
271 271 private = False
272 272 response = self.app.post(url('repos'),
273 273 fixture._get_repo_create_params(repo_private=False,
274 274 repo_type='git',
275 275 repo_name=repo_name,
276 276 repo_description=description))
277 277
278 278 self.checkSessionFlash(response,
279 279 'Created repository <a href="/%s">%s</a>'
280 280 % (repo_name, repo_name))
281 281 #test if the repo was created in the database
282 282 new_repo = self.Session().query(Repository)\
283 283 .filter(Repository.repo_name == repo_name).one()
284 284
285 285 self.assertEqual(new_repo.repo_name, repo_name)
286 286 self.assertEqual(new_repo.description, description)
287 287
288 288 #test if repository is visible in the list ?
289 289 response = response.follow()
290 290
291 291 response.mustcontain(repo_name)
292 292
293 293 #test if repository was created on filesystem
294 294 try:
295 295 vcs.get_repo(os.path.join(TESTS_TMP_PATH, repo_name))
296 296 except Exception:
297 297 self.fail('no repo %s in filesystem' % repo_name)
298 298
299 299 response = self.app.delete(url('repo', repo_name=repo_name))
300 300
301 301 self.checkSessionFlash(response, 'Deleted repository %s' % (repo_name))
302 302
303 303 response.follow()
304 304
305 305 #check if repo was deleted from db
306 306 deleted_repo = self.Session().query(Repository)\
307 307 .filter(Repository.repo_name == repo_name).scalar()
308 308
309 309 self.assertEqual(deleted_repo, None)
310 310
311 311 self.assertEqual(os.path.isdir(os.path.join(TESTS_TMP_PATH, repo_name)),
312 312 False)
313 313
314 314 def test_delete_repo_with_group(self):
315 315 #TODO:
316 316 pass
317 317
318 318 def test_delete_browser_fakeout(self):
319 319 response = self.app.post(url('repo', repo_name=HG_REPO),
320 320 params=dict(_method='delete'))
321 321
322 322 def test_show_hg(self):
323 323 self.log_user()
324 324 response = self.app.get(url('repo', repo_name=HG_REPO))
325 325
326 326 def test_show_git(self):
327 327 self.log_user()
328 328 response = self.app.get(url('repo', repo_name=GIT_REPO))
329 329
330 330
331 331 def test_edit(self):
332 332 response = self.app.get(url('edit_repo', repo_name=HG_REPO))
333 333
334 334 def test_set_private_flag_sets_default_to_none(self):
335 335 self.log_user()
336 336 #initially repository perm should be read
337 337 perm = _get_permission_for_user(user='default', repo=HG_REPO)
338 338 self.assertTrue(len(perm), 1)
339 339 self.assertEqual(perm[0].permission.permission_name, 'repository.read')
340 340 self.assertEqual(Repository.get_by_repo_name(HG_REPO).private, False)
341 341
342 342 response = self.app.put(url('repo', repo_name=HG_REPO),
343 343 fixture._get_repo_create_params(repo_private=1,
344 344 repo_name=HG_REPO,
345 345 user=TEST_USER_ADMIN_LOGIN))
346 346 self.checkSessionFlash(response,
347 347 msg='Repository %s updated successfully' % (HG_REPO))
348 348 self.assertEqual(Repository.get_by_repo_name(HG_REPO).private, True)
349 349
350 350 #now the repo default permission should be None
351 351 perm = _get_permission_for_user(user='default', repo=HG_REPO)
352 352 self.assertTrue(len(perm), 1)
353 353 self.assertEqual(perm[0].permission.permission_name, 'repository.none')
354 354
355 355 response = self.app.put(url('repo', repo_name=HG_REPO),
356 356 fixture._get_repo_create_params(repo_private=False,
357 357 repo_name=HG_REPO,
358 358 user=TEST_USER_ADMIN_LOGIN))
359 359 self.checkSessionFlash(response,
360 360 msg='Repository %s updated successfully' % (HG_REPO))
361 361 self.assertEqual(Repository.get_by_repo_name(HG_REPO).private, False)
362 362
363 363 #we turn off private now the repo default permission should stay None
364 364 perm = _get_permission_for_user(user='default', repo=HG_REPO)
365 365 self.assertTrue(len(perm), 1)
366 366 self.assertEqual(perm[0].permission.permission_name, 'repository.none')
367 367
368 368 #update this permission back
369 369 perm[0].permission = Permission.get_by_key('repository.read')
370 370 Session().add(perm[0])
371 371 Session().commit()
General Comments 0
You need to be logged in to leave comments. Login now