annotate kallithea/tests/api/api_base.py @ 8940:1d1fe8c2ef57 stable

tests: update test_api_create_repo with better coverage of create_repo api Based on test_api_update_repo. This shows that some of the API is broken. Failing test cases are disabled and will be enabled when the problems are fixed.
author Mads Kiilerich <mads@kiilerich.com>
date Mon, 12 Dec 2022 00:38:59 +0100
parents 9de126d62202
children f2dc57c123cf
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1 # -*- coding: utf-8 -*-
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2 # This program is free software: you can redistribute it and/or modify
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
3 # it under the terms of the GNU General Public License as published by
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
4 # the Free Software Foundation, either version 3 of the License, or
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
5 # (at your option) any later version.
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
6 #
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
7 # This program is distributed in the hope that it will be useful,
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
8 # but WITHOUT ANY WARRANTY; without even the implied warranty of
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
9 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
10 # GNU General Public License for more details.
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
11 #
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
12 # You should have received a copy of the GNU General Public License
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
13 # along with this program. If not, see <http://www.gnu.org/licenses/>.
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
14
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
15 """
5969
5ca5379641d0 tests: remove last references to nosetests
Mads Kiilerich <madski@unity3d.com>
parents: 5948
diff changeset
16 Tests for the JSON-RPC web api.
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
17 """
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
18
8940
1d1fe8c2ef57 tests: update test_api_create_repo with better coverage of create_repo api
Mads Kiilerich <mads@kiilerich.com>
parents: 8939
diff changeset
19 import datetime
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
20 import os
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
21 import random
6655
6452215a54ee api: add get_pullrequest and comment_pullrequest methods
domruf <dominikruf@gmail.com>
parents: 6654
diff changeset
22 import re
8728
f3fab7b124f2 imports: try to use global imports unless it is a layering violation
Mads Kiilerich <mads@kiilerich.com>
parents: 8687
diff changeset
23 import string
8851
05406c312342 pytype: add Python type annotations where necessary to guide pytype
Mads Kiilerich <mads@kiilerich.com>
parents: 8834
diff changeset
24 from typing import Sized
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
25
7811
0a277465fddf scripts: initial run of import cleanup using isort
Mads Kiilerich <mads@kiilerich.com>
parents: 7687
diff changeset
26 import mock
7144
bfb1ae42bcbb vcs: fix get_changesets filtering on hg repo to AND the criteria instead of OR
domruf <dominikruf@gmail.com>
parents: 7140
diff changeset
27 import pytest
8851
05406c312342 pytype: add Python type annotations where necessary to guide pytype
Mads Kiilerich <mads@kiilerich.com>
parents: 8834
diff changeset
28 from webtest import TestApp
7144
bfb1ae42bcbb vcs: fix get_changesets filtering on hg repo to AND the criteria instead of OR
domruf <dominikruf@gmail.com>
parents: 7140
diff changeset
29
8120
58b6e4cd6fe9 lib: clean up ext_json and how it is used - avoid monkey patching
Mads Kiilerich <mads@kiilerich.com>
parents: 8109
diff changeset
30 from kallithea.lib import ext_json
7811
0a277465fddf scripts: initial run of import cleanup using isort
Mads Kiilerich <mads@kiilerich.com>
parents: 7687
diff changeset
31 from kallithea.lib.auth import AuthUser
8120
58b6e4cd6fe9 lib: clean up ext_json and how it is used - avoid monkey patching
Mads Kiilerich <mads@kiilerich.com>
parents: 8109
diff changeset
32 from kallithea.lib.utils2 import ascii_bytes
8687
5e46f73f0d1c model: always import the whole db module - drop "from" imports
Mads Kiilerich <mads@kiilerich.com>
parents: 8686
diff changeset
33 from kallithea.model import db, meta
7811
0a277465fddf scripts: initial run of import cleanup using isort
Mads Kiilerich <mads@kiilerich.com>
parents: 7687
diff changeset
34 from kallithea.model.changeset_status import ChangesetStatusModel
0a277465fddf scripts: initial run of import cleanup using isort
Mads Kiilerich <mads@kiilerich.com>
parents: 7687
diff changeset
35 from kallithea.model.gist import GistModel
8656
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
36 from kallithea.model.pull_request import PullRequestModel
7811
0a277465fddf scripts: initial run of import cleanup using isort
Mads Kiilerich <mads@kiilerich.com>
parents: 7687
diff changeset
37 from kallithea.model.repo import RepoModel
0a277465fddf scripts: initial run of import cleanup using isort
Mads Kiilerich <mads@kiilerich.com>
parents: 7687
diff changeset
38 from kallithea.model.repo_group import RepoGroupModel
0a277465fddf scripts: initial run of import cleanup using isort
Mads Kiilerich <mads@kiilerich.com>
parents: 7687
diff changeset
39 from kallithea.model.scm import ScmModel
0a277465fddf scripts: initial run of import cleanup using isort
Mads Kiilerich <mads@kiilerich.com>
parents: 7687
diff changeset
40 from kallithea.model.user import UserModel
0a277465fddf scripts: initial run of import cleanup using isort
Mads Kiilerich <mads@kiilerich.com>
parents: 7687
diff changeset
41 from kallithea.model.user_group import UserGroupModel
8109
e527cc2ce8dc cleanup: get rid of most "import *"
Mads Kiilerich <mads@kiilerich.com>
parents: 8078
diff changeset
42 from kallithea.tests import base
8585
1de3e5d104bf tests: consistent use of more helpful raise_exception "fixture"
Mads Kiilerich <mads@kiilerich.com>
parents: 8379
diff changeset
43 from kallithea.tests.fixture import Fixture, raise_exception
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
44
3647
8a86836fad64 more usage of fixture tools
Marcin Kuzminski <marcin@python-works.com>
parents: 3502
diff changeset
45
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
46 API_URL = '/_admin/api'
8224
e63bcce18fef py3: automatic migration with 2to3 -f unicode
Mads Kiilerich <mads@kiilerich.com>
parents: 8120
diff changeset
47 TEST_USER_GROUP = 'test_user_group'
e63bcce18fef py3: automatic migration with 2to3 -f unicode
Mads Kiilerich <mads@kiilerich.com>
parents: 8120
diff changeset
48 TEST_REPO_GROUP = 'test_repo_group'
3647
8a86836fad64 more usage of fixture tools
Marcin Kuzminski <marcin@python-works.com>
parents: 3502
diff changeset
49
8a86836fad64 more usage of fixture tools
Marcin Kuzminski <marcin@python-works.com>
parents: 3502
diff changeset
50 fixture = Fixture()
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
51
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
52
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
53 def _build_data(apikey, method, **kw):
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
54 """
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
55 Builds API data with given random ID
8120
58b6e4cd6fe9 lib: clean up ext_json and how it is used - avoid monkey patching
Mads Kiilerich <mads@kiilerich.com>
parents: 8109
diff changeset
56 For convenience, the json is returned as str
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
57 """
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
58 random_id = random.randrange(1, 9999)
8120
58b6e4cd6fe9 lib: clean up ext_json and how it is used - avoid monkey patching
Mads Kiilerich <mads@kiilerich.com>
parents: 8109
diff changeset
59 return random_id, ext_json.dumps({
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
60 "id": random_id,
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
61 "api_key": apikey,
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
62 "method": method,
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
63 "args": kw
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
64 })
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
65
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
66
8120
58b6e4cd6fe9 lib: clean up ext_json and how it is used - avoid monkey patching
Mads Kiilerich <mads@kiilerich.com>
parents: 8109
diff changeset
67 jsonify = lambda obj: ext_json.loads(ext_json.dumps(obj))
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
68
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
69
2738
Marcin Kuzminski <marcin@python-works.com>
parents: 2737
diff changeset
70 def api_call(test_obj, params):
Marcin Kuzminski <marcin@python-works.com>
parents: 2737
diff changeset
71 response = test_obj.app.post(API_URL, content_type='application/json',
Marcin Kuzminski <marcin@python-works.com>
parents: 2737
diff changeset
72 params=params)
Marcin Kuzminski <marcin@python-works.com>
parents: 2737
diff changeset
73 return response
Marcin Kuzminski <marcin@python-works.com>
parents: 2737
diff changeset
74
Marcin Kuzminski <marcin@python-works.com>
parents: 2737
diff changeset
75
3647
8a86836fad64 more usage of fixture tools
Marcin Kuzminski <marcin@python-works.com>
parents: 3502
diff changeset
76 ## helpers
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
77 def make_user_group(name=TEST_USER_GROUP):
8109
e527cc2ce8dc cleanup: get rid of most "import *"
Mads Kiilerich <mads@kiilerich.com>
parents: 8078
diff changeset
78 gr = fixture.create_user_group(name, cur_user=base.TEST_USER_ADMIN_LOGIN)
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
79 UserGroupModel().add_user_to_group(user_group=gr,
8109
e527cc2ce8dc cleanup: get rid of most "import *"
Mads Kiilerich <mads@kiilerich.com>
parents: 8078
diff changeset
80 user=base.TEST_USER_ADMIN_LOGIN)
8686
b095e2fbba44 model: always import whole meta module - also when referencing Session
Mads Kiilerich <mads@kiilerich.com>
parents: 8661
diff changeset
81 meta.Session().commit()
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
82 return gr
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
83
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
84
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
85 def make_repo_group(name=TEST_REPO_GROUP):
8109
e527cc2ce8dc cleanup: get rid of most "import *"
Mads Kiilerich <mads@kiilerich.com>
parents: 8078
diff changeset
86 gr = fixture.create_repo_group(name, cur_user=base.TEST_USER_ADMIN_LOGIN)
8686
b095e2fbba44 model: always import whole meta module - also when referencing Session
Mads Kiilerich <mads@kiilerich.com>
parents: 8661
diff changeset
87 meta.Session().commit()
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
88 return gr
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
89
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
90
5051
12ae08b2fe3f tests: avoid executing tests in base classes
Marc Abramowitz <marc@marc-abramowitz.com>
parents: 4792
diff changeset
91 class _BaseTestApi(object):
8851
05406c312342 pytype: add Python type annotations where necessary to guide pytype
Mads Kiilerich <mads@kiilerich.com>
parents: 8834
diff changeset
92 app: TestApp # assigned by app_fixture in subclass TestController mixin
05406c312342 pytype: add Python type annotations where necessary to guide pytype
Mads Kiilerich <mads@kiilerich.com>
parents: 8834
diff changeset
93 # assigned in subclass:
05406c312342 pytype: add Python type annotations where necessary to guide pytype
Mads Kiilerich <mads@kiilerich.com>
parents: 8834
diff changeset
94 REPO: str
05406c312342 pytype: add Python type annotations where necessary to guide pytype
Mads Kiilerich <mads@kiilerich.com>
parents: 8834
diff changeset
95 REPO_TYPE: str
05406c312342 pytype: add Python type annotations where necessary to guide pytype
Mads Kiilerich <mads@kiilerich.com>
parents: 8834
diff changeset
96 TEST_REVISION: str
05406c312342 pytype: add Python type annotations where necessary to guide pytype
Mads Kiilerich <mads@kiilerich.com>
parents: 8834
diff changeset
97 TEST_PR_SRC: str
05406c312342 pytype: add Python type annotations where necessary to guide pytype
Mads Kiilerich <mads@kiilerich.com>
parents: 8834
diff changeset
98 TEST_PR_DST: str
05406c312342 pytype: add Python type annotations where necessary to guide pytype
Mads Kiilerich <mads@kiilerich.com>
parents: 8834
diff changeset
99 TEST_PR_REVISIONS: Sized
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
100
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
101 @classmethod
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
102 def setup_class(cls):
8687
5e46f73f0d1c model: always import the whole db module - drop "from" imports
Mads Kiilerich <mads@kiilerich.com>
parents: 8686
diff changeset
103 cls.usr = db.User.get_by_username(base.TEST_USER_ADMIN_LOGIN)
3891
aff5dd957f35 classmethods should have cls as first argument
Marcin Kuzminski <marcin@python-works.com>
parents: 3840
diff changeset
104 cls.apikey = cls.usr.api_key
aff5dd957f35 classmethods should have cls as first argument
Marcin Kuzminski <marcin@python-works.com>
parents: 3840
diff changeset
105 cls.test_user = UserModel().create_or_update(
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
106 username='test-api',
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
107 password='test',
4183
da3c57422ee6 Change domain used for email addresses in tests
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 4116
diff changeset
108 email='test@example.com',
8224
e63bcce18fef py3: automatic migration with 2to3 -f unicode
Mads Kiilerich <mads@kiilerich.com>
parents: 8120
diff changeset
109 firstname='first',
e63bcce18fef py3: automatic migration with 2to3 -f unicode
Mads Kiilerich <mads@kiilerich.com>
parents: 8120
diff changeset
110 lastname='last'
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
111 )
8686
b095e2fbba44 model: always import whole meta module - also when referencing Session
Mads Kiilerich <mads@kiilerich.com>
parents: 8661
diff changeset
112 meta.Session().commit()
3891
aff5dd957f35 classmethods should have cls as first argument
Marcin Kuzminski <marcin@python-works.com>
parents: 3840
diff changeset
113 cls.TEST_USER_LOGIN = cls.test_user.username
aff5dd957f35 classmethods should have cls as first argument
Marcin Kuzminski <marcin@python-works.com>
parents: 3840
diff changeset
114 cls.apikey_regular = cls.test_user.api_key
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
115
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
116 @classmethod
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
117 def teardown_class(cls):
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
118 pass
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
119
5907
526724b8b6ce pytest migration: api: convert to TestControllerPytest
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 5906
diff changeset
120 def setup_method(self, method):
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
121 make_user_group()
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
122 make_repo_group()
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
123
5907
526724b8b6ce pytest migration: api: convert to TestControllerPytest
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 5906
diff changeset
124 def teardown_method(self, method):
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
125 fixture.destroy_user_group(TEST_USER_GROUP)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
126 fixture.destroy_gists()
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
127 fixture.destroy_repo_group(TEST_REPO_GROUP)
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
128
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
129 def _compare_ok(self, id_, expected, given):
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
130 expected = jsonify({
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
131 'id': id_,
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
132 'error': None,
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
133 'result': expected
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
134 })
8120
58b6e4cd6fe9 lib: clean up ext_json and how it is used - avoid monkey patching
Mads Kiilerich <mads@kiilerich.com>
parents: 8109
diff changeset
135 given = ext_json.loads(given)
7325
a560e17d88a1 tests: improve error reporting for api tests - show the actual expected and seen values
Mads Kiilerich <mads@kiilerich.com>
parents: 7320
diff changeset
136 assert expected == given, (expected, given)
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
137
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
138 def _compare_error(self, id_, expected, given):
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
139 expected = jsonify({
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
140 'id': id_,
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
141 'error': expected,
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
142 'result': None
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
143 })
8120
58b6e4cd6fe9 lib: clean up ext_json and how it is used - avoid monkey patching
Mads Kiilerich <mads@kiilerich.com>
parents: 8109
diff changeset
144 given = ext_json.loads(given)
7325
a560e17d88a1 tests: improve error reporting for api tests - show the actual expected and seen values
Mads Kiilerich <mads@kiilerich.com>
parents: 7320
diff changeset
145 assert expected == given, (expected, given)
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
146
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
147 def test_api_wrong_key(self):
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
148 id_, params = _build_data('trololo', 'get_user')
2738
Marcin Kuzminski <marcin@python-works.com>
parents: 2737
diff changeset
149 response = api_call(self, params)
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
150
5124
e3aab61a9411 spelling: more consistent casing of 'API key'
Mads Kiilerich <madski@unity3d.com>
parents: 5051
diff changeset
151 expected = 'Invalid API key'
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
152 self._compare_error(id_, expected, given=response.body)
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
153
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
154 def test_api_missing_non_optional_param(self):
3163
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
155 id_, params = _build_data(self.apikey, 'get_repo')
2738
Marcin Kuzminski <marcin@python-works.com>
parents: 2737
diff changeset
156 response = api_call(self, params)
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
157
3163
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
158 expected = 'Missing non optional `repoid` arg in JSON DATA'
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
159 self._compare_error(id_, expected, given=response.body)
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
160
3165
e1baadec6217 fixes issue #702 API methods without arguments fail when "args":null
Marcin Kuzminski <marcin@python-works.com>
parents: 3163
diff changeset
161 def test_api_missing_non_optional_param_args_null(self):
e1baadec6217 fixes issue #702 API methods without arguments fail when "args":null
Marcin Kuzminski <marcin@python-works.com>
parents: 3163
diff changeset
162 id_, params = _build_data(self.apikey, 'get_repo')
e1baadec6217 fixes issue #702 API methods without arguments fail when "args":null
Marcin Kuzminski <marcin@python-works.com>
parents: 3163
diff changeset
163 params = params.replace('"args": {}', '"args": null')
e1baadec6217 fixes issue #702 API methods without arguments fail when "args":null
Marcin Kuzminski <marcin@python-works.com>
parents: 3163
diff changeset
164 response = api_call(self, params)
e1baadec6217 fixes issue #702 API methods without arguments fail when "args":null
Marcin Kuzminski <marcin@python-works.com>
parents: 3163
diff changeset
165
e1baadec6217 fixes issue #702 API methods without arguments fail when "args":null
Marcin Kuzminski <marcin@python-works.com>
parents: 3163
diff changeset
166 expected = 'Missing non optional `repoid` arg in JSON DATA'
e1baadec6217 fixes issue #702 API methods without arguments fail when "args":null
Marcin Kuzminski <marcin@python-works.com>
parents: 3163
diff changeset
167 self._compare_error(id_, expected, given=response.body)
e1baadec6217 fixes issue #702 API methods without arguments fail when "args":null
Marcin Kuzminski <marcin@python-works.com>
parents: 3163
diff changeset
168
e1baadec6217 fixes issue #702 API methods without arguments fail when "args":null
Marcin Kuzminski <marcin@python-works.com>
parents: 3163
diff changeset
169 def test_api_missing_non_optional_param_args_bad(self):
e1baadec6217 fixes issue #702 API methods without arguments fail when "args":null
Marcin Kuzminski <marcin@python-works.com>
parents: 3163
diff changeset
170 id_, params = _build_data(self.apikey, 'get_repo')
e1baadec6217 fixes issue #702 API methods without arguments fail when "args":null
Marcin Kuzminski <marcin@python-works.com>
parents: 3163
diff changeset
171 params = params.replace('"args": {}', '"args": 1')
e1baadec6217 fixes issue #702 API methods without arguments fail when "args":null
Marcin Kuzminski <marcin@python-works.com>
parents: 3163
diff changeset
172 response = api_call(self, params)
e1baadec6217 fixes issue #702 API methods without arguments fail when "args":null
Marcin Kuzminski <marcin@python-works.com>
parents: 3163
diff changeset
173
e1baadec6217 fixes issue #702 API methods without arguments fail when "args":null
Marcin Kuzminski <marcin@python-works.com>
parents: 3163
diff changeset
174 expected = 'Missing non optional `repoid` arg in JSON DATA'
e1baadec6217 fixes issue #702 API methods without arguments fail when "args":null
Marcin Kuzminski <marcin@python-works.com>
parents: 3163
diff changeset
175 self._compare_error(id_, expected, given=response.body)
e1baadec6217 fixes issue #702 API methods without arguments fail when "args":null
Marcin Kuzminski <marcin@python-works.com>
parents: 3163
diff changeset
176
e1baadec6217 fixes issue #702 API methods without arguments fail when "args":null
Marcin Kuzminski <marcin@python-works.com>
parents: 3163
diff changeset
177 def test_api_args_is_null(self):
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
178 id_, params = _build_data(self.apikey, 'get_users', )
3165
e1baadec6217 fixes issue #702 API methods without arguments fail when "args":null
Marcin Kuzminski <marcin@python-works.com>
parents: 3163
diff changeset
179 params = params.replace('"args": {}', '"args": null')
e1baadec6217 fixes issue #702 API methods without arguments fail when "args":null
Marcin Kuzminski <marcin@python-works.com>
parents: 3163
diff changeset
180 response = api_call(self, params)
5913
8d4f3a852716 pytest migration: api: switch to standard assert statements
Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>
parents: 5907
diff changeset
181 assert response.status == '200 OK'
3165
e1baadec6217 fixes issue #702 API methods without arguments fail when "args":null
Marcin Kuzminski <marcin@python-works.com>
parents: 3163
diff changeset
182
e1baadec6217 fixes issue #702 API methods without arguments fail when "args":null
Marcin Kuzminski <marcin@python-works.com>
parents: 3163
diff changeset
183 def test_api_args_is_bad(self):
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
184 id_, params = _build_data(self.apikey, 'get_users', )
3165
e1baadec6217 fixes issue #702 API methods without arguments fail when "args":null
Marcin Kuzminski <marcin@python-works.com>
parents: 3163
diff changeset
185 params = params.replace('"args": {}', '"args": 1')
e1baadec6217 fixes issue #702 API methods without arguments fail when "args":null
Marcin Kuzminski <marcin@python-works.com>
parents: 3163
diff changeset
186 response = api_call(self, params)
5913
8d4f3a852716 pytest migration: api: switch to standard assert statements
Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>
parents: 5907
diff changeset
187 assert response.status == '200 OK'
3165
e1baadec6217 fixes issue #702 API methods without arguments fail when "args":null
Marcin Kuzminski <marcin@python-works.com>
parents: 3163
diff changeset
188
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
189 def test_api_args_different_args(self):
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
190 expected = {
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
191 'ascii_letters': string.ascii_letters,
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
192 'ws': string.whitespace,
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
193 'printables': string.printable
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
194 }
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
195 id_, params = _build_data(self.apikey, 'test', args=expected)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
196 response = api_call(self, params)
5913
8d4f3a852716 pytest migration: api: switch to standard assert statements
Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>
parents: 5907
diff changeset
197 assert response.status == '200 OK'
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
198 self._compare_ok(id_, expected, response.body)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
199
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
200 def test_api_get_users(self):
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
201 id_, params = _build_data(self.apikey, 'get_users', )
2738
Marcin Kuzminski <marcin@python-works.com>
parents: 2737
diff changeset
202 response = api_call(self, params)
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
203 ret_all = []
8687
5e46f73f0d1c model: always import the whole db module - drop "from" imports
Mads Kiilerich <mads@kiilerich.com>
parents: 8686
diff changeset
204 _users = db.User.query().filter_by(is_default_user=False) \
5e46f73f0d1c model: always import the whole db module - drop "from" imports
Mads Kiilerich <mads@kiilerich.com>
parents: 8686
diff changeset
205 .order_by(db.User.username).all()
3803
e2ebd8808351 fixed broken API tests after excluding default user
Marcin Kuzminski <marcin@python-works.com>
parents: 3774
diff changeset
206 for usr in _users:
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
207 ret = usr.get_api_data()
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
208 ret_all.append(jsonify(ret))
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
209 expected = ret_all
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
210 self._compare_ok(id_, expected, given=response.body)
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
211
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
212 def test_api_get_user(self):
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
213 id_, params = _build_data(self.apikey, 'get_user',
8109
e527cc2ce8dc cleanup: get rid of most "import *"
Mads Kiilerich <mads@kiilerich.com>
parents: 8078
diff changeset
214 userid=base.TEST_USER_ADMIN_LOGIN)
2738
Marcin Kuzminski <marcin@python-works.com>
parents: 2737
diff changeset
215 response = api_call(self, params)
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
216
8687
5e46f73f0d1c model: always import the whole db module - drop "from" imports
Mads Kiilerich <mads@kiilerich.com>
parents: 8686
diff changeset
217 usr = db.User.get_by_username(base.TEST_USER_ADMIN_LOGIN)
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
218 ret = usr.get_api_data()
5326
7557da2252a3 auth: construct AuthUser from either user_id or db.User object
Søren Løvborg <kwi@kwi.dk>
parents: 5319
diff changeset
219 ret['permissions'] = AuthUser(dbuser=usr).permissions
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
220
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
221 expected = ret
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
222 self._compare_ok(id_, expected, given=response.body)
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
223
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
224 def test_api_get_user_that_does_not_exist(self):
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
225 id_, params = _build_data(self.apikey, 'get_user',
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
226 userid='trololo')
2738
Marcin Kuzminski <marcin@python-works.com>
parents: 2737
diff changeset
227 response = api_call(self, params)
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
228
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
229 expected = "user `%s` does not exist" % 'trololo'
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
230 self._compare_error(id_, expected, given=response.body)
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
231
3163
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
232 def test_api_get_user_without_giving_userid(self):
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
233 id_, params = _build_data(self.apikey, 'get_user')
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
234 response = api_call(self, params)
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
235
8687
5e46f73f0d1c model: always import the whole db module - drop "from" imports
Mads Kiilerich <mads@kiilerich.com>
parents: 8686
diff changeset
236 usr = db.User.get_by_username(base.TEST_USER_ADMIN_LOGIN)
3163
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
237 ret = usr.get_api_data()
5326
7557da2252a3 auth: construct AuthUser from either user_id or db.User object
Søren Løvborg <kwi@kwi.dk>
parents: 5319
diff changeset
238 ret['permissions'] = AuthUser(dbuser=usr).permissions
3163
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
239
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
240 expected = ret
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
241 self._compare_ok(id_, expected, given=response.body)
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
242
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
243 def test_api_get_user_without_giving_userid_non_admin(self):
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
244 id_, params = _build_data(self.apikey_regular, 'get_user')
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
245 response = api_call(self, params)
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
246
8687
5e46f73f0d1c model: always import the whole db module - drop "from" imports
Mads Kiilerich <mads@kiilerich.com>
parents: 8686
diff changeset
247 usr = db.User.get_by_username(self.TEST_USER_LOGIN)
3163
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
248 ret = usr.get_api_data()
5326
7557da2252a3 auth: construct AuthUser from either user_id or db.User object
Søren Løvborg <kwi@kwi.dk>
parents: 5319
diff changeset
249 ret['permissions'] = AuthUser(dbuser=usr).permissions
3163
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
250
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
251 expected = ret
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
252 self._compare_ok(id_, expected, given=response.body)
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
253
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
254 def test_api_get_user_with_giving_userid_non_admin(self):
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
255 id_, params = _build_data(self.apikey_regular, 'get_user',
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
256 userid=self.TEST_USER_LOGIN)
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
257 response = api_call(self, params)
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
258
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
259 expected = 'userid is not the same as your user'
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
260 self._compare_error(id_, expected, given=response.body)
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
261
7139
91603c55aa61 tests: api: cover original behavior for 'pull'
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 6869
diff changeset
262 def test_api_pull_remote(self):
8939
9de126d62202 tests: update_repo without begging the question
Mads Kiilerich <mads@kiilerich.com>
parents: 8867
diff changeset
263 # Note: pulling from local repos is a misfeature - it will bypass access control
7312
fa3365c94064 repos: introduce low level check of clone URIs to prevent direct file system access to local repos
Mads Kiilerich <mads@kiilerich.com>
parents: 7310
diff changeset
264 # ... but ok, if the path already has been set in the database
8224
e63bcce18fef py3: automatic migration with 2to3 -f unicode
Mads Kiilerich <mads@kiilerich.com>
parents: 8120
diff changeset
265 repo_name = 'test_pull'
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
266 r = fixture.create_repo(repo_name, repo_type=self.REPO_TYPE)
7312
fa3365c94064 repos: introduce low level check of clone URIs to prevent direct file system access to local repos
Mads Kiilerich <mads@kiilerich.com>
parents: 7310
diff changeset
267 # hack around that clone_uri can't be set to to a local path
fa3365c94064 repos: introduce low level check of clone URIs to prevent direct file system access to local repos
Mads Kiilerich <mads@kiilerich.com>
parents: 7310
diff changeset
268 # (as shown by test_api_create_repo_clone_uri_local)
8687
5e46f73f0d1c model: always import the whole db module - drop "from" imports
Mads Kiilerich <mads@kiilerich.com>
parents: 8686
diff changeset
269 r.clone_uri = os.path.join(db.Ui.get_by_key('paths', '/').ui_value, self.REPO)
8686
b095e2fbba44 model: always import whole meta module - also when referencing Session
Mads Kiilerich <mads@kiilerich.com>
parents: 8661
diff changeset
270 meta.Session().commit()
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
271
8687
5e46f73f0d1c model: always import the whole db module - drop "from" imports
Mads Kiilerich <mads@kiilerich.com>
parents: 8686
diff changeset
272 pre_cached_tip = [repo.get_api_data()['last_changeset']['short_id'] for repo in db.Repository.query().filter(db.Repository.repo_name == repo_name)]
7684
65d45e2fbc33 tests: verify in test_api_pull_remote that a pull from remote updates the tip cache
Mads Kiilerich <mads@kiilerich.com>
parents: 7672
diff changeset
273
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
274 id_, params = _build_data(self.apikey, 'pull',
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
275 repoid=repo_name,)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
276 response = api_call(self, params)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
277
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
278 expected = {'msg': 'Pulled from `%s`' % repo_name,
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
279 'repository': repo_name}
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
280 self._compare_ok(id_, expected, given=response.body)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
281
8687
5e46f73f0d1c model: always import the whole db module - drop "from" imports
Mads Kiilerich <mads@kiilerich.com>
parents: 8686
diff changeset
282 post_cached_tip = [repo.get_api_data()['last_changeset']['short_id'] for repo in db.Repository.query().filter(db.Repository.repo_name == repo_name)]
7684
65d45e2fbc33 tests: verify in test_api_pull_remote that a pull from remote updates the tip cache
Mads Kiilerich <mads@kiilerich.com>
parents: 7672
diff changeset
283
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
284 fixture.destroy_repo(repo_name)
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
285
7684
65d45e2fbc33 tests: verify in test_api_pull_remote that a pull from remote updates the tip cache
Mads Kiilerich <mads@kiilerich.com>
parents: 7672
diff changeset
286 assert pre_cached_tip != post_cached_tip
65d45e2fbc33 tests: verify in test_api_pull_remote that a pull from remote updates the tip cache
Mads Kiilerich <mads@kiilerich.com>
parents: 7672
diff changeset
287
7139
91603c55aa61 tests: api: cover original behavior for 'pull'
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 6869
diff changeset
288 def test_api_pull_fork(self):
8224
e63bcce18fef py3: automatic migration with 2to3 -f unicode
Mads Kiilerich <mads@kiilerich.com>
parents: 8120
diff changeset
289 fork_name = 'fork'
7139
91603c55aa61 tests: api: cover original behavior for 'pull'
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 6869
diff changeset
290 fixture.create_fork(self.REPO, fork_name)
91603c55aa61 tests: api: cover original behavior for 'pull'
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 6869
diff changeset
291 id_, params = _build_data(self.apikey, 'pull',
91603c55aa61 tests: api: cover original behavior for 'pull'
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 6869
diff changeset
292 repoid=fork_name,)
91603c55aa61 tests: api: cover original behavior for 'pull'
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 6869
diff changeset
293 response = api_call(self, params)
91603c55aa61 tests: api: cover original behavior for 'pull'
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 6869
diff changeset
294
91603c55aa61 tests: api: cover original behavior for 'pull'
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 6869
diff changeset
295 expected = {'msg': 'Pulled from `%s`' % fork_name,
91603c55aa61 tests: api: cover original behavior for 'pull'
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 6869
diff changeset
296 'repository': fork_name}
91603c55aa61 tests: api: cover original behavior for 'pull'
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 6869
diff changeset
297 self._compare_ok(id_, expected, given=response.body)
91603c55aa61 tests: api: cover original behavior for 'pull'
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 6869
diff changeset
298
91603c55aa61 tests: api: cover original behavior for 'pull'
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 6869
diff changeset
299 fixture.destroy_repo(fork_name)
91603c55aa61 tests: api: cover original behavior for 'pull'
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 6869
diff changeset
300
91603c55aa61 tests: api: cover original behavior for 'pull'
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 6869
diff changeset
301 def test_api_pull_error_no_remote_no_fork(self):
91603c55aa61 tests: api: cover original behavior for 'pull'
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 6869
diff changeset
302 # should fail because no clone_uri is set
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
303 id_, params = _build_data(self.apikey, 'pull',
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
304 repoid=self.REPO, )
2738
Marcin Kuzminski <marcin@python-works.com>
parents: 2737
diff changeset
305 response = api_call(self, params)
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
306
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
307 expected = 'Unable to pull changes from `%s`' % self.REPO
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
308 self._compare_error(id_, expected, given=response.body)
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
309
7140
3020943319f7 tests: api: add test for pulling from a custom remote
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 7139
diff changeset
310 def test_api_pull_custom_remote(self):
8224
e63bcce18fef py3: automatic migration with 2to3 -f unicode
Mads Kiilerich <mads@kiilerich.com>
parents: 8120
diff changeset
311 repo_name = 'test_pull_custom_remote'
7140
3020943319f7 tests: api: add test for pulling from a custom remote
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 7139
diff changeset
312 fixture.create_repo(repo_name, repo_type=self.REPO_TYPE)
3020943319f7 tests: api: add test for pulling from a custom remote
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 7139
diff changeset
313
8687
5e46f73f0d1c model: always import the whole db module - drop "from" imports
Mads Kiilerich <mads@kiilerich.com>
parents: 8686
diff changeset
314 custom_remote_path = os.path.join(db.Ui.get_by_key('paths', '/').ui_value, self.REPO)
7140
3020943319f7 tests: api: add test for pulling from a custom remote
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 7139
diff changeset
315
3020943319f7 tests: api: add test for pulling from a custom remote
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 7139
diff changeset
316 id_, params = _build_data(self.apikey, 'pull',
3020943319f7 tests: api: add test for pulling from a custom remote
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 7139
diff changeset
317 repoid=repo_name,
3020943319f7 tests: api: add test for pulling from a custom remote
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 7139
diff changeset
318 clone_uri=custom_remote_path)
3020943319f7 tests: api: add test for pulling from a custom remote
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 7139
diff changeset
319 response = api_call(self, params)
3020943319f7 tests: api: add test for pulling from a custom remote
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 7139
diff changeset
320
3020943319f7 tests: api: add test for pulling from a custom remote
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 7139
diff changeset
321 expected = {'msg': 'Pulled from `%s`' % repo_name,
3020943319f7 tests: api: add test for pulling from a custom remote
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 7139
diff changeset
322 'repository': repo_name}
3020943319f7 tests: api: add test for pulling from a custom remote
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 7139
diff changeset
323 self._compare_ok(id_, expected, given=response.body)
3020943319f7 tests: api: add test for pulling from a custom remote
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 7139
diff changeset
324
3020943319f7 tests: api: add test for pulling from a custom remote
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 7139
diff changeset
325 fixture.destroy_repo(repo_name)
3020943319f7 tests: api: add test for pulling from a custom remote
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 7139
diff changeset
326
2697
4565e655ea2a API: Added option to rescann repositories via api call
Marcin Kuzminski <marcin@python-works.com>
parents: 2673
diff changeset
327 def test_api_rescan_repos(self):
4565e655ea2a API: Added option to rescann repositories via api call
Marcin Kuzminski <marcin@python-works.com>
parents: 2673
diff changeset
328 id_, params = _build_data(self.apikey, 'rescan_repos')
2738
Marcin Kuzminski <marcin@python-works.com>
parents: 2737
diff changeset
329 response = api_call(self, params)
2697
4565e655ea2a API: Added option to rescann repositories via api call
Marcin Kuzminski <marcin@python-works.com>
parents: 2673
diff changeset
330
4565e655ea2a API: Added option to rescann repositories via api call
Marcin Kuzminski <marcin@python-works.com>
parents: 2673
diff changeset
331 expected = {'added': [], 'removed': []}
4565e655ea2a API: Added option to rescann repositories via api call
Marcin Kuzminski <marcin@python-works.com>
parents: 2673
diff changeset
332 self._compare_ok(id_, expected, given=response.body)
4565e655ea2a API: Added option to rescann repositories via api call
Marcin Kuzminski <marcin@python-works.com>
parents: 2673
diff changeset
333
8585
1de3e5d104bf tests: consistent use of more helpful raise_exception "fixture"
Mads Kiilerich <mads@kiilerich.com>
parents: 8379
diff changeset
334 @mock.patch.object(ScmModel, 'repo_scan', raise_exception)
2697
4565e655ea2a API: Added option to rescann repositories via api call
Marcin Kuzminski <marcin@python-works.com>
parents: 2673
diff changeset
335 def test_api_rescann_error(self):
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
336 id_, params = _build_data(self.apikey, 'rescan_repos', )
2738
Marcin Kuzminski <marcin@python-works.com>
parents: 2737
diff changeset
337 response = api_call(self, params)
2697
4565e655ea2a API: Added option to rescann repositories via api call
Marcin Kuzminski <marcin@python-works.com>
parents: 2673
diff changeset
338
2737
e21cb7b1a4a5 added API call for locking/unlocking repositories
Marcin Kuzminski <marcin@python-works.com>
parents: 2697
diff changeset
339 expected = 'Error occurred during rescan repositories action'
e21cb7b1a4a5 added API call for locking/unlocking repositories
Marcin Kuzminski <marcin@python-works.com>
parents: 2697
diff changeset
340 self._compare_error(id_, expected, given=response.body)
e21cb7b1a4a5 added API call for locking/unlocking repositories
Marcin Kuzminski <marcin@python-works.com>
parents: 2697
diff changeset
341
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
342 def test_api_create_existing_user(self):
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
343 id_, params = _build_data(self.apikey, 'create_user',
8109
e527cc2ce8dc cleanup: get rid of most "import *"
Mads Kiilerich <mads@kiilerich.com>
parents: 8078
diff changeset
344 username=base.TEST_USER_ADMIN_LOGIN,
5497
12b47803189f cleanup: use example.com for tests and examples
Søren Løvborg <sorenl@unity3d.com>
parents: 5474
diff changeset
345 email='test@example.com',
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
346 password='trololo')
2738
Marcin Kuzminski <marcin@python-works.com>
parents: 2737
diff changeset
347 response = api_call(self, params)
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
348
8109
e527cc2ce8dc cleanup: get rid of most "import *"
Mads Kiilerich <mads@kiilerich.com>
parents: 8078
diff changeset
349 expected = "user `%s` already exist" % base.TEST_USER_ADMIN_LOGIN
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
350 self._compare_error(id_, expected, given=response.body)
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
351
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
352 def test_api_create_user_with_existing_email(self):
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
353 id_, params = _build_data(self.apikey, 'create_user',
8109
e527cc2ce8dc cleanup: get rid of most "import *"
Mads Kiilerich <mads@kiilerich.com>
parents: 8078
diff changeset
354 username=base.TEST_USER_ADMIN_LOGIN + 'new',
e527cc2ce8dc cleanup: get rid of most "import *"
Mads Kiilerich <mads@kiilerich.com>
parents: 8078
diff changeset
355 email=base.TEST_USER_REGULAR_EMAIL,
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
356 password='trololo')
2738
Marcin Kuzminski <marcin@python-works.com>
parents: 2737
diff changeset
357 response = api_call(self, params)
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
358
8109
e527cc2ce8dc cleanup: get rid of most "import *"
Mads Kiilerich <mads@kiilerich.com>
parents: 8078
diff changeset
359 expected = "email `%s` already exist" % base.TEST_USER_REGULAR_EMAIL
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
360 self._compare_error(id_, expected, given=response.body)
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
361
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
362 def test_api_create_user(self):
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
363 username = 'test_new_api_user'
5497
12b47803189f cleanup: use example.com for tests and examples
Søren Løvborg <sorenl@unity3d.com>
parents: 5474
diff changeset
364 email = username + "@example.com"
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
365
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
366 id_, params = _build_data(self.apikey, 'create_user',
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
367 username=username,
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
368 email=email,
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
369 password='trololo')
2738
Marcin Kuzminski <marcin@python-works.com>
parents: 2737
diff changeset
370 response = api_call(self, params)
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
371
8687
5e46f73f0d1c model: always import the whole db module - drop "from" imports
Mads Kiilerich <mads@kiilerich.com>
parents: 8686
diff changeset
372 usr = db.User.get_by_username(username)
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
373 ret = dict(
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
374 msg='created new user `%s`' % username,
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
375 user=jsonify(usr.get_api_data())
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
376 )
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
377
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
378 try:
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
379 expected = ret
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
380 self._compare_ok(id_, expected, given=response.body)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
381 finally:
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
382 fixture.destroy_user(usr.user_id)
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
383
3809
647fb653048e make the password optional in API calls
Marcin Kuzminski <marcin@python-works.com>
parents: 3808
diff changeset
384 def test_api_create_user_without_password(self):
647fb653048e make the password optional in API calls
Marcin Kuzminski <marcin@python-works.com>
parents: 3808
diff changeset
385 username = 'test_new_api_user_passwordless'
5497
12b47803189f cleanup: use example.com for tests and examples
Søren Løvborg <sorenl@unity3d.com>
parents: 5474
diff changeset
386 email = username + "@example.com"
3809
647fb653048e make the password optional in API calls
Marcin Kuzminski <marcin@python-works.com>
parents: 3808
diff changeset
387
647fb653048e make the password optional in API calls
Marcin Kuzminski <marcin@python-works.com>
parents: 3808
diff changeset
388 id_, params = _build_data(self.apikey, 'create_user',
647fb653048e make the password optional in API calls
Marcin Kuzminski <marcin@python-works.com>
parents: 3808
diff changeset
389 username=username,
647fb653048e make the password optional in API calls
Marcin Kuzminski <marcin@python-works.com>
parents: 3808
diff changeset
390 email=email)
647fb653048e make the password optional in API calls
Marcin Kuzminski <marcin@python-works.com>
parents: 3808
diff changeset
391 response = api_call(self, params)
647fb653048e make the password optional in API calls
Marcin Kuzminski <marcin@python-works.com>
parents: 3808
diff changeset
392
8687
5e46f73f0d1c model: always import the whole db module - drop "from" imports
Mads Kiilerich <mads@kiilerich.com>
parents: 8686
diff changeset
393 usr = db.User.get_by_username(username)
3809
647fb653048e make the password optional in API calls
Marcin Kuzminski <marcin@python-works.com>
parents: 3808
diff changeset
394 ret = dict(
647fb653048e make the password optional in API calls
Marcin Kuzminski <marcin@python-works.com>
parents: 3808
diff changeset
395 msg='created new user `%s`' % username,
647fb653048e make the password optional in API calls
Marcin Kuzminski <marcin@python-works.com>
parents: 3808
diff changeset
396 user=jsonify(usr.get_api_data())
647fb653048e make the password optional in API calls
Marcin Kuzminski <marcin@python-works.com>
parents: 3808
diff changeset
397 )
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
398 try:
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
399 expected = ret
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
400 self._compare_ok(id_, expected, given=response.body)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
401 finally:
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
402 fixture.destroy_user(usr.user_id)
3809
647fb653048e make the password optional in API calls
Marcin Kuzminski <marcin@python-works.com>
parents: 3808
diff changeset
403
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
404 def test_api_create_user_with_extern_name(self):
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
405 username = 'test_new_api_user_passwordless'
5497
12b47803189f cleanup: use example.com for tests and examples
Søren Løvborg <sorenl@unity3d.com>
parents: 5474
diff changeset
406 email = username + "@example.com"
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
407
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
408 id_, params = _build_data(self.apikey, 'create_user',
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
409 username=username,
4209
de26de99ac5b Rename auth_rhodecode to auth_internal
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 4206
diff changeset
410 email=email, extern_name='internal')
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
411 response = api_call(self, params)
3809
647fb653048e make the password optional in API calls
Marcin Kuzminski <marcin@python-works.com>
parents: 3808
diff changeset
412
8687
5e46f73f0d1c model: always import the whole db module - drop "from" imports
Mads Kiilerich <mads@kiilerich.com>
parents: 8686
diff changeset
413 usr = db.User.get_by_username(username)
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
414 ret = dict(
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
415 msg='created new user `%s`' % username,
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
416 user=jsonify(usr.get_api_data())
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
417 )
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
418 try:
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
419 expected = ret
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
420 self._compare_ok(id_, expected, given=response.body)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
421 finally:
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
422 fixture.destroy_user(usr.user_id)
3809
647fb653048e make the password optional in API calls
Marcin Kuzminski <marcin@python-works.com>
parents: 3808
diff changeset
423
8585
1de3e5d104bf tests: consistent use of more helpful raise_exception "fixture"
Mads Kiilerich <mads@kiilerich.com>
parents: 8379
diff changeset
424 @mock.patch.object(UserModel, 'create_or_update', raise_exception)
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
425 def test_api_create_user_when_exception_happened(self):
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
426
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
427 username = 'test_new_api_user'
5497
12b47803189f cleanup: use example.com for tests and examples
Søren Løvborg <sorenl@unity3d.com>
parents: 5474
diff changeset
428 email = username + "@example.com"
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
429
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
430 id_, params = _build_data(self.apikey, 'create_user',
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
431 username=username,
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
432 email=email,
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
433 password='trololo')
2738
Marcin Kuzminski <marcin@python-works.com>
parents: 2737
diff changeset
434 response = api_call(self, params)
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
435 expected = 'failed to create user `%s`' % username
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
436 self._compare_error(id_, expected, given=response.body)
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
437
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
438 def test_api_delete_user(self):
8224
e63bcce18fef py3: automatic migration with 2to3 -f unicode
Mads Kiilerich <mads@kiilerich.com>
parents: 8120
diff changeset
439 usr = UserModel().create_or_update(username='test_user',
e63bcce18fef py3: automatic migration with 2to3 -f unicode
Mads Kiilerich <mads@kiilerich.com>
parents: 8120
diff changeset
440 password='qweqwe',
e63bcce18fef py3: automatic migration with 2to3 -f unicode
Mads Kiilerich <mads@kiilerich.com>
parents: 8120
diff changeset
441 email='u232@example.com',
e63bcce18fef py3: automatic migration with 2to3 -f unicode
Mads Kiilerich <mads@kiilerich.com>
parents: 8120
diff changeset
442 firstname='u1', lastname='u1')
8686
b095e2fbba44 model: always import whole meta module - also when referencing Session
Mads Kiilerich <mads@kiilerich.com>
parents: 8661
diff changeset
443 meta.Session().commit()
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
444 username = usr.username
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
445 email = usr.email
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
446 usr_id = usr.user_id
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
447 ## DELETE THIS USER NOW
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
448
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
449 id_, params = _build_data(self.apikey, 'delete_user',
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
450 userid=username, )
2738
Marcin Kuzminski <marcin@python-works.com>
parents: 2737
diff changeset
451 response = api_call(self, params)
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
452
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
453 ret = {'msg': 'deleted user ID:%s %s' % (usr_id, username),
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
454 'user': None}
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
455 expected = ret
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
456 self._compare_ok(id_, expected, given=response.body)
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
457
8585
1de3e5d104bf tests: consistent use of more helpful raise_exception "fixture"
Mads Kiilerich <mads@kiilerich.com>
parents: 8379
diff changeset
458 @mock.patch.object(UserModel, 'delete', raise_exception)
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
459 def test_api_delete_user_when_exception_happened(self):
8224
e63bcce18fef py3: automatic migration with 2to3 -f unicode
Mads Kiilerich <mads@kiilerich.com>
parents: 8120
diff changeset
460 usr = UserModel().create_or_update(username='test_user',
e63bcce18fef py3: automatic migration with 2to3 -f unicode
Mads Kiilerich <mads@kiilerich.com>
parents: 8120
diff changeset
461 password='qweqwe',
e63bcce18fef py3: automatic migration with 2to3 -f unicode
Mads Kiilerich <mads@kiilerich.com>
parents: 8120
diff changeset
462 email='u232@example.com',
e63bcce18fef py3: automatic migration with 2to3 -f unicode
Mads Kiilerich <mads@kiilerich.com>
parents: 8120
diff changeset
463 firstname='u1', lastname='u1')
8686
b095e2fbba44 model: always import whole meta module - also when referencing Session
Mads Kiilerich <mads@kiilerich.com>
parents: 8661
diff changeset
464 meta.Session().commit()
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
465 username = usr.username
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
466
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
467 id_, params = _build_data(self.apikey, 'delete_user',
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
468 userid=username, )
2738
Marcin Kuzminski <marcin@python-works.com>
parents: 2737
diff changeset
469 response = api_call(self, params)
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
470 ret = 'failed to delete user ID:%s %s' % (usr.user_id,
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
471 usr.username)
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
472 expected = ret
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
473 self._compare_error(id_, expected, given=response.body)
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
474
8109
e527cc2ce8dc cleanup: get rid of most "import *"
Mads Kiilerich <mads@kiilerich.com>
parents: 8078
diff changeset
475 @base.parametrize('name,expected', [
5907
526724b8b6ce pytest migration: api: convert to TestControllerPytest
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 5906
diff changeset
476 ('firstname', 'new_username'),
526724b8b6ce pytest migration: api: convert to TestControllerPytest
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 5906
diff changeset
477 ('lastname', 'new_username'),
526724b8b6ce pytest migration: api: convert to TestControllerPytest
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 5906
diff changeset
478 ('email', 'new_username'),
526724b8b6ce pytest migration: api: convert to TestControllerPytest
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 5906
diff changeset
479 ('admin', True),
526724b8b6ce pytest migration: api: convert to TestControllerPytest
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 5906
diff changeset
480 ('admin', False),
526724b8b6ce pytest migration: api: convert to TestControllerPytest
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 5906
diff changeset
481 ('extern_type', 'ldap'),
526724b8b6ce pytest migration: api: convert to TestControllerPytest
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 5906
diff changeset
482 ('extern_type', None),
526724b8b6ce pytest migration: api: convert to TestControllerPytest
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 5906
diff changeset
483 ('extern_name', 'test'),
526724b8b6ce pytest migration: api: convert to TestControllerPytest
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 5906
diff changeset
484 ('extern_name', None),
526724b8b6ce pytest migration: api: convert to TestControllerPytest
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 5906
diff changeset
485 ('active', False),
526724b8b6ce pytest migration: api: convert to TestControllerPytest
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 5906
diff changeset
486 ('active', True),
526724b8b6ce pytest migration: api: convert to TestControllerPytest
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 5906
diff changeset
487 ('password', 'newpass'),
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
488 ])
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
489 def test_api_update_user(self, name, expected):
8687
5e46f73f0d1c model: always import the whole db module - drop "from" imports
Mads Kiilerich <mads@kiilerich.com>
parents: 8686
diff changeset
490 usr = db.User.get_by_username(self.TEST_USER_LOGIN)
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
491 kw = {name: expected,
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
492 'userid': usr.user_id}
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
493 id_, params = _build_data(self.apikey, 'update_user', **kw)
2738
Marcin Kuzminski <marcin@python-works.com>
parents: 2737
diff changeset
494 response = api_call(self, params)
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
495
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
496 ret = {
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
497 'msg': 'updated user ID:%s %s' % (
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
498 usr.user_id, self.TEST_USER_LOGIN),
8687
5e46f73f0d1c model: always import the whole db module - drop "from" imports
Mads Kiilerich <mads@kiilerich.com>
parents: 8686
diff changeset
499 'user': jsonify(db.User \
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
500 .get_by_username(self.TEST_USER_LOGIN) \
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
501 .get_api_data())
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
502 }
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
503
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
504 expected = ret
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
505 self._compare_ok(id_, expected, given=response.body)
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
506
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
507 def test_api_update_user_no_changed_params(self):
8687
5e46f73f0d1c model: always import the whole db module - drop "from" imports
Mads Kiilerich <mads@kiilerich.com>
parents: 8686
diff changeset
508 usr = db.User.get_by_username(base.TEST_USER_ADMIN_LOGIN)
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
509 ret = jsonify(usr.get_api_data())
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
510 id_, params = _build_data(self.apikey, 'update_user',
8109
e527cc2ce8dc cleanup: get rid of most "import *"
Mads Kiilerich <mads@kiilerich.com>
parents: 8078
diff changeset
511 userid=base.TEST_USER_ADMIN_LOGIN)
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
512
2738
Marcin Kuzminski <marcin@python-works.com>
parents: 2737
diff changeset
513 response = api_call(self, params)
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
514 ret = {
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
515 'msg': 'updated user ID:%s %s' % (
8109
e527cc2ce8dc cleanup: get rid of most "import *"
Mads Kiilerich <mads@kiilerich.com>
parents: 8078
diff changeset
516 usr.user_id, base.TEST_USER_ADMIN_LOGIN),
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
517 'user': ret
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
518 }
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
519 expected = ret
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
520 self._compare_ok(id_, expected, given=response.body)
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
521
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
522 def test_api_update_user_by_user_id(self):
8687
5e46f73f0d1c model: always import the whole db module - drop "from" imports
Mads Kiilerich <mads@kiilerich.com>
parents: 8686
diff changeset
523 usr = db.User.get_by_username(base.TEST_USER_ADMIN_LOGIN)
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
524 ret = jsonify(usr.get_api_data())
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
525 id_, params = _build_data(self.apikey, 'update_user',
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
526 userid=usr.user_id)
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
527
2738
Marcin Kuzminski <marcin@python-works.com>
parents: 2737
diff changeset
528 response = api_call(self, params)
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
529 ret = {
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
530 'msg': 'updated user ID:%s %s' % (
8109
e527cc2ce8dc cleanup: get rid of most "import *"
Mads Kiilerich <mads@kiilerich.com>
parents: 8078
diff changeset
531 usr.user_id, base.TEST_USER_ADMIN_LOGIN),
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
532 'user': ret
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
533 }
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
534 expected = ret
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
535 self._compare_ok(id_, expected, given=response.body)
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
536
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
537 def test_api_update_user_default_user(self):
8687
5e46f73f0d1c model: always import the whole db module - drop "from" imports
Mads Kiilerich <mads@kiilerich.com>
parents: 8686
diff changeset
538 usr = db.User.get_default_user()
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
539 id_, params = _build_data(self.apikey, 'update_user',
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
540 userid=usr.user_id)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
541
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
542 response = api_call(self, params)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
543 expected = 'editing default user is forbidden'
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
544 self._compare_error(id_, expected, given=response.body)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
545
8585
1de3e5d104bf tests: consistent use of more helpful raise_exception "fixture"
Mads Kiilerich <mads@kiilerich.com>
parents: 8379
diff changeset
546 @mock.patch.object(UserModel, 'update_user', raise_exception)
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
547 def test_api_update_user_when_exception_happens(self):
8687
5e46f73f0d1c model: always import the whole db module - drop "from" imports
Mads Kiilerich <mads@kiilerich.com>
parents: 8686
diff changeset
548 usr = db.User.get_by_username(base.TEST_USER_ADMIN_LOGIN)
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
549 ret = jsonify(usr.get_api_data())
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
550 id_, params = _build_data(self.apikey, 'update_user',
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
551 userid=usr.user_id)
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
552
2738
Marcin Kuzminski <marcin@python-works.com>
parents: 2737
diff changeset
553 response = api_call(self, params)
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
554 ret = 'failed to update user `%s`' % usr.user_id
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
555
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
556 expected = ret
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
557 self._compare_error(id_, expected, given=response.body)
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
558
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
559 def test_api_get_repo(self):
8224
e63bcce18fef py3: automatic migration with 2to3 -f unicode
Mads Kiilerich <mads@kiilerich.com>
parents: 8120
diff changeset
560 new_group = 'some_new_group'
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
561 make_user_group(new_group)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
562 RepoModel().grant_user_group_permission(repo=self.REPO,
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
563 group_name=new_group,
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
564 perm='repository.read')
8686
b095e2fbba44 model: always import whole meta module - also when referencing Session
Mads Kiilerich <mads@kiilerich.com>
parents: 8661
diff changeset
565 meta.Session().commit()
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
566 id_, params = _build_data(self.apikey, 'get_repo',
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
567 repoid=self.REPO)
2738
Marcin Kuzminski <marcin@python-works.com>
parents: 2737
diff changeset
568 response = api_call(self, params)
8224
e63bcce18fef py3: automatic migration with 2to3 -f unicode
Mads Kiilerich <mads@kiilerich.com>
parents: 8120
diff changeset
569 assert "tags" not in response.json['result']
e63bcce18fef py3: automatic migration with 2to3 -f unicode
Mads Kiilerich <mads@kiilerich.com>
parents: 8120
diff changeset
570 assert 'pull_requests' not in response.json['result']
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
571
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
572 repo = RepoModel().get_by_repo_name(self.REPO)
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
573 ret = repo.get_api_data()
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
574
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
575 members = []
3215
cbc63abe7d59 fixed tests
Marcin Kuzminski <marcin@python-works.com>
parents: 3165
diff changeset
576 followers = []
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
577 for user in repo.repo_to_perm:
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
578 perm = user.permission.permission_name
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
579 user = user.user
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
580 user_data = {'name': user.username, 'type': "user",
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
581 'permission': perm}
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
582 members.append(user_data)
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
583
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
584 for user_group in repo.users_group_to_perm:
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
585 perm = user_group.permission.permission_name
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
586 user_group = user_group.users_group
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
587 user_group_data = {'name': user_group.users_group_name,
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
588 'type': "user_group", 'permission': perm}
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
589 members.append(user_group_data)
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
590
3215
cbc63abe7d59 fixed tests
Marcin Kuzminski <marcin@python-works.com>
parents: 3165
diff changeset
591 for user in repo.followers:
cbc63abe7d59 fixed tests
Marcin Kuzminski <marcin@python-works.com>
parents: 3165
diff changeset
592 followers.append(user.user.get_api_data())
cbc63abe7d59 fixed tests
Marcin Kuzminski <marcin@python-works.com>
parents: 3165
diff changeset
593
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
594 ret['members'] = members
3215
cbc63abe7d59 fixed tests
Marcin Kuzminski <marcin@python-works.com>
parents: 3165
diff changeset
595 ret['followers'] = followers
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
596
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
597 expected = ret
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
598 self._compare_ok(id_, expected, given=response.body)
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
599 fixture.destroy_user_group(new_group)
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
600
6653
98d26beb0965 api: add optional branches, tags and bookmarks information to get_repo API data
domruf <dominikruf@gmail.com>
parents: 6652
diff changeset
601 id_, params = _build_data(self.apikey, 'get_repo', repoid=self.REPO,
6654
bf9900e6e177 api: add option to get pullrequests for get_repo
domruf <dominikruf@gmail.com>
parents: 6653
diff changeset
602 with_revision_names=True,
bf9900e6e177 api: add option to get pullrequests for get_repo
domruf <dominikruf@gmail.com>
parents: 6653
diff changeset
603 with_pullrequests=True)
6653
98d26beb0965 api: add optional branches, tags and bookmarks information to get_repo API data
domruf <dominikruf@gmail.com>
parents: 6652
diff changeset
604 response = api_call(self, params)
8224
e63bcce18fef py3: automatic migration with 2to3 -f unicode
Mads Kiilerich <mads@kiilerich.com>
parents: 8120
diff changeset
605 assert "v0.2.0" in response.json['result']['tags']
e63bcce18fef py3: automatic migration with 2to3 -f unicode
Mads Kiilerich <mads@kiilerich.com>
parents: 8120
diff changeset
606 assert 'pull_requests' in response.json['result']
6653
98d26beb0965 api: add optional branches, tags and bookmarks information to get_repo API data
domruf <dominikruf@gmail.com>
parents: 6652
diff changeset
607
8109
e527cc2ce8dc cleanup: get rid of most "import *"
Mads Kiilerich <mads@kiilerich.com>
parents: 8078
diff changeset
608 @base.parametrize('grant_perm', [
5907
526724b8b6ce pytest migration: api: convert to TestControllerPytest
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 5906
diff changeset
609 ('repository.admin'),
526724b8b6ce pytest migration: api: convert to TestControllerPytest
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 5906
diff changeset
610 ('repository.write'),
526724b8b6ce pytest migration: api: convert to TestControllerPytest
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 5906
diff changeset
611 ('repository.read'),
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
612 ])
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
613 def test_api_get_repo_by_non_admin(self, grant_perm):
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
614 RepoModel().grant_user_permission(repo=self.REPO,
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
615 user=self.TEST_USER_LOGIN,
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
616 perm=grant_perm)
8686
b095e2fbba44 model: always import whole meta module - also when referencing Session
Mads Kiilerich <mads@kiilerich.com>
parents: 8661
diff changeset
617 meta.Session().commit()
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
618 id_, params = _build_data(self.apikey_regular, 'get_repo',
3163
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
619 repoid=self.REPO)
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
620 response = api_call(self, params)
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
621
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
622 repo = RepoModel().get_by_repo_name(self.REPO)
8379
a893d2ce599c tests: fix test_api_get_repo_by_non_admin dependency on other users having repo permissions
Mads Kiilerich <mads@kiilerich.com>
parents: 8360
diff changeset
623 assert len(repo.repo_to_perm) >= 2 # make sure we actually are testing something - probably the default 2 permissions, possibly more
a893d2ce599c tests: fix test_api_get_repo_by_non_admin dependency on other users having repo permissions
Mads Kiilerich <mads@kiilerich.com>
parents: 8360
diff changeset
624
a893d2ce599c tests: fix test_api_get_repo_by_non_admin dependency on other users having repo permissions
Mads Kiilerich <mads@kiilerich.com>
parents: 8360
diff changeset
625 expected = repo.get_api_data()
3163
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
626
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
627 members = []
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
628 for user in repo.repo_to_perm:
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
629 perm = user.permission.permission_name
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
630 user_obj = user.user
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
631 user_data = {'name': user_obj.username, 'type': "user",
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
632 'permission': perm}
3163
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
633 members.append(user_data)
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
634 for user_group in repo.users_group_to_perm:
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
635 perm = user_group.permission.permission_name
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
636 user_group_obj = user_group.users_group
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
637 user_group_data = {'name': user_group_obj.users_group_name,
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
638 'type': "user_group", 'permission': perm}
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
639 members.append(user_group_data)
8379
a893d2ce599c tests: fix test_api_get_repo_by_non_admin dependency on other users having repo permissions
Mads Kiilerich <mads@kiilerich.com>
parents: 8360
diff changeset
640 expected['members'] = members
a893d2ce599c tests: fix test_api_get_repo_by_non_admin dependency on other users having repo permissions
Mads Kiilerich <mads@kiilerich.com>
parents: 8360
diff changeset
641
a893d2ce599c tests: fix test_api_get_repo_by_non_admin dependency on other users having repo permissions
Mads Kiilerich <mads@kiilerich.com>
parents: 8360
diff changeset
642 followers = []
3216
81bbb8086f03 whitespace cleanup
Marcin Kuzminski <marcin@python-works.com>
parents: 3215
diff changeset
643
3215
cbc63abe7d59 fixed tests
Marcin Kuzminski <marcin@python-works.com>
parents: 3165
diff changeset
644 for user in repo.followers:
cbc63abe7d59 fixed tests
Marcin Kuzminski <marcin@python-works.com>
parents: 3165
diff changeset
645 followers.append(user.user.get_api_data())
3216
81bbb8086f03 whitespace cleanup
Marcin Kuzminski <marcin@python-works.com>
parents: 3215
diff changeset
646
8379
a893d2ce599c tests: fix test_api_get_repo_by_non_admin dependency on other users having repo permissions
Mads Kiilerich <mads@kiilerich.com>
parents: 8360
diff changeset
647 expected['followers'] = followers
3163
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
648
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
649 try:
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
650 self._compare_ok(id_, expected, given=response.body)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
651 finally:
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
652 RepoModel().revoke_user_permission(self.REPO, self.TEST_USER_LOGIN)
3163
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
653
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
654 def test_api_get_repo_by_non_admin_no_permission_to_repo(self):
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
655 RepoModel().grant_user_permission(repo=self.REPO,
8687
5e46f73f0d1c model: always import the whole db module - drop "from" imports
Mads Kiilerich <mads@kiilerich.com>
parents: 8686
diff changeset
656 user=db.User.DEFAULT_USER_NAME,
3163
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
657 perm='repository.none')
7687
b2634df81a11 auth: explicit user permission should not blindly overrule permissions through user groups
Mads Kiilerich <mads@kiilerich.com>
parents: 7684
diff changeset
658 try:
b2634df81a11 auth: explicit user permission should not blindly overrule permissions through user groups
Mads Kiilerich <mads@kiilerich.com>
parents: 7684
diff changeset
659 RepoModel().grant_user_permission(repo=self.REPO,
b2634df81a11 auth: explicit user permission should not blindly overrule permissions through user groups
Mads Kiilerich <mads@kiilerich.com>
parents: 7684
diff changeset
660 user=self.TEST_USER_LOGIN,
b2634df81a11 auth: explicit user permission should not blindly overrule permissions through user groups
Mads Kiilerich <mads@kiilerich.com>
parents: 7684
diff changeset
661 perm='repository.none')
3163
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
662
7687
b2634df81a11 auth: explicit user permission should not blindly overrule permissions through user groups
Mads Kiilerich <mads@kiilerich.com>
parents: 7684
diff changeset
663 id_, params = _build_data(self.apikey_regular, 'get_repo',
b2634df81a11 auth: explicit user permission should not blindly overrule permissions through user groups
Mads Kiilerich <mads@kiilerich.com>
parents: 7684
diff changeset
664 repoid=self.REPO)
b2634df81a11 auth: explicit user permission should not blindly overrule permissions through user groups
Mads Kiilerich <mads@kiilerich.com>
parents: 7684
diff changeset
665 response = api_call(self, params)
3163
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
666
7687
b2634df81a11 auth: explicit user permission should not blindly overrule permissions through user groups
Mads Kiilerich <mads@kiilerich.com>
parents: 7684
diff changeset
667 expected = 'repository `%s` does not exist' % (self.REPO)
b2634df81a11 auth: explicit user permission should not blindly overrule permissions through user groups
Mads Kiilerich <mads@kiilerich.com>
parents: 7684
diff changeset
668 self._compare_error(id_, expected, given=response.body)
b2634df81a11 auth: explicit user permission should not blindly overrule permissions through user groups
Mads Kiilerich <mads@kiilerich.com>
parents: 7684
diff changeset
669 finally:
b2634df81a11 auth: explicit user permission should not blindly overrule permissions through user groups
Mads Kiilerich <mads@kiilerich.com>
parents: 7684
diff changeset
670 RepoModel().grant_user_permission(repo=self.REPO,
8687
5e46f73f0d1c model: always import the whole db module - drop "from" imports
Mads Kiilerich <mads@kiilerich.com>
parents: 8686
diff changeset
671 user=db.User.DEFAULT_USER_NAME,
7687
b2634df81a11 auth: explicit user permission should not blindly overrule permissions through user groups
Mads Kiilerich <mads@kiilerich.com>
parents: 7684
diff changeset
672 perm='repository.read')
3163
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
673
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
674 def test_api_get_repo_that_doesn_not_exist(self):
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
675 id_, params = _build_data(self.apikey, 'get_repo',
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
676 repoid='no-such-repo')
2738
Marcin Kuzminski <marcin@python-works.com>
parents: 2737
diff changeset
677 response = api_call(self, params)
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
678
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
679 ret = 'repository `%s` does not exist' % 'no-such-repo'
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
680 expected = ret
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
681 self._compare_error(id_, expected, given=response.body)
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
682
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
683 def test_api_get_repos(self):
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
684 id_, params = _build_data(self.apikey, 'get_repos')
2738
Marcin Kuzminski <marcin@python-works.com>
parents: 2737
diff changeset
685 response = api_call(self, params)
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
686
6515
884d2c246570 cleanup: use list comprehensions
Søren Løvborg <sorenl@unity3d.com>
parents: 6364
diff changeset
687 expected = jsonify([
884d2c246570 cleanup: use list comprehensions
Søren Løvborg <sorenl@unity3d.com>
parents: 6364
diff changeset
688 repo.get_api_data()
8687
5e46f73f0d1c model: always import the whole db module - drop "from" imports
Mads Kiilerich <mads@kiilerich.com>
parents: 8686
diff changeset
689 for repo in db.Repository.query()
6515
884d2c246570 cleanup: use list comprehensions
Søren Løvborg <sorenl@unity3d.com>
parents: 6364
diff changeset
690 ])
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
691
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
692 self._compare_ok(id_, expected, given=response.body)
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
693
3163
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
694 def test_api_get_repos_non_admin(self):
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
695 id_, params = _build_data(self.apikey_regular, 'get_repos')
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
696 response = api_call(self, params)
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
697
6515
884d2c246570 cleanup: use list comprehensions
Søren Løvborg <sorenl@unity3d.com>
parents: 6364
diff changeset
698 expected = jsonify([
884d2c246570 cleanup: use list comprehensions
Søren Løvborg <sorenl@unity3d.com>
parents: 6364
diff changeset
699 repo.get_api_data()
8734
87c2cd07166a lib: move get_all_user_repos to AuthUser
Mads Kiilerich <mads@kiilerich.com>
parents: 8728
diff changeset
700 for repo in AuthUser(dbuser=db.User.get_by_username(self.TEST_USER_LOGIN)).get_all_user_repos()
6515
884d2c246570 cleanup: use list comprehensions
Søren Løvborg <sorenl@unity3d.com>
parents: 6364
diff changeset
701 ])
3163
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
702
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
703 self._compare_ok(id_, expected, given=response.body)
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
704
8109
e527cc2ce8dc cleanup: get rid of most "import *"
Mads Kiilerich <mads@kiilerich.com>
parents: 8078
diff changeset
705 @base.parametrize('name,ret_type', [
5907
526724b8b6ce pytest migration: api: convert to TestControllerPytest
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 5906
diff changeset
706 ('all', 'all'),
526724b8b6ce pytest migration: api: convert to TestControllerPytest
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 5906
diff changeset
707 ('dirs', 'dirs'),
526724b8b6ce pytest migration: api: convert to TestControllerPytest
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 5906
diff changeset
708 ('files', 'files'),
526724b8b6ce pytest migration: api: convert to TestControllerPytest
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 5906
diff changeset
709 ])
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
710 def test_api_get_repo_nodes(self, name, ret_type):
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
711 rev = 'tip'
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
712 path = '/'
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
713 id_, params = _build_data(self.apikey, 'get_repo_nodes',
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
714 repoid=self.REPO, revision=rev,
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
715 root_path=path,
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
716 ret_type=ret_type)
2738
Marcin Kuzminski <marcin@python-works.com>
parents: 2737
diff changeset
717 response = api_call(self, params)
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
718
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
719 # we don't the actual return types here since it's tested somewhere
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
720 # else
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
721 expected = response.json['result']
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
722 self._compare_ok(id_, expected, given=response.body)
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
723
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
724 def test_api_get_repo_nodes_bad_revisions(self):
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
725 rev = 'i-dont-exist'
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
726 path = '/'
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
727 id_, params = _build_data(self.apikey, 'get_repo_nodes',
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
728 repoid=self.REPO, revision=rev,
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
729 root_path=path, )
2738
Marcin Kuzminski <marcin@python-works.com>
parents: 2737
diff changeset
730 response = api_call(self, params)
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
731
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
732 expected = 'failed to get repo: `%s` nodes' % self.REPO
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
733 self._compare_error(id_, expected, given=response.body)
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
734
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
735 def test_api_get_repo_nodes_bad_path(self):
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
736 rev = 'tip'
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
737 path = '/idontexits'
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
738 id_, params = _build_data(self.apikey, 'get_repo_nodes',
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
739 repoid=self.REPO, revision=rev,
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
740 root_path=path, )
2738
Marcin Kuzminski <marcin@python-works.com>
parents: 2737
diff changeset
741 response = api_call(self, params)
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
742
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
743 expected = 'failed to get repo: `%s` nodes' % self.REPO
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
744 self._compare_error(id_, expected, given=response.body)
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
745
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
746 def test_api_get_repo_nodes_bad_ret_type(self):
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
747 rev = 'tip'
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
748 path = '/'
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
749 ret_type = 'error'
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
750 id_, params = _build_data(self.apikey, 'get_repo_nodes',
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
751 repoid=self.REPO, revision=rev,
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
752 root_path=path,
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
753 ret_type=ret_type)
2738
Marcin Kuzminski <marcin@python-works.com>
parents: 2737
diff changeset
754 response = api_call(self, params)
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
755
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
756 expected = ('ret_type must be one of %s'
8044
91103995888b tests: fix ordering of options of "ret_type must be one of ..." returned from api
Mads Kiilerich <mads@kiilerich.com>
parents: 8021
diff changeset
757 % (','.join(sorted(['files', 'dirs', 'all']))))
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
758 self._compare_error(id_, expected, given=response.body)
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
759
8109
e527cc2ce8dc cleanup: get rid of most "import *"
Mads Kiilerich <mads@kiilerich.com>
parents: 8078
diff changeset
760 @base.parametrize('name,ret_type,grant_perm', [
5907
526724b8b6ce pytest migration: api: convert to TestControllerPytest
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 5906
diff changeset
761 ('all', 'all', 'repository.write'),
526724b8b6ce pytest migration: api: convert to TestControllerPytest
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 5906
diff changeset
762 ('dirs', 'dirs', 'repository.admin'),
526724b8b6ce pytest migration: api: convert to TestControllerPytest
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 5906
diff changeset
763 ('files', 'files', 'repository.read'),
526724b8b6ce pytest migration: api: convert to TestControllerPytest
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 5906
diff changeset
764 ])
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
765 def test_api_get_repo_nodes_by_regular_user(self, name, ret_type, grant_perm):
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
766 RepoModel().grant_user_permission(repo=self.REPO,
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
767 user=self.TEST_USER_LOGIN,
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
768 perm=grant_perm)
8686
b095e2fbba44 model: always import whole meta module - also when referencing Session
Mads Kiilerich <mads@kiilerich.com>
parents: 8661
diff changeset
769 meta.Session().commit()
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
770
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
771 rev = 'tip'
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
772 path = '/'
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
773 id_, params = _build_data(self.apikey_regular, 'get_repo_nodes',
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
774 repoid=self.REPO, revision=rev,
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
775 root_path=path,
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
776 ret_type=ret_type)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
777 response = api_call(self, params)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
778
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
779 # we don't the actual return types here since it's tested somewhere
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
780 # else
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
781 expected = response.json['result']
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
782 try:
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
783 self._compare_ok(id_, expected, given=response.body)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
784 finally:
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
785 RepoModel().revoke_user_permission(self.REPO, self.TEST_USER_LOGIN)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
786
8940
1d1fe8c2ef57 tests: update test_api_create_repo with better coverage of create_repo api
Mads Kiilerich <mads@kiilerich.com>
parents: 8939
diff changeset
787 @base.parametrize('changing_attr,updates', [
1d1fe8c2ef57 tests: update test_api_create_repo with better coverage of create_repo api
Mads Kiilerich <mads@kiilerich.com>
parents: 8939
diff changeset
788 ('owner', {'owner': base.TEST_USER_REGULAR_LOGIN}),
1d1fe8c2ef57 tests: update test_api_create_repo with better coverage of create_repo api
Mads Kiilerich <mads@kiilerich.com>
parents: 8939
diff changeset
789 ('description', {'description': 'new description'}),
1d1fe8c2ef57 tests: update test_api_create_repo with better coverage of create_repo api
Mads Kiilerich <mads@kiilerich.com>
parents: 8939
diff changeset
790 ('clone_uri', {'clone_uri': 'http://example.com/repo'}), # will fail - pulling from non-existing repo should fail
1d1fe8c2ef57 tests: update test_api_create_repo with better coverage of create_repo api
Mads Kiilerich <mads@kiilerich.com>
parents: 8939
diff changeset
791 ('clone_uri', {'clone_uri': '/repo'}), # will fail - pulling from local repo was a misfeature - it would bypass access control
1d1fe8c2ef57 tests: update test_api_create_repo with better coverage of create_repo api
Mads Kiilerich <mads@kiilerich.com>
parents: 8939
diff changeset
792 ('clone_uri', {'clone_uri': None}),
1d1fe8c2ef57 tests: update test_api_create_repo with better coverage of create_repo api
Mads Kiilerich <mads@kiilerich.com>
parents: 8939
diff changeset
793 ('landing_rev', {'landing_rev': 'branch:master'}),
1d1fe8c2ef57 tests: update test_api_create_repo with better coverage of create_repo api
Mads Kiilerich <mads@kiilerich.com>
parents: 8939
diff changeset
794 ('private', {'private': True}),
1d1fe8c2ef57 tests: update test_api_create_repo with better coverage of create_repo api
Mads Kiilerich <mads@kiilerich.com>
parents: 8939
diff changeset
795 #('enable_statistics', {'enable_statistics': True}), # currently broken
1d1fe8c2ef57 tests: update test_api_create_repo with better coverage of create_repo api
Mads Kiilerich <mads@kiilerich.com>
parents: 8939
diff changeset
796 #('enable_downloads', {'enable_downloads': True}), # currently broken
1d1fe8c2ef57 tests: update test_api_create_repo with better coverage of create_repo api
Mads Kiilerich <mads@kiilerich.com>
parents: 8939
diff changeset
797 ('repo_group', {'group': 'test_group_for_update'}),
1d1fe8c2ef57 tests: update test_api_create_repo with better coverage of create_repo api
Mads Kiilerich <mads@kiilerich.com>
parents: 8939
diff changeset
798 ])
1d1fe8c2ef57 tests: update test_api_create_repo with better coverage of create_repo api
Mads Kiilerich <mads@kiilerich.com>
parents: 8939
diff changeset
799 def test_api_create_repo(self, changing_attr, updates):
1d1fe8c2ef57 tests: update test_api_create_repo with better coverage of create_repo api
Mads Kiilerich <mads@kiilerich.com>
parents: 8939
diff changeset
800 repo_name = repo_name_full = 'new_repo'
1d1fe8c2ef57 tests: update test_api_create_repo with better coverage of create_repo api
Mads Kiilerich <mads@kiilerich.com>
parents: 8939
diff changeset
801
1d1fe8c2ef57 tests: update test_api_create_repo with better coverage of create_repo api
Mads Kiilerich <mads@kiilerich.com>
parents: 8939
diff changeset
802 if changing_attr == 'repo_group':
1d1fe8c2ef57 tests: update test_api_create_repo with better coverage of create_repo api
Mads Kiilerich <mads@kiilerich.com>
parents: 8939
diff changeset
803 group_name = updates['group']
1d1fe8c2ef57 tests: update test_api_create_repo with better coverage of create_repo api
Mads Kiilerich <mads@kiilerich.com>
parents: 8939
diff changeset
804 fixture.create_repo_group(group_name)
1d1fe8c2ef57 tests: update test_api_create_repo with better coverage of create_repo api
Mads Kiilerich <mads@kiilerich.com>
parents: 8939
diff changeset
805 repo_name_full = '/'.join([group_name, repo_name])
1d1fe8c2ef57 tests: update test_api_create_repo with better coverage of create_repo api
Mads Kiilerich <mads@kiilerich.com>
parents: 8939
diff changeset
806 updates = {}
1d1fe8c2ef57 tests: update test_api_create_repo with better coverage of create_repo api
Mads Kiilerich <mads@kiilerich.com>
parents: 8939
diff changeset
807
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
808 id_, params = _build_data(self.apikey, 'create_repo',
8940
1d1fe8c2ef57 tests: update test_api_create_repo with better coverage of create_repo api
Mads Kiilerich <mads@kiilerich.com>
parents: 8939
diff changeset
809 repo_type=self.REPO_TYPE, repo_name=repo_name_full, **updates)
2738
Marcin Kuzminski <marcin@python-works.com>
parents: 2737
diff changeset
810 response = api_call(self, params)
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
811
8940
1d1fe8c2ef57 tests: update test_api_create_repo with better coverage of create_repo api
Mads Kiilerich <mads@kiilerich.com>
parents: 8939
diff changeset
812 try:
1d1fe8c2ef57 tests: update test_api_create_repo with better coverage of create_repo api
Mads Kiilerich <mads@kiilerich.com>
parents: 8939
diff changeset
813 expected = {
1d1fe8c2ef57 tests: update test_api_create_repo with better coverage of create_repo api
Mads Kiilerich <mads@kiilerich.com>
parents: 8939
diff changeset
814 'msg': 'Created new repository `%s`' % repo_name_full,
1d1fe8c2ef57 tests: update test_api_create_repo with better coverage of create_repo api
Mads Kiilerich <mads@kiilerich.com>
parents: 8939
diff changeset
815 'success': True}
1d1fe8c2ef57 tests: update test_api_create_repo with better coverage of create_repo api
Mads Kiilerich <mads@kiilerich.com>
parents: 8939
diff changeset
816 if changing_attr == 'clone_uri' and updates['clone_uri']:
1d1fe8c2ef57 tests: update test_api_create_repo with better coverage of create_repo api
Mads Kiilerich <mads@kiilerich.com>
parents: 8939
diff changeset
817 expected = 'failed to create repository `%s`' % repo_name
1d1fe8c2ef57 tests: update test_api_create_repo with better coverage of create_repo api
Mads Kiilerich <mads@kiilerich.com>
parents: 8939
diff changeset
818 self._compare_error(id_, expected, given=response.body)
1d1fe8c2ef57 tests: update test_api_create_repo with better coverage of create_repo api
Mads Kiilerich <mads@kiilerich.com>
parents: 8939
diff changeset
819 return
1d1fe8c2ef57 tests: update test_api_create_repo with better coverage of create_repo api
Mads Kiilerich <mads@kiilerich.com>
parents: 8939
diff changeset
820 else:
1d1fe8c2ef57 tests: update test_api_create_repo with better coverage of create_repo api
Mads Kiilerich <mads@kiilerich.com>
parents: 8939
diff changeset
821 self._compare_ok(id_, expected, given=response.body)
1d1fe8c2ef57 tests: update test_api_create_repo with better coverage of create_repo api
Mads Kiilerich <mads@kiilerich.com>
parents: 8939
diff changeset
822
1d1fe8c2ef57 tests: update test_api_create_repo with better coverage of create_repo api
Mads Kiilerich <mads@kiilerich.com>
parents: 8939
diff changeset
823 repo = db.Repository.get_by_repo_name(repo_name_full)
1d1fe8c2ef57 tests: update test_api_create_repo with better coverage of create_repo api
Mads Kiilerich <mads@kiilerich.com>
parents: 8939
diff changeset
824 assert repo is not None
1d1fe8c2ef57 tests: update test_api_create_repo with better coverage of create_repo api
Mads Kiilerich <mads@kiilerich.com>
parents: 8939
diff changeset
825
1d1fe8c2ef57 tests: update test_api_create_repo with better coverage of create_repo api
Mads Kiilerich <mads@kiilerich.com>
parents: 8939
diff changeset
826 expected_data = {
1d1fe8c2ef57 tests: update test_api_create_repo with better coverage of create_repo api
Mads Kiilerich <mads@kiilerich.com>
parents: 8939
diff changeset
827 'clone_uri': None,
1d1fe8c2ef57 tests: update test_api_create_repo with better coverage of create_repo api
Mads Kiilerich <mads@kiilerich.com>
parents: 8939
diff changeset
828 'created_on': repo.created_on,
1d1fe8c2ef57 tests: update test_api_create_repo with better coverage of create_repo api
Mads Kiilerich <mads@kiilerich.com>
parents: 8939
diff changeset
829 'description': repo_name,
1d1fe8c2ef57 tests: update test_api_create_repo with better coverage of create_repo api
Mads Kiilerich <mads@kiilerich.com>
parents: 8939
diff changeset
830 'enable_downloads': False,
1d1fe8c2ef57 tests: update test_api_create_repo with better coverage of create_repo api
Mads Kiilerich <mads@kiilerich.com>
parents: 8939
diff changeset
831 'enable_statistics': False,
1d1fe8c2ef57 tests: update test_api_create_repo with better coverage of create_repo api
Mads Kiilerich <mads@kiilerich.com>
parents: 8939
diff changeset
832 'fork_of': None,
1d1fe8c2ef57 tests: update test_api_create_repo with better coverage of create_repo api
Mads Kiilerich <mads@kiilerich.com>
parents: 8939
diff changeset
833 'landing_rev': ['rev', 'tip'],
1d1fe8c2ef57 tests: update test_api_create_repo with better coverage of create_repo api
Mads Kiilerich <mads@kiilerich.com>
parents: 8939
diff changeset
834 'last_changeset': {'author': '',
1d1fe8c2ef57 tests: update test_api_create_repo with better coverage of create_repo api
Mads Kiilerich <mads@kiilerich.com>
parents: 8939
diff changeset
835 'date': datetime.datetime(1970, 1, 1, 0, 0),
1d1fe8c2ef57 tests: update test_api_create_repo with better coverage of create_repo api
Mads Kiilerich <mads@kiilerich.com>
parents: 8939
diff changeset
836 'message': '',
1d1fe8c2ef57 tests: update test_api_create_repo with better coverage of create_repo api
Mads Kiilerich <mads@kiilerich.com>
parents: 8939
diff changeset
837 'raw_id': '0000000000000000000000000000000000000000',
1d1fe8c2ef57 tests: update test_api_create_repo with better coverage of create_repo api
Mads Kiilerich <mads@kiilerich.com>
parents: 8939
diff changeset
838 'revision': -1,
1d1fe8c2ef57 tests: update test_api_create_repo with better coverage of create_repo api
Mads Kiilerich <mads@kiilerich.com>
parents: 8939
diff changeset
839 'short_id': '000000000000'},
1d1fe8c2ef57 tests: update test_api_create_repo with better coverage of create_repo api
Mads Kiilerich <mads@kiilerich.com>
parents: 8939
diff changeset
840 'owner': 'test_admin',
1d1fe8c2ef57 tests: update test_api_create_repo with better coverage of create_repo api
Mads Kiilerich <mads@kiilerich.com>
parents: 8939
diff changeset
841 'private': False,
1d1fe8c2ef57 tests: update test_api_create_repo with better coverage of create_repo api
Mads Kiilerich <mads@kiilerich.com>
parents: 8939
diff changeset
842 'repo_id': repo.repo_id,
1d1fe8c2ef57 tests: update test_api_create_repo with better coverage of create_repo api
Mads Kiilerich <mads@kiilerich.com>
parents: 8939
diff changeset
843 'repo_name': repo_name_full,
1d1fe8c2ef57 tests: update test_api_create_repo with better coverage of create_repo api
Mads Kiilerich <mads@kiilerich.com>
parents: 8939
diff changeset
844 'repo_type': self.REPO_TYPE,
1d1fe8c2ef57 tests: update test_api_create_repo with better coverage of create_repo api
Mads Kiilerich <mads@kiilerich.com>
parents: 8939
diff changeset
845 }
1d1fe8c2ef57 tests: update test_api_create_repo with better coverage of create_repo api
Mads Kiilerich <mads@kiilerich.com>
parents: 8939
diff changeset
846 expected_data.update(updates)
1d1fe8c2ef57 tests: update test_api_create_repo with better coverage of create_repo api
Mads Kiilerich <mads@kiilerich.com>
parents: 8939
diff changeset
847 if changing_attr == 'landing_rev':
1d1fe8c2ef57 tests: update test_api_create_repo with better coverage of create_repo api
Mads Kiilerich <mads@kiilerich.com>
parents: 8939
diff changeset
848 expected_data['landing_rev'] = expected_data['landing_rev'].split(':', 1)
1d1fe8c2ef57 tests: update test_api_create_repo with better coverage of create_repo api
Mads Kiilerich <mads@kiilerich.com>
parents: 8939
diff changeset
849 assert repo.get_api_data() == expected_data
1d1fe8c2ef57 tests: update test_api_create_repo with better coverage of create_repo api
Mads Kiilerich <mads@kiilerich.com>
parents: 8939
diff changeset
850 finally:
1d1fe8c2ef57 tests: update test_api_create_repo with better coverage of create_repo api
Mads Kiilerich <mads@kiilerich.com>
parents: 8939
diff changeset
851 fixture.destroy_repo(repo_name_full)
1d1fe8c2ef57 tests: update test_api_create_repo with better coverage of create_repo api
Mads Kiilerich <mads@kiilerich.com>
parents: 8939
diff changeset
852 if changing_attr == 'repo_group':
1d1fe8c2ef57 tests: update test_api_create_repo with better coverage of create_repo api
Mads Kiilerich <mads@kiilerich.com>
parents: 8939
diff changeset
853 fixture.destroy_repo_group(group_name)
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
854
8109
e527cc2ce8dc cleanup: get rid of most "import *"
Mads Kiilerich <mads@kiilerich.com>
parents: 8078
diff changeset
855 @base.parametrize('repo_name', [
8224
e63bcce18fef py3: automatic migration with 2to3 -f unicode
Mads Kiilerich <mads@kiilerich.com>
parents: 8120
diff changeset
856 '',
e63bcce18fef py3: automatic migration with 2to3 -f unicode
Mads Kiilerich <mads@kiilerich.com>
parents: 8120
diff changeset
857 '.',
e63bcce18fef py3: automatic migration with 2to3 -f unicode
Mads Kiilerich <mads@kiilerich.com>
parents: 8120
diff changeset
858 '..',
e63bcce18fef py3: automatic migration with 2to3 -f unicode
Mads Kiilerich <mads@kiilerich.com>
parents: 8120
diff changeset
859 ':',
e63bcce18fef py3: automatic migration with 2to3 -f unicode
Mads Kiilerich <mads@kiilerich.com>
parents: 8120
diff changeset
860 '/',
e63bcce18fef py3: automatic migration with 2to3 -f unicode
Mads Kiilerich <mads@kiilerich.com>
parents: 8120
diff changeset
861 '<test>',
7315
3fb7c1e059ed tests: introduce API test coverage for some invalid repo names - especially repo names that would need escaping to prevent XSS
Mads Kiilerich <mads@kiilerich.com>
parents: 7314
diff changeset
862 ])
3fb7c1e059ed tests: introduce API test coverage for some invalid repo names - especially repo names that would need escaping to prevent XSS
Mads Kiilerich <mads@kiilerich.com>
parents: 7314
diff changeset
863 def test_api_create_repo_bad_names(self, repo_name):
3fb7c1e059ed tests: introduce API test coverage for some invalid repo names - especially repo names that would need escaping to prevent XSS
Mads Kiilerich <mads@kiilerich.com>
parents: 7314
diff changeset
864 id_, params = _build_data(self.apikey, 'create_repo',
3fb7c1e059ed tests: introduce API test coverage for some invalid repo names - especially repo names that would need escaping to prevent XSS
Mads Kiilerich <mads@kiilerich.com>
parents: 7314
diff changeset
865 repo_name=repo_name,
8109
e527cc2ce8dc cleanup: get rid of most "import *"
Mads Kiilerich <mads@kiilerich.com>
parents: 8078
diff changeset
866 owner=base.TEST_USER_ADMIN_LOGIN,
7315
3fb7c1e059ed tests: introduce API test coverage for some invalid repo names - especially repo names that would need escaping to prevent XSS
Mads Kiilerich <mads@kiilerich.com>
parents: 7314
diff changeset
867 repo_type=self.REPO_TYPE,
3fb7c1e059ed tests: introduce API test coverage for some invalid repo names - especially repo names that would need escaping to prevent XSS
Mads Kiilerich <mads@kiilerich.com>
parents: 7314
diff changeset
868 )
3fb7c1e059ed tests: introduce API test coverage for some invalid repo names - especially repo names that would need escaping to prevent XSS
Mads Kiilerich <mads@kiilerich.com>
parents: 7314
diff changeset
869 response = api_call(self, params)
3fb7c1e059ed tests: introduce API test coverage for some invalid repo names - especially repo names that would need escaping to prevent XSS
Mads Kiilerich <mads@kiilerich.com>
parents: 7314
diff changeset
870 if repo_name == '/':
3fb7c1e059ed tests: introduce API test coverage for some invalid repo names - especially repo names that would need escaping to prevent XSS
Mads Kiilerich <mads@kiilerich.com>
parents: 7314
diff changeset
871 expected = "repo group `` not found"
3fb7c1e059ed tests: introduce API test coverage for some invalid repo names - especially repo names that would need escaping to prevent XSS
Mads Kiilerich <mads@kiilerich.com>
parents: 7314
diff changeset
872 self._compare_error(id_, expected, given=response.body)
3fb7c1e059ed tests: introduce API test coverage for some invalid repo names - especially repo names that would need escaping to prevent XSS
Mads Kiilerich <mads@kiilerich.com>
parents: 7314
diff changeset
873 else:
3fb7c1e059ed tests: introduce API test coverage for some invalid repo names - especially repo names that would need escaping to prevent XSS
Mads Kiilerich <mads@kiilerich.com>
parents: 7314
diff changeset
874 expected = "failed to create repository `%s`" % repo_name
3fb7c1e059ed tests: introduce API test coverage for some invalid repo names - especially repo names that would need escaping to prevent XSS
Mads Kiilerich <mads@kiilerich.com>
parents: 7314
diff changeset
875 self._compare_error(id_, expected, given=response.body)
3fb7c1e059ed tests: introduce API test coverage for some invalid repo names - especially repo names that would need escaping to prevent XSS
Mads Kiilerich <mads@kiilerich.com>
parents: 7314
diff changeset
876 fixture.destroy_repo(repo_name)
3fb7c1e059ed tests: introduce API test coverage for some invalid repo names - especially repo names that would need escaping to prevent XSS
Mads Kiilerich <mads@kiilerich.com>
parents: 7314
diff changeset
877
7310
d64cf8f33f6f tests: improve test coverage of clone_uri and expose some existing problems with unauthenticated cloning from local repos
Mads Kiilerich <mads@kiilerich.com>
parents: 5947
diff changeset
878 def test_api_create_repo_clone_uri_local(self):
8939
9de126d62202 tests: update_repo without begging the question
Mads Kiilerich <mads@kiilerich.com>
parents: 8867
diff changeset
879 # cloning from local repos was a misfeature - it would bypass access control
7312
fa3365c94064 repos: introduce low level check of clone URIs to prevent direct file system access to local repos
Mads Kiilerich <mads@kiilerich.com>
parents: 7310
diff changeset
880 # TODO: introduce other test coverage of actual remote cloning
8109
e527cc2ce8dc cleanup: get rid of most "import *"
Mads Kiilerich <mads@kiilerich.com>
parents: 8078
diff changeset
881 clone_uri = os.path.join(base.TESTS_TMP_PATH, self.REPO)
8224
e63bcce18fef py3: automatic migration with 2to3 -f unicode
Mads Kiilerich <mads@kiilerich.com>
parents: 8120
diff changeset
882 repo_name = 'api-repo'
7310
d64cf8f33f6f tests: improve test coverage of clone_uri and expose some existing problems with unauthenticated cloning from local repos
Mads Kiilerich <mads@kiilerich.com>
parents: 5947
diff changeset
883 id_, params = _build_data(self.apikey, 'create_repo',
d64cf8f33f6f tests: improve test coverage of clone_uri and expose some existing problems with unauthenticated cloning from local repos
Mads Kiilerich <mads@kiilerich.com>
parents: 5947
diff changeset
884 repo_name=repo_name,
8109
e527cc2ce8dc cleanup: get rid of most "import *"
Mads Kiilerich <mads@kiilerich.com>
parents: 8078
diff changeset
885 owner=base.TEST_USER_ADMIN_LOGIN,
7310
d64cf8f33f6f tests: improve test coverage of clone_uri and expose some existing problems with unauthenticated cloning from local repos
Mads Kiilerich <mads@kiilerich.com>
parents: 5947
diff changeset
886 repo_type=self.REPO_TYPE,
d64cf8f33f6f tests: improve test coverage of clone_uri and expose some existing problems with unauthenticated cloning from local repos
Mads Kiilerich <mads@kiilerich.com>
parents: 5947
diff changeset
887 clone_uri=clone_uri,
d64cf8f33f6f tests: improve test coverage of clone_uri and expose some existing problems with unauthenticated cloning from local repos
Mads Kiilerich <mads@kiilerich.com>
parents: 5947
diff changeset
888 )
d64cf8f33f6f tests: improve test coverage of clone_uri and expose some existing problems with unauthenticated cloning from local repos
Mads Kiilerich <mads@kiilerich.com>
parents: 5947
diff changeset
889 response = api_call(self, params)
7312
fa3365c94064 repos: introduce low level check of clone URIs to prevent direct file system access to local repos
Mads Kiilerich <mads@kiilerich.com>
parents: 7310
diff changeset
890 expected = "failed to create repository `%s`" % repo_name
fa3365c94064 repos: introduce low level check of clone URIs to prevent direct file system access to local repos
Mads Kiilerich <mads@kiilerich.com>
parents: 7310
diff changeset
891 self._compare_error(id_, expected, given=response.body)
7310
d64cf8f33f6f tests: improve test coverage of clone_uri and expose some existing problems with unauthenticated cloning from local repos
Mads Kiilerich <mads@kiilerich.com>
parents: 5947
diff changeset
892 fixture.destroy_repo(repo_name)
d64cf8f33f6f tests: improve test coverage of clone_uri and expose some existing problems with unauthenticated cloning from local repos
Mads Kiilerich <mads@kiilerich.com>
parents: 5947
diff changeset
893
5304
975f5769be08 tests: add test coverage for how repo creation access control is different through API and Web
Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>
parents: 5227
diff changeset
894 def test_api_create_repo_and_repo_group(self):
8224
e63bcce18fef py3: automatic migration with 2to3 -f unicode
Mads Kiilerich <mads@kiilerich.com>
parents: 8120
diff changeset
895 repo_group_name = 'my_gr'
e63bcce18fef py3: automatic migration with 2to3 -f unicode
Mads Kiilerich <mads@kiilerich.com>
parents: 8120
diff changeset
896 repo_name = '%s/api-repo' % repo_group_name
7313
eeb8ddecaee2 tests: tweak test coverage of repo creation API - prepare for other changes
Mads Kiilerich <mads@kiilerich.com>
parents: 7312
diff changeset
897
7314
083fbf531a5d repos: only allow api repo creation in existing groups
Mads Kiilerich <mads@kiilerich.com>
parents: 7313
diff changeset
898 # repo creation can no longer also create repo group
083fbf531a5d repos: only allow api repo creation in existing groups
Mads Kiilerich <mads@kiilerich.com>
parents: 7313
diff changeset
899 id_, params = _build_data(self.apikey, 'create_repo',
083fbf531a5d repos: only allow api repo creation in existing groups
Mads Kiilerich <mads@kiilerich.com>
parents: 7313
diff changeset
900 repo_name=repo_name,
8109
e527cc2ce8dc cleanup: get rid of most "import *"
Mads Kiilerich <mads@kiilerich.com>
parents: 8078
diff changeset
901 owner=base.TEST_USER_ADMIN_LOGIN,
7314
083fbf531a5d repos: only allow api repo creation in existing groups
Mads Kiilerich <mads@kiilerich.com>
parents: 7313
diff changeset
902 repo_type=self.REPO_TYPE,)
083fbf531a5d repos: only allow api repo creation in existing groups
Mads Kiilerich <mads@kiilerich.com>
parents: 7313
diff changeset
903 response = api_call(self, params)
8224
e63bcce18fef py3: automatic migration with 2to3 -f unicode
Mads Kiilerich <mads@kiilerich.com>
parents: 8120
diff changeset
904 expected = 'repo group `%s` not found' % repo_group_name
7314
083fbf531a5d repos: only allow api repo creation in existing groups
Mads Kiilerich <mads@kiilerich.com>
parents: 7313
diff changeset
905 self._compare_error(id_, expected, given=response.body)
083fbf531a5d repos: only allow api repo creation in existing groups
Mads Kiilerich <mads@kiilerich.com>
parents: 7313
diff changeset
906 assert RepoModel().get_by_repo_name(repo_name) is None
083fbf531a5d repos: only allow api repo creation in existing groups
Mads Kiilerich <mads@kiilerich.com>
parents: 7313
diff changeset
907
083fbf531a5d repos: only allow api repo creation in existing groups
Mads Kiilerich <mads@kiilerich.com>
parents: 7313
diff changeset
908 # create group before creating repo
083fbf531a5d repos: only allow api repo creation in existing groups
Mads Kiilerich <mads@kiilerich.com>
parents: 7313
diff changeset
909 rg = fixture.create_repo_group(repo_group_name)
8686
b095e2fbba44 model: always import whole meta module - also when referencing Session
Mads Kiilerich <mads@kiilerich.com>
parents: 8661
diff changeset
910 meta.Session().commit()
7314
083fbf531a5d repos: only allow api repo creation in existing groups
Mads Kiilerich <mads@kiilerich.com>
parents: 7313
diff changeset
911
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
912 id_, params = _build_data(self.apikey, 'create_repo',
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
913 repo_name=repo_name,
8109
e527cc2ce8dc cleanup: get rid of most "import *"
Mads Kiilerich <mads@kiilerich.com>
parents: 8078
diff changeset
914 owner=base.TEST_USER_ADMIN_LOGIN,
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
915 repo_type=self.REPO_TYPE,)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
916 response = api_call(self, params)
7313
eeb8ddecaee2 tests: tweak test coverage of repo creation API - prepare for other changes
Mads Kiilerich <mads@kiilerich.com>
parents: 7312
diff changeset
917 expected = {
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
918 'msg': 'Created new repository `%s`' % repo_name,
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
919 'success': True,
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
920 }
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
921 self._compare_ok(id_, expected, given=response.body)
7313
eeb8ddecaee2 tests: tweak test coverage of repo creation API - prepare for other changes
Mads Kiilerich <mads@kiilerich.com>
parents: 7312
diff changeset
922 repo = RepoModel().get_by_repo_name(repo_name)
7295
d314edb04d11 tests: tweak test coverage of repo creation API - prepare for other changes
Mads Kiilerich <mads@kiilerich.com>
parents: 7294
diff changeset
923 assert repo is not None
7313
eeb8ddecaee2 tests: tweak test coverage of repo creation API - prepare for other changes
Mads Kiilerich <mads@kiilerich.com>
parents: 7312
diff changeset
924
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
925 fixture.destroy_repo(repo_name)
7313
eeb8ddecaee2 tests: tweak test coverage of repo creation API - prepare for other changes
Mads Kiilerich <mads@kiilerich.com>
parents: 7312
diff changeset
926 fixture.destroy_repo_group(repo_group_name)
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
927
5304
975f5769be08 tests: add test coverage for how repo creation access control is different through API and Web
Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>
parents: 5227
diff changeset
928 def test_api_create_repo_in_repo_group_without_permission(self):
8224
e63bcce18fef py3: automatic migration with 2to3 -f unicode
Mads Kiilerich <mads@kiilerich.com>
parents: 8120
diff changeset
929 repo_group_basename = 'api-repo-repo'
e63bcce18fef py3: automatic migration with 2to3 -f unicode
Mads Kiilerich <mads@kiilerich.com>
parents: 8120
diff changeset
930 repo_group_name = '%s/%s' % (TEST_REPO_GROUP, repo_group_basename)
e63bcce18fef py3: automatic migration with 2to3 -f unicode
Mads Kiilerich <mads@kiilerich.com>
parents: 8120
diff changeset
931 repo_name = '%s/api-repo' % repo_group_name
5304
975f5769be08 tests: add test coverage for how repo creation access control is different through API and Web
Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>
parents: 5227
diff changeset
932
8687
5e46f73f0d1c model: always import the whole db module - drop "from" imports
Mads Kiilerich <mads@kiilerich.com>
parents: 8686
diff changeset
933 top_group = db.RepoGroup.get_by_group_name(TEST_REPO_GROUP)
7316
7d5e8894db6c tests: clarify that fixture.create_repo_group takes a name, not a path
Mads Kiilerich <mads@kiilerich.com>
parents: 7315
diff changeset
934 assert top_group
7299
57a733313e4f repos: introduce low level slug check of repo and group names
Mads Kiilerich <mads@kiilerich.com>
parents: 7298
diff changeset
935 rg = fixture.create_repo_group(repo_group_basename, parent_group_id=top_group)
8686
b095e2fbba44 model: always import whole meta module - also when referencing Session
Mads Kiilerich <mads@kiilerich.com>
parents: 8661
diff changeset
936 meta.Session().commit()
5304
975f5769be08 tests: add test coverage for how repo creation access control is different through API and Web
Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>
parents: 5227
diff changeset
937 RepoGroupModel().grant_user_permission(repo_group_name,
975f5769be08 tests: add test coverage for how repo creation access control is different through API and Web
Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>
parents: 5227
diff changeset
938 self.TEST_USER_LOGIN,
975f5769be08 tests: add test coverage for how repo creation access control is different through API and Web
Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>
parents: 5227
diff changeset
939 'group.none')
8686
b095e2fbba44 model: always import whole meta module - also when referencing Session
Mads Kiilerich <mads@kiilerich.com>
parents: 8661
diff changeset
940 meta.Session().commit()
5304
975f5769be08 tests: add test coverage for how repo creation access control is different through API and Web
Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>
parents: 5227
diff changeset
941
975f5769be08 tests: add test coverage for how repo creation access control is different through API and Web
Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>
parents: 5227
diff changeset
942 id_, params = _build_data(self.apikey_regular, 'create_repo',
975f5769be08 tests: add test coverage for how repo creation access control is different through API and Web
Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>
parents: 5227
diff changeset
943 repo_name=repo_name,
975f5769be08 tests: add test coverage for how repo creation access control is different through API and Web
Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>
parents: 5227
diff changeset
944 repo_type=self.REPO_TYPE,
975f5769be08 tests: add test coverage for how repo creation access control is different through API and Web
Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>
parents: 5227
diff changeset
945 )
975f5769be08 tests: add test coverage for how repo creation access control is different through API and Web
Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>
parents: 5227
diff changeset
946 response = api_call(self, params)
975f5769be08 tests: add test coverage for how repo creation access control is different through API and Web
Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>
parents: 5227
diff changeset
947
8513
7643d8ecbb20 api: fix repo group permission check for repo creation
Mads Kiilerich <mads@kiilerich.com>
parents: 8379
diff changeset
948 # API access control match Web access control:
7643d8ecbb20 api: fix repo group permission check for repo creation
Mads Kiilerich <mads@kiilerich.com>
parents: 8379
diff changeset
949 expected = 'no permission to create repo in test_repo_group/api-repo-repo'
7643d8ecbb20 api: fix repo group permission check for repo creation
Mads Kiilerich <mads@kiilerich.com>
parents: 8379
diff changeset
950 self._compare_error(id_, expected, given=response.body)
7643d8ecbb20 api: fix repo group permission check for repo creation
Mads Kiilerich <mads@kiilerich.com>
parents: 8379
diff changeset
951
5304
975f5769be08 tests: add test coverage for how repo creation access control is different through API and Web
Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>
parents: 5227
diff changeset
952 fixture.destroy_repo(repo_name)
975f5769be08 tests: add test coverage for how repo creation access control is different through API and Web
Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>
parents: 5227
diff changeset
953 fixture.destroy_repo_group(repo_group_name)
975f5769be08 tests: add test coverage for how repo creation access control is different through API and Web
Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>
parents: 5227
diff changeset
954
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
955 def test_api_create_repo_unknown_owner(self):
8224
e63bcce18fef py3: automatic migration with 2to3 -f unicode
Mads Kiilerich <mads@kiilerich.com>
parents: 8120
diff changeset
956 repo_name = 'api-repo'
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
957 owner = 'i-dont-exist'
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
958 id_, params = _build_data(self.apikey, 'create_repo',
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
959 repo_name=repo_name,
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
960 owner=owner,
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
961 repo_type=self.REPO_TYPE,
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
962 )
2738
Marcin Kuzminski <marcin@python-works.com>
parents: 2737
diff changeset
963 response = api_call(self, params)
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
964 expected = 'user `%s` does not exist' % owner
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
965 self._compare_error(id_, expected, given=response.body)
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
966
3163
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
967 def test_api_create_repo_dont_specify_owner(self):
8224
e63bcce18fef py3: automatic migration with 2to3 -f unicode
Mads Kiilerich <mads@kiilerich.com>
parents: 8120
diff changeset
968 repo_name = 'api-repo'
3163
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
969 owner = 'i-dont-exist'
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
970 id_, params = _build_data(self.apikey, 'create_repo',
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
971 repo_name=repo_name,
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
972 repo_type=self.REPO_TYPE,
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
973 )
3163
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
974 response = api_call(self, params)
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
975
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
976 repo = RepoModel().get_by_repo_name(repo_name)
6868
48a00daba2f2 codingstyle: replace comparison for equality against None with "is" expression
Lars Kruse <devel@sumpfralle.de>
parents: 6864
diff changeset
977 assert repo is not None
3163
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
978 ret = {
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
979 'msg': 'Created new repository `%s`' % repo_name,
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
980 'success': True,
3163
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
981 }
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
982 expected = ret
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
983 self._compare_ok(id_, expected, given=response.body)
3647
8a86836fad64 more usage of fixture tools
Marcin Kuzminski <marcin@python-works.com>
parents: 3502
diff changeset
984 fixture.destroy_repo(repo_name)
3163
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
985
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
986 def test_api_create_repo_by_non_admin(self):
8224
e63bcce18fef py3: automatic migration with 2to3 -f unicode
Mads Kiilerich <mads@kiilerich.com>
parents: 8120
diff changeset
987 repo_name = 'api-repo'
3163
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
988 owner = 'i-dont-exist'
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
989 id_, params = _build_data(self.apikey_regular, 'create_repo',
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
990 repo_name=repo_name,
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
991 repo_type=self.REPO_TYPE,
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
992 )
3163
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
993 response = api_call(self, params)
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
994
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
995 repo = RepoModel().get_by_repo_name(repo_name)
6868
48a00daba2f2 codingstyle: replace comparison for equality against None with "is" expression
Lars Kruse <devel@sumpfralle.de>
parents: 6864
diff changeset
996 assert repo is not None
3163
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
997 ret = {
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
998 'msg': 'Created new repository `%s`' % repo_name,
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
999 'success': True,
3163
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
1000 }
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
1001 expected = ret
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
1002 self._compare_ok(id_, expected, given=response.body)
3647
8a86836fad64 more usage of fixture tools
Marcin Kuzminski <marcin@python-works.com>
parents: 3502
diff changeset
1003 fixture.destroy_repo(repo_name)
3163
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
1004
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
1005 def test_api_create_repo_by_non_admin_specify_owner(self):
8224
e63bcce18fef py3: automatic migration with 2to3 -f unicode
Mads Kiilerich <mads@kiilerich.com>
parents: 8120
diff changeset
1006 repo_name = 'api-repo'
3163
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
1007 owner = 'i-dont-exist'
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
1008 id_, params = _build_data(self.apikey_regular, 'create_repo',
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1009 repo_name=repo_name,
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1010 repo_type=self.REPO_TYPE,
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1011 owner=owner)
3163
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
1012 response = api_call(self, params)
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
1013
4212
24c0d584ba86 General renaming to Kallithea
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 4209
diff changeset
1014 expected = 'Only Kallithea admin can specify `owner` param'
3163
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
1015 self._compare_error(id_, expected, given=response.body)
3647
8a86836fad64 more usage of fixture tools
Marcin Kuzminski <marcin@python-works.com>
parents: 3502
diff changeset
1016 fixture.destroy_repo(repo_name)
3163
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
1017
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1018 def test_api_create_repo_exists(self):
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1019 repo_name = self.REPO
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1020 id_, params = _build_data(self.apikey, 'create_repo',
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1021 repo_name=repo_name,
8109
e527cc2ce8dc cleanup: get rid of most "import *"
Mads Kiilerich <mads@kiilerich.com>
parents: 8078
diff changeset
1022 owner=base.TEST_USER_ADMIN_LOGIN,
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1023 repo_type=self.REPO_TYPE,)
2738
Marcin Kuzminski <marcin@python-works.com>
parents: 2737
diff changeset
1024 response = api_call(self, params)
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1025 expected = "repo `%s` already exist" % repo_name
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1026 self._compare_error(id_, expected, given=response.body)
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1027
7313
eeb8ddecaee2 tests: tweak test coverage of repo creation API - prepare for other changes
Mads Kiilerich <mads@kiilerich.com>
parents: 7312
diff changeset
1028 def test_api_create_repo_dot_dot(self):
7314
083fbf531a5d repos: only allow api repo creation in existing groups
Mads Kiilerich <mads@kiilerich.com>
parents: 7313
diff changeset
1029 # it is only possible to create repositories in existing repo groups - and '..' can't be used
7313
eeb8ddecaee2 tests: tweak test coverage of repo creation API - prepare for other changes
Mads Kiilerich <mads@kiilerich.com>
parents: 7312
diff changeset
1030 group_name = '%s/..' % TEST_REPO_GROUP
eeb8ddecaee2 tests: tweak test coverage of repo creation API - prepare for other changes
Mads Kiilerich <mads@kiilerich.com>
parents: 7312
diff changeset
1031 repo_name = '%s/%s' % (group_name, 'could-be-outside')
eeb8ddecaee2 tests: tweak test coverage of repo creation API - prepare for other changes
Mads Kiilerich <mads@kiilerich.com>
parents: 7312
diff changeset
1032 id_, params = _build_data(self.apikey, 'create_repo',
eeb8ddecaee2 tests: tweak test coverage of repo creation API - prepare for other changes
Mads Kiilerich <mads@kiilerich.com>
parents: 7312
diff changeset
1033 repo_name=repo_name,
8109
e527cc2ce8dc cleanup: get rid of most "import *"
Mads Kiilerich <mads@kiilerich.com>
parents: 8078
diff changeset
1034 owner=base.TEST_USER_ADMIN_LOGIN,
7313
eeb8ddecaee2 tests: tweak test coverage of repo creation API - prepare for other changes
Mads Kiilerich <mads@kiilerich.com>
parents: 7312
diff changeset
1035 repo_type=self.REPO_TYPE,)
eeb8ddecaee2 tests: tweak test coverage of repo creation API - prepare for other changes
Mads Kiilerich <mads@kiilerich.com>
parents: 7312
diff changeset
1036 response = api_call(self, params)
8224
e63bcce18fef py3: automatic migration with 2to3 -f unicode
Mads Kiilerich <mads@kiilerich.com>
parents: 8120
diff changeset
1037 expected = 'repo group `%s` not found' % group_name
7314
083fbf531a5d repos: only allow api repo creation in existing groups
Mads Kiilerich <mads@kiilerich.com>
parents: 7313
diff changeset
1038 self._compare_error(id_, expected, given=response.body)
7313
eeb8ddecaee2 tests: tweak test coverage of repo creation API - prepare for other changes
Mads Kiilerich <mads@kiilerich.com>
parents: 7312
diff changeset
1039 fixture.destroy_repo(repo_name)
eeb8ddecaee2 tests: tweak test coverage of repo creation API - prepare for other changes
Mads Kiilerich <mads@kiilerich.com>
parents: 7312
diff changeset
1040
8585
1de3e5d104bf tests: consistent use of more helpful raise_exception "fixture"
Mads Kiilerich <mads@kiilerich.com>
parents: 8379
diff changeset
1041 @mock.patch.object(RepoModel, 'create', raise_exception)
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1042 def test_api_create_repo_exception_occurred(self):
8224
e63bcce18fef py3: automatic migration with 2to3 -f unicode
Mads Kiilerich <mads@kiilerich.com>
parents: 8120
diff changeset
1043 repo_name = 'api-repo'
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1044 id_, params = _build_data(self.apikey, 'create_repo',
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1045 repo_name=repo_name,
8109
e527cc2ce8dc cleanup: get rid of most "import *"
Mads Kiilerich <mads@kiilerich.com>
parents: 8078
diff changeset
1046 owner=base.TEST_USER_ADMIN_LOGIN,
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1047 repo_type=self.REPO_TYPE,)
2738
Marcin Kuzminski <marcin@python-works.com>
parents: 2737
diff changeset
1048 response = api_call(self, params)
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1049 expected = 'failed to create repository `%s`' % repo_name
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1050 self._compare_error(id_, expected, given=response.body)
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1051
8109
e527cc2ce8dc cleanup: get rid of most "import *"
Mads Kiilerich <mads@kiilerich.com>
parents: 8078
diff changeset
1052 @base.parametrize('changing_attr,updates', [
e527cc2ce8dc cleanup: get rid of most "import *"
Mads Kiilerich <mads@kiilerich.com>
parents: 8078
diff changeset
1053 ('owner', {'owner': base.TEST_USER_REGULAR_LOGIN}),
8224
e63bcce18fef py3: automatic migration with 2to3 -f unicode
Mads Kiilerich <mads@kiilerich.com>
parents: 8120
diff changeset
1054 ('description', {'description': 'new description'}),
7312
fa3365c94064 repos: introduce low level check of clone URIs to prevent direct file system access to local repos
Mads Kiilerich <mads@kiilerich.com>
parents: 7310
diff changeset
1055 ('clone_uri', {'clone_uri': 'http://example.com/repo'}), # will fail - pulling from non-existing repo should fail
8939
9de126d62202 tests: update_repo without begging the question
Mads Kiilerich <mads@kiilerich.com>
parents: 8867
diff changeset
1056 ('clone_uri', {'clone_uri': '/repo'}), # will fail - pulling from local repo was a misfeature - it would bypass access control
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1057 ('clone_uri', {'clone_uri': None}),
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1058 ('landing_rev', {'landing_rev': 'branch:master'}),
8939
9de126d62202 tests: update_repo without begging the question
Mads Kiilerich <mads@kiilerich.com>
parents: 8867
diff changeset
1059 ('private', {'private': True}),
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1060 ('enable_statistics', {'enable_statistics': True}),
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1061 ('enable_downloads', {'enable_downloads': True}),
8224
e63bcce18fef py3: automatic migration with 2to3 -f unicode
Mads Kiilerich <mads@kiilerich.com>
parents: 8120
diff changeset
1062 ('name', {'name': 'new_repo_name'}),
e63bcce18fef py3: automatic migration with 2to3 -f unicode
Mads Kiilerich <mads@kiilerich.com>
parents: 8120
diff changeset
1063 ('repo_group', {'group': 'test_group_for_update'}),
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1064 ])
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1065 def test_api_update_repo(self, changing_attr, updates):
8224
e63bcce18fef py3: automatic migration with 2to3 -f unicode
Mads Kiilerich <mads@kiilerich.com>
parents: 8120
diff changeset
1066 repo_name = 'api_update_me'
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1067 repo = fixture.create_repo(repo_name, repo_type=self.REPO_TYPE)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1068 if changing_attr == 'repo_group':
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1069 fixture.create_repo_group(updates['group'])
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1070
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1071 id_, params = _build_data(self.apikey, 'update_repo',
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1072 repoid=repo_name, **updates)
8939
9de126d62202 tests: update_repo without begging the question
Mads Kiilerich <mads@kiilerich.com>
parents: 8867
diff changeset
1073
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1074 if changing_attr == 'name':
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1075 repo_name = updates['name']
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1076 if changing_attr == 'repo_group':
8224
e63bcce18fef py3: automatic migration with 2to3 -f unicode
Mads Kiilerich <mads@kiilerich.com>
parents: 8120
diff changeset
1077 repo_name = '/'.join([updates['group'], repo_name])
8939
9de126d62202 tests: update_repo without begging the question
Mads Kiilerich <mads@kiilerich.com>
parents: 8867
diff changeset
1078 expected = {
9de126d62202 tests: update_repo without begging the question
Mads Kiilerich <mads@kiilerich.com>
parents: 8867
diff changeset
1079 'msg': 'updated repo ID:%s %s' % (repo.repo_id, repo_name),
9de126d62202 tests: update_repo without begging the question
Mads Kiilerich <mads@kiilerich.com>
parents: 8867
diff changeset
1080 'repository': repo.get_api_data()
9de126d62202 tests: update_repo without begging the question
Mads Kiilerich <mads@kiilerich.com>
parents: 8867
diff changeset
1081 }
9de126d62202 tests: update_repo without begging the question
Mads Kiilerich <mads@kiilerich.com>
parents: 8867
diff changeset
1082 expected['repository'].update(updates)
9de126d62202 tests: update_repo without begging the question
Mads Kiilerich <mads@kiilerich.com>
parents: 8867
diff changeset
1083 if changing_attr == 'clone_uri' and updates['clone_uri'] is None:
9de126d62202 tests: update_repo without begging the question
Mads Kiilerich <mads@kiilerich.com>
parents: 8867
diff changeset
1084 expected['repository']['clone_uri'] = ''
9de126d62202 tests: update_repo without begging the question
Mads Kiilerich <mads@kiilerich.com>
parents: 8867
diff changeset
1085 if changing_attr == 'landing_rev':
9de126d62202 tests: update_repo without begging the question
Mads Kiilerich <mads@kiilerich.com>
parents: 8867
diff changeset
1086 expected['repository']['landing_rev'] = expected['repository']['landing_rev'].split(':', 1)
9de126d62202 tests: update_repo without begging the question
Mads Kiilerich <mads@kiilerich.com>
parents: 8867
diff changeset
1087 if changing_attr == 'name':
9de126d62202 tests: update_repo without begging the question
Mads Kiilerich <mads@kiilerich.com>
parents: 8867
diff changeset
1088 expected['repository']['repo_name'] = expected['repository'].pop('name')
9de126d62202 tests: update_repo without begging the question
Mads Kiilerich <mads@kiilerich.com>
parents: 8867
diff changeset
1089 if changing_attr == 'repo_group':
9de126d62202 tests: update_repo without begging the question
Mads Kiilerich <mads@kiilerich.com>
parents: 8867
diff changeset
1090 expected['repository']['repo_name'] = expected['repository'].pop('group') + '/' + repo.repo_name
9de126d62202 tests: update_repo without begging the question
Mads Kiilerich <mads@kiilerich.com>
parents: 8867
diff changeset
1091
9de126d62202 tests: update_repo without begging the question
Mads Kiilerich <mads@kiilerich.com>
parents: 8867
diff changeset
1092 response = api_call(self, params)
9de126d62202 tests: update_repo without begging the question
Mads Kiilerich <mads@kiilerich.com>
parents: 8867
diff changeset
1093
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1094 try:
7312
fa3365c94064 repos: introduce low level check of clone URIs to prevent direct file system access to local repos
Mads Kiilerich <mads@kiilerich.com>
parents: 7310
diff changeset
1095 if changing_attr == 'clone_uri' and updates['clone_uri']:
8224
e63bcce18fef py3: automatic migration with 2to3 -f unicode
Mads Kiilerich <mads@kiilerich.com>
parents: 8120
diff changeset
1096 expected = 'failed to update repo `%s`' % repo_name
7312
fa3365c94064 repos: introduce low level check of clone URIs to prevent direct file system access to local repos
Mads Kiilerich <mads@kiilerich.com>
parents: 7310
diff changeset
1097 self._compare_error(id_, expected, given=response.body)
fa3365c94064 repos: introduce low level check of clone URIs to prevent direct file system access to local repos
Mads Kiilerich <mads@kiilerich.com>
parents: 7310
diff changeset
1098 else:
fa3365c94064 repos: introduce low level check of clone URIs to prevent direct file system access to local repos
Mads Kiilerich <mads@kiilerich.com>
parents: 7310
diff changeset
1099 self._compare_ok(id_, expected, given=response.body)
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1100 finally:
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1101 fixture.destroy_repo(repo_name)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1102 if changing_attr == 'repo_group':
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1103 fixture.destroy_repo_group(updates['group'])
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1104
8109
e527cc2ce8dc cleanup: get rid of most "import *"
Mads Kiilerich <mads@kiilerich.com>
parents: 8078
diff changeset
1105 @base.parametrize('changing_attr,updates', [
e527cc2ce8dc cleanup: get rid of most "import *"
Mads Kiilerich <mads@kiilerich.com>
parents: 8078
diff changeset
1106 ('owner', {'owner': base.TEST_USER_REGULAR_LOGIN}),
8224
e63bcce18fef py3: automatic migration with 2to3 -f unicode
Mads Kiilerich <mads@kiilerich.com>
parents: 8120
diff changeset
1107 ('description', {'description': 'new description'}),
7312
fa3365c94064 repos: introduce low level check of clone URIs to prevent direct file system access to local repos
Mads Kiilerich <mads@kiilerich.com>
parents: 7310
diff changeset
1108 ('clone_uri', {'clone_uri': 'http://example.com/repo'}), # will fail - pulling from non-existing repo should fail
8939
9de126d62202 tests: update_repo without begging the question
Mads Kiilerich <mads@kiilerich.com>
parents: 8867
diff changeset
1109 ('clone_uri', {'clone_uri': '/repo'}), # will fail - pulling from local repo was a misfeature - it would bypass access control
5946
ffe4d5060d91 api: avoid duplicating group name when updating repo (Issue #37)
Mads Kiilerich <madski@unity3d.com>
parents: 5497
diff changeset
1110 ('clone_uri', {'clone_uri': None}),
ffe4d5060d91 api: avoid duplicating group name when updating repo (Issue #37)
Mads Kiilerich <madski@unity3d.com>
parents: 5497
diff changeset
1111 ('landing_rev', {'landing_rev': 'branch:master'}),
ffe4d5060d91 api: avoid duplicating group name when updating repo (Issue #37)
Mads Kiilerich <madski@unity3d.com>
parents: 5497
diff changeset
1112 ('enable_statistics', {'enable_statistics': True}),
ffe4d5060d91 api: avoid duplicating group name when updating repo (Issue #37)
Mads Kiilerich <madski@unity3d.com>
parents: 5497
diff changeset
1113 ('enable_downloads', {'enable_downloads': True}),
8224
e63bcce18fef py3: automatic migration with 2to3 -f unicode
Mads Kiilerich <mads@kiilerich.com>
parents: 8120
diff changeset
1114 ('name', {'name': 'new_repo_name'}),
e63bcce18fef py3: automatic migration with 2to3 -f unicode
Mads Kiilerich <mads@kiilerich.com>
parents: 8120
diff changeset
1115 ('repo_group', {'group': 'test_group_for_update'}),
5946
ffe4d5060d91 api: avoid duplicating group name when updating repo (Issue #37)
Mads Kiilerich <madski@unity3d.com>
parents: 5497
diff changeset
1116 ])
ffe4d5060d91 api: avoid duplicating group name when updating repo (Issue #37)
Mads Kiilerich <madski@unity3d.com>
parents: 5497
diff changeset
1117 def test_api_update_group_repo(self, changing_attr, updates):
8224
e63bcce18fef py3: automatic migration with 2to3 -f unicode
Mads Kiilerich <mads@kiilerich.com>
parents: 8120
diff changeset
1118 group_name = 'lololo'
5946
ffe4d5060d91 api: avoid duplicating group name when updating repo (Issue #37)
Mads Kiilerich <madski@unity3d.com>
parents: 5497
diff changeset
1119 fixture.create_repo_group(group_name)
8224
e63bcce18fef py3: automatic migration with 2to3 -f unicode
Mads Kiilerich <mads@kiilerich.com>
parents: 8120
diff changeset
1120 repo_name = '%s/api_update_me' % group_name
5946
ffe4d5060d91 api: avoid duplicating group name when updating repo (Issue #37)
Mads Kiilerich <madski@unity3d.com>
parents: 5497
diff changeset
1121 repo = fixture.create_repo(repo_name, repo_group=group_name, repo_type=self.REPO_TYPE)
ffe4d5060d91 api: avoid duplicating group name when updating repo (Issue #37)
Mads Kiilerich <madski@unity3d.com>
parents: 5497
diff changeset
1122 if changing_attr == 'repo_group':
ffe4d5060d91 api: avoid duplicating group name when updating repo (Issue #37)
Mads Kiilerich <madski@unity3d.com>
parents: 5497
diff changeset
1123 fixture.create_repo_group(updates['group'])
ffe4d5060d91 api: avoid duplicating group name when updating repo (Issue #37)
Mads Kiilerich <madski@unity3d.com>
parents: 5497
diff changeset
1124
ffe4d5060d91 api: avoid duplicating group name when updating repo (Issue #37)
Mads Kiilerich <madski@unity3d.com>
parents: 5497
diff changeset
1125 id_, params = _build_data(self.apikey, 'update_repo',
ffe4d5060d91 api: avoid duplicating group name when updating repo (Issue #37)
Mads Kiilerich <madski@unity3d.com>
parents: 5497
diff changeset
1126 repoid=repo_name, **updates)
ffe4d5060d91 api: avoid duplicating group name when updating repo (Issue #37)
Mads Kiilerich <madski@unity3d.com>
parents: 5497
diff changeset
1127 response = api_call(self, params)
ffe4d5060d91 api: avoid duplicating group name when updating repo (Issue #37)
Mads Kiilerich <madski@unity3d.com>
parents: 5497
diff changeset
1128 if changing_attr == 'name':
8224
e63bcce18fef py3: automatic migration with 2to3 -f unicode
Mads Kiilerich <mads@kiilerich.com>
parents: 8120
diff changeset
1129 repo_name = '%s/%s' % (group_name, updates['name'])
5946
ffe4d5060d91 api: avoid duplicating group name when updating repo (Issue #37)
Mads Kiilerich <madski@unity3d.com>
parents: 5497
diff changeset
1130 if changing_attr == 'repo_group':
8224
e63bcce18fef py3: automatic migration with 2to3 -f unicode
Mads Kiilerich <mads@kiilerich.com>
parents: 8120
diff changeset
1131 repo_name = '/'.join([updates['group'], repo_name.rsplit('/', 1)[-1]])
5946
ffe4d5060d91 api: avoid duplicating group name when updating repo (Issue #37)
Mads Kiilerich <madski@unity3d.com>
parents: 5497
diff changeset
1132 try:
7312
fa3365c94064 repos: introduce low level check of clone URIs to prevent direct file system access to local repos
Mads Kiilerich <mads@kiilerich.com>
parents: 7310
diff changeset
1133 if changing_attr == 'clone_uri' and updates['clone_uri']:
8224
e63bcce18fef py3: automatic migration with 2to3 -f unicode
Mads Kiilerich <mads@kiilerich.com>
parents: 8120
diff changeset
1134 expected = 'failed to update repo `%s`' % repo_name
7312
fa3365c94064 repos: introduce low level check of clone URIs to prevent direct file system access to local repos
Mads Kiilerich <mads@kiilerich.com>
parents: 7310
diff changeset
1135 self._compare_error(id_, expected, given=response.body)
fa3365c94064 repos: introduce low level check of clone URIs to prevent direct file system access to local repos
Mads Kiilerich <mads@kiilerich.com>
parents: 7310
diff changeset
1136 else:
fa3365c94064 repos: introduce low level check of clone URIs to prevent direct file system access to local repos
Mads Kiilerich <mads@kiilerich.com>
parents: 7310
diff changeset
1137 expected = {
fa3365c94064 repos: introduce low level check of clone URIs to prevent direct file system access to local repos
Mads Kiilerich <mads@kiilerich.com>
parents: 7310
diff changeset
1138 'msg': 'updated repo ID:%s %s' % (repo.repo_id, repo_name),
fa3365c94064 repos: introduce low level check of clone URIs to prevent direct file system access to local repos
Mads Kiilerich <mads@kiilerich.com>
parents: 7310
diff changeset
1139 'repository': repo.get_api_data()
fa3365c94064 repos: introduce low level check of clone URIs to prevent direct file system access to local repos
Mads Kiilerich <mads@kiilerich.com>
parents: 7310
diff changeset
1140 }
fa3365c94064 repos: introduce low level check of clone URIs to prevent direct file system access to local repos
Mads Kiilerich <mads@kiilerich.com>
parents: 7310
diff changeset
1141 self._compare_ok(id_, expected, given=response.body)
5946
ffe4d5060d91 api: avoid duplicating group name when updating repo (Issue #37)
Mads Kiilerich <madski@unity3d.com>
parents: 5497
diff changeset
1142 finally:
ffe4d5060d91 api: avoid duplicating group name when updating repo (Issue #37)
Mads Kiilerich <madski@unity3d.com>
parents: 5497
diff changeset
1143 fixture.destroy_repo(repo_name)
ffe4d5060d91 api: avoid duplicating group name when updating repo (Issue #37)
Mads Kiilerich <madski@unity3d.com>
parents: 5497
diff changeset
1144 if changing_attr == 'repo_group':
ffe4d5060d91 api: avoid duplicating group name when updating repo (Issue #37)
Mads Kiilerich <madski@unity3d.com>
parents: 5497
diff changeset
1145 fixture.destroy_repo_group(updates['group'])
ffe4d5060d91 api: avoid duplicating group name when updating repo (Issue #37)
Mads Kiilerich <madski@unity3d.com>
parents: 5497
diff changeset
1146 fixture.destroy_repo_group(group_name)
ffe4d5060d91 api: avoid duplicating group name when updating repo (Issue #37)
Mads Kiilerich <madski@unity3d.com>
parents: 5497
diff changeset
1147
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1148 def test_api_update_repo_repo_group_does_not_exist(self):
8224
e63bcce18fef py3: automatic migration with 2to3 -f unicode
Mads Kiilerich <mads@kiilerich.com>
parents: 8120
diff changeset
1149 repo_name = 'admin_owned'
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1150 fixture.create_repo(repo_name)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1151 updates = {'group': 'test_group_for_update'}
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1152 id_, params = _build_data(self.apikey, 'update_repo',
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1153 repoid=repo_name, **updates)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1154 response = api_call(self, params)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1155 try:
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1156 expected = 'repository group `%s` does not exist' % updates['group']
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1157 self._compare_error(id_, expected, given=response.body)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1158 finally:
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1159 fixture.destroy_repo(repo_name)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1160
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1161 def test_api_update_repo_regular_user_not_allowed(self):
8224
e63bcce18fef py3: automatic migration with 2to3 -f unicode
Mads Kiilerich <mads@kiilerich.com>
parents: 8120
diff changeset
1162 repo_name = 'admin_owned'
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1163 fixture.create_repo(repo_name)
6212
8be0633ff852 api: fail when given unknown arguments
Mads Kiilerich <madski@unity3d.com>
parents: 6117
diff changeset
1164 updates = {'description': 'something else'}
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1165 id_, params = _build_data(self.apikey_regular, 'update_repo',
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1166 repoid=repo_name, **updates)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1167 response = api_call(self, params)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1168 try:
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1169 expected = 'repository `%s` does not exist' % repo_name
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1170 self._compare_error(id_, expected, given=response.body)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1171 finally:
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1172 fixture.destroy_repo(repo_name)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1173
8585
1de3e5d104bf tests: consistent use of more helpful raise_exception "fixture"
Mads Kiilerich <mads@kiilerich.com>
parents: 8379
diff changeset
1174 @mock.patch.object(RepoModel, 'update', raise_exception)
4792
923037eb67d4 spelling: fix various typos
Thomas De Schampheleire <thomas.de_schampheleire@alcatel-lucent.com>
parents: 4769
diff changeset
1175 def test_api_update_repo_exception_occurred(self):
8224
e63bcce18fef py3: automatic migration with 2to3 -f unicode
Mads Kiilerich <mads@kiilerich.com>
parents: 8120
diff changeset
1176 repo_name = 'api_update_me'
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1177 fixture.create_repo(repo_name, repo_type=self.REPO_TYPE)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1178 id_, params = _build_data(self.apikey, 'update_repo',
8109
e527cc2ce8dc cleanup: get rid of most "import *"
Mads Kiilerich <mads@kiilerich.com>
parents: 8078
diff changeset
1179 repoid=repo_name, owner=base.TEST_USER_ADMIN_LOGIN,)
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1180 response = api_call(self, params)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1181 try:
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1182 expected = 'failed to update repo `%s`' % repo_name
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1183 self._compare_error(id_, expected, given=response.body)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1184 finally:
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1185 fixture.destroy_repo(repo_name)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1186
8514
7f3515800bd8 api: fix update_repo check for permission to create top level repos
Mads Kiilerich <mads@kiilerich.com>
parents: 8513
diff changeset
1187 def test_api_update_repo_regular_user_change_top_level_repo_name(self):
8224
e63bcce18fef py3: automatic migration with 2to3 -f unicode
Mads Kiilerich <mads@kiilerich.com>
parents: 8120
diff changeset
1188 repo_name = 'admin_owned'
e63bcce18fef py3: automatic migration with 2to3 -f unicode
Mads Kiilerich <mads@kiilerich.com>
parents: 8120
diff changeset
1189 new_repo_name = 'new_repo_name'
5222
6620542597d3 api: check repo create permissions for update_repo and fork_repo as for create-repo
Mads Kiilerich <madski@unity3d.com>
parents: 4792
diff changeset
1190 fixture.create_repo(repo_name, repo_type=self.REPO_TYPE)
6620542597d3 api: check repo create permissions for update_repo and fork_repo as for create-repo
Mads Kiilerich <madski@unity3d.com>
parents: 4792
diff changeset
1191 RepoModel().grant_user_permission(repo=repo_name,
6620542597d3 api: check repo create permissions for update_repo and fork_repo as for create-repo
Mads Kiilerich <madski@unity3d.com>
parents: 4792
diff changeset
1192 user=self.TEST_USER_LOGIN,
6620542597d3 api: check repo create permissions for update_repo and fork_repo as for create-repo
Mads Kiilerich <madski@unity3d.com>
parents: 4792
diff changeset
1193 perm='repository.admin')
6620542597d3 api: check repo create permissions for update_repo and fork_repo as for create-repo
Mads Kiilerich <madski@unity3d.com>
parents: 4792
diff changeset
1194 UserModel().revoke_perm('default', 'hg.create.repository')
6620542597d3 api: check repo create permissions for update_repo and fork_repo as for create-repo
Mads Kiilerich <madski@unity3d.com>
parents: 4792
diff changeset
1195 UserModel().grant_perm('default', 'hg.create.none')
6620542597d3 api: check repo create permissions for update_repo and fork_repo as for create-repo
Mads Kiilerich <madski@unity3d.com>
parents: 4792
diff changeset
1196 updates = {'name': new_repo_name}
6620542597d3 api: check repo create permissions for update_repo and fork_repo as for create-repo
Mads Kiilerich <madski@unity3d.com>
parents: 4792
diff changeset
1197 id_, params = _build_data(self.apikey_regular, 'update_repo',
6620542597d3 api: check repo create permissions for update_repo and fork_repo as for create-repo
Mads Kiilerich <madski@unity3d.com>
parents: 4792
diff changeset
1198 repoid=repo_name, **updates)
6620542597d3 api: check repo create permissions for update_repo and fork_repo as for create-repo
Mads Kiilerich <madski@unity3d.com>
parents: 4792
diff changeset
1199 response = api_call(self, params)
6620542597d3 api: check repo create permissions for update_repo and fork_repo as for create-repo
Mads Kiilerich <madski@unity3d.com>
parents: 4792
diff changeset
1200 try:
8514
7f3515800bd8 api: fix update_repo check for permission to create top level repos
Mads Kiilerich <mads@kiilerich.com>
parents: 8513
diff changeset
1201 expected = 'no permission to create (or move) top level repositories'
5222
6620542597d3 api: check repo create permissions for update_repo and fork_repo as for create-repo
Mads Kiilerich <madski@unity3d.com>
parents: 4792
diff changeset
1202 self._compare_error(id_, expected, given=response.body)
6620542597d3 api: check repo create permissions for update_repo and fork_repo as for create-repo
Mads Kiilerich <madski@unity3d.com>
parents: 4792
diff changeset
1203 finally:
6620542597d3 api: check repo create permissions for update_repo and fork_repo as for create-repo
Mads Kiilerich <madski@unity3d.com>
parents: 4792
diff changeset
1204 fixture.destroy_repo(repo_name)
6620542597d3 api: check repo create permissions for update_repo and fork_repo as for create-repo
Mads Kiilerich <madski@unity3d.com>
parents: 4792
diff changeset
1205 fixture.destroy_repo(new_repo_name)
6620542597d3 api: check repo create permissions for update_repo and fork_repo as for create-repo
Mads Kiilerich <madski@unity3d.com>
parents: 4792
diff changeset
1206
6620542597d3 api: check repo create permissions for update_repo and fork_repo as for create-repo
Mads Kiilerich <madski@unity3d.com>
parents: 4792
diff changeset
1207 def test_api_update_repo_regular_user_change_repo_name_allowed(self):
8224
e63bcce18fef py3: automatic migration with 2to3 -f unicode
Mads Kiilerich <mads@kiilerich.com>
parents: 8120
diff changeset
1208 repo_name = 'admin_owned'
e63bcce18fef py3: automatic migration with 2to3 -f unicode
Mads Kiilerich <mads@kiilerich.com>
parents: 8120
diff changeset
1209 new_repo_name = 'new_repo_name'
5222
6620542597d3 api: check repo create permissions for update_repo and fork_repo as for create-repo
Mads Kiilerich <madski@unity3d.com>
parents: 4792
diff changeset
1210 repo = fixture.create_repo(repo_name, repo_type=self.REPO_TYPE)
6620542597d3 api: check repo create permissions for update_repo and fork_repo as for create-repo
Mads Kiilerich <madski@unity3d.com>
parents: 4792
diff changeset
1211 RepoModel().grant_user_permission(repo=repo_name,
6620542597d3 api: check repo create permissions for update_repo and fork_repo as for create-repo
Mads Kiilerich <madski@unity3d.com>
parents: 4792
diff changeset
1212 user=self.TEST_USER_LOGIN,
6620542597d3 api: check repo create permissions for update_repo and fork_repo as for create-repo
Mads Kiilerich <madski@unity3d.com>
parents: 4792
diff changeset
1213 perm='repository.admin')
6620542597d3 api: check repo create permissions for update_repo and fork_repo as for create-repo
Mads Kiilerich <madski@unity3d.com>
parents: 4792
diff changeset
1214 UserModel().revoke_perm('default', 'hg.create.none')
6620542597d3 api: check repo create permissions for update_repo and fork_repo as for create-repo
Mads Kiilerich <madski@unity3d.com>
parents: 4792
diff changeset
1215 UserModel().grant_perm('default', 'hg.create.repository')
6620542597d3 api: check repo create permissions for update_repo and fork_repo as for create-repo
Mads Kiilerich <madski@unity3d.com>
parents: 4792
diff changeset
1216 updates = {'name': new_repo_name}
6620542597d3 api: check repo create permissions for update_repo and fork_repo as for create-repo
Mads Kiilerich <madski@unity3d.com>
parents: 4792
diff changeset
1217 id_, params = _build_data(self.apikey_regular, 'update_repo',
6620542597d3 api: check repo create permissions for update_repo and fork_repo as for create-repo
Mads Kiilerich <madski@unity3d.com>
parents: 4792
diff changeset
1218 repoid=repo_name, **updates)
6620542597d3 api: check repo create permissions for update_repo and fork_repo as for create-repo
Mads Kiilerich <madski@unity3d.com>
parents: 4792
diff changeset
1219 response = api_call(self, params)
6620542597d3 api: check repo create permissions for update_repo and fork_repo as for create-repo
Mads Kiilerich <madski@unity3d.com>
parents: 4792
diff changeset
1220 try:
6620542597d3 api: check repo create permissions for update_repo and fork_repo as for create-repo
Mads Kiilerich <madski@unity3d.com>
parents: 4792
diff changeset
1221 expected = {
6620542597d3 api: check repo create permissions for update_repo and fork_repo as for create-repo
Mads Kiilerich <madski@unity3d.com>
parents: 4792
diff changeset
1222 'msg': 'updated repo ID:%s %s' % (repo.repo_id, new_repo_name),
6620542597d3 api: check repo create permissions for update_repo and fork_repo as for create-repo
Mads Kiilerich <madski@unity3d.com>
parents: 4792
diff changeset
1223 'repository': repo.get_api_data()
6620542597d3 api: check repo create permissions for update_repo and fork_repo as for create-repo
Mads Kiilerich <madski@unity3d.com>
parents: 4792
diff changeset
1224 }
6620542597d3 api: check repo create permissions for update_repo and fork_repo as for create-repo
Mads Kiilerich <madski@unity3d.com>
parents: 4792
diff changeset
1225 self._compare_ok(id_, expected, given=response.body)
6620542597d3 api: check repo create permissions for update_repo and fork_repo as for create-repo
Mads Kiilerich <madski@unity3d.com>
parents: 4792
diff changeset
1226 finally:
6620542597d3 api: check repo create permissions for update_repo and fork_repo as for create-repo
Mads Kiilerich <madski@unity3d.com>
parents: 4792
diff changeset
1227 fixture.destroy_repo(repo_name)
6620542597d3 api: check repo create permissions for update_repo and fork_repo as for create-repo
Mads Kiilerich <madski@unity3d.com>
parents: 4792
diff changeset
1228 fixture.destroy_repo(new_repo_name)
6620542597d3 api: check repo create permissions for update_repo and fork_repo as for create-repo
Mads Kiilerich <madski@unity3d.com>
parents: 4792
diff changeset
1229
5223
0b7b52bfaf5d api: make update_repo check permissions to check owner like create_repo does
Mads Kiilerich <madski@unity3d.com>
parents: 5222
diff changeset
1230 def test_api_update_repo_regular_user_change_owner(self):
8224
e63bcce18fef py3: automatic migration with 2to3 -f unicode
Mads Kiilerich <mads@kiilerich.com>
parents: 8120
diff changeset
1231 repo_name = 'admin_owned'
5223
0b7b52bfaf5d api: make update_repo check permissions to check owner like create_repo does
Mads Kiilerich <madski@unity3d.com>
parents: 5222
diff changeset
1232 fixture.create_repo(repo_name, repo_type=self.REPO_TYPE)
0b7b52bfaf5d api: make update_repo check permissions to check owner like create_repo does
Mads Kiilerich <madski@unity3d.com>
parents: 5222
diff changeset
1233 RepoModel().grant_user_permission(repo=repo_name,
0b7b52bfaf5d api: make update_repo check permissions to check owner like create_repo does
Mads Kiilerich <madski@unity3d.com>
parents: 5222
diff changeset
1234 user=self.TEST_USER_LOGIN,
0b7b52bfaf5d api: make update_repo check permissions to check owner like create_repo does
Mads Kiilerich <madski@unity3d.com>
parents: 5222
diff changeset
1235 perm='repository.admin')
8109
e527cc2ce8dc cleanup: get rid of most "import *"
Mads Kiilerich <mads@kiilerich.com>
parents: 8078
diff changeset
1236 updates = {'owner': base.TEST_USER_ADMIN_LOGIN}
5223
0b7b52bfaf5d api: make update_repo check permissions to check owner like create_repo does
Mads Kiilerich <madski@unity3d.com>
parents: 5222
diff changeset
1237 id_, params = _build_data(self.apikey_regular, 'update_repo',
0b7b52bfaf5d api: make update_repo check permissions to check owner like create_repo does
Mads Kiilerich <madski@unity3d.com>
parents: 5222
diff changeset
1238 repoid=repo_name, **updates)
0b7b52bfaf5d api: make update_repo check permissions to check owner like create_repo does
Mads Kiilerich <madski@unity3d.com>
parents: 5222
diff changeset
1239 response = api_call(self, params)
0b7b52bfaf5d api: make update_repo check permissions to check owner like create_repo does
Mads Kiilerich <madski@unity3d.com>
parents: 5222
diff changeset
1240 try:
0b7b52bfaf5d api: make update_repo check permissions to check owner like create_repo does
Mads Kiilerich <madski@unity3d.com>
parents: 5222
diff changeset
1241 expected = 'Only Kallithea admin can specify `owner` param'
0b7b52bfaf5d api: make update_repo check permissions to check owner like create_repo does
Mads Kiilerich <madski@unity3d.com>
parents: 5222
diff changeset
1242 self._compare_error(id_, expected, given=response.body)
0b7b52bfaf5d api: make update_repo check permissions to check owner like create_repo does
Mads Kiilerich <madski@unity3d.com>
parents: 5222
diff changeset
1243 finally:
0b7b52bfaf5d api: make update_repo check permissions to check owner like create_repo does
Mads Kiilerich <madski@unity3d.com>
parents: 5222
diff changeset
1244 fixture.destroy_repo(repo_name)
0b7b52bfaf5d api: make update_repo check permissions to check owner like create_repo does
Mads Kiilerich <madski@unity3d.com>
parents: 5222
diff changeset
1245
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1246 def test_api_delete_repo(self):
8224
e63bcce18fef py3: automatic migration with 2to3 -f unicode
Mads Kiilerich <mads@kiilerich.com>
parents: 8120
diff changeset
1247 repo_name = 'api_delete_me'
3647
8a86836fad64 more usage of fixture tools
Marcin Kuzminski <marcin@python-works.com>
parents: 3502
diff changeset
1248 fixture.create_repo(repo_name, repo_type=self.REPO_TYPE)
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1249
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1250 id_, params = _build_data(self.apikey, 'delete_repo',
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1251 repoid=repo_name, )
2738
Marcin Kuzminski <marcin@python-works.com>
parents: 2737
diff changeset
1252 response = api_call(self, params)
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1253
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1254 ret = {
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1255 'msg': 'Deleted repository `%s`' % repo_name,
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1256 'success': True
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1257 }
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1258 try:
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1259 expected = ret
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1260 self._compare_ok(id_, expected, given=response.body)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1261 finally:
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1262 fixture.destroy_repo(repo_name)
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1263
3163
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
1264 def test_api_delete_repo_by_non_admin(self):
8224
e63bcce18fef py3: automatic migration with 2to3 -f unicode
Mads Kiilerich <mads@kiilerich.com>
parents: 8120
diff changeset
1265 repo_name = 'api_delete_me'
3647
8a86836fad64 more usage of fixture tools
Marcin Kuzminski <marcin@python-works.com>
parents: 3502
diff changeset
1266 fixture.create_repo(repo_name, repo_type=self.REPO_TYPE,
8a86836fad64 more usage of fixture tools
Marcin Kuzminski <marcin@python-works.com>
parents: 3502
diff changeset
1267 cur_user=self.TEST_USER_LOGIN)
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1268 id_, params = _build_data(self.apikey_regular, 'delete_repo',
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1269 repoid=repo_name, )
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1270 response = api_call(self, params)
3163
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
1271
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1272 ret = {
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1273 'msg': 'Deleted repository `%s`' % repo_name,
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1274 'success': True
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1275 }
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1276 try:
3163
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
1277 expected = ret
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
1278 self._compare_ok(id_, expected, given=response.body)
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
1279 finally:
3647
8a86836fad64 more usage of fixture tools
Marcin Kuzminski <marcin@python-works.com>
parents: 3502
diff changeset
1280 fixture.destroy_repo(repo_name)
3163
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
1281
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
1282 def test_api_delete_repo_by_non_admin_no_permission(self):
8224
e63bcce18fef py3: automatic migration with 2to3 -f unicode
Mads Kiilerich <mads@kiilerich.com>
parents: 8120
diff changeset
1283 repo_name = 'api_delete_me'
3647
8a86836fad64 more usage of fixture tools
Marcin Kuzminski <marcin@python-works.com>
parents: 3502
diff changeset
1284 fixture.create_repo(repo_name, repo_type=self.REPO_TYPE)
3163
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
1285 try:
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
1286 id_, params = _build_data(self.apikey_regular, 'delete_repo',
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1287 repoid=repo_name, )
3163
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
1288 response = api_call(self, params)
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
1289 expected = 'repository `%s` does not exist' % (repo_name)
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
1290 self._compare_error(id_, expected, given=response.body)
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
1291 finally:
3647
8a86836fad64 more usage of fixture tools
Marcin Kuzminski <marcin@python-works.com>
parents: 3502
diff changeset
1292 fixture.destroy_repo(repo_name)
3163
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
1293
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1294 def test_api_delete_repo_exception_occurred(self):
8224
e63bcce18fef py3: automatic migration with 2to3 -f unicode
Mads Kiilerich <mads@kiilerich.com>
parents: 8120
diff changeset
1295 repo_name = 'api_delete_me'
3647
8a86836fad64 more usage of fixture tools
Marcin Kuzminski <marcin@python-works.com>
parents: 3502
diff changeset
1296 fixture.create_repo(repo_name, repo_type=self.REPO_TYPE)
2653
8be70a4d72c7 Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents: 2529
diff changeset
1297 try:
8585
1de3e5d104bf tests: consistent use of more helpful raise_exception "fixture"
Mads Kiilerich <mads@kiilerich.com>
parents: 8379
diff changeset
1298 with mock.patch.object(RepoModel, 'delete', raise_exception):
2653
8be70a4d72c7 Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents: 2529
diff changeset
1299 id_, params = _build_data(self.apikey, 'delete_repo',
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1300 repoid=repo_name, )
2738
Marcin Kuzminski <marcin@python-works.com>
parents: 2737
diff changeset
1301 response = api_call(self, params)
2653
8be70a4d72c7 Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents: 2529
diff changeset
1302
8be70a4d72c7 Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents: 2529
diff changeset
1303 expected = 'failed to delete repository `%s`' % repo_name
8be70a4d72c7 Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents: 2529
diff changeset
1304 self._compare_error(id_, expected, given=response.body)
8be70a4d72c7 Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents: 2529
diff changeset
1305 finally:
3647
8a86836fad64 more usage of fixture tools
Marcin Kuzminski <marcin@python-works.com>
parents: 3502
diff changeset
1306 fixture.destroy_repo(repo_name)
2653
8be70a4d72c7 Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents: 2529
diff changeset
1307
8be70a4d72c7 Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents: 2529
diff changeset
1308 def test_api_fork_repo(self):
8224
e63bcce18fef py3: automatic migration with 2to3 -f unicode
Mads Kiilerich <mads@kiilerich.com>
parents: 8120
diff changeset
1309 fork_name = 'api-repo-fork'
2653
8be70a4d72c7 Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents: 2529
diff changeset
1310 id_, params = _build_data(self.apikey, 'fork_repo',
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1311 repoid=self.REPO,
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1312 fork_name=fork_name,
8109
e527cc2ce8dc cleanup: get rid of most "import *"
Mads Kiilerich <mads@kiilerich.com>
parents: 8078
diff changeset
1313 owner=base.TEST_USER_ADMIN_LOGIN,
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1314 )
2738
Marcin Kuzminski <marcin@python-works.com>
parents: 2737
diff changeset
1315 response = api_call(self, params)
2653
8be70a4d72c7 Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents: 2529
diff changeset
1316
8be70a4d72c7 Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents: 2529
diff changeset
1317 ret = {
8be70a4d72c7 Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents: 2529
diff changeset
1318 'msg': 'Created fork of `%s` as `%s`' % (self.REPO,
8be70a4d72c7 Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents: 2529
diff changeset
1319 fork_name),
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1320 'success': True,
2653
8be70a4d72c7 Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents: 2529
diff changeset
1321 }
8be70a4d72c7 Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents: 2529
diff changeset
1322 expected = ret
8be70a4d72c7 Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents: 2529
diff changeset
1323 self._compare_ok(id_, expected, given=response.body)
3647
8a86836fad64 more usage of fixture tools
Marcin Kuzminski <marcin@python-works.com>
parents: 3502
diff changeset
1324 fixture.destroy_repo(fork_name)
2653
8be70a4d72c7 Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents: 2529
diff changeset
1325
8109
e527cc2ce8dc cleanup: get rid of most "import *"
Mads Kiilerich <mads@kiilerich.com>
parents: 8078
diff changeset
1326 @base.parametrize('fork_name', [
8224
e63bcce18fef py3: automatic migration with 2to3 -f unicode
Mads Kiilerich <mads@kiilerich.com>
parents: 8120
diff changeset
1327 'api-repo-fork',
e63bcce18fef py3: automatic migration with 2to3 -f unicode
Mads Kiilerich <mads@kiilerich.com>
parents: 8120
diff changeset
1328 '%s/api-repo-fork' % TEST_REPO_GROUP,
5947
6754597990cb api: fix forking of repos in repo groups (Issue #210)
Mads Kiilerich <madski@unity3d.com>
parents: 5946
diff changeset
1329 ])
6754597990cb api: fix forking of repos in repo groups (Issue #210)
Mads Kiilerich <madski@unity3d.com>
parents: 5946
diff changeset
1330 def test_api_fork_repo_non_admin(self, fork_name):
8513
7643d8ecbb20 api: fix repo group permission check for repo creation
Mads Kiilerich <mads@kiilerich.com>
parents: 8379
diff changeset
1331 RepoGroupModel().grant_user_permission(TEST_REPO_GROUP,
7643d8ecbb20 api: fix repo group permission check for repo creation
Mads Kiilerich <mads@kiilerich.com>
parents: 8379
diff changeset
1332 self.TEST_USER_LOGIN,
7643d8ecbb20 api: fix repo group permission check for repo creation
Mads Kiilerich <mads@kiilerich.com>
parents: 8379
diff changeset
1333 'group.write')
3163
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
1334 id_, params = _build_data(self.apikey_regular, 'fork_repo',
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1335 repoid=self.REPO,
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1336 fork_name=fork_name,
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1337 )
3163
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
1338 response = api_call(self, params)
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
1339
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
1340 ret = {
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
1341 'msg': 'Created fork of `%s` as `%s`' % (self.REPO,
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
1342 fork_name),
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1343 'success': True,
3163
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
1344 }
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
1345 expected = ret
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
1346 self._compare_ok(id_, expected, given=response.body)
3647
8a86836fad64 more usage of fixture tools
Marcin Kuzminski <marcin@python-works.com>
parents: 3502
diff changeset
1347 fixture.destroy_repo(fork_name)
3163
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
1348
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
1349 def test_api_fork_repo_non_admin_specify_owner(self):
8224
e63bcce18fef py3: automatic migration with 2to3 -f unicode
Mads Kiilerich <mads@kiilerich.com>
parents: 8120
diff changeset
1350 fork_name = 'api-repo-fork'
3163
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
1351 id_, params = _build_data(self.apikey_regular, 'fork_repo',
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1352 repoid=self.REPO,
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1353 fork_name=fork_name,
8109
e527cc2ce8dc cleanup: get rid of most "import *"
Mads Kiilerich <mads@kiilerich.com>
parents: 8078
diff changeset
1354 owner=base.TEST_USER_ADMIN_LOGIN,
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1355 )
3163
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
1356 response = api_call(self, params)
4212
24c0d584ba86 General renaming to Kallithea
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 4209
diff changeset
1357 expected = 'Only Kallithea admin can specify `owner` param'
3163
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
1358 self._compare_error(id_, expected, given=response.body)
3647
8a86836fad64 more usage of fixture tools
Marcin Kuzminski <marcin@python-works.com>
parents: 3502
diff changeset
1359 fixture.destroy_repo(fork_name)
3163
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
1360
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
1361 def test_api_fork_repo_non_admin_no_permission_to_fork(self):
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
1362 RepoModel().grant_user_permission(repo=self.REPO,
8687
5e46f73f0d1c model: always import the whole db module - drop "from" imports
Mads Kiilerich <mads@kiilerich.com>
parents: 8686
diff changeset
1363 user=db.User.DEFAULT_USER_NAME,
3163
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
1364 perm='repository.none')
8867
3119d680a8d5 tests: address pedantic pytype 2021.4.1 warning
Mads Kiilerich <mads@kiilerich.com>
parents: 8851
diff changeset
1365 fork_name = 'api-repo-fork'
7687
b2634df81a11 auth: explicit user permission should not blindly overrule permissions through user groups
Mads Kiilerich <mads@kiilerich.com>
parents: 7684
diff changeset
1366 try:
b2634df81a11 auth: explicit user permission should not blindly overrule permissions through user groups
Mads Kiilerich <mads@kiilerich.com>
parents: 7684
diff changeset
1367 id_, params = _build_data(self.apikey_regular, 'fork_repo',
b2634df81a11 auth: explicit user permission should not blindly overrule permissions through user groups
Mads Kiilerich <mads@kiilerich.com>
parents: 7684
diff changeset
1368 repoid=self.REPO,
b2634df81a11 auth: explicit user permission should not blindly overrule permissions through user groups
Mads Kiilerich <mads@kiilerich.com>
parents: 7684
diff changeset
1369 fork_name=fork_name,
b2634df81a11 auth: explicit user permission should not blindly overrule permissions through user groups
Mads Kiilerich <mads@kiilerich.com>
parents: 7684
diff changeset
1370 )
b2634df81a11 auth: explicit user permission should not blindly overrule permissions through user groups
Mads Kiilerich <mads@kiilerich.com>
parents: 7684
diff changeset
1371 response = api_call(self, params)
b2634df81a11 auth: explicit user permission should not blindly overrule permissions through user groups
Mads Kiilerich <mads@kiilerich.com>
parents: 7684
diff changeset
1372 expected = 'repository `%s` does not exist' % (self.REPO)
b2634df81a11 auth: explicit user permission should not blindly overrule permissions through user groups
Mads Kiilerich <mads@kiilerich.com>
parents: 7684
diff changeset
1373 self._compare_error(id_, expected, given=response.body)
b2634df81a11 auth: explicit user permission should not blindly overrule permissions through user groups
Mads Kiilerich <mads@kiilerich.com>
parents: 7684
diff changeset
1374 finally:
b2634df81a11 auth: explicit user permission should not blindly overrule permissions through user groups
Mads Kiilerich <mads@kiilerich.com>
parents: 7684
diff changeset
1375 RepoModel().grant_user_permission(repo=self.REPO,
8687
5e46f73f0d1c model: always import the whole db module - drop "from" imports
Mads Kiilerich <mads@kiilerich.com>
parents: 8686
diff changeset
1376 user=db.User.DEFAULT_USER_NAME,
7687
b2634df81a11 auth: explicit user permission should not blindly overrule permissions through user groups
Mads Kiilerich <mads@kiilerich.com>
parents: 7684
diff changeset
1377 perm='repository.read')
b2634df81a11 auth: explicit user permission should not blindly overrule permissions through user groups
Mads Kiilerich <mads@kiilerich.com>
parents: 7684
diff changeset
1378 fixture.destroy_repo(fork_name)
3163
28571535dd61 API methods create_repo, fork_repo, delete_repo, get_repo, get_repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3161
diff changeset
1379
8109
e527cc2ce8dc cleanup: get rid of most "import *"
Mads Kiilerich <mads@kiilerich.com>
parents: 8078
diff changeset
1380 @base.parametrize('name,perm', [
5907
526724b8b6ce pytest migration: api: convert to TestControllerPytest
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 5906
diff changeset
1381 ('read', 'repository.read'),
526724b8b6ce pytest migration: api: convert to TestControllerPytest
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 5906
diff changeset
1382 ('write', 'repository.write'),
526724b8b6ce pytest migration: api: convert to TestControllerPytest
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 5906
diff changeset
1383 ('admin', 'repository.admin'),
526724b8b6ce pytest migration: api: convert to TestControllerPytest
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 5906
diff changeset
1384 ])
5222
6620542597d3 api: check repo create permissions for update_repo and fork_repo as for create-repo
Mads Kiilerich <madski@unity3d.com>
parents: 4792
diff changeset
1385 def test_api_fork_repo_non_admin_no_create_repo_permission(self, name, perm):
8224
e63bcce18fef py3: automatic migration with 2to3 -f unicode
Mads Kiilerich <mads@kiilerich.com>
parents: 8120
diff changeset
1386 fork_name = 'api-repo-fork'
5222
6620542597d3 api: check repo create permissions for update_repo and fork_repo as for create-repo
Mads Kiilerich <madski@unity3d.com>
parents: 4792
diff changeset
1387 # regardless of base repository permission, forking is disallowed
6620542597d3 api: check repo create permissions for update_repo and fork_repo as for create-repo
Mads Kiilerich <madski@unity3d.com>
parents: 4792
diff changeset
1388 # when repository creation is disabled
6620542597d3 api: check repo create permissions for update_repo and fork_repo as for create-repo
Mads Kiilerich <madski@unity3d.com>
parents: 4792
diff changeset
1389 RepoModel().grant_user_permission(repo=self.REPO,
6620542597d3 api: check repo create permissions for update_repo and fork_repo as for create-repo
Mads Kiilerich <madski@unity3d.com>
parents: 4792
diff changeset
1390 user=self.TEST_USER_LOGIN,
6620542597d3 api: check repo create permissions for update_repo and fork_repo as for create-repo
Mads Kiilerich <madski@unity3d.com>
parents: 4792
diff changeset
1391 perm=perm)
6620542597d3 api: check repo create permissions for update_repo and fork_repo as for create-repo
Mads Kiilerich <madski@unity3d.com>
parents: 4792
diff changeset
1392 UserModel().revoke_perm('default', 'hg.create.repository')
6620542597d3 api: check repo create permissions for update_repo and fork_repo as for create-repo
Mads Kiilerich <madski@unity3d.com>
parents: 4792
diff changeset
1393 UserModel().grant_perm('default', 'hg.create.none')
6620542597d3 api: check repo create permissions for update_repo and fork_repo as for create-repo
Mads Kiilerich <madski@unity3d.com>
parents: 4792
diff changeset
1394 id_, params = _build_data(self.apikey_regular, 'fork_repo',
6620542597d3 api: check repo create permissions for update_repo and fork_repo as for create-repo
Mads Kiilerich <madski@unity3d.com>
parents: 4792
diff changeset
1395 repoid=self.REPO,
6620542597d3 api: check repo create permissions for update_repo and fork_repo as for create-repo
Mads Kiilerich <madski@unity3d.com>
parents: 4792
diff changeset
1396 fork_name=fork_name,
6620542597d3 api: check repo create permissions for update_repo and fork_repo as for create-repo
Mads Kiilerich <madski@unity3d.com>
parents: 4792
diff changeset
1397 )
6620542597d3 api: check repo create permissions for update_repo and fork_repo as for create-repo
Mads Kiilerich <madski@unity3d.com>
parents: 4792
diff changeset
1398 response = api_call(self, params)
8513
7643d8ecbb20 api: fix repo group permission check for repo creation
Mads Kiilerich <mads@kiilerich.com>
parents: 8379
diff changeset
1399 expected = 'no permission to create top level repo'
5222
6620542597d3 api: check repo create permissions for update_repo and fork_repo as for create-repo
Mads Kiilerich <madski@unity3d.com>
parents: 4792
diff changeset
1400 self._compare_error(id_, expected, given=response.body)
6620542597d3 api: check repo create permissions for update_repo and fork_repo as for create-repo
Mads Kiilerich <madski@unity3d.com>
parents: 4792
diff changeset
1401 fixture.destroy_repo(fork_name)
6620542597d3 api: check repo create permissions for update_repo and fork_repo as for create-repo
Mads Kiilerich <madski@unity3d.com>
parents: 4792
diff changeset
1402
2653
8be70a4d72c7 Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents: 2529
diff changeset
1403 def test_api_fork_repo_unknown_owner(self):
8224
e63bcce18fef py3: automatic migration with 2to3 -f unicode
Mads Kiilerich <mads@kiilerich.com>
parents: 8120
diff changeset
1404 fork_name = 'api-repo-fork'
2653
8be70a4d72c7 Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents: 2529
diff changeset
1405 owner = 'i-dont-exist'
8be70a4d72c7 Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents: 2529
diff changeset
1406 id_, params = _build_data(self.apikey, 'fork_repo',
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1407 repoid=self.REPO,
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1408 fork_name=fork_name,
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1409 owner=owner,
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1410 )
2738
Marcin Kuzminski <marcin@python-works.com>
parents: 2737
diff changeset
1411 response = api_call(self, params)
2653
8be70a4d72c7 Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents: 2529
diff changeset
1412 expected = 'user `%s` does not exist' % owner
8be70a4d72c7 Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents: 2529
diff changeset
1413 self._compare_error(id_, expected, given=response.body)
8be70a4d72c7 Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents: 2529
diff changeset
1414
8be70a4d72c7 Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents: 2529
diff changeset
1415 def test_api_fork_repo_fork_exists(self):
8224
e63bcce18fef py3: automatic migration with 2to3 -f unicode
Mads Kiilerich <mads@kiilerich.com>
parents: 8120
diff changeset
1416 fork_name = 'api-repo-fork'
3647
8a86836fad64 more usage of fixture tools
Marcin Kuzminski <marcin@python-works.com>
parents: 3502
diff changeset
1417 fixture.create_fork(self.REPO, fork_name)
2653
8be70a4d72c7 Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents: 2529
diff changeset
1418
8be70a4d72c7 Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents: 2529
diff changeset
1419 try:
8224
e63bcce18fef py3: automatic migration with 2to3 -f unicode
Mads Kiilerich <mads@kiilerich.com>
parents: 8120
diff changeset
1420 fork_name = 'api-repo-fork'
2653
8be70a4d72c7 Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents: 2529
diff changeset
1421
8be70a4d72c7 Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents: 2529
diff changeset
1422 id_, params = _build_data(self.apikey, 'fork_repo',
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1423 repoid=self.REPO,
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1424 fork_name=fork_name,
8109
e527cc2ce8dc cleanup: get rid of most "import *"
Mads Kiilerich <mads@kiilerich.com>
parents: 8078
diff changeset
1425 owner=base.TEST_USER_ADMIN_LOGIN,
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1426 )
2738
Marcin Kuzminski <marcin@python-works.com>
parents: 2737
diff changeset
1427 response = api_call(self, params)
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1428
2653
8be70a4d72c7 Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents: 2529
diff changeset
1429 expected = "fork `%s` already exist" % fork_name
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1430 self._compare_error(id_, expected, given=response.body)
2653
8be70a4d72c7 Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents: 2529
diff changeset
1431 finally:
3647
8a86836fad64 more usage of fixture tools
Marcin Kuzminski <marcin@python-works.com>
parents: 3502
diff changeset
1432 fixture.destroy_repo(fork_name)
2653
8be70a4d72c7 Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents: 2529
diff changeset
1433
8be70a4d72c7 Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents: 2529
diff changeset
1434 def test_api_fork_repo_repo_exists(self):
8be70a4d72c7 Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents: 2529
diff changeset
1435 fork_name = self.REPO
8be70a4d72c7 Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents: 2529
diff changeset
1436
8be70a4d72c7 Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents: 2529
diff changeset
1437 id_, params = _build_data(self.apikey, 'fork_repo',
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1438 repoid=self.REPO,
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1439 fork_name=fork_name,
8109
e527cc2ce8dc cleanup: get rid of most "import *"
Mads Kiilerich <mads@kiilerich.com>
parents: 8078
diff changeset
1440 owner=base.TEST_USER_ADMIN_LOGIN,
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1441 )
2738
Marcin Kuzminski <marcin@python-works.com>
parents: 2737
diff changeset
1442 response = api_call(self, params)
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1443
2653
8be70a4d72c7 Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents: 2529
diff changeset
1444 expected = "repo `%s` already exist" % fork_name
8be70a4d72c7 Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents: 2529
diff changeset
1445 self._compare_error(id_, expected, given=response.body)
8be70a4d72c7 Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents: 2529
diff changeset
1446
8585
1de3e5d104bf tests: consistent use of more helpful raise_exception "fixture"
Mads Kiilerich <mads@kiilerich.com>
parents: 8379
diff changeset
1447 @mock.patch.object(RepoModel, 'create_fork', raise_exception)
2653
8be70a4d72c7 Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents: 2529
diff changeset
1448 def test_api_fork_repo_exception_occurred(self):
8224
e63bcce18fef py3: automatic migration with 2to3 -f unicode
Mads Kiilerich <mads@kiilerich.com>
parents: 8120
diff changeset
1449 fork_name = 'api-repo-fork'
2653
8be70a4d72c7 Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents: 2529
diff changeset
1450 id_, params = _build_data(self.apikey, 'fork_repo',
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1451 repoid=self.REPO,
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1452 fork_name=fork_name,
8109
e527cc2ce8dc cleanup: get rid of most "import *"
Mads Kiilerich <mads@kiilerich.com>
parents: 8078
diff changeset
1453 owner=base.TEST_USER_ADMIN_LOGIN,
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1454 )
2738
Marcin Kuzminski <marcin@python-works.com>
parents: 2737
diff changeset
1455 response = api_call(self, params)
2653
8be70a4d72c7 Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents: 2529
diff changeset
1456
8be70a4d72c7 Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents: 2529
diff changeset
1457 expected = 'failed to fork repository `%s` as `%s`' % (self.REPO,
8be70a4d72c7 Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents: 2529
diff changeset
1458 fork_name)
8be70a4d72c7 Implemented #354 added forking option to API
Marcin Kuzminski <marcin@python-works.com>
parents: 2529
diff changeset
1459 self._compare_error(id_, expected, given=response.body)
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1460
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1461 def test_api_get_user_group(self):
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1462 id_, params = _build_data(self.apikey, 'get_user_group',
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1463 usergroupid=TEST_USER_GROUP)
2738
Marcin Kuzminski <marcin@python-works.com>
parents: 2737
diff changeset
1464 response = api_call(self, params)
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1465
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1466 user_group = UserGroupModel().get_group(TEST_USER_GROUP)
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1467 members = []
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1468 for user in user_group.members:
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1469 user = user.user
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1470 members.append(user.get_api_data())
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1471
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1472 ret = user_group.get_api_data()
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1473 ret['members'] = members
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1474 expected = ret
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1475 self._compare_ok(id_, expected, given=response.body)
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1476
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1477 def test_api_get_user_groups(self):
8224
e63bcce18fef py3: automatic migration with 2to3 -f unicode
Mads Kiilerich <mads@kiilerich.com>
parents: 8120
diff changeset
1478 gr_name = 'test_user_group2'
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1479 make_user_group(gr_name)
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1480
5806
f33cc4af706b tests: finally block also needs to be executed if api_call itself fails
domruf <dominikruf@gmail.com>
parents: 5752
diff changeset
1481 try:
f33cc4af706b tests: finally block also needs to be executed if api_call itself fails
domruf <dominikruf@gmail.com>
parents: 5752
diff changeset
1482 id_, params = _build_data(self.apikey, 'get_user_groups', )
f33cc4af706b tests: finally block also needs to be executed if api_call itself fails
domruf <dominikruf@gmail.com>
parents: 5752
diff changeset
1483 response = api_call(self, params)
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1484
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1485 expected = []
8224
e63bcce18fef py3: automatic migration with 2to3 -f unicode
Mads Kiilerich <mads@kiilerich.com>
parents: 8120
diff changeset
1486 for gr_name in [TEST_USER_GROUP, 'test_user_group2']:
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1487 user_group = UserGroupModel().get_group(gr_name)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1488 ret = user_group.get_api_data()
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1489 expected.append(ret)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1490 self._compare_ok(id_, expected, given=response.body)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1491 finally:
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1492 fixture.destroy_user_group(gr_name)
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1493
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1494 def test_api_create_user_group(self):
8224
e63bcce18fef py3: automatic migration with 2to3 -f unicode
Mads Kiilerich <mads@kiilerich.com>
parents: 8120
diff changeset
1495 group_name = 'some_new_group'
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1496 id_, params = _build_data(self.apikey, 'create_user_group',
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1497 group_name=group_name)
2738
Marcin Kuzminski <marcin@python-works.com>
parents: 2737
diff changeset
1498 response = api_call(self, params)
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1499
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1500 ret = {
3415
b8f929bff7e3 fixed tests and missing replacements from 5f1850e4712a
Marcin Kuzminski <marcin@python-works.com>
parents: 3235
diff changeset
1501 'msg': 'created new user group `%s`' % group_name,
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1502 'user_group': jsonify(UserGroupModel() \
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1503 .get_by_name(group_name) \
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1504 .get_api_data())
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1505 }
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1506 expected = ret
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1507 self._compare_ok(id_, expected, given=response.body)
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1508
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1509 fixture.destroy_user_group(group_name)
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1510
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1511 def test_api_get_user_group_that_exist(self):
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1512 id_, params = _build_data(self.apikey, 'create_user_group',
3417
fa6ba6727475 further cleanup of UsersGroup
Mads Kiilerich <madski@unity3d.com>
parents: 3415
diff changeset
1513 group_name=TEST_USER_GROUP)
2738
Marcin Kuzminski <marcin@python-works.com>
parents: 2737
diff changeset
1514 response = api_call(self, params)
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1515
3417
fa6ba6727475 further cleanup of UsersGroup
Mads Kiilerich <madski@unity3d.com>
parents: 3415
diff changeset
1516 expected = "user group `%s` already exist" % TEST_USER_GROUP
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1517 self._compare_error(id_, expected, given=response.body)
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1518
8585
1de3e5d104bf tests: consistent use of more helpful raise_exception "fixture"
Mads Kiilerich <mads@kiilerich.com>
parents: 8379
diff changeset
1519 @mock.patch.object(UserGroupModel, 'create', raise_exception)
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1520 def test_api_get_user_group_exception_occurred(self):
8224
e63bcce18fef py3: automatic migration with 2to3 -f unicode
Mads Kiilerich <mads@kiilerich.com>
parents: 8120
diff changeset
1521 group_name = 'exception_happens'
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1522 id_, params = _build_data(self.apikey, 'create_user_group',
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1523 group_name=group_name)
2738
Marcin Kuzminski <marcin@python-works.com>
parents: 2737
diff changeset
1524 response = api_call(self, params)
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1525
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1526 expected = 'failed to create group `%s`' % group_name
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1527 self._compare_error(id_, expected, given=response.body)
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1528
8109
e527cc2ce8dc cleanup: get rid of most "import *"
Mads Kiilerich <mads@kiilerich.com>
parents: 8078
diff changeset
1529 @base.parametrize('changing_attr,updates', [
8224
e63bcce18fef py3: automatic migration with 2to3 -f unicode
Mads Kiilerich <mads@kiilerich.com>
parents: 8120
diff changeset
1530 ('group_name', {'group_name': 'new_group_name'}),
e63bcce18fef py3: automatic migration with 2to3 -f unicode
Mads Kiilerich <mads@kiilerich.com>
parents: 8120
diff changeset
1531 ('group_name', {'group_name': 'test_group_for_update'}),
8109
e527cc2ce8dc cleanup: get rid of most "import *"
Mads Kiilerich <mads@kiilerich.com>
parents: 8078
diff changeset
1532 ('owner', {'owner': base.TEST_USER_REGULAR_LOGIN}),
5907
526724b8b6ce pytest migration: api: convert to TestControllerPytest
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 5906
diff changeset
1533 ('active', {'active': False}),
526724b8b6ce pytest migration: api: convert to TestControllerPytest
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 5906
diff changeset
1534 ('active', {'active': True}),
526724b8b6ce pytest migration: api: convert to TestControllerPytest
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 5906
diff changeset
1535 ])
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1536 def test_api_update_user_group(self, changing_attr, updates):
8224
e63bcce18fef py3: automatic migration with 2to3 -f unicode
Mads Kiilerich <mads@kiilerich.com>
parents: 8120
diff changeset
1537 gr_name = 'test_group_for_update'
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1538 user_group = fixture.create_user_group(gr_name)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1539 try:
5806
f33cc4af706b tests: finally block also needs to be executed if api_call itself fails
domruf <dominikruf@gmail.com>
parents: 5752
diff changeset
1540 id_, params = _build_data(self.apikey, 'update_user_group',
f33cc4af706b tests: finally block also needs to be executed if api_call itself fails
domruf <dominikruf@gmail.com>
parents: 5752
diff changeset
1541 usergroupid=gr_name, **updates)
f33cc4af706b tests: finally block also needs to be executed if api_call itself fails
domruf <dominikruf@gmail.com>
parents: 5752
diff changeset
1542 response = api_call(self, params)
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1543 expected = {
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1544 'msg': 'updated user group ID:%s %s' % (user_group.users_group_id,
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1545 user_group.users_group_name),
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1546 'user_group': user_group.get_api_data()
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1547 }
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1548 self._compare_ok(id_, expected, given=response.body)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1549 finally:
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1550 if changing_attr == 'group_name':
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1551 # switch to updated name for proper cleanup
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1552 gr_name = updates['group_name']
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1553 fixture.destroy_user_group(gr_name)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1554
8585
1de3e5d104bf tests: consistent use of more helpful raise_exception "fixture"
Mads Kiilerich <mads@kiilerich.com>
parents: 8379
diff changeset
1555 @mock.patch.object(UserGroupModel, 'update', raise_exception)
4792
923037eb67d4 spelling: fix various typos
Thomas De Schampheleire <thomas.de_schampheleire@alcatel-lucent.com>
parents: 4769
diff changeset
1556 def test_api_update_user_group_exception_occurred(self):
8224
e63bcce18fef py3: automatic migration with 2to3 -f unicode
Mads Kiilerich <mads@kiilerich.com>
parents: 8120
diff changeset
1557 gr_name = 'test_group'
3714
7e3d89d9d3a2 - Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents: 3647
diff changeset
1558 fixture.create_user_group(gr_name)
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1559 try:
5806
f33cc4af706b tests: finally block also needs to be executed if api_call itself fails
domruf <dominikruf@gmail.com>
parents: 5752
diff changeset
1560 id_, params = _build_data(self.apikey, 'update_user_group',
f33cc4af706b tests: finally block also needs to be executed if api_call itself fails
domruf <dominikruf@gmail.com>
parents: 5752
diff changeset
1561 usergroupid=gr_name)
f33cc4af706b tests: finally block also needs to be executed if api_call itself fails
domruf <dominikruf@gmail.com>
parents: 5752
diff changeset
1562 response = api_call(self, params)
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1563 expected = 'failed to update user group `%s`' % gr_name
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1564 self._compare_error(id_, expected, given=response.body)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1565 finally:
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1566 fixture.destroy_user_group(gr_name)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1567
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1568 def test_api_add_user_to_user_group(self):
8224
e63bcce18fef py3: automatic migration with 2to3 -f unicode
Mads Kiilerich <mads@kiilerich.com>
parents: 8120
diff changeset
1569 gr_name = 'test_group'
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1570 fixture.create_user_group(gr_name)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1571 try:
5806
f33cc4af706b tests: finally block also needs to be executed if api_call itself fails
domruf <dominikruf@gmail.com>
parents: 5752
diff changeset
1572 id_, params = _build_data(self.apikey, 'add_user_to_user_group',
f33cc4af706b tests: finally block also needs to be executed if api_call itself fails
domruf <dominikruf@gmail.com>
parents: 5752
diff changeset
1573 usergroupid=gr_name,
8109
e527cc2ce8dc cleanup: get rid of most "import *"
Mads Kiilerich <mads@kiilerich.com>
parents: 8078
diff changeset
1574 userid=base.TEST_USER_ADMIN_LOGIN)
5806
f33cc4af706b tests: finally block also needs to be executed if api_call itself fails
domruf <dominikruf@gmail.com>
parents: 5752
diff changeset
1575 response = api_call(self, params)
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1576 expected = {
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1577 'msg': 'added member `%s` to user group `%s`' % (
8109
e527cc2ce8dc cleanup: get rid of most "import *"
Mads Kiilerich <mads@kiilerich.com>
parents: 8078
diff changeset
1578 base.TEST_USER_ADMIN_LOGIN, gr_name),
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1579 'success': True
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1580 }
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1581 self._compare_ok(id_, expected, given=response.body)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1582 finally:
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1583 fixture.destroy_user_group(gr_name)
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1584
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1585 def test_api_add_user_to_user_group_that_doesnt_exist(self):
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1586 id_, params = _build_data(self.apikey, 'add_user_to_user_group',
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1587 usergroupid='false-group',
8109
e527cc2ce8dc cleanup: get rid of most "import *"
Mads Kiilerich <mads@kiilerich.com>
parents: 8078
diff changeset
1588 userid=base.TEST_USER_ADMIN_LOGIN)
2738
Marcin Kuzminski <marcin@python-works.com>
parents: 2737
diff changeset
1589 response = api_call(self, params)
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1590
3415
b8f929bff7e3 fixed tests and missing replacements from 5f1850e4712a
Marcin Kuzminski <marcin@python-works.com>
parents: 3235
diff changeset
1591 expected = 'user group `%s` does not exist' % 'false-group'
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1592 self._compare_error(id_, expected, given=response.body)
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1593
8585
1de3e5d104bf tests: consistent use of more helpful raise_exception "fixture"
Mads Kiilerich <mads@kiilerich.com>
parents: 8379
diff changeset
1594 @mock.patch.object(UserGroupModel, 'add_user_to_group', raise_exception)
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1595 def test_api_add_user_to_user_group_exception_occurred(self):
8224
e63bcce18fef py3: automatic migration with 2to3 -f unicode
Mads Kiilerich <mads@kiilerich.com>
parents: 8120
diff changeset
1596 gr_name = 'test_group'
3714
7e3d89d9d3a2 - Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents: 3647
diff changeset
1597 fixture.create_user_group(gr_name)
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1598 try:
5806
f33cc4af706b tests: finally block also needs to be executed if api_call itself fails
domruf <dominikruf@gmail.com>
parents: 5752
diff changeset
1599 id_, params = _build_data(self.apikey, 'add_user_to_user_group',
f33cc4af706b tests: finally block also needs to be executed if api_call itself fails
domruf <dominikruf@gmail.com>
parents: 5752
diff changeset
1600 usergroupid=gr_name,
8109
e527cc2ce8dc cleanup: get rid of most "import *"
Mads Kiilerich <mads@kiilerich.com>
parents: 8078
diff changeset
1601 userid=base.TEST_USER_ADMIN_LOGIN)
5806
f33cc4af706b tests: finally block also needs to be executed if api_call itself fails
domruf <dominikruf@gmail.com>
parents: 5752
diff changeset
1602 response = api_call(self, params)
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1603 expected = 'failed to add member to user group `%s`' % gr_name
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1604 self._compare_error(id_, expected, given=response.body)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1605 finally:
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1606 fixture.destroy_user_group(gr_name)
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1607
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1608 def test_api_remove_user_from_user_group(self):
8224
e63bcce18fef py3: automatic migration with 2to3 -f unicode
Mads Kiilerich <mads@kiilerich.com>
parents: 8120
diff changeset
1609 gr_name = 'test_group_3'
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1610 gr = fixture.create_user_group(gr_name)
8109
e527cc2ce8dc cleanup: get rid of most "import *"
Mads Kiilerich <mads@kiilerich.com>
parents: 8078
diff changeset
1611 UserGroupModel().add_user_to_group(gr, user=base.TEST_USER_ADMIN_LOGIN)
8686
b095e2fbba44 model: always import whole meta module - also when referencing Session
Mads Kiilerich <mads@kiilerich.com>
parents: 8661
diff changeset
1612 meta.Session().commit()
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1613 try:
5806
f33cc4af706b tests: finally block also needs to be executed if api_call itself fails
domruf <dominikruf@gmail.com>
parents: 5752
diff changeset
1614 id_, params = _build_data(self.apikey, 'remove_user_from_user_group',
f33cc4af706b tests: finally block also needs to be executed if api_call itself fails
domruf <dominikruf@gmail.com>
parents: 5752
diff changeset
1615 usergroupid=gr_name,
8109
e527cc2ce8dc cleanup: get rid of most "import *"
Mads Kiilerich <mads@kiilerich.com>
parents: 8078
diff changeset
1616 userid=base.TEST_USER_ADMIN_LOGIN)
5806
f33cc4af706b tests: finally block also needs to be executed if api_call itself fails
domruf <dominikruf@gmail.com>
parents: 5752
diff changeset
1617 response = api_call(self, params)
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1618 expected = {
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1619 'msg': 'removed member `%s` from user group `%s`' % (
8109
e527cc2ce8dc cleanup: get rid of most "import *"
Mads Kiilerich <mads@kiilerich.com>
parents: 8078
diff changeset
1620 base.TEST_USER_ADMIN_LOGIN, gr_name
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1621 ),
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1622 'success': True}
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1623 self._compare_ok(id_, expected, given=response.body)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1624 finally:
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1625 fixture.destroy_user_group(gr_name)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1626
8585
1de3e5d104bf tests: consistent use of more helpful raise_exception "fixture"
Mads Kiilerich <mads@kiilerich.com>
parents: 8379
diff changeset
1627 @mock.patch.object(UserGroupModel, 'remove_user_from_group', raise_exception)
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1628 def test_api_remove_user_from_user_group_exception_occurred(self):
8224
e63bcce18fef py3: automatic migration with 2to3 -f unicode
Mads Kiilerich <mads@kiilerich.com>
parents: 8120
diff changeset
1629 gr_name = 'test_group_3'
3714
7e3d89d9d3a2 - Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents: 3647
diff changeset
1630 gr = fixture.create_user_group(gr_name)
8109
e527cc2ce8dc cleanup: get rid of most "import *"
Mads Kiilerich <mads@kiilerich.com>
parents: 8078
diff changeset
1631 UserGroupModel().add_user_to_group(gr, user=base.TEST_USER_ADMIN_LOGIN)
8686
b095e2fbba44 model: always import whole meta module - also when referencing Session
Mads Kiilerich <mads@kiilerich.com>
parents: 8661
diff changeset
1632 meta.Session().commit()
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1633 try:
5806
f33cc4af706b tests: finally block also needs to be executed if api_call itself fails
domruf <dominikruf@gmail.com>
parents: 5752
diff changeset
1634 id_, params = _build_data(self.apikey, 'remove_user_from_user_group',
f33cc4af706b tests: finally block also needs to be executed if api_call itself fails
domruf <dominikruf@gmail.com>
parents: 5752
diff changeset
1635 usergroupid=gr_name,
8109
e527cc2ce8dc cleanup: get rid of most "import *"
Mads Kiilerich <mads@kiilerich.com>
parents: 8078
diff changeset
1636 userid=base.TEST_USER_ADMIN_LOGIN)
5806
f33cc4af706b tests: finally block also needs to be executed if api_call itself fails
domruf <dominikruf@gmail.com>
parents: 5752
diff changeset
1637 response = api_call(self, params)
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1638 expected = 'failed to remove member from user group `%s`' % gr_name
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1639 self._compare_error(id_, expected, given=response.body)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1640 finally:
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1641 fixture.destroy_user_group(gr_name)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1642
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1643 def test_api_delete_user_group(self):
8224
e63bcce18fef py3: automatic migration with 2to3 -f unicode
Mads Kiilerich <mads@kiilerich.com>
parents: 8120
diff changeset
1644 gr_name = 'test_group'
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1645 ugroup = fixture.create_user_group(gr_name)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1646 gr_id = ugroup.users_group_id
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1647 try:
5806
f33cc4af706b tests: finally block also needs to be executed if api_call itself fails
domruf <dominikruf@gmail.com>
parents: 5752
diff changeset
1648 id_, params = _build_data(self.apikey, 'delete_user_group',
6212
8be0633ff852 api: fail when given unknown arguments
Mads Kiilerich <madski@unity3d.com>
parents: 6117
diff changeset
1649 usergroupid=gr_name)
5806
f33cc4af706b tests: finally block also needs to be executed if api_call itself fails
domruf <dominikruf@gmail.com>
parents: 5752
diff changeset
1650 response = api_call(self, params)
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1651 expected = {
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1652 'user_group': None,
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1653 'msg': 'deleted user group ID:%s %s' % (gr_id, gr_name)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1654 }
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1655 self._compare_ok(id_, expected, given=response.body)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1656 finally:
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1657 if UserGroupModel().get_by_name(gr_name):
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1658 fixture.destroy_user_group(gr_name)
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1659
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1660 def test_api_delete_user_group_that_is_assigned(self):
8224
e63bcce18fef py3: automatic migration with 2to3 -f unicode
Mads Kiilerich <mads@kiilerich.com>
parents: 8120
diff changeset
1661 gr_name = 'test_group'
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1662 ugroup = fixture.create_user_group(gr_name)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1663 gr_id = ugroup.users_group_id
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1664
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1665 ugr_to_perm = RepoModel().grant_user_group_permission(self.REPO, gr_name, 'repository.write')
4769
2181d0058c6a usergroup: more descriptive error message when deleting user group
Joseph Rivera <rivera.d.joseph@gmail.com>
parents: 4212
diff changeset
1666 msg = 'User Group assigned to %s' % ugr_to_perm.repository.repo_name
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1667
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1668 try:
5806
f33cc4af706b tests: finally block also needs to be executed if api_call itself fails
domruf <dominikruf@gmail.com>
parents: 5752
diff changeset
1669 id_, params = _build_data(self.apikey, 'delete_user_group',
6212
8be0633ff852 api: fail when given unknown arguments
Mads Kiilerich <madski@unity3d.com>
parents: 6117
diff changeset
1670 usergroupid=gr_name)
5806
f33cc4af706b tests: finally block also needs to be executed if api_call itself fails
domruf <dominikruf@gmail.com>
parents: 5752
diff changeset
1671 response = api_call(self, params)
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1672 expected = msg
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1673 self._compare_error(id_, expected, given=response.body)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1674 finally:
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1675 if UserGroupModel().get_by_name(gr_name):
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1676 fixture.destroy_user_group(gr_name)
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1677
4792
923037eb67d4 spelling: fix various typos
Thomas De Schampheleire <thomas.de_schampheleire@alcatel-lucent.com>
parents: 4769
diff changeset
1678 def test_api_delete_user_group_exception_occurred(self):
8224
e63bcce18fef py3: automatic migration with 2to3 -f unicode
Mads Kiilerich <mads@kiilerich.com>
parents: 8120
diff changeset
1679 gr_name = 'test_group'
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1680 ugroup = fixture.create_user_group(gr_name)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1681 gr_id = ugroup.users_group_id
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1682 id_, params = _build_data(self.apikey, 'delete_user_group',
6212
8be0633ff852 api: fail when given unknown arguments
Mads Kiilerich <madski@unity3d.com>
parents: 6117
diff changeset
1683 usergroupid=gr_name)
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1684
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1685 try:
8585
1de3e5d104bf tests: consistent use of more helpful raise_exception "fixture"
Mads Kiilerich <mads@kiilerich.com>
parents: 8379
diff changeset
1686 with mock.patch.object(UserGroupModel, 'delete', raise_exception):
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1687 response = api_call(self, params)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1688 expected = 'failed to delete user group ID:%s %s' % (gr_id, gr_name)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1689 self._compare_error(id_, expected, given=response.body)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1690 finally:
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1691 fixture.destroy_user_group(gr_name)
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1692
8109
e527cc2ce8dc cleanup: get rid of most "import *"
Mads Kiilerich <mads@kiilerich.com>
parents: 8078
diff changeset
1693 @base.parametrize('name,perm', [
5907
526724b8b6ce pytest migration: api: convert to TestControllerPytest
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 5906
diff changeset
1694 ('none', 'repository.none'),
526724b8b6ce pytest migration: api: convert to TestControllerPytest
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 5906
diff changeset
1695 ('read', 'repository.read'),
526724b8b6ce pytest migration: api: convert to TestControllerPytest
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 5906
diff changeset
1696 ('write', 'repository.write'),
526724b8b6ce pytest migration: api: convert to TestControllerPytest
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 5906
diff changeset
1697 ('admin', 'repository.admin'),
526724b8b6ce pytest migration: api: convert to TestControllerPytest
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 5906
diff changeset
1698 ])
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1699 def test_api_grant_user_permission(self, name, perm):
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1700 id_, params = _build_data(self.apikey,
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1701 'grant_user_permission',
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1702 repoid=self.REPO,
8109
e527cc2ce8dc cleanup: get rid of most "import *"
Mads Kiilerich <mads@kiilerich.com>
parents: 8078
diff changeset
1703 userid=base.TEST_USER_ADMIN_LOGIN,
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1704 perm=perm)
2738
Marcin Kuzminski <marcin@python-works.com>
parents: 2737
diff changeset
1705 response = api_call(self, params)
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1706
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1707 ret = {
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1708 'msg': 'Granted perm: `%s` for user: `%s` in repo: `%s`' % (
8109
e527cc2ce8dc cleanup: get rid of most "import *"
Mads Kiilerich <mads@kiilerich.com>
parents: 8078
diff changeset
1709 perm, base.TEST_USER_ADMIN_LOGIN, self.REPO
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1710 ),
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1711 'success': True
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1712 }
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1713 expected = ret
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1714 self._compare_ok(id_, expected, given=response.body)
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1715
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1716 def test_api_grant_user_permission_wrong_permission(self):
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1717 perm = 'haha.no.permission'
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1718 id_, params = _build_data(self.apikey,
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1719 'grant_user_permission',
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1720 repoid=self.REPO,
8109
e527cc2ce8dc cleanup: get rid of most "import *"
Mads Kiilerich <mads@kiilerich.com>
parents: 8078
diff changeset
1721 userid=base.TEST_USER_ADMIN_LOGIN,
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1722 perm=perm)
2738
Marcin Kuzminski <marcin@python-works.com>
parents: 2737
diff changeset
1723 response = api_call(self, params)
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1724
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1725 expected = 'permission `%s` does not exist' % perm
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1726 self._compare_error(id_, expected, given=response.body)
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1727
8585
1de3e5d104bf tests: consistent use of more helpful raise_exception "fixture"
Mads Kiilerich <mads@kiilerich.com>
parents: 8379
diff changeset
1728 @mock.patch.object(RepoModel, 'grant_user_permission', raise_exception)
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1729 def test_api_grant_user_permission_exception_when_adding(self):
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1730 perm = 'repository.read'
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1731 id_, params = _build_data(self.apikey,
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1732 'grant_user_permission',
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1733 repoid=self.REPO,
8109
e527cc2ce8dc cleanup: get rid of most "import *"
Mads Kiilerich <mads@kiilerich.com>
parents: 8078
diff changeset
1734 userid=base.TEST_USER_ADMIN_LOGIN,
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1735 perm=perm)
2738
Marcin Kuzminski <marcin@python-works.com>
parents: 2737
diff changeset
1736 response = api_call(self, params)
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1737
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1738 expected = 'failed to edit permission for user: `%s` in repo: `%s`' % (
8109
e527cc2ce8dc cleanup: get rid of most "import *"
Mads Kiilerich <mads@kiilerich.com>
parents: 8078
diff changeset
1739 base.TEST_USER_ADMIN_LOGIN, self.REPO
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1740 )
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1741 self._compare_error(id_, expected, given=response.body)
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1742
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1743 def test_api_revoke_user_permission(self):
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1744 id_, params = _build_data(self.apikey,
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1745 'revoke_user_permission',
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1746 repoid=self.REPO,
8109
e527cc2ce8dc cleanup: get rid of most "import *"
Mads Kiilerich <mads@kiilerich.com>
parents: 8078
diff changeset
1747 userid=base.TEST_USER_ADMIN_LOGIN, )
2738
Marcin Kuzminski <marcin@python-works.com>
parents: 2737
diff changeset
1748 response = api_call(self, params)
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1749
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1750 expected = {
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1751 'msg': 'Revoked perm for user: `%s` in repo: `%s`' % (
8109
e527cc2ce8dc cleanup: get rid of most "import *"
Mads Kiilerich <mads@kiilerich.com>
parents: 8078
diff changeset
1752 base.TEST_USER_ADMIN_LOGIN, self.REPO
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1753 ),
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1754 'success': True
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1755 }
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1756 self._compare_ok(id_, expected, given=response.body)
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1757
8585
1de3e5d104bf tests: consistent use of more helpful raise_exception "fixture"
Mads Kiilerich <mads@kiilerich.com>
parents: 8379
diff changeset
1758 @mock.patch.object(RepoModel, 'revoke_user_permission', raise_exception)
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1759 def test_api_revoke_user_permission_exception_when_adding(self):
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1760 id_, params = _build_data(self.apikey,
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1761 'revoke_user_permission',
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1762 repoid=self.REPO,
8109
e527cc2ce8dc cleanup: get rid of most "import *"
Mads Kiilerich <mads@kiilerich.com>
parents: 8078
diff changeset
1763 userid=base.TEST_USER_ADMIN_LOGIN, )
2738
Marcin Kuzminski <marcin@python-works.com>
parents: 2737
diff changeset
1764 response = api_call(self, params)
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1765
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1766 expected = 'failed to edit permission for user: `%s` in repo: `%s`' % (
8109
e527cc2ce8dc cleanup: get rid of most "import *"
Mads Kiilerich <mads@kiilerich.com>
parents: 8078
diff changeset
1767 base.TEST_USER_ADMIN_LOGIN, self.REPO
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1768 )
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1769 self._compare_error(id_, expected, given=response.body)
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1770
8109
e527cc2ce8dc cleanup: get rid of most "import *"
Mads Kiilerich <mads@kiilerich.com>
parents: 8078
diff changeset
1771 @base.parametrize('name,perm', [
5907
526724b8b6ce pytest migration: api: convert to TestControllerPytest
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 5906
diff changeset
1772 ('none', 'repository.none'),
526724b8b6ce pytest migration: api: convert to TestControllerPytest
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 5906
diff changeset
1773 ('read', 'repository.read'),
526724b8b6ce pytest migration: api: convert to TestControllerPytest
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 5906
diff changeset
1774 ('write', 'repository.write'),
526724b8b6ce pytest migration: api: convert to TestControllerPytest
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 5906
diff changeset
1775 ('admin', 'repository.admin'),
526724b8b6ce pytest migration: api: convert to TestControllerPytest
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 5906
diff changeset
1776 ])
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1777 def test_api_grant_user_group_permission(self, name, perm):
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1778 id_, params = _build_data(self.apikey,
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1779 'grant_user_group_permission',
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1780 repoid=self.REPO,
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1781 usergroupid=TEST_USER_GROUP,
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1782 perm=perm)
2738
Marcin Kuzminski <marcin@python-works.com>
parents: 2737
diff changeset
1783 response = api_call(self, params)
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1784
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1785 ret = {
3415
b8f929bff7e3 fixed tests and missing replacements from 5f1850e4712a
Marcin Kuzminski <marcin@python-works.com>
parents: 3235
diff changeset
1786 'msg': 'Granted perm: `%s` for user group: `%s` in repo: `%s`' % (
3417
fa6ba6727475 further cleanup of UsersGroup
Mads Kiilerich <madski@unity3d.com>
parents: 3415
diff changeset
1787 perm, TEST_USER_GROUP, self.REPO
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1788 ),
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1789 'success': True
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1790 }
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1791 expected = ret
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1792 self._compare_ok(id_, expected, given=response.body)
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1793
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1794 def test_api_grant_user_group_permission_wrong_permission(self):
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1795 perm = 'haha.no.permission'
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1796 id_, params = _build_data(self.apikey,
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1797 'grant_user_group_permission',
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1798 repoid=self.REPO,
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1799 usergroupid=TEST_USER_GROUP,
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1800 perm=perm)
2738
Marcin Kuzminski <marcin@python-works.com>
parents: 2737
diff changeset
1801 response = api_call(self, params)
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1802
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1803 expected = 'permission `%s` does not exist' % perm
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1804 self._compare_error(id_, expected, given=response.body)
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1805
8585
1de3e5d104bf tests: consistent use of more helpful raise_exception "fixture"
Mads Kiilerich <mads@kiilerich.com>
parents: 8379
diff changeset
1806 @mock.patch.object(RepoModel, 'grant_user_group_permission', raise_exception)
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1807 def test_api_grant_user_group_permission_exception_when_adding(self):
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1808 perm = 'repository.read'
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1809 id_, params = _build_data(self.apikey,
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1810 'grant_user_group_permission',
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1811 repoid=self.REPO,
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1812 usergroupid=TEST_USER_GROUP,
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1813 perm=perm)
2738
Marcin Kuzminski <marcin@python-works.com>
parents: 2737
diff changeset
1814 response = api_call(self, params)
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1815
3415
b8f929bff7e3 fixed tests and missing replacements from 5f1850e4712a
Marcin Kuzminski <marcin@python-works.com>
parents: 3235
diff changeset
1816 expected = 'failed to edit permission for user group: `%s` in repo: `%s`' % (
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1817 TEST_USER_GROUP, self.REPO
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1818 )
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1819 self._compare_error(id_, expected, given=response.body)
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1820
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1821 def test_api_revoke_user_group_permission(self):
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1822 RepoModel().grant_user_group_permission(repo=self.REPO,
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1823 group_name=TEST_USER_GROUP,
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1824 perm='repository.read')
8686
b095e2fbba44 model: always import whole meta module - also when referencing Session
Mads Kiilerich <mads@kiilerich.com>
parents: 8661
diff changeset
1825 meta.Session().commit()
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1826 id_, params = _build_data(self.apikey,
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1827 'revoke_user_group_permission',
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1828 repoid=self.REPO,
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1829 usergroupid=TEST_USER_GROUP, )
2738
Marcin Kuzminski <marcin@python-works.com>
parents: 2737
diff changeset
1830 response = api_call(self, params)
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1831
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1832 expected = {
3415
b8f929bff7e3 fixed tests and missing replacements from 5f1850e4712a
Marcin Kuzminski <marcin@python-works.com>
parents: 3235
diff changeset
1833 'msg': 'Revoked perm for user group: `%s` in repo: `%s`' % (
3417
fa6ba6727475 further cleanup of UsersGroup
Mads Kiilerich <madski@unity3d.com>
parents: 3415
diff changeset
1834 TEST_USER_GROUP, self.REPO
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1835 ),
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1836 'success': True
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1837 }
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1838 self._compare_ok(id_, expected, given=response.body)
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1839
8585
1de3e5d104bf tests: consistent use of more helpful raise_exception "fixture"
Mads Kiilerich <mads@kiilerich.com>
parents: 8379
diff changeset
1840 @mock.patch.object(RepoModel, 'revoke_user_group_permission', raise_exception)
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1841 def test_api_revoke_user_group_permission_exception_when_adding(self):
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1842 id_, params = _build_data(self.apikey,
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1843 'revoke_user_group_permission',
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1844 repoid=self.REPO,
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1845 usergroupid=TEST_USER_GROUP, )
2738
Marcin Kuzminski <marcin@python-works.com>
parents: 2737
diff changeset
1846 response = api_call(self, params)
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1847
3415
b8f929bff7e3 fixed tests and missing replacements from 5f1850e4712a
Marcin Kuzminski <marcin@python-works.com>
parents: 3235
diff changeset
1848 expected = 'failed to edit permission for user group: `%s` in repo: `%s`' % (
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1849 TEST_USER_GROUP, self.REPO
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1850 )
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1851 self._compare_error(id_, expected, given=response.body)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1852
8109
e527cc2ce8dc cleanup: get rid of most "import *"
Mads Kiilerich <mads@kiilerich.com>
parents: 8078
diff changeset
1853 @base.parametrize('name,perm,apply_to_children', [
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1854 ('none', 'group.none', 'none'),
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1855 ('read', 'group.read', 'none'),
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1856 ('write', 'group.write', 'none'),
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1857 ('admin', 'group.admin', 'none'),
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1858
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1859 ('none', 'group.none', 'all'),
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1860 ('read', 'group.read', 'all'),
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1861 ('write', 'group.write', 'all'),
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1862 ('admin', 'group.admin', 'all'),
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1863
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1864 ('none', 'group.none', 'repos'),
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1865 ('read', 'group.read', 'repos'),
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1866 ('write', 'group.write', 'repos'),
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1867 ('admin', 'group.admin', 'repos'),
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1868
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1869 ('none', 'group.none', 'groups'),
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1870 ('read', 'group.read', 'groups'),
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1871 ('write', 'group.write', 'groups'),
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1872 ('admin', 'group.admin', 'groups'),
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1873 ])
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1874 def test_api_grant_user_permission_to_repo_group(self, name, perm, apply_to_children):
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1875 id_, params = _build_data(self.apikey,
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1876 'grant_user_permission_to_repo_group',
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1877 repogroupid=TEST_REPO_GROUP,
8109
e527cc2ce8dc cleanup: get rid of most "import *"
Mads Kiilerich <mads@kiilerich.com>
parents: 8078
diff changeset
1878 userid=base.TEST_USER_ADMIN_LOGIN,
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1879 perm=perm, apply_to_children=apply_to_children)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1880 response = api_call(self, params)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1881
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1882 ret = {
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1883 'msg': 'Granted perm: `%s` (recursive:%s) for user: `%s` in repo group: `%s`' % (
8109
e527cc2ce8dc cleanup: get rid of most "import *"
Mads Kiilerich <mads@kiilerich.com>
parents: 8078
diff changeset
1884 perm, apply_to_children, base.TEST_USER_ADMIN_LOGIN, TEST_REPO_GROUP
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1885 ),
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1886 'success': True
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1887 }
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1888 expected = ret
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1889 self._compare_ok(id_, expected, given=response.body)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1890
8109
e527cc2ce8dc cleanup: get rid of most "import *"
Mads Kiilerich <mads@kiilerich.com>
parents: 8078
diff changeset
1891 @base.parametrize('name,perm,apply_to_children,grant_admin,access_ok', [
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1892 ('none_fails', 'group.none', 'none', False, False),
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1893 ('read_fails', 'group.read', 'none', False, False),
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1894 ('write_fails', 'group.write', 'none', False, False),
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1895 ('admin_fails', 'group.admin', 'none', False, False),
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1896
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1897 # with granted perms
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1898 ('none_ok', 'group.none', 'none', True, True),
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1899 ('read_ok', 'group.read', 'none', True, True),
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1900 ('write_ok', 'group.write', 'none', True, True),
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1901 ('admin_ok', 'group.admin', 'none', True, True),
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1902 ])
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1903 def test_api_grant_user_permission_to_repo_group_by_regular_user(
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1904 self, name, perm, apply_to_children, grant_admin, access_ok):
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1905 if grant_admin:
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1906 RepoGroupModel().grant_user_permission(TEST_REPO_GROUP,
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1907 self.TEST_USER_LOGIN,
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1908 'group.admin')
8686
b095e2fbba44 model: always import whole meta module - also when referencing Session
Mads Kiilerich <mads@kiilerich.com>
parents: 8661
diff changeset
1909 meta.Session().commit()
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1910
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1911 id_, params = _build_data(self.apikey_regular,
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1912 'grant_user_permission_to_repo_group',
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1913 repogroupid=TEST_REPO_GROUP,
8109
e527cc2ce8dc cleanup: get rid of most "import *"
Mads Kiilerich <mads@kiilerich.com>
parents: 8078
diff changeset
1914 userid=base.TEST_USER_ADMIN_LOGIN,
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1915 perm=perm, apply_to_children=apply_to_children)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1916 response = api_call(self, params)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1917 if access_ok:
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1918 ret = {
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1919 'msg': 'Granted perm: `%s` (recursive:%s) for user: `%s` in repo group: `%s`' % (
8109
e527cc2ce8dc cleanup: get rid of most "import *"
Mads Kiilerich <mads@kiilerich.com>
parents: 8078
diff changeset
1920 perm, apply_to_children, base.TEST_USER_ADMIN_LOGIN, TEST_REPO_GROUP
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1921 ),
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1922 'success': True
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1923 }
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1924 expected = ret
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1925 self._compare_ok(id_, expected, given=response.body)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1926 else:
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1927 expected = 'repository group `%s` does not exist' % TEST_REPO_GROUP
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1928 self._compare_error(id_, expected, given=response.body)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1929
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1930 def test_api_grant_user_permission_to_repo_group_wrong_permission(self):
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1931 perm = 'haha.no.permission'
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1932 id_, params = _build_data(self.apikey,
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1933 'grant_user_permission_to_repo_group',
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1934 repogroupid=TEST_REPO_GROUP,
8109
e527cc2ce8dc cleanup: get rid of most "import *"
Mads Kiilerich <mads@kiilerich.com>
parents: 8078
diff changeset
1935 userid=base.TEST_USER_ADMIN_LOGIN,
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1936 perm=perm)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1937 response = api_call(self, params)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1938
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1939 expected = 'permission `%s` does not exist' % perm
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1940 self._compare_error(id_, expected, given=response.body)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1941
8585
1de3e5d104bf tests: consistent use of more helpful raise_exception "fixture"
Mads Kiilerich <mads@kiilerich.com>
parents: 8379
diff changeset
1942 @mock.patch.object(RepoGroupModel, 'grant_user_permission', raise_exception)
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1943 def test_api_grant_user_permission_to_repo_group_exception_when_adding(self):
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1944 perm = 'group.read'
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1945 id_, params = _build_data(self.apikey,
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1946 'grant_user_permission_to_repo_group',
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1947 repogroupid=TEST_REPO_GROUP,
8109
e527cc2ce8dc cleanup: get rid of most "import *"
Mads Kiilerich <mads@kiilerich.com>
parents: 8078
diff changeset
1948 userid=base.TEST_USER_ADMIN_LOGIN,
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1949 perm=perm)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1950 response = api_call(self, params)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1951
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1952 expected = 'failed to edit permission for user: `%s` in repo group: `%s`' % (
8109
e527cc2ce8dc cleanup: get rid of most "import *"
Mads Kiilerich <mads@kiilerich.com>
parents: 8078
diff changeset
1953 base.TEST_USER_ADMIN_LOGIN, TEST_REPO_GROUP
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1954 )
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1955 self._compare_error(id_, expected, given=response.body)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1956
8109
e527cc2ce8dc cleanup: get rid of most "import *"
Mads Kiilerich <mads@kiilerich.com>
parents: 8078
diff changeset
1957 @base.parametrize('name,apply_to_children', [
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1958 ('none', 'none'),
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1959 ('all', 'all'),
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1960 ('repos', 'repos'),
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1961 ('groups', 'groups'),
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1962 ])
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1963 def test_api_revoke_user_permission_from_repo_group(self, name, apply_to_children):
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1964 RepoGroupModel().grant_user_permission(repo_group=TEST_REPO_GROUP,
8109
e527cc2ce8dc cleanup: get rid of most "import *"
Mads Kiilerich <mads@kiilerich.com>
parents: 8078
diff changeset
1965 user=base.TEST_USER_ADMIN_LOGIN,
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1966 perm='group.read',)
8686
b095e2fbba44 model: always import whole meta module - also when referencing Session
Mads Kiilerich <mads@kiilerich.com>
parents: 8661
diff changeset
1967 meta.Session().commit()
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1968
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1969 id_, params = _build_data(self.apikey,
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1970 'revoke_user_permission_from_repo_group',
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1971 repogroupid=TEST_REPO_GROUP,
8109
e527cc2ce8dc cleanup: get rid of most "import *"
Mads Kiilerich <mads@kiilerich.com>
parents: 8078
diff changeset
1972 userid=base.TEST_USER_ADMIN_LOGIN,
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1973 apply_to_children=apply_to_children,)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1974 response = api_call(self, params)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1975
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1976 expected = {
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1977 'msg': 'Revoked perm (recursive:%s) for user: `%s` in repo group: `%s`' % (
8109
e527cc2ce8dc cleanup: get rid of most "import *"
Mads Kiilerich <mads@kiilerich.com>
parents: 8078
diff changeset
1978 apply_to_children, base.TEST_USER_ADMIN_LOGIN, TEST_REPO_GROUP
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1979 ),
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1980 'success': True
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1981 }
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1982 self._compare_ok(id_, expected, given=response.body)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1983
8109
e527cc2ce8dc cleanup: get rid of most "import *"
Mads Kiilerich <mads@kiilerich.com>
parents: 8078
diff changeset
1984 @base.parametrize('name,apply_to_children,grant_admin,access_ok', [
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1985 ('none', 'none', False, False),
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1986 ('all', 'all', False, False),
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1987 ('repos', 'repos', False, False),
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1988 ('groups', 'groups', False, False),
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1989
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1990 # after granting admin rights
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1991 ('none', 'none', False, False),
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1992 ('all', 'all', False, False),
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1993 ('repos', 'repos', False, False),
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1994 ('groups', 'groups', False, False),
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1995 ])
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1996 def test_api_revoke_user_permission_from_repo_group_by_regular_user(
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1997 self, name, apply_to_children, grant_admin, access_ok):
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
1998 RepoGroupModel().grant_user_permission(repo_group=TEST_REPO_GROUP,
8109
e527cc2ce8dc cleanup: get rid of most "import *"
Mads Kiilerich <mads@kiilerich.com>
parents: 8078
diff changeset
1999 user=base.TEST_USER_ADMIN_LOGIN,
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2000 perm='group.read',)
8686
b095e2fbba44 model: always import whole meta module - also when referencing Session
Mads Kiilerich <mads@kiilerich.com>
parents: 8661
diff changeset
2001 meta.Session().commit()
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2002
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2003 if grant_admin:
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2004 RepoGroupModel().grant_user_permission(TEST_REPO_GROUP,
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2005 self.TEST_USER_LOGIN,
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2006 'group.admin')
8686
b095e2fbba44 model: always import whole meta module - also when referencing Session
Mads Kiilerich <mads@kiilerich.com>
parents: 8661
diff changeset
2007 meta.Session().commit()
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2008
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2009 id_, params = _build_data(self.apikey_regular,
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2010 'revoke_user_permission_from_repo_group',
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2011 repogroupid=TEST_REPO_GROUP,
8109
e527cc2ce8dc cleanup: get rid of most "import *"
Mads Kiilerich <mads@kiilerich.com>
parents: 8078
diff changeset
2012 userid=base.TEST_USER_ADMIN_LOGIN,
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2013 apply_to_children=apply_to_children,)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2014 response = api_call(self, params)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2015 if access_ok:
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2016 expected = {
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2017 'msg': 'Revoked perm (recursive:%s) for user: `%s` in repo group: `%s`' % (
8109
e527cc2ce8dc cleanup: get rid of most "import *"
Mads Kiilerich <mads@kiilerich.com>
parents: 8078
diff changeset
2018 apply_to_children, base.TEST_USER_ADMIN_LOGIN, TEST_REPO_GROUP
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2019 ),
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2020 'success': True
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2021 }
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2022 self._compare_ok(id_, expected, given=response.body)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2023 else:
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2024 expected = 'repository group `%s` does not exist' % TEST_REPO_GROUP
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2025 self._compare_error(id_, expected, given=response.body)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2026
8585
1de3e5d104bf tests: consistent use of more helpful raise_exception "fixture"
Mads Kiilerich <mads@kiilerich.com>
parents: 8379
diff changeset
2027 @mock.patch.object(RepoGroupModel, 'revoke_user_permission', raise_exception)
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2028 def test_api_revoke_user_permission_from_repo_group_exception_when_adding(self):
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2029 id_, params = _build_data(self.apikey,
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2030 'revoke_user_permission_from_repo_group',
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2031 repogroupid=TEST_REPO_GROUP,
8109
e527cc2ce8dc cleanup: get rid of most "import *"
Mads Kiilerich <mads@kiilerich.com>
parents: 8078
diff changeset
2032 userid=base.TEST_USER_ADMIN_LOGIN, )
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2033 response = api_call(self, params)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2034
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2035 expected = 'failed to edit permission for user: `%s` in repo group: `%s`' % (
8109
e527cc2ce8dc cleanup: get rid of most "import *"
Mads Kiilerich <mads@kiilerich.com>
parents: 8078
diff changeset
2036 base.TEST_USER_ADMIN_LOGIN, TEST_REPO_GROUP
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2037 )
2526
473794943022 Refactored API
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
2038 self._compare_error(id_, expected, given=response.body)
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2039
8109
e527cc2ce8dc cleanup: get rid of most "import *"
Mads Kiilerich <mads@kiilerich.com>
parents: 8078
diff changeset
2040 @base.parametrize('name,perm,apply_to_children', [
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2041 ('none', 'group.none', 'none'),
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2042 ('read', 'group.read', 'none'),
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2043 ('write', 'group.write', 'none'),
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2044 ('admin', 'group.admin', 'none'),
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2045
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2046 ('none', 'group.none', 'all'),
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2047 ('read', 'group.read', 'all'),
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2048 ('write', 'group.write', 'all'),
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2049 ('admin', 'group.admin', 'all'),
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2050
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2051 ('none', 'group.none', 'repos'),
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2052 ('read', 'group.read', 'repos'),
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2053 ('write', 'group.write', 'repos'),
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2054 ('admin', 'group.admin', 'repos'),
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2055
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2056 ('none', 'group.none', 'groups'),
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2057 ('read', 'group.read', 'groups'),
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2058 ('write', 'group.write', 'groups'),
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2059 ('admin', 'group.admin', 'groups'),
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2060 ])
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2061 def test_api_grant_user_group_permission_to_repo_group(self, name, perm, apply_to_children):
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2062 id_, params = _build_data(self.apikey,
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2063 'grant_user_group_permission_to_repo_group',
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2064 repogroupid=TEST_REPO_GROUP,
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2065 usergroupid=TEST_USER_GROUP,
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2066 perm=perm,
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2067 apply_to_children=apply_to_children,)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2068 response = api_call(self, params)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2069
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2070 ret = {
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2071 'msg': 'Granted perm: `%s` (recursive:%s) for user group: `%s` in repo group: `%s`' % (
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2072 perm, apply_to_children, TEST_USER_GROUP, TEST_REPO_GROUP
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2073 ),
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2074 'success': True
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2075 }
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2076 expected = ret
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2077 self._compare_ok(id_, expected, given=response.body)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2078
8109
e527cc2ce8dc cleanup: get rid of most "import *"
Mads Kiilerich <mads@kiilerich.com>
parents: 8078
diff changeset
2079 @base.parametrize('name,perm,apply_to_children,grant_admin,access_ok', [
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2080 ('none_fails', 'group.none', 'none', False, False),
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2081 ('read_fails', 'group.read', 'none', False, False),
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2082 ('write_fails', 'group.write', 'none', False, False),
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2083 ('admin_fails', 'group.admin', 'none', False, False),
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2084
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2085 # with granted perms
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2086 ('none_ok', 'group.none', 'none', True, True),
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2087 ('read_ok', 'group.read', 'none', True, True),
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2088 ('write_ok', 'group.write', 'none', True, True),
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2089 ('admin_ok', 'group.admin', 'none', True, True),
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2090 ])
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2091 def test_api_grant_user_group_permission_to_repo_group_by_regular_user(
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2092 self, name, perm, apply_to_children, grant_admin, access_ok):
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2093 if grant_admin:
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2094 RepoGroupModel().grant_user_permission(TEST_REPO_GROUP,
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2095 self.TEST_USER_LOGIN,
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2096 'group.admin')
8686
b095e2fbba44 model: always import whole meta module - also when referencing Session
Mads Kiilerich <mads@kiilerich.com>
parents: 8661
diff changeset
2097 meta.Session().commit()
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2098
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2099 id_, params = _build_data(self.apikey_regular,
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2100 'grant_user_group_permission_to_repo_group',
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2101 repogroupid=TEST_REPO_GROUP,
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2102 usergroupid=TEST_USER_GROUP,
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2103 perm=perm,
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2104 apply_to_children=apply_to_children,)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2105 response = api_call(self, params)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2106 if access_ok:
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2107 ret = {
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2108 'msg': 'Granted perm: `%s` (recursive:%s) for user group: `%s` in repo group: `%s`' % (
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2109 perm, apply_to_children, TEST_USER_GROUP, TEST_REPO_GROUP
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2110 ),
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2111 'success': True
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2112 }
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2113 expected = ret
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2114 self._compare_ok(id_, expected, given=response.body)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2115 else:
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2116 expected = 'repository group `%s` does not exist' % TEST_REPO_GROUP
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2117 self._compare_error(id_, expected, given=response.body)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2118
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2119 def test_api_grant_user_group_permission_to_repo_group_wrong_permission(self):
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2120 perm = 'haha.no.permission'
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2121 id_, params = _build_data(self.apikey,
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2122 'grant_user_group_permission_to_repo_group',
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2123 repogroupid=TEST_REPO_GROUP,
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2124 usergroupid=TEST_USER_GROUP,
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2125 perm=perm)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2126 response = api_call(self, params)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2127
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2128 expected = 'permission `%s` does not exist' % perm
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2129 self._compare_error(id_, expected, given=response.body)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2130
8585
1de3e5d104bf tests: consistent use of more helpful raise_exception "fixture"
Mads Kiilerich <mads@kiilerich.com>
parents: 8379
diff changeset
2131 @mock.patch.object(RepoGroupModel, 'grant_user_group_permission', raise_exception)
5398
956c557749cf cleanup: fix some risky variable redefinitions
Mads Kiilerich <madski@unity3d.com>
parents: 5326
diff changeset
2132 def test_api_grant_user_group_permission_exception_when_adding_to_repo_group(self):
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2133 perm = 'group.read'
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2134 id_, params = _build_data(self.apikey,
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2135 'grant_user_group_permission_to_repo_group',
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2136 repogroupid=TEST_REPO_GROUP,
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2137 usergroupid=TEST_USER_GROUP,
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2138 perm=perm)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2139 response = api_call(self, params)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2140
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2141 expected = 'failed to edit permission for user group: `%s` in repo group: `%s`' % (
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2142 TEST_USER_GROUP, TEST_REPO_GROUP
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2143 )
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2144 self._compare_error(id_, expected, given=response.body)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2145
8109
e527cc2ce8dc cleanup: get rid of most "import *"
Mads Kiilerich <mads@kiilerich.com>
parents: 8078
diff changeset
2146 @base.parametrize('name,apply_to_children', [
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2147 ('none', 'none'),
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2148 ('all', 'all'),
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2149 ('repos', 'repos'),
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2150 ('groups', 'groups'),
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2151 ])
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2152 def test_api_revoke_user_group_permission_from_repo_group(self, name, apply_to_children):
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2153 RepoGroupModel().grant_user_group_permission(repo_group=TEST_REPO_GROUP,
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2154 group_name=TEST_USER_GROUP,
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2155 perm='group.read',)
8686
b095e2fbba44 model: always import whole meta module - also when referencing Session
Mads Kiilerich <mads@kiilerich.com>
parents: 8661
diff changeset
2156 meta.Session().commit()
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2157 id_, params = _build_data(self.apikey,
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2158 'revoke_user_group_permission_from_repo_group',
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2159 repogroupid=TEST_REPO_GROUP,
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2160 usergroupid=TEST_USER_GROUP,
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2161 apply_to_children=apply_to_children,)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2162 response = api_call(self, params)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2163
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2164 expected = {
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2165 'msg': 'Revoked perm (recursive:%s) for user group: `%s` in repo group: `%s`' % (
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2166 apply_to_children, TEST_USER_GROUP, TEST_REPO_GROUP
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2167 ),
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2168 'success': True
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2169 }
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2170 self._compare_ok(id_, expected, given=response.body)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2171
8109
e527cc2ce8dc cleanup: get rid of most "import *"
Mads Kiilerich <mads@kiilerich.com>
parents: 8078
diff changeset
2172 @base.parametrize('name,apply_to_children,grant_admin,access_ok', [
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2173 ('none', 'none', False, False),
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2174 ('all', 'all', False, False),
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2175 ('repos', 'repos', False, False),
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2176 ('groups', 'groups', False, False),
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2177
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2178 # after granting admin rights
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2179 ('none', 'none', False, False),
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2180 ('all', 'all', False, False),
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2181 ('repos', 'repos', False, False),
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2182 ('groups', 'groups', False, False),
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2183 ])
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2184 def test_api_revoke_user_group_permission_from_repo_group_by_regular_user(
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2185 self, name, apply_to_children, grant_admin, access_ok):
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2186 RepoGroupModel().grant_user_permission(repo_group=TEST_REPO_GROUP,
8109
e527cc2ce8dc cleanup: get rid of most "import *"
Mads Kiilerich <mads@kiilerich.com>
parents: 8078
diff changeset
2187 user=base.TEST_USER_ADMIN_LOGIN,
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2188 perm='group.read',)
8686
b095e2fbba44 model: always import whole meta module - also when referencing Session
Mads Kiilerich <mads@kiilerich.com>
parents: 8661
diff changeset
2189 meta.Session().commit()
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2190
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2191 if grant_admin:
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2192 RepoGroupModel().grant_user_permission(TEST_REPO_GROUP,
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2193 self.TEST_USER_LOGIN,
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2194 'group.admin')
8686
b095e2fbba44 model: always import whole meta module - also when referencing Session
Mads Kiilerich <mads@kiilerich.com>
parents: 8661
diff changeset
2195 meta.Session().commit()
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2196
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2197 id_, params = _build_data(self.apikey_regular,
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2198 'revoke_user_group_permission_from_repo_group',
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2199 repogroupid=TEST_REPO_GROUP,
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2200 usergroupid=TEST_USER_GROUP,
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2201 apply_to_children=apply_to_children,)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2202 response = api_call(self, params)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2203 if access_ok:
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2204 expected = {
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2205 'msg': 'Revoked perm (recursive:%s) for user group: `%s` in repo group: `%s`' % (
8109
e527cc2ce8dc cleanup: get rid of most "import *"
Mads Kiilerich <mads@kiilerich.com>
parents: 8078
diff changeset
2206 apply_to_children, base.TEST_USER_ADMIN_LOGIN, TEST_REPO_GROUP
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2207 ),
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2208 'success': True
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2209 }
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2210 self._compare_ok(id_, expected, given=response.body)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2211 else:
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2212 expected = 'repository group `%s` does not exist' % TEST_REPO_GROUP
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2213 self._compare_error(id_, expected, given=response.body)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2214
8585
1de3e5d104bf tests: consistent use of more helpful raise_exception "fixture"
Mads Kiilerich <mads@kiilerich.com>
parents: 8379
diff changeset
2215 @mock.patch.object(RepoGroupModel, 'revoke_user_group_permission', raise_exception)
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2216 def test_api_revoke_user_group_permission_from_repo_group_exception_when_adding(self):
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2217 id_, params = _build_data(self.apikey, 'revoke_user_group_permission_from_repo_group',
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2218 repogroupid=TEST_REPO_GROUP,
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2219 usergroupid=TEST_USER_GROUP,)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2220 response = api_call(self, params)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2221
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2222 expected = 'failed to edit permission for user group: `%s` in repo group: `%s`' % (
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2223 TEST_USER_GROUP, TEST_REPO_GROUP
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2224 )
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2225 self._compare_error(id_, expected, given=response.body)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2226
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2227 def test_api_get_gist(self):
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2228 gist = fixture.create_gist()
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2229 gist_id = gist.gist_access_id
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2230 gist_created_on = gist.created_on
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2231 id_, params = _build_data(self.apikey, 'get_gist',
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2232 gistid=gist_id, )
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2233 response = api_call(self, params)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2234
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2235 expected = {
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2236 'access_id': gist_id,
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2237 'created_on': gist_created_on,
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2238 'description': 'new-gist',
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2239 'expires': -1.0,
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2240 'gist_id': int(gist_id),
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2241 'type': 'public',
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2242 'url': 'http://localhost:80/_admin/gists/%s' % gist_id
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2243 }
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2244
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2245 self._compare_ok(id_, expected, given=response.body)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2246
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2247 def test_api_get_gist_that_does_not_exist(self):
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2248 id_, params = _build_data(self.apikey_regular, 'get_gist',
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2249 gistid='12345', )
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2250 response = api_call(self, params)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2251 expected = 'gist `%s` does not exist' % ('12345',)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2252 self._compare_error(id_, expected, given=response.body)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2253
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2254 def test_api_get_gist_private_gist_without_permission(self):
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2255 gist = fixture.create_gist()
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2256 gist_id = gist.gist_access_id
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2257 gist_created_on = gist.created_on
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2258 id_, params = _build_data(self.apikey_regular, 'get_gist',
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2259 gistid=gist_id, )
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2260 response = api_call(self, params)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2261
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2262 expected = 'gist `%s` does not exist' % gist_id
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2263 self._compare_error(id_, expected, given=response.body)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2264
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2265 def test_api_get_gists(self):
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2266 fixture.create_gist()
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2267 fixture.create_gist()
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2268
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2269 id_, params = _build_data(self.apikey, 'get_gists')
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2270 response = api_call(self, params)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2271 expected = response.json
5913
8d4f3a852716 pytest migration: api: switch to standard assert statements
Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>
parents: 5907
diff changeset
2272 assert len(response.json['result']) == 2
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2273 #self._compare_ok(id_, expected, given=response.body)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2274
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2275 def test_api_get_gists_regular_user(self):
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2276 # by admin
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2277 fixture.create_gist()
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2278 fixture.create_gist()
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2279
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2280 # by reg user
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2281 fixture.create_gist(owner=self.TEST_USER_LOGIN)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2282 fixture.create_gist(owner=self.TEST_USER_LOGIN)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2283 fixture.create_gist(owner=self.TEST_USER_LOGIN)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2284
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2285 id_, params = _build_data(self.apikey_regular, 'get_gists')
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2286 response = api_call(self, params)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2287 expected = response.json
5913
8d4f3a852716 pytest migration: api: switch to standard assert statements
Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>
parents: 5907
diff changeset
2288 assert len(response.json['result']) == 3
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2289 #self._compare_ok(id_, expected, given=response.body)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2290
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2291 def test_api_get_gists_only_for_regular_user(self):
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2292 # by admin
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2293 fixture.create_gist()
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2294 fixture.create_gist()
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2295
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2296 # by reg user
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2297 fixture.create_gist(owner=self.TEST_USER_LOGIN)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2298 fixture.create_gist(owner=self.TEST_USER_LOGIN)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2299 fixture.create_gist(owner=self.TEST_USER_LOGIN)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2300
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2301 id_, params = _build_data(self.apikey, 'get_gists',
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2302 userid=self.TEST_USER_LOGIN)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2303 response = api_call(self, params)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2304 expected = response.json
5913
8d4f3a852716 pytest migration: api: switch to standard assert statements
Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>
parents: 5907
diff changeset
2305 assert len(response.json['result']) == 3
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2306 #self._compare_ok(id_, expected, given=response.body)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2307
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2308 def test_api_get_gists_regular_user_with_different_userid(self):
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2309 id_, params = _build_data(self.apikey_regular, 'get_gists',
8109
e527cc2ce8dc cleanup: get rid of most "import *"
Mads Kiilerich <mads@kiilerich.com>
parents: 8078
diff changeset
2310 userid=base.TEST_USER_ADMIN_LOGIN)
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2311 response = api_call(self, params)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2312 expected = 'userid is not the same as your user'
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2313 self._compare_error(id_, expected, given=response.body)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2314
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2315 def test_api_create_gist(self):
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2316 id_, params = _build_data(self.apikey_regular, 'create_gist',
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2317 lifetime=10,
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2318 description='foobar-gist',
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2319 gist_type='public',
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2320 files={'foobar': {'content': 'foo'}})
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2321 response = api_call(self, params)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2322 expected = {
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2323 'gist': {
8120
58b6e4cd6fe9 lib: clean up ext_json and how it is used - avoid monkey patching
Mads Kiilerich <mads@kiilerich.com>
parents: 8109
diff changeset
2324 'access_id': response.json['result']['gist']['access_id'],
58b6e4cd6fe9 lib: clean up ext_json and how it is used - avoid monkey patching
Mads Kiilerich <mads@kiilerich.com>
parents: 8109
diff changeset
2325 'created_on': response.json['result']['gist']['created_on'],
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2326 'description': 'foobar-gist',
8120
58b6e4cd6fe9 lib: clean up ext_json and how it is used - avoid monkey patching
Mads Kiilerich <mads@kiilerich.com>
parents: 8109
diff changeset
2327 'expires': response.json['result']['gist']['expires'],
58b6e4cd6fe9 lib: clean up ext_json and how it is used - avoid monkey patching
Mads Kiilerich <mads@kiilerich.com>
parents: 8109
diff changeset
2328 'gist_id': response.json['result']['gist']['gist_id'],
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2329 'type': 'public',
8120
58b6e4cd6fe9 lib: clean up ext_json and how it is used - avoid monkey patching
Mads Kiilerich <mads@kiilerich.com>
parents: 8109
diff changeset
2330 'url': response.json['result']['gist']['url']
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2331 },
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2332 'msg': 'created new gist'
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2333 }
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2334 self._compare_ok(id_, expected, given=response.body)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2335
8585
1de3e5d104bf tests: consistent use of more helpful raise_exception "fixture"
Mads Kiilerich <mads@kiilerich.com>
parents: 8379
diff changeset
2336 @mock.patch.object(GistModel, 'create', raise_exception)
4792
923037eb67d4 spelling: fix various typos
Thomas De Schampheleire <thomas.de_schampheleire@alcatel-lucent.com>
parents: 4769
diff changeset
2337 def test_api_create_gist_exception_occurred(self):
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2338 id_, params = _build_data(self.apikey_regular, 'create_gist',
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2339 files={})
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2340 response = api_call(self, params)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2341 expected = 'failed to create gist'
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2342 self._compare_error(id_, expected, given=response.body)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2343
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2344 def test_api_delete_gist(self):
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2345 gist_id = fixture.create_gist().gist_access_id
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2346 id_, params = _build_data(self.apikey, 'delete_gist',
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2347 gistid=gist_id)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2348 response = api_call(self, params)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2349 expected = {'gist': None, 'msg': 'deleted gist ID:%s' % gist_id}
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2350 self._compare_ok(id_, expected, given=response.body)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2351
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2352 def test_api_delete_gist_regular_user(self):
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2353 gist_id = fixture.create_gist(owner=self.TEST_USER_LOGIN).gist_access_id
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2354 id_, params = _build_data(self.apikey_regular, 'delete_gist',
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2355 gistid=gist_id)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2356 response = api_call(self, params)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2357 expected = {'gist': None, 'msg': 'deleted gist ID:%s' % gist_id}
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2358 self._compare_ok(id_, expected, given=response.body)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2359
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2360 def test_api_delete_gist_regular_user_no_permission(self):
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2361 gist_id = fixture.create_gist().gist_access_id
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2362 id_, params = _build_data(self.apikey_regular, 'delete_gist',
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2363 gistid=gist_id)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2364 response = api_call(self, params)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2365 expected = 'gist `%s` does not exist' % (gist_id,)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2366 self._compare_error(id_, expected, given=response.body)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2367
8585
1de3e5d104bf tests: consistent use of more helpful raise_exception "fixture"
Mads Kiilerich <mads@kiilerich.com>
parents: 8379
diff changeset
2368 @mock.patch.object(GistModel, 'delete', raise_exception)
4792
923037eb67d4 spelling: fix various typos
Thomas De Schampheleire <thomas.de_schampheleire@alcatel-lucent.com>
parents: 4769
diff changeset
2369 def test_api_delete_gist_exception_occurred(self):
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2370 gist_id = fixture.create_gist().gist_access_id
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2371 id_, params = _build_data(self.apikey, 'delete_gist',
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2372 gistid=gist_id)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2373 response = api_call(self, params)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2374 expected = 'failed to delete gist ID:%s' % (gist_id,)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2375 self._compare_error(id_, expected, given=response.body)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2376
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2377 def test_api_get_ip(self):
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2378 id_, params = _build_data(self.apikey, 'get_ip')
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2379 response = api_call(self, params)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2380 expected = {
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2381 'server_ip_addr': '0.0.0.0',
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2382 'user_ips': []
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2383 }
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2384 self._compare_ok(id_, expected, given=response.body)
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2385
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2386 def test_api_get_server_info(self):
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2387 id_, params = _build_data(self.apikey, 'get_server_info')
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2388 response = api_call(self, params)
8687
5e46f73f0d1c model: always import the whole db module - drop "from" imports
Mads Kiilerich <mads@kiilerich.com>
parents: 8686
diff changeset
2389 expected = db.Setting.get_server_info()
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 3891
diff changeset
2390 self._compare_ok(id_, expected, given=response.body)
6652
b60fb9461b18 Add JSON-RPC API for reading changeset status
Eivind Tagseth <eivindt@gmail.com>
parents: 6638
diff changeset
2391
6683
19bc05bd8cf7 api: add get_changesets
domruf <dominikruf@gmail.com>
parents: 6676
diff changeset
2392 def test_api_get_changesets(self):
19bc05bd8cf7 api: add get_changesets
domruf <dominikruf@gmail.com>
parents: 6676
diff changeset
2393 id_, params = _build_data(self.apikey, 'get_changesets',
19bc05bd8cf7 api: add get_changesets
domruf <dominikruf@gmail.com>
parents: 6676
diff changeset
2394 repoid=self.REPO, start=0, end=2)
19bc05bd8cf7 api: add get_changesets
domruf <dominikruf@gmail.com>
parents: 6676
diff changeset
2395 response = api_call(self, params)
8120
58b6e4cd6fe9 lib: clean up ext_json and how it is used - avoid monkey patching
Mads Kiilerich <mads@kiilerich.com>
parents: 8109
diff changeset
2396 result = ext_json.loads(response.body)["result"]
6683
19bc05bd8cf7 api: add get_changesets
domruf <dominikruf@gmail.com>
parents: 6676
diff changeset
2397 assert len(result) == 3
6869
016481e43341 codingstyle: replace ".has_key(...)" with "... is in ..."
Lars Kruse <devel@sumpfralle.de>
parents: 6868
diff changeset
2398 assert 'message' in result[0]
016481e43341 codingstyle: replace ".has_key(...)" with "... is in ..."
Lars Kruse <devel@sumpfralle.de>
parents: 6868
diff changeset
2399 assert 'added' not in result[0]
6683
19bc05bd8cf7 api: add get_changesets
domruf <dominikruf@gmail.com>
parents: 6676
diff changeset
2400
7145
32e6957d0aac api: add max_revisions option to get_changesets
domruf <dominikruf@gmail.com>
parents: 7144
diff changeset
2401 def test_api_get_changesets_with_max_revisions(self):
32e6957d0aac api: add max_revisions option to get_changesets
domruf <dominikruf@gmail.com>
parents: 7144
diff changeset
2402 id_, params = _build_data(self.apikey, 'get_changesets',
32e6957d0aac api: add max_revisions option to get_changesets
domruf <dominikruf@gmail.com>
parents: 7144
diff changeset
2403 repoid=self.REPO, start_date="2011-02-24T00:00:00", max_revisions=10)
32e6957d0aac api: add max_revisions option to get_changesets
domruf <dominikruf@gmail.com>
parents: 7144
diff changeset
2404 response = api_call(self, params)
8120
58b6e4cd6fe9 lib: clean up ext_json and how it is used - avoid monkey patching
Mads Kiilerich <mads@kiilerich.com>
parents: 8109
diff changeset
2405 result = ext_json.loads(response.body)["result"]
7145
32e6957d0aac api: add max_revisions option to get_changesets
domruf <dominikruf@gmail.com>
parents: 7144
diff changeset
2406 assert len(result) == 10
32e6957d0aac api: add max_revisions option to get_changesets
domruf <dominikruf@gmail.com>
parents: 7144
diff changeset
2407 assert 'message' in result[0]
32e6957d0aac api: add max_revisions option to get_changesets
domruf <dominikruf@gmail.com>
parents: 7144
diff changeset
2408 assert 'added' not in result[0]
32e6957d0aac api: add max_revisions option to get_changesets
domruf <dominikruf@gmail.com>
parents: 7144
diff changeset
2409
7144
bfb1ae42bcbb vcs: fix get_changesets filtering on hg repo to AND the criteria instead of OR
domruf <dominikruf@gmail.com>
parents: 7140
diff changeset
2410 def test_api_get_changesets_with_branch(self):
bfb1ae42bcbb vcs: fix get_changesets filtering on hg repo to AND the criteria instead of OR
domruf <dominikruf@gmail.com>
parents: 7140
diff changeset
2411 if self.REPO == 'vcs_test_hg':
bfb1ae42bcbb vcs: fix get_changesets filtering on hg repo to AND the criteria instead of OR
domruf <dominikruf@gmail.com>
parents: 7140
diff changeset
2412 branch = 'stable'
bfb1ae42bcbb vcs: fix get_changesets filtering on hg repo to AND the criteria instead of OR
domruf <dominikruf@gmail.com>
parents: 7140
diff changeset
2413 else:
bfb1ae42bcbb vcs: fix get_changesets filtering on hg repo to AND the criteria instead of OR
domruf <dominikruf@gmail.com>
parents: 7140
diff changeset
2414 pytest.skip("skipping due to missing branches in git test repo")
bfb1ae42bcbb vcs: fix get_changesets filtering on hg repo to AND the criteria instead of OR
domruf <dominikruf@gmail.com>
parents: 7140
diff changeset
2415 id_, params = _build_data(self.apikey, 'get_changesets',
bfb1ae42bcbb vcs: fix get_changesets filtering on hg repo to AND the criteria instead of OR
domruf <dominikruf@gmail.com>
parents: 7140
diff changeset
2416 repoid=self.REPO, branch_name=branch, start_date="2011-02-24T00:00:00")
bfb1ae42bcbb vcs: fix get_changesets filtering on hg repo to AND the criteria instead of OR
domruf <dominikruf@gmail.com>
parents: 7140
diff changeset
2417 response = api_call(self, params)
8120
58b6e4cd6fe9 lib: clean up ext_json and how it is used - avoid monkey patching
Mads Kiilerich <mads@kiilerich.com>
parents: 8109
diff changeset
2418 result = ext_json.loads(response.body)["result"]
7144
bfb1ae42bcbb vcs: fix get_changesets filtering on hg repo to AND the criteria instead of OR
domruf <dominikruf@gmail.com>
parents: 7140
diff changeset
2419 assert len(result) == 5
bfb1ae42bcbb vcs: fix get_changesets filtering on hg repo to AND the criteria instead of OR
domruf <dominikruf@gmail.com>
parents: 7140
diff changeset
2420 assert 'message' in result[0]
bfb1ae42bcbb vcs: fix get_changesets filtering on hg repo to AND the criteria instead of OR
domruf <dominikruf@gmail.com>
parents: 7140
diff changeset
2421 assert 'added' not in result[0]
bfb1ae42bcbb vcs: fix get_changesets filtering on hg repo to AND the criteria instead of OR
domruf <dominikruf@gmail.com>
parents: 7140
diff changeset
2422
6683
19bc05bd8cf7 api: add get_changesets
domruf <dominikruf@gmail.com>
parents: 6676
diff changeset
2423 def test_api_get_changesets_with_file_list(self):
19bc05bd8cf7 api: add get_changesets
domruf <dominikruf@gmail.com>
parents: 6676
diff changeset
2424 id_, params = _build_data(self.apikey, 'get_changesets',
19bc05bd8cf7 api: add get_changesets
domruf <dominikruf@gmail.com>
parents: 6676
diff changeset
2425 repoid=self.REPO, start_date="2010-04-07T23:30:30", end_date="2010-04-08T00:31:14", with_file_list=True)
19bc05bd8cf7 api: add get_changesets
domruf <dominikruf@gmail.com>
parents: 6676
diff changeset
2426 response = api_call(self, params)
8120
58b6e4cd6fe9 lib: clean up ext_json and how it is used - avoid monkey patching
Mads Kiilerich <mads@kiilerich.com>
parents: 8109
diff changeset
2427 result = ext_json.loads(response.body)["result"]
6683
19bc05bd8cf7 api: add get_changesets
domruf <dominikruf@gmail.com>
parents: 6676
diff changeset
2428 assert len(result) == 3
6869
016481e43341 codingstyle: replace ".has_key(...)" with "... is in ..."
Lars Kruse <devel@sumpfralle.de>
parents: 6868
diff changeset
2429 assert 'message' in result[0]
016481e43341 codingstyle: replace ".has_key(...)" with "... is in ..."
Lars Kruse <devel@sumpfralle.de>
parents: 6868
diff changeset
2430 assert 'added' in result[0]
6683
19bc05bd8cf7 api: add get_changesets
domruf <dominikruf@gmail.com>
parents: 6676
diff changeset
2431
6652
b60fb9461b18 Add JSON-RPC API for reading changeset status
Eivind Tagseth <eivindt@gmail.com>
parents: 6638
diff changeset
2432 def test_api_get_changeset(self):
b60fb9461b18 Add JSON-RPC API for reading changeset status
Eivind Tagseth <eivindt@gmail.com>
parents: 6638
diff changeset
2433 review = fixture.review_changeset(self.REPO, self.TEST_REVISION, "approved")
b60fb9461b18 Add JSON-RPC API for reading changeset status
Eivind Tagseth <eivindt@gmail.com>
parents: 6638
diff changeset
2434 id_, params = _build_data(self.apikey, 'get_changeset',
6864
7691290837d2 codingstyle: trivial whitespace fixes
Lars Kruse <devel@sumpfralle.de>
parents: 6808
diff changeset
2435 repoid=self.REPO, raw_id=self.TEST_REVISION)
6652
b60fb9461b18 Add JSON-RPC API for reading changeset status
Eivind Tagseth <eivindt@gmail.com>
parents: 6638
diff changeset
2436 response = api_call(self, params)
8120
58b6e4cd6fe9 lib: clean up ext_json and how it is used - avoid monkey patching
Mads Kiilerich <mads@kiilerich.com>
parents: 8109
diff changeset
2437 result = ext_json.loads(response.body)["result"]
6652
b60fb9461b18 Add JSON-RPC API for reading changeset status
Eivind Tagseth <eivindt@gmail.com>
parents: 6638
diff changeset
2438 assert result["raw_id"] == self.TEST_REVISION
6869
016481e43341 codingstyle: replace ".has_key(...)" with "... is in ..."
Lars Kruse <devel@sumpfralle.de>
parents: 6868
diff changeset
2439 assert "reviews" not in result
6652
b60fb9461b18 Add JSON-RPC API for reading changeset status
Eivind Tagseth <eivindt@gmail.com>
parents: 6638
diff changeset
2440
b60fb9461b18 Add JSON-RPC API for reading changeset status
Eivind Tagseth <eivindt@gmail.com>
parents: 6638
diff changeset
2441 def test_api_get_changeset_with_reviews(self):
b60fb9461b18 Add JSON-RPC API for reading changeset status
Eivind Tagseth <eivindt@gmail.com>
parents: 6638
diff changeset
2442 reviewobjs = fixture.review_changeset(self.REPO, self.TEST_REVISION, "approved")
b60fb9461b18 Add JSON-RPC API for reading changeset status
Eivind Tagseth <eivindt@gmail.com>
parents: 6638
diff changeset
2443 id_, params = _build_data(self.apikey, 'get_changeset',
6864
7691290837d2 codingstyle: trivial whitespace fixes
Lars Kruse <devel@sumpfralle.de>
parents: 6808
diff changeset
2444 repoid=self.REPO, raw_id=self.TEST_REVISION,
7691290837d2 codingstyle: trivial whitespace fixes
Lars Kruse <devel@sumpfralle.de>
parents: 6808
diff changeset
2445 with_reviews=True)
6652
b60fb9461b18 Add JSON-RPC API for reading changeset status
Eivind Tagseth <eivindt@gmail.com>
parents: 6638
diff changeset
2446 response = api_call(self, params)
8120
58b6e4cd6fe9 lib: clean up ext_json and how it is used - avoid monkey patching
Mads Kiilerich <mads@kiilerich.com>
parents: 8109
diff changeset
2447 result = ext_json.loads(response.body)["result"]
6652
b60fb9461b18 Add JSON-RPC API for reading changeset status
Eivind Tagseth <eivindt@gmail.com>
parents: 6638
diff changeset
2448 assert result["raw_id"] == self.TEST_REVISION
6869
016481e43341 codingstyle: replace ".has_key(...)" with "... is in ..."
Lars Kruse <devel@sumpfralle.de>
parents: 6868
diff changeset
2449 assert "reviews" in result
6652
b60fb9461b18 Add JSON-RPC API for reading changeset status
Eivind Tagseth <eivindt@gmail.com>
parents: 6638
diff changeset
2450 assert len(result["reviews"]) == 1
b60fb9461b18 Add JSON-RPC API for reading changeset status
Eivind Tagseth <eivindt@gmail.com>
parents: 6638
diff changeset
2451 review = result["reviews"][0]
b60fb9461b18 Add JSON-RPC API for reading changeset status
Eivind Tagseth <eivindt@gmail.com>
parents: 6638
diff changeset
2452 expected = {
b60fb9461b18 Add JSON-RPC API for reading changeset status
Eivind Tagseth <eivindt@gmail.com>
parents: 6638
diff changeset
2453 'status': 'approved',
6808
71033bd37b4c api: change precision of ChangesetStatus.modified_at to seconds
domruf <dominikruf@gmail.com>
parents: 6683
diff changeset
2454 'modified_at': reviewobjs[0].modified_at.replace(microsecond=0).isoformat(),
6652
b60fb9461b18 Add JSON-RPC API for reading changeset status
Eivind Tagseth <eivindt@gmail.com>
parents: 6638
diff changeset
2455 'reviewer': 'test_admin',
b60fb9461b18 Add JSON-RPC API for reading changeset status
Eivind Tagseth <eivindt@gmail.com>
parents: 6638
diff changeset
2456 }
b60fb9461b18 Add JSON-RPC API for reading changeset status
Eivind Tagseth <eivindt@gmail.com>
parents: 6638
diff changeset
2457 assert review == expected
b60fb9461b18 Add JSON-RPC API for reading changeset status
Eivind Tagseth <eivindt@gmail.com>
parents: 6638
diff changeset
2458
b60fb9461b18 Add JSON-RPC API for reading changeset status
Eivind Tagseth <eivindt@gmail.com>
parents: 6638
diff changeset
2459 def test_api_get_changeset_that_does_not_exist(self):
b60fb9461b18 Add JSON-RPC API for reading changeset status
Eivind Tagseth <eivindt@gmail.com>
parents: 6638
diff changeset
2460 """ Fetch changeset status for non-existant changeset.
b60fb9461b18 Add JSON-RPC API for reading changeset status
Eivind Tagseth <eivindt@gmail.com>
parents: 6638
diff changeset
2461 revision id is the above git hash used in the test above with the
b60fb9461b18 Add JSON-RPC API for reading changeset status
Eivind Tagseth <eivindt@gmail.com>
parents: 6638
diff changeset
2462 last 3 nibbles replaced with 0xf. Should not exist for git _or_ hg.
b60fb9461b18 Add JSON-RPC API for reading changeset status
Eivind Tagseth <eivindt@gmail.com>
parents: 6638
diff changeset
2463 """
b60fb9461b18 Add JSON-RPC API for reading changeset status
Eivind Tagseth <eivindt@gmail.com>
parents: 6638
diff changeset
2464 id_, params = _build_data(self.apikey, 'get_changeset',
b60fb9461b18 Add JSON-RPC API for reading changeset status
Eivind Tagseth <eivindt@gmail.com>
parents: 6638
diff changeset
2465 repoid=self.REPO, raw_id = '7ab37bc680b4aa72c34d07b230c866c28e9fcfff')
b60fb9461b18 Add JSON-RPC API for reading changeset status
Eivind Tagseth <eivindt@gmail.com>
parents: 6638
diff changeset
2466 response = api_call(self, params)
8224
e63bcce18fef py3: automatic migration with 2to3 -f unicode
Mads Kiilerich <mads@kiilerich.com>
parents: 8120
diff changeset
2467 expected = 'Changeset %s does not exist' % ('7ab37bc680b4aa72c34d07b230c866c28e9fcfff',)
6652
b60fb9461b18 Add JSON-RPC API for reading changeset status
Eivind Tagseth <eivindt@gmail.com>
parents: 6638
diff changeset
2468 self._compare_error(id_, expected, given=response.body)
b60fb9461b18 Add JSON-RPC API for reading changeset status
Eivind Tagseth <eivindt@gmail.com>
parents: 6638
diff changeset
2469
b60fb9461b18 Add JSON-RPC API for reading changeset status
Eivind Tagseth <eivindt@gmail.com>
parents: 6638
diff changeset
2470 def test_api_get_changeset_without_permission(self):
b60fb9461b18 Add JSON-RPC API for reading changeset status
Eivind Tagseth <eivindt@gmail.com>
parents: 6638
diff changeset
2471 review = fixture.review_changeset(self.REPO, self.TEST_REVISION, "approved")
b60fb9461b18 Add JSON-RPC API for reading changeset status
Eivind Tagseth <eivindt@gmail.com>
parents: 6638
diff changeset
2472 RepoModel().revoke_user_permission(repo=self.REPO, user=self.TEST_USER_LOGIN)
b60fb9461b18 Add JSON-RPC API for reading changeset status
Eivind Tagseth <eivindt@gmail.com>
parents: 6638
diff changeset
2473 RepoModel().revoke_user_permission(repo=self.REPO, user="default")
b60fb9461b18 Add JSON-RPC API for reading changeset status
Eivind Tagseth <eivindt@gmail.com>
parents: 6638
diff changeset
2474 id_, params = _build_data(self.apikey_regular, 'get_changeset',
6864
7691290837d2 codingstyle: trivial whitespace fixes
Lars Kruse <devel@sumpfralle.de>
parents: 6808
diff changeset
2475 repoid=self.REPO, raw_id=self.TEST_REVISION)
6652
b60fb9461b18 Add JSON-RPC API for reading changeset status
Eivind Tagseth <eivindt@gmail.com>
parents: 6638
diff changeset
2476 response = api_call(self, params)
8224
e63bcce18fef py3: automatic migration with 2to3 -f unicode
Mads Kiilerich <mads@kiilerich.com>
parents: 8120
diff changeset
2477 expected = 'Access denied to repo %s' % self.REPO
6652
b60fb9461b18 Add JSON-RPC API for reading changeset status
Eivind Tagseth <eivindt@gmail.com>
parents: 6638
diff changeset
2478 self._compare_error(id_, expected, given=response.body)
6655
6452215a54ee api: add get_pullrequest and comment_pullrequest methods
domruf <dominikruf@gmail.com>
parents: 6654
diff changeset
2479
6452215a54ee api: add get_pullrequest and comment_pullrequest methods
domruf <dominikruf@gmail.com>
parents: 6654
diff changeset
2480 def test_api_get_pullrequest(self):
8224
e63bcce18fef py3: automatic migration with 2to3 -f unicode
Mads Kiilerich <mads@kiilerich.com>
parents: 8120
diff changeset
2481 pull_request_id = fixture.create_pullrequest(self, self.REPO, self.TEST_PR_SRC, self.TEST_PR_DST, 'get test')
6655
6452215a54ee api: add get_pullrequest and comment_pullrequest methods
domruf <dominikruf@gmail.com>
parents: 6654
diff changeset
2482 random_id = random.randrange(1, 9999)
8120
58b6e4cd6fe9 lib: clean up ext_json and how it is used - avoid monkey patching
Mads Kiilerich <mads@kiilerich.com>
parents: 8109
diff changeset
2483 params = ascii_bytes(ext_json.dumps({
6655
6452215a54ee api: add get_pullrequest and comment_pullrequest methods
domruf <dominikruf@gmail.com>
parents: 6654
diff changeset
2484 "id": random_id,
6452215a54ee api: add get_pullrequest and comment_pullrequest methods
domruf <dominikruf@gmail.com>
parents: 6654
diff changeset
2485 "api_key": self.apikey,
6452215a54ee api: add get_pullrequest and comment_pullrequest methods
domruf <dominikruf@gmail.com>
parents: 6654
diff changeset
2486 "method": 'get_pullrequest',
6452215a54ee api: add get_pullrequest and comment_pullrequest methods
domruf <dominikruf@gmail.com>
parents: 6654
diff changeset
2487 "args": {"pullrequest_id": pull_request_id},
8120
58b6e4cd6fe9 lib: clean up ext_json and how it is used - avoid monkey patching
Mads Kiilerich <mads@kiilerich.com>
parents: 8109
diff changeset
2488 }))
6655
6452215a54ee api: add get_pullrequest and comment_pullrequest methods
domruf <dominikruf@gmail.com>
parents: 6654
diff changeset
2489 response = api_call(self, params)
8687
5e46f73f0d1c model: always import the whole db module - drop "from" imports
Mads Kiilerich <mads@kiilerich.com>
parents: 8686
diff changeset
2490 pullrequest = db.PullRequest().get(pull_request_id)
6655
6452215a54ee api: add get_pullrequest and comment_pullrequest methods
domruf <dominikruf@gmail.com>
parents: 6654
diff changeset
2491 expected = {
6452215a54ee api: add get_pullrequest and comment_pullrequest methods
domruf <dominikruf@gmail.com>
parents: 6654
diff changeset
2492 "status": "new",
6452215a54ee api: add get_pullrequest and comment_pullrequest methods
domruf <dominikruf@gmail.com>
parents: 6654
diff changeset
2493 "pull_request_id": pull_request_id,
6452215a54ee api: add get_pullrequest and comment_pullrequest methods
domruf <dominikruf@gmail.com>
parents: 6654
diff changeset
2494 "description": "No description",
6452215a54ee api: add get_pullrequest and comment_pullrequest methods
domruf <dominikruf@gmail.com>
parents: 6654
diff changeset
2495 "url": "/%s/pull-request/%s/_/%s" % (self.REPO, pull_request_id, "stable"),
6452215a54ee api: add get_pullrequest and comment_pullrequest methods
domruf <dominikruf@gmail.com>
parents: 6654
diff changeset
2496 "reviewers": [{"username": "test_regular"}],
6452215a54ee api: add get_pullrequest and comment_pullrequest methods
domruf <dominikruf@gmail.com>
parents: 6654
diff changeset
2497 "org_repo_url": "http://localhost:80/%s" % self.REPO,
6452215a54ee api: add get_pullrequest and comment_pullrequest methods
domruf <dominikruf@gmail.com>
parents: 6654
diff changeset
2498 "org_ref_parts": ["branch", "stable", self.TEST_PR_SRC],
6452215a54ee api: add get_pullrequest and comment_pullrequest methods
domruf <dominikruf@gmail.com>
parents: 6654
diff changeset
2499 "other_ref_parts": ["branch", "default", self.TEST_PR_DST],
8109
e527cc2ce8dc cleanup: get rid of most "import *"
Mads Kiilerich <mads@kiilerich.com>
parents: 8078
diff changeset
2500 "comments": [{"username": base.TEST_USER_ADMIN_LOGIN, "text": "",
6655
6452215a54ee api: add get_pullrequest and comment_pullrequest methods
domruf <dominikruf@gmail.com>
parents: 6654
diff changeset
2501 "comment_id": pullrequest.comments[0].comment_id}],
8109
e527cc2ce8dc cleanup: get rid of most "import *"
Mads Kiilerich <mads@kiilerich.com>
parents: 8078
diff changeset
2502 "owner": base.TEST_USER_ADMIN_LOGIN,
e527cc2ce8dc cleanup: get rid of most "import *"
Mads Kiilerich <mads@kiilerich.com>
parents: 8078
diff changeset
2503 "statuses": [{"status": "under_review", "reviewer": base.TEST_USER_ADMIN_LOGIN, "modified_at": "2000-01-01T00:00:00"} for i in range(0, len(self.TEST_PR_REVISIONS))],
6655
6452215a54ee api: add get_pullrequest and comment_pullrequest methods
domruf <dominikruf@gmail.com>
parents: 6654
diff changeset
2504 "title": "get test",
6452215a54ee api: add get_pullrequest and comment_pullrequest methods
domruf <dominikruf@gmail.com>
parents: 6654
diff changeset
2505 "revisions": self.TEST_PR_REVISIONS,
8644
e24531aa2449 api: extend get_pullrequest data with created_on and updated_on fields
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8599
diff changeset
2506 "created_on": "2000-01-01T00:00:00",
e24531aa2449 api: extend get_pullrequest data with created_on and updated_on fields
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8599
diff changeset
2507 "updated_on": "2000-01-01T00:00:00",
6655
6452215a54ee api: add get_pullrequest and comment_pullrequest methods
domruf <dominikruf@gmail.com>
parents: 6654
diff changeset
2508 }
6452215a54ee api: add get_pullrequest and comment_pullrequest methods
domruf <dominikruf@gmail.com>
parents: 6654
diff changeset
2509 self._compare_ok(random_id, expected,
8078
45bfab30d433 py3: add b'' annotations in some places where they will be needed later
Mads Kiilerich <mads@kiilerich.com>
parents: 8044
diff changeset
2510 given=re.sub(br"\d\d\d\d\-\d\d\-\d\dT\d\d\:\d\d\:\d\d",
45bfab30d433 py3: add b'' annotations in some places where they will be needed later
Mads Kiilerich <mads@kiilerich.com>
parents: 8044
diff changeset
2511 b"2000-01-01T00:00:00", response.body))
6655
6452215a54ee api: add get_pullrequest and comment_pullrequest methods
domruf <dominikruf@gmail.com>
parents: 6654
diff changeset
2512
6452215a54ee api: add get_pullrequest and comment_pullrequest methods
domruf <dominikruf@gmail.com>
parents: 6654
diff changeset
2513 def test_api_close_pullrequest(self):
8224
e63bcce18fef py3: automatic migration with 2to3 -f unicode
Mads Kiilerich <mads@kiilerich.com>
parents: 8120
diff changeset
2514 pull_request_id = fixture.create_pullrequest(self, self.REPO, self.TEST_PR_SRC, self.TEST_PR_DST, 'close test')
6655
6452215a54ee api: add get_pullrequest and comment_pullrequest methods
domruf <dominikruf@gmail.com>
parents: 6654
diff changeset
2515 random_id = random.randrange(1, 9999)
8120
58b6e4cd6fe9 lib: clean up ext_json and how it is used - avoid monkey patching
Mads Kiilerich <mads@kiilerich.com>
parents: 8109
diff changeset
2516 params = ascii_bytes(ext_json.dumps({
6655
6452215a54ee api: add get_pullrequest and comment_pullrequest methods
domruf <dominikruf@gmail.com>
parents: 6654
diff changeset
2517 "id": random_id,
6452215a54ee api: add get_pullrequest and comment_pullrequest methods
domruf <dominikruf@gmail.com>
parents: 6654
diff changeset
2518 "api_key": self.apikey,
6452215a54ee api: add get_pullrequest and comment_pullrequest methods
domruf <dominikruf@gmail.com>
parents: 6654
diff changeset
2519 "method": "comment_pullrequest",
6452215a54ee api: add get_pullrequest and comment_pullrequest methods
domruf <dominikruf@gmail.com>
parents: 6654
diff changeset
2520 "args": {"pull_request_id": pull_request_id, "close_pr": True},
8120
58b6e4cd6fe9 lib: clean up ext_json and how it is used - avoid monkey patching
Mads Kiilerich <mads@kiilerich.com>
parents: 8109
diff changeset
2521 }))
6655
6452215a54ee api: add get_pullrequest and comment_pullrequest methods
domruf <dominikruf@gmail.com>
parents: 6654
diff changeset
2522 response = api_call(self, params)
6452215a54ee api: add get_pullrequest and comment_pullrequest methods
domruf <dominikruf@gmail.com>
parents: 6654
diff changeset
2523 self._compare_ok(random_id, True, given=response.body)
8687
5e46f73f0d1c model: always import the whole db module - drop "from" imports
Mads Kiilerich <mads@kiilerich.com>
parents: 8686
diff changeset
2524 pullrequest = db.PullRequest().get(pull_request_id)
6655
6452215a54ee api: add get_pullrequest and comment_pullrequest methods
domruf <dominikruf@gmail.com>
parents: 6654
diff changeset
2525 assert pullrequest.comments[-1].text == ''
8687
5e46f73f0d1c model: always import the whole db module - drop "from" imports
Mads Kiilerich <mads@kiilerich.com>
parents: 8686
diff changeset
2526 assert pullrequest.status == db.PullRequest.STATUS_CLOSED
6655
6452215a54ee api: add get_pullrequest and comment_pullrequest methods
domruf <dominikruf@gmail.com>
parents: 6654
diff changeset
2527 assert pullrequest.is_closed() == True
6452215a54ee api: add get_pullrequest and comment_pullrequest methods
domruf <dominikruf@gmail.com>
parents: 6654
diff changeset
2528
6452215a54ee api: add get_pullrequest and comment_pullrequest methods
domruf <dominikruf@gmail.com>
parents: 6654
diff changeset
2529 def test_api_status_pullrequest(self):
8224
e63bcce18fef py3: automatic migration with 2to3 -f unicode
Mads Kiilerich <mads@kiilerich.com>
parents: 8120
diff changeset
2530 pull_request_id = fixture.create_pullrequest(self, self.REPO, self.TEST_PR_SRC, self.TEST_PR_DST, "status test")
6655
6452215a54ee api: add get_pullrequest and comment_pullrequest methods
domruf <dominikruf@gmail.com>
parents: 6654
diff changeset
2531
6452215a54ee api: add get_pullrequest and comment_pullrequest methods
domruf <dominikruf@gmail.com>
parents: 6654
diff changeset
2532 random_id = random.randrange(1, 9999)
8120
58b6e4cd6fe9 lib: clean up ext_json and how it is used - avoid monkey patching
Mads Kiilerich <mads@kiilerich.com>
parents: 8109
diff changeset
2533 params = ascii_bytes(ext_json.dumps({
6655
6452215a54ee api: add get_pullrequest and comment_pullrequest methods
domruf <dominikruf@gmail.com>
parents: 6654
diff changeset
2534 "id": random_id,
8687
5e46f73f0d1c model: always import the whole db module - drop "from" imports
Mads Kiilerich <mads@kiilerich.com>
parents: 8686
diff changeset
2535 "api_key": db.User.get_by_username(base.TEST_USER_REGULAR2_LOGIN).api_key,
6655
6452215a54ee api: add get_pullrequest and comment_pullrequest methods
domruf <dominikruf@gmail.com>
parents: 6654
diff changeset
2536 "method": "comment_pullrequest",
8687
5e46f73f0d1c model: always import the whole db module - drop "from" imports
Mads Kiilerich <mads@kiilerich.com>
parents: 8686
diff changeset
2537 "args": {"pull_request_id": pull_request_id, "status": db.ChangesetStatus.STATUS_APPROVED},
8120
58b6e4cd6fe9 lib: clean up ext_json and how it is used - avoid monkey patching
Mads Kiilerich <mads@kiilerich.com>
parents: 8109
diff changeset
2538 }))
6655
6452215a54ee api: add get_pullrequest and comment_pullrequest methods
domruf <dominikruf@gmail.com>
parents: 6654
diff changeset
2539 response = api_call(self, params)
8687
5e46f73f0d1c model: always import the whole db module - drop "from" imports
Mads Kiilerich <mads@kiilerich.com>
parents: 8686
diff changeset
2540 pullrequest = db.PullRequest().get(pull_request_id)
6655
6452215a54ee api: add get_pullrequest and comment_pullrequest methods
domruf <dominikruf@gmail.com>
parents: 6654
diff changeset
2541 self._compare_error(random_id, "No permission to change pull request status. User needs to be admin, owner or reviewer.", given=response.body)
8687
5e46f73f0d1c model: always import the whole db module - drop "from" imports
Mads Kiilerich <mads@kiilerich.com>
parents: 8686
diff changeset
2542 assert db.ChangesetStatus.STATUS_UNDER_REVIEW == ChangesetStatusModel().calculate_pull_request_result(pullrequest)[2]
8120
58b6e4cd6fe9 lib: clean up ext_json and how it is used - avoid monkey patching
Mads Kiilerich <mads@kiilerich.com>
parents: 8109
diff changeset
2543 params = ascii_bytes(ext_json.dumps({
6655
6452215a54ee api: add get_pullrequest and comment_pullrequest methods
domruf <dominikruf@gmail.com>
parents: 6654
diff changeset
2544 "id": random_id,
8687
5e46f73f0d1c model: always import the whole db module - drop "from" imports
Mads Kiilerich <mads@kiilerich.com>
parents: 8686
diff changeset
2545 "api_key": db.User.get_by_username(base.TEST_USER_REGULAR_LOGIN).api_key,
6655
6452215a54ee api: add get_pullrequest and comment_pullrequest methods
domruf <dominikruf@gmail.com>
parents: 6654
diff changeset
2546 "method": "comment_pullrequest",
8687
5e46f73f0d1c model: always import the whole db module - drop "from" imports
Mads Kiilerich <mads@kiilerich.com>
parents: 8686
diff changeset
2547 "args": {"pull_request_id": pull_request_id, "status": db.ChangesetStatus.STATUS_APPROVED},
8120
58b6e4cd6fe9 lib: clean up ext_json and how it is used - avoid monkey patching
Mads Kiilerich <mads@kiilerich.com>
parents: 8109
diff changeset
2548 }))
6655
6452215a54ee api: add get_pullrequest and comment_pullrequest methods
domruf <dominikruf@gmail.com>
parents: 6654
diff changeset
2549 response = api_call(self, params)
6452215a54ee api: add get_pullrequest and comment_pullrequest methods
domruf <dominikruf@gmail.com>
parents: 6654
diff changeset
2550 self._compare_ok(random_id, True, given=response.body)
8687
5e46f73f0d1c model: always import the whole db module - drop "from" imports
Mads Kiilerich <mads@kiilerich.com>
parents: 8686
diff changeset
2551 pullrequest = db.PullRequest().get(pull_request_id)
5e46f73f0d1c model: always import the whole db module - drop "from" imports
Mads Kiilerich <mads@kiilerich.com>
parents: 8686
diff changeset
2552 assert db.ChangesetStatus.STATUS_APPROVED == ChangesetStatusModel().calculate_pull_request_result(pullrequest)[2]
6655
6452215a54ee api: add get_pullrequest and comment_pullrequest methods
domruf <dominikruf@gmail.com>
parents: 6654
diff changeset
2553
6452215a54ee api: add get_pullrequest and comment_pullrequest methods
domruf <dominikruf@gmail.com>
parents: 6654
diff changeset
2554 def test_api_comment_pullrequest(self):
8224
e63bcce18fef py3: automatic migration with 2to3 -f unicode
Mads Kiilerich <mads@kiilerich.com>
parents: 8120
diff changeset
2555 pull_request_id = fixture.create_pullrequest(self, self.REPO, self.TEST_PR_SRC, self.TEST_PR_DST, "comment test")
6655
6452215a54ee api: add get_pullrequest and comment_pullrequest methods
domruf <dominikruf@gmail.com>
parents: 6654
diff changeset
2556 random_id = random.randrange(1, 9999)
8120
58b6e4cd6fe9 lib: clean up ext_json and how it is used - avoid monkey patching
Mads Kiilerich <mads@kiilerich.com>
parents: 8109
diff changeset
2557 params = ascii_bytes(ext_json.dumps({
6655
6452215a54ee api: add get_pullrequest and comment_pullrequest methods
domruf <dominikruf@gmail.com>
parents: 6654
diff changeset
2558 "id": random_id,
6452215a54ee api: add get_pullrequest and comment_pullrequest methods
domruf <dominikruf@gmail.com>
parents: 6654
diff changeset
2559 "api_key": self.apikey,
6452215a54ee api: add get_pullrequest and comment_pullrequest methods
domruf <dominikruf@gmail.com>
parents: 6654
diff changeset
2560 "method": "comment_pullrequest",
6452215a54ee api: add get_pullrequest and comment_pullrequest methods
domruf <dominikruf@gmail.com>
parents: 6654
diff changeset
2561 "args": {"pull_request_id": pull_request_id, "comment_msg": "Looks good to me"},
8120
58b6e4cd6fe9 lib: clean up ext_json and how it is used - avoid monkey patching
Mads Kiilerich <mads@kiilerich.com>
parents: 8109
diff changeset
2562 }))
6655
6452215a54ee api: add get_pullrequest and comment_pullrequest methods
domruf <dominikruf@gmail.com>
parents: 6654
diff changeset
2563 response = api_call(self, params)
6452215a54ee api: add get_pullrequest and comment_pullrequest methods
domruf <dominikruf@gmail.com>
parents: 6654
diff changeset
2564 self._compare_ok(random_id, True, given=response.body)
8687
5e46f73f0d1c model: always import the whole db module - drop "from" imports
Mads Kiilerich <mads@kiilerich.com>
parents: 8686
diff changeset
2565 pullrequest = db.PullRequest().get(pull_request_id)
8224
e63bcce18fef py3: automatic migration with 2to3 -f unicode
Mads Kiilerich <mads@kiilerich.com>
parents: 8120
diff changeset
2566 assert pullrequest.comments[-1].text == 'Looks good to me'
8656
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2567
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2568 def test_api_edit_reviewers_add_single(self):
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2569 pull_request_id = fixture.create_pullrequest(self, self.REPO, self.TEST_PR_SRC, self.TEST_PR_DST, 'edit reviewer test')
8687
5e46f73f0d1c model: always import the whole db module - drop "from" imports
Mads Kiilerich <mads@kiilerich.com>
parents: 8686
diff changeset
2570 pullrequest = db.PullRequest().get(pull_request_id)
8656
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2571 pullrequest.owner = self.test_user
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2572 random_id = random.randrange(1, 9999)
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2573 params = ascii_bytes(ext_json.dumps({
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2574 "id": random_id,
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2575 "api_key": self.apikey_regular,
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2576 "method": "edit_reviewers",
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2577 "args": {"pull_request_id": pull_request_id, "add": base.TEST_USER_REGULAR2_LOGIN},
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2578 }))
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2579 response = api_call(self, params)
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2580 expected = { 'added': [base.TEST_USER_REGULAR2_LOGIN], 'already_present': [], 'removed': [] }
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2581
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2582 self._compare_ok(random_id, expected, given=response.body)
8687
5e46f73f0d1c model: always import the whole db module - drop "from" imports
Mads Kiilerich <mads@kiilerich.com>
parents: 8686
diff changeset
2583 assert db.User.get_by_username(base.TEST_USER_REGULAR2_LOGIN) in pullrequest.get_reviewer_users()
8656
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2584
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2585 def test_api_edit_reviewers_add_nonexistent(self):
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2586 pull_request_id = fixture.create_pullrequest(self, self.REPO, self.TEST_PR_SRC, self.TEST_PR_DST, 'edit reviewer test')
8687
5e46f73f0d1c model: always import the whole db module - drop "from" imports
Mads Kiilerich <mads@kiilerich.com>
parents: 8686
diff changeset
2587 pullrequest = db.PullRequest().get(pull_request_id)
8656
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2588 pullrequest.owner = self.test_user
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2589 random_id = random.randrange(1, 9999)
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2590 params = ascii_bytes(ext_json.dumps({
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2591 "id": random_id,
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2592 "api_key": self.apikey_regular,
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2593 "method": "edit_reviewers",
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2594 "args": {"pull_request_id": pull_request_id, "add": 999},
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2595 }))
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2596 response = api_call(self, params)
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2597
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2598 self._compare_error(random_id, "user `999` does not exist", given=response.body)
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2599
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2600 def test_api_edit_reviewers_add_multiple(self):
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2601 pull_request_id = fixture.create_pullrequest(self, self.REPO, self.TEST_PR_SRC, self.TEST_PR_DST, 'edit reviewer test')
8687
5e46f73f0d1c model: always import the whole db module - drop "from" imports
Mads Kiilerich <mads@kiilerich.com>
parents: 8686
diff changeset
2602 pullrequest = db.PullRequest().get(pull_request_id)
8656
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2603 pullrequest.owner = self.test_user
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2604 random_id = random.randrange(1, 9999)
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2605 params = ascii_bytes(ext_json.dumps({
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2606 "id": random_id,
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2607 "api_key": self.apikey_regular,
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2608 "method": "edit_reviewers",
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2609 "args": {
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2610 "pull_request_id": pull_request_id,
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2611 "add": [ self.TEST_USER_LOGIN, base.TEST_USER_REGULAR2_LOGIN ]
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2612 },
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2613 }))
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2614 response = api_call(self, params)
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2615 # list order depends on python sorting hash, which is randomized
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2616 assert set(ext_json.loads(response.body)['result']['added']) == set([base.TEST_USER_REGULAR2_LOGIN, self.TEST_USER_LOGIN])
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2617 assert set(ext_json.loads(response.body)['result']['already_present']) == set()
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2618 assert set(ext_json.loads(response.body)['result']['removed']) == set()
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2619
8687
5e46f73f0d1c model: always import the whole db module - drop "from" imports
Mads Kiilerich <mads@kiilerich.com>
parents: 8686
diff changeset
2620 assert db.User.get_by_username(base.TEST_USER_REGULAR2_LOGIN) in pullrequest.get_reviewer_users()
5e46f73f0d1c model: always import the whole db module - drop "from" imports
Mads Kiilerich <mads@kiilerich.com>
parents: 8686
diff changeset
2621 assert db.User.get_by_username(self.TEST_USER_LOGIN) in pullrequest.get_reviewer_users()
8656
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2622
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2623 def test_api_edit_reviewers_add_already_present(self):
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2624 pull_request_id = fixture.create_pullrequest(self, self.REPO, self.TEST_PR_SRC, self.TEST_PR_DST, 'edit reviewer test')
8687
5e46f73f0d1c model: always import the whole db module - drop "from" imports
Mads Kiilerich <mads@kiilerich.com>
parents: 8686
diff changeset
2625 pullrequest = db.PullRequest().get(pull_request_id)
8656
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2626 pullrequest.owner = self.test_user
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2627 random_id = random.randrange(1, 9999)
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2628 params = ascii_bytes(ext_json.dumps({
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2629 "id": random_id,
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2630 "api_key": self.apikey_regular,
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2631 "method": "edit_reviewers",
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2632 "args": {
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2633 "pull_request_id": pull_request_id,
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2634 "add": [ base.TEST_USER_REGULAR_LOGIN, base.TEST_USER_REGULAR2_LOGIN ]
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2635 },
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2636 }))
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2637 response = api_call(self, params)
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2638 expected = { 'added': [base.TEST_USER_REGULAR2_LOGIN],
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2639 'already_present': [base.TEST_USER_REGULAR_LOGIN],
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2640 'removed': [],
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2641 }
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2642
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2643 self._compare_ok(random_id, expected, given=response.body)
8687
5e46f73f0d1c model: always import the whole db module - drop "from" imports
Mads Kiilerich <mads@kiilerich.com>
parents: 8686
diff changeset
2644 assert db.User.get_by_username(base.TEST_USER_REGULAR_LOGIN) in pullrequest.get_reviewer_users()
5e46f73f0d1c model: always import the whole db module - drop "from" imports
Mads Kiilerich <mads@kiilerich.com>
parents: 8686
diff changeset
2645 assert db.User.get_by_username(base.TEST_USER_REGULAR2_LOGIN) in pullrequest.get_reviewer_users()
8656
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2646
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2647 def test_api_edit_reviewers_add_closed(self):
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2648 pull_request_id = fixture.create_pullrequest(self, self.REPO, self.TEST_PR_SRC, self.TEST_PR_DST, 'edit reviewer test')
8687
5e46f73f0d1c model: always import the whole db module - drop "from" imports
Mads Kiilerich <mads@kiilerich.com>
parents: 8686
diff changeset
2649 pullrequest = db.PullRequest().get(pull_request_id)
8656
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2650 pullrequest.owner = self.test_user
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2651 PullRequestModel().close_pull_request(pull_request_id)
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2652 random_id = random.randrange(1, 9999)
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2653 params = ascii_bytes(ext_json.dumps({
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2654 "id": random_id,
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2655 "api_key": self.apikey_regular,
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2656 "method": "edit_reviewers",
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2657 "args": {"pull_request_id": pull_request_id, "add": base.TEST_USER_REGULAR2_LOGIN},
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2658 }))
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2659 response = api_call(self, params)
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2660 self._compare_error(random_id, "Cannot edit reviewers of a closed pull request.", given=response.body)
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2661
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2662 def test_api_edit_reviewers_add_not_owner(self):
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2663 pull_request_id = fixture.create_pullrequest(self, self.REPO, self.TEST_PR_SRC, self.TEST_PR_DST, 'edit reviewer test')
8687
5e46f73f0d1c model: always import the whole db module - drop "from" imports
Mads Kiilerich <mads@kiilerich.com>
parents: 8686
diff changeset
2664 pullrequest = db.PullRequest().get(pull_request_id)
5e46f73f0d1c model: always import the whole db module - drop "from" imports
Mads Kiilerich <mads@kiilerich.com>
parents: 8686
diff changeset
2665 pullrequest.owner = db.User.get_by_username(base.TEST_USER_REGULAR_LOGIN)
8656
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2666 random_id = random.randrange(1, 9999)
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2667 params = ascii_bytes(ext_json.dumps({
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2668 "id": random_id,
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2669 "api_key": self.apikey_regular,
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2670 "method": "edit_reviewers",
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2671 "args": {"pull_request_id": pull_request_id, "add": base.TEST_USER_REGULAR2_LOGIN},
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2672 }))
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2673 response = api_call(self, params)
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2674 self._compare_error(random_id, "No permission to edit reviewers of this pull request. User needs to be admin or pull request owner.", given=response.body)
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2675
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2676
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2677 def test_api_edit_reviewers_remove_single(self):
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2678 pull_request_id = fixture.create_pullrequest(self, self.REPO, self.TEST_PR_SRC, self.TEST_PR_DST, 'edit reviewer test')
8687
5e46f73f0d1c model: always import the whole db module - drop "from" imports
Mads Kiilerich <mads@kiilerich.com>
parents: 8686
diff changeset
2679 pullrequest = db.PullRequest().get(pull_request_id)
5e46f73f0d1c model: always import the whole db module - drop "from" imports
Mads Kiilerich <mads@kiilerich.com>
parents: 8686
diff changeset
2680 assert db.User.get_by_username(base.TEST_USER_REGULAR_LOGIN) in pullrequest.get_reviewer_users()
8656
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2681
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2682 pullrequest.owner = self.test_user
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2683 random_id = random.randrange(1, 9999)
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2684 params = ascii_bytes(ext_json.dumps({
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2685 "id": random_id,
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2686 "api_key": self.apikey_regular,
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2687 "method": "edit_reviewers",
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2688 "args": {"pull_request_id": pull_request_id, "remove": base.TEST_USER_REGULAR_LOGIN},
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2689 }))
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2690 response = api_call(self, params)
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2691
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2692 expected = { 'added': [],
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2693 'already_present': [],
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2694 'removed': [base.TEST_USER_REGULAR_LOGIN],
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2695 }
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2696 self._compare_ok(random_id, expected, given=response.body)
8687
5e46f73f0d1c model: always import the whole db module - drop "from" imports
Mads Kiilerich <mads@kiilerich.com>
parents: 8686
diff changeset
2697 assert db.User.get_by_username(base.TEST_USER_REGULAR_LOGIN) not in pullrequest.get_reviewer_users()
8656
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2698
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2699 def test_api_edit_reviewers_remove_nonexistent(self):
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2700 pull_request_id = fixture.create_pullrequest(self, self.REPO, self.TEST_PR_SRC, self.TEST_PR_DST, 'edit reviewer test')
8687
5e46f73f0d1c model: always import the whole db module - drop "from" imports
Mads Kiilerich <mads@kiilerich.com>
parents: 8686
diff changeset
2701 pullrequest = db.PullRequest().get(pull_request_id)
5e46f73f0d1c model: always import the whole db module - drop "from" imports
Mads Kiilerich <mads@kiilerich.com>
parents: 8686
diff changeset
2702 assert db.User.get_by_username(base.TEST_USER_REGULAR_LOGIN) in pullrequest.get_reviewer_users()
8656
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2703
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2704 pullrequest.owner = self.test_user
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2705 random_id = random.randrange(1, 9999)
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2706 params = ascii_bytes(ext_json.dumps({
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2707 "id": random_id,
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2708 "api_key": self.apikey_regular,
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2709 "method": "edit_reviewers",
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2710 "args": {"pull_request_id": pull_request_id, "remove": 999},
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2711 }))
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2712 response = api_call(self, params)
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2713
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2714 self._compare_error(random_id, "user `999` does not exist", given=response.body)
8687
5e46f73f0d1c model: always import the whole db module - drop "from" imports
Mads Kiilerich <mads@kiilerich.com>
parents: 8686
diff changeset
2715 assert db.User.get_by_username(base.TEST_USER_REGULAR_LOGIN) in pullrequest.get_reviewer_users()
8656
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2716
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2717 def test_api_edit_reviewers_remove_nonpresent(self):
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2718 pull_request_id = fixture.create_pullrequest(self, self.REPO, self.TEST_PR_SRC, self.TEST_PR_DST, 'edit reviewer test')
8687
5e46f73f0d1c model: always import the whole db module - drop "from" imports
Mads Kiilerich <mads@kiilerich.com>
parents: 8686
diff changeset
2719 pullrequest = db.PullRequest().get(pull_request_id)
5e46f73f0d1c model: always import the whole db module - drop "from" imports
Mads Kiilerich <mads@kiilerich.com>
parents: 8686
diff changeset
2720 assert db.User.get_by_username(base.TEST_USER_REGULAR_LOGIN) in pullrequest.get_reviewer_users()
5e46f73f0d1c model: always import the whole db module - drop "from" imports
Mads Kiilerich <mads@kiilerich.com>
parents: 8686
diff changeset
2721 assert db.User.get_by_username(base.TEST_USER_REGULAR2_LOGIN) not in pullrequest.get_reviewer_users()
8656
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2722
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2723 pullrequest.owner = self.test_user
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2724 random_id = random.randrange(1, 9999)
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2725 params = ascii_bytes(ext_json.dumps({
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2726 "id": random_id,
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2727 "api_key": self.apikey_regular,
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2728 "method": "edit_reviewers",
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2729 "args": {"pull_request_id": pull_request_id, "remove": base.TEST_USER_REGULAR2_LOGIN},
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2730 }))
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2731 response = api_call(self, params)
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2732
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2733 # NOTE: no explicit indication that removed user was not even a reviewer
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2734 expected = { 'added': [],
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2735 'already_present': [],
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2736 'removed': [base.TEST_USER_REGULAR2_LOGIN],
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2737 }
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2738 self._compare_ok(random_id, expected, given=response.body)
8687
5e46f73f0d1c model: always import the whole db module - drop "from" imports
Mads Kiilerich <mads@kiilerich.com>
parents: 8686
diff changeset
2739 assert db.User.get_by_username(base.TEST_USER_REGULAR_LOGIN) in pullrequest.get_reviewer_users()
5e46f73f0d1c model: always import the whole db module - drop "from" imports
Mads Kiilerich <mads@kiilerich.com>
parents: 8686
diff changeset
2740 assert db.User.get_by_username(base.TEST_USER_REGULAR2_LOGIN) not in pullrequest.get_reviewer_users()
8656
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2741
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2742 def test_api_edit_reviewers_remove_multiple(self):
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2743 pull_request_id = fixture.create_pullrequest(self, self.REPO, self.TEST_PR_SRC, self.TEST_PR_DST, 'edit reviewer test')
8687
5e46f73f0d1c model: always import the whole db module - drop "from" imports
Mads Kiilerich <mads@kiilerich.com>
parents: 8686
diff changeset
2744 pullrequest = db.PullRequest().get(pull_request_id)
5e46f73f0d1c model: always import the whole db module - drop "from" imports
Mads Kiilerich <mads@kiilerich.com>
parents: 8686
diff changeset
2745 prr = db.PullRequestReviewer(db.User.get_by_username(base.TEST_USER_REGULAR2_LOGIN), pullrequest)
8686
b095e2fbba44 model: always import whole meta module - also when referencing Session
Mads Kiilerich <mads@kiilerich.com>
parents: 8661
diff changeset
2746 meta.Session().add(prr)
b095e2fbba44 model: always import whole meta module - also when referencing Session
Mads Kiilerich <mads@kiilerich.com>
parents: 8661
diff changeset
2747 meta.Session().commit()
8656
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2748
8687
5e46f73f0d1c model: always import the whole db module - drop "from" imports
Mads Kiilerich <mads@kiilerich.com>
parents: 8686
diff changeset
2749 assert db.User.get_by_username(base.TEST_USER_REGULAR_LOGIN) in pullrequest.get_reviewer_users()
5e46f73f0d1c model: always import the whole db module - drop "from" imports
Mads Kiilerich <mads@kiilerich.com>
parents: 8686
diff changeset
2750 assert db.User.get_by_username(base.TEST_USER_REGULAR2_LOGIN) in pullrequest.get_reviewer_users()
8656
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2751
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2752 pullrequest.owner = self.test_user
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2753 random_id = random.randrange(1, 9999)
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2754 params = ascii_bytes(ext_json.dumps({
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2755 "id": random_id,
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2756 "api_key": self.apikey_regular,
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2757 "method": "edit_reviewers",
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2758 "args": {"pull_request_id": pull_request_id, "remove": [ base.TEST_USER_REGULAR_LOGIN, base.TEST_USER_REGULAR2_LOGIN ] },
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2759 }))
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2760 response = api_call(self, params)
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2761
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2762 # list order depends on python sorting hash, which is randomized
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2763 assert set(ext_json.loads(response.body)['result']['added']) == set()
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2764 assert set(ext_json.loads(response.body)['result']['already_present']) == set()
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2765 assert set(ext_json.loads(response.body)['result']['removed']) == set([base.TEST_USER_REGULAR_LOGIN, base.TEST_USER_REGULAR2_LOGIN])
8687
5e46f73f0d1c model: always import the whole db module - drop "from" imports
Mads Kiilerich <mads@kiilerich.com>
parents: 8686
diff changeset
2766 assert db.User.get_by_username(base.TEST_USER_REGULAR_LOGIN) not in pullrequest.get_reviewer_users()
5e46f73f0d1c model: always import the whole db module - drop "from" imports
Mads Kiilerich <mads@kiilerich.com>
parents: 8686
diff changeset
2767 assert db.User.get_by_username(base.TEST_USER_REGULAR2_LOGIN) not in pullrequest.get_reviewer_users()
8656
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2768
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2769 def test_api_edit_reviewers_remove_closed(self):
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2770 pull_request_id = fixture.create_pullrequest(self, self.REPO, self.TEST_PR_SRC, self.TEST_PR_DST, 'edit reviewer test')
8687
5e46f73f0d1c model: always import the whole db module - drop "from" imports
Mads Kiilerich <mads@kiilerich.com>
parents: 8686
diff changeset
2771 pullrequest = db.PullRequest().get(pull_request_id)
5e46f73f0d1c model: always import the whole db module - drop "from" imports
Mads Kiilerich <mads@kiilerich.com>
parents: 8686
diff changeset
2772 assert db.User.get_by_username(base.TEST_USER_REGULAR_LOGIN) in pullrequest.get_reviewer_users()
8656
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2773 PullRequestModel().close_pull_request(pull_request_id)
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2774
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2775 pullrequest.owner = self.test_user
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2776 random_id = random.randrange(1, 9999)
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2777 params = ascii_bytes(ext_json.dumps({
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2778 "id": random_id,
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2779 "api_key": self.apikey_regular,
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2780 "method": "edit_reviewers",
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2781 "args": {"pull_request_id": pull_request_id, "remove": base.TEST_USER_REGULAR_LOGIN},
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2782 }))
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2783 response = api_call(self, params)
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2784
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2785 self._compare_error(random_id, "Cannot edit reviewers of a closed pull request.", given=response.body)
8687
5e46f73f0d1c model: always import the whole db module - drop "from" imports
Mads Kiilerich <mads@kiilerich.com>
parents: 8686
diff changeset
2786 assert db.User.get_by_username(base.TEST_USER_REGULAR_LOGIN) in pullrequest.get_reviewer_users()
8656
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2787
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2788 def test_api_edit_reviewers_remove_not_owner(self):
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2789 pull_request_id = fixture.create_pullrequest(self, self.REPO, self.TEST_PR_SRC, self.TEST_PR_DST, 'edit reviewer test')
8687
5e46f73f0d1c model: always import the whole db module - drop "from" imports
Mads Kiilerich <mads@kiilerich.com>
parents: 8686
diff changeset
2790 pullrequest = db.PullRequest().get(pull_request_id)
5e46f73f0d1c model: always import the whole db module - drop "from" imports
Mads Kiilerich <mads@kiilerich.com>
parents: 8686
diff changeset
2791 assert db.User.get_by_username(base.TEST_USER_REGULAR_LOGIN) in pullrequest.get_reviewer_users()
5e46f73f0d1c model: always import the whole db module - drop "from" imports
Mads Kiilerich <mads@kiilerich.com>
parents: 8686
diff changeset
2792
5e46f73f0d1c model: always import the whole db module - drop "from" imports
Mads Kiilerich <mads@kiilerich.com>
parents: 8686
diff changeset
2793 pullrequest.owner = db.User.get_by_username(base.TEST_USER_REGULAR_LOGIN)
8656
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2794 random_id = random.randrange(1, 9999)
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2795 params = ascii_bytes(ext_json.dumps({
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2796 "id": random_id,
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2797 "api_key": self.apikey_regular,
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2798 "method": "edit_reviewers",
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2799 "args": {"pull_request_id": pull_request_id, "remove": base.TEST_USER_REGULAR_LOGIN},
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2800 }))
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2801 response = api_call(self, params)
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2802
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2803 self._compare_error(random_id, "No permission to edit reviewers of this pull request. User needs to be admin or pull request owner.", given=response.body)
8687
5e46f73f0d1c model: always import the whole db module - drop "from" imports
Mads Kiilerich <mads@kiilerich.com>
parents: 8686
diff changeset
2804 assert db.User.get_by_username(base.TEST_USER_REGULAR_LOGIN) in pullrequest.get_reviewer_users()
8656
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2805
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2806 def test_api_edit_reviewers_add_remove_single(self):
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2807 pull_request_id = fixture.create_pullrequest(self, self.REPO, self.TEST_PR_SRC, self.TEST_PR_DST, 'edit reviewer test')
8687
5e46f73f0d1c model: always import the whole db module - drop "from" imports
Mads Kiilerich <mads@kiilerich.com>
parents: 8686
diff changeset
2808 pullrequest = db.PullRequest().get(pull_request_id)
5e46f73f0d1c model: always import the whole db module - drop "from" imports
Mads Kiilerich <mads@kiilerich.com>
parents: 8686
diff changeset
2809 assert db.User.get_by_username(base.TEST_USER_REGULAR_LOGIN) in pullrequest.get_reviewer_users()
5e46f73f0d1c model: always import the whole db module - drop "from" imports
Mads Kiilerich <mads@kiilerich.com>
parents: 8686
diff changeset
2810 assert db.User.get_by_username(base.TEST_USER_REGULAR2_LOGIN) not in pullrequest.get_reviewer_users()
8656
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2811
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2812 pullrequest.owner = self.test_user
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2813 random_id = random.randrange(1, 9999)
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2814 params = ascii_bytes(ext_json.dumps({
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2815 "id": random_id,
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2816 "api_key": self.apikey_regular,
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2817 "method": "edit_reviewers",
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2818 "args": {"pull_request_id": pull_request_id,
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2819 "add": base.TEST_USER_REGULAR2_LOGIN,
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2820 "remove": base.TEST_USER_REGULAR_LOGIN
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2821 },
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2822 }))
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2823 response = api_call(self, params)
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2824
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2825 expected = { 'added': [base.TEST_USER_REGULAR2_LOGIN],
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2826 'already_present': [],
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2827 'removed': [base.TEST_USER_REGULAR_LOGIN],
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2828 }
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2829 self._compare_ok(random_id, expected, given=response.body)
8687
5e46f73f0d1c model: always import the whole db module - drop "from" imports
Mads Kiilerich <mads@kiilerich.com>
parents: 8686
diff changeset
2830 assert db.User.get_by_username(base.TEST_USER_REGULAR_LOGIN) not in pullrequest.get_reviewer_users()
5e46f73f0d1c model: always import the whole db module - drop "from" imports
Mads Kiilerich <mads@kiilerich.com>
parents: 8686
diff changeset
2831 assert db.User.get_by_username(base.TEST_USER_REGULAR2_LOGIN) in pullrequest.get_reviewer_users()
8656
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2832
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2833 def test_api_edit_reviewers_add_remove_multiple(self):
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2834 pull_request_id = fixture.create_pullrequest(self, self.REPO, self.TEST_PR_SRC, self.TEST_PR_DST, 'edit reviewer test')
8687
5e46f73f0d1c model: always import the whole db module - drop "from" imports
Mads Kiilerich <mads@kiilerich.com>
parents: 8686
diff changeset
2835 pullrequest = db.PullRequest().get(pull_request_id)
5e46f73f0d1c model: always import the whole db module - drop "from" imports
Mads Kiilerich <mads@kiilerich.com>
parents: 8686
diff changeset
2836 prr = db.PullRequestReviewer(db.User.get_by_username(base.TEST_USER_ADMIN_LOGIN), pullrequest)
8686
b095e2fbba44 model: always import whole meta module - also when referencing Session
Mads Kiilerich <mads@kiilerich.com>
parents: 8661
diff changeset
2837 meta.Session().add(prr)
b095e2fbba44 model: always import whole meta module - also when referencing Session
Mads Kiilerich <mads@kiilerich.com>
parents: 8661
diff changeset
2838 meta.Session().commit()
8687
5e46f73f0d1c model: always import the whole db module - drop "from" imports
Mads Kiilerich <mads@kiilerich.com>
parents: 8686
diff changeset
2839 assert db.User.get_by_username(base.TEST_USER_ADMIN_LOGIN) in pullrequest.get_reviewer_users()
5e46f73f0d1c model: always import the whole db module - drop "from" imports
Mads Kiilerich <mads@kiilerich.com>
parents: 8686
diff changeset
2840 assert db.User.get_by_username(base.TEST_USER_REGULAR_LOGIN) in pullrequest.get_reviewer_users()
5e46f73f0d1c model: always import the whole db module - drop "from" imports
Mads Kiilerich <mads@kiilerich.com>
parents: 8686
diff changeset
2841 assert db.User.get_by_username(base.TEST_USER_REGULAR2_LOGIN) not in pullrequest.get_reviewer_users()
8656
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2842
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2843 pullrequest.owner = self.test_user
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2844 random_id = random.randrange(1, 9999)
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2845 params = ascii_bytes(ext_json.dumps({
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2846 "id": random_id,
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2847 "api_key": self.apikey_regular,
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2848 "method": "edit_reviewers",
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2849 "args": {"pull_request_id": pull_request_id,
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2850 "add": [ base.TEST_USER_REGULAR2_LOGIN ],
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2851 "remove": [ base.TEST_USER_REGULAR_LOGIN, base.TEST_USER_ADMIN_LOGIN ],
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2852 },
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2853 }))
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2854 response = api_call(self, params)
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2855
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2856 # list order depends on python sorting hash, which is randomized
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2857 assert set(ext_json.loads(response.body)['result']['added']) == set([base.TEST_USER_REGULAR2_LOGIN])
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2858 assert set(ext_json.loads(response.body)['result']['already_present']) == set()
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2859 assert set(ext_json.loads(response.body)['result']['removed']) == set([base.TEST_USER_REGULAR_LOGIN, base.TEST_USER_ADMIN_LOGIN])
8687
5e46f73f0d1c model: always import the whole db module - drop "from" imports
Mads Kiilerich <mads@kiilerich.com>
parents: 8686
diff changeset
2860 assert db.User.get_by_username(base.TEST_USER_ADMIN_LOGIN) not in pullrequest.get_reviewer_users()
5e46f73f0d1c model: always import the whole db module - drop "from" imports
Mads Kiilerich <mads@kiilerich.com>
parents: 8686
diff changeset
2861 assert db.User.get_by_username(base.TEST_USER_REGULAR_LOGIN) not in pullrequest.get_reviewer_users()
5e46f73f0d1c model: always import the whole db module - drop "from" imports
Mads Kiilerich <mads@kiilerich.com>
parents: 8686
diff changeset
2862 assert db.User.get_by_username(base.TEST_USER_REGULAR2_LOGIN) in pullrequest.get_reviewer_users()
8656
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2863
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2864 def test_api_edit_reviewers_invalid_params(self):
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2865 pull_request_id = fixture.create_pullrequest(self, self.REPO, self.TEST_PR_SRC, self.TEST_PR_DST, 'edit reviewer test')
8687
5e46f73f0d1c model: always import the whole db module - drop "from" imports
Mads Kiilerich <mads@kiilerich.com>
parents: 8686
diff changeset
2866 pullrequest = db.PullRequest().get(pull_request_id)
5e46f73f0d1c model: always import the whole db module - drop "from" imports
Mads Kiilerich <mads@kiilerich.com>
parents: 8686
diff changeset
2867 assert db.User.get_by_username(base.TEST_USER_REGULAR_LOGIN) in pullrequest.get_reviewer_users()
5e46f73f0d1c model: always import the whole db module - drop "from" imports
Mads Kiilerich <mads@kiilerich.com>
parents: 8686
diff changeset
2868
5e46f73f0d1c model: always import the whole db module - drop "from" imports
Mads Kiilerich <mads@kiilerich.com>
parents: 8686
diff changeset
2869 pullrequest.owner = db.User.get_by_username(base.TEST_USER_REGULAR_LOGIN)
8656
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2870 random_id = random.randrange(1, 9999)
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2871 params = ascii_bytes(ext_json.dumps({
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2872 "id": random_id,
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2873 "api_key": self.apikey_regular,
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2874 "method": "edit_reviewers",
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2875 "args": {"pull_request_id": pull_request_id},
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2876 }))
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2877 response = api_call(self, params)
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2878
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2879 self._compare_error(random_id, "Invalid request. Neither 'add' nor 'remove' is specified.", given=response.body)
56451a7ca82f api: new method: edit_reviewers
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents: 8644
diff changeset
2880 assert ext_json.loads(response.body)['result'] is None