summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorScott Bahling <sbahling@suse.com>2020-02-03 08:00:17 +0100
committerScott Bahling <sbahling@suse.com>2020-02-03 08:00:17 +0100
commit3fd50299a657480bfaca19e02cb1d0dca91eb45b (patch)
tree530da24f44414a19fa598928e51c2f38684e8d7e /test
parent267040ddaad2075bd24c5f82352a30fcb0eef212 (diff)
downloadobsapi-3fd50299a657480bfaca19e02cb1d0dca91eb45b.tar.gz
obsapi-3fd50299a657480bfaca19e02cb1d0dca91eb45b.tar.xz
obsapi-3fd50299a657480bfaca19e02cb1d0dca91eb45b.zip
Add remove_flag method
Diffstat (limited to 'test')
-rw-r--r--test/test_api.py68
1 files changed, 55 insertions, 13 deletions
diff --git a/test/test_api.py b/test/test_api.py
index 3fbf349..52c6796 100644
--- a/test/test_api.py
+++ b/test/test_api.py
@@ -522,26 +522,68 @@ def test_get_project_spec_files(requests_mock, project_directory, package_direct
assert list(specfiles) == expected_specfiles
-# POST /source/<project>?cmd=set_flag&repository=:opt&arch=:opt&flag=flag&status=status
-def test_set_project_flags(requests_mock):
- matcher = re.compile(r'/source/.*')
- requests_mock.post(matcher)
- params = dict(cmd='set_flag', flag='publish', status='enable')
-
- response = api.set_flag(prj, flag=params)
- assert response.status_code == 200
-
- url = requests_mock.request_history[0].url
+def check_url_query_params(url, params):
query = parse_qs(urlparse(url).query)
+ params = {k: v for k, v in params.items() if v is not None}
assert query.keys() == params.keys()
for key, values in query.items():
assert len(values) == 1
assert params.get(key, None) == query.get(key, [])[0]
+# POST /source/<project>?cmd=set_flag&repository=:opt&arch=:opt&flag=flag&status=status
# POST /source/<project>/<package>?cmd=set_flag&repository=:opt&arch=:opt&flag=flag&status=status
-def test_set_package_flags(requests_mock):
- pass
+@pytest.mark.parametrize('target', ('project', 'package'))
+@pytest.mark.parametrize('flag', ('build', 'publish', 'useforbuild', 'debuginfo'))
+@pytest.mark.parametrize('status', ('enable', 'disable'))
+@pytest.mark.parametrize('repository', (None, 'SLE_12_SP5'), ids=('no-repo', 'repo'))
+@pytest.mark.parametrize('arch', (None, 'x86_64'), ids=('no-arch', 'arch'))
+def test_set_flag(requests_mock, target, flag, status, repository, arch):
+ if target == 'project':
+ matcher = re.compile(r'/source/[^/]+\?')
+ else:
+ matcher = re.compile(r'/source/.+/[^/]*\?')
+ requests_mock.post(matcher)
+ params = dict(cmd='set_flag',
+ flag=flag,
+ status=status,
+ repository=repository,
+ arch=arch)
+
+ if target == 'project':
+ response = api.set_flag(prj, flag=params)
+ else:
+ response = api.set_flag(prj, pkg, flag=params)
+ assert response.status_code == 200
+
+ url = requests_mock.request_history[0].url
+ check_url_query_params(url, params)
+
-# POST /source/<project>/<package>?cmd=remove_flag&repository=:opt&arch=:opt&flag=flag
# POST /source/<project>?cmd=remove_flag&repository=:opt&arch=:opt&flag=flag
+# POST /source/<project>/<package>?cmd=remove_flag&repository=:opt&arch=:opt&flag=flag
+@pytest.mark.parametrize('target', ('project', 'package'))
+@pytest.mark.parametrize('flag', ('build', 'publish', 'useforbuild', 'debuginfo'))
+@pytest.mark.parametrize('status', ('enable', 'disable'))
+@pytest.mark.parametrize('repository', (None, 'SLE_12_SP5'), ids=('no-repo', 'repo'))
+@pytest.mark.parametrize('arch', (None, 'x86_64'), ids=('no-arch', 'arch'))
+def test_remove_flag(requests_mock, target, flag, status, repository, arch):
+ if target == 'project':
+ matcher = re.compile(r'/source/[^/]+\?')
+ else:
+ matcher = re.compile(r'/source/.+/[^/]*\?')
+ requests_mock.post(matcher)
+ params = dict(cmd='remove_flag',
+ flag=flag,
+ status=status,
+ repository=repository,
+ arch=arch)
+
+ if target == 'project':
+ response = api.remove_flag(prj, flag=params)
+ else:
+ response = api.remove_flag(prj, pkg, flag=params)
+ assert response.status_code == 200
+
+ url = requests_mock.request_history[0].url
+ check_url_query_params(url, params)