Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-resultsdb_api for
openSUSE:Factory checked in at 2022-11-07 13:51:47
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-resultsdb_api (Old)
and /work/SRC/openSUSE:Factory/.python-resultsdb_api.new.1597 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-resultsdb_api"
Mon Nov 7 13:51:47 2022 rev:3 rq:1034087 version:2.1.5
Changes:
--------
---
/work/SRC/openSUSE:Factory/python-resultsdb_api/python-resultsdb_api.changes
2020-03-17 13:08:55.317742604 +0100
+++
/work/SRC/openSUSE:Factory/.python-resultsdb_api.new.1597/python-resultsdb_api.changes
2022-11-07 13:51:52.935865905 +0100
@@ -1,0 +2,7 @@
+Sat Nov 5 12:39:55 UTC 2022 - John Vandenberg <[email protected]>
+
+- Activate test suite
+- Update to v2.1.5
+ * No changelog available
+
+-------------------------------------------------------------------
Old:
----
resultsdb_api-2.1.3.tar.gz
New:
----
resultsdb_api-2.1.5.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-resultsdb_api.spec ++++++
--- /var/tmp/diff_new_pack.NkOfZA/_old 2022-11-07 13:51:53.875871189 +0100
+++ /var/tmp/diff_new_pack.NkOfZA/_new 2022-11-07 13:51:53.883871233 +0100
@@ -1,7 +1,7 @@
#
# spec file for package python-resultsdb_api
#
-# Copyright (c) 2020 SUSE LLC
+# Copyright (c) 2022 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -18,7 +18,7 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-resultsdb_api
-Version: 2.1.3
+Version: 2.1.5
Release: 0
Summary: Library for simplifying the communication with ResultsDB
License: GPL-2.0-or-later
@@ -54,13 +54,12 @@
%python_expand %fdupes %{buildroot}%{$python_sitelib}
%check
-# https://pagure.io/taskotron/resultsdb_api/issue/1
-# It has tests but they don't work...
-#%%pytest
+%pytest --functional testing/
%files %{python_files}
%doc README.md
%license LICENSE
-%{python_sitelib}/*
+%{python_sitelib}/resultsdb_api*
+%pycache_only %{python_sitelib}/__pycache__/
%changelog
++++++ resultsdb_api-2.1.3.tar.gz -> resultsdb_api-2.1.5.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/resultsdb_api-2.1.3/.gitignore
new/resultsdb_api-2.1.5/.gitignore
--- old/resultsdb_api-2.1.3/.gitignore 2018-03-28 15:14:06.000000000 +0200
+++ new/resultsdb_api-2.1.5/.gitignore 2021-11-14 10:41:38.000000000 +0100
@@ -12,3 +12,6 @@
htmlcov/
test_env/
.cache
+coverage.xml
+pep8.out
+.tox/
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/resultsdb_api-2.1.3/MANIFEST
new/resultsdb_api-2.1.5/MANIFEST
--- old/resultsdb_api-2.1.3/MANIFEST 2018-03-27 17:28:16.000000000 +0200
+++ new/resultsdb_api-2.1.5/MANIFEST 1970-01-01 01:00:00.000000000 +0100
@@ -1,3 +0,0 @@
-README.md
-resultsdb_api.py
-setup.py
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/resultsdb_api-2.1.3/MANIFEST.in
new/resultsdb_api-2.1.5/MANIFEST.in
--- old/resultsdb_api-2.1.3/MANIFEST.in 1970-01-01 01:00:00.000000000 +0100
+++ new/resultsdb_api-2.1.5/MANIFEST.in 2021-11-14 10:41:38.000000000 +0100
@@ -0,0 +1,2 @@
+include *.requires
+include README.md
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/resultsdb_api-2.1.3/Makefile
new/resultsdb_api-2.1.5/Makefile
--- old/resultsdb_api-2.1.3/Makefile 2019-05-28 15:07:04.000000000 +0200
+++ new/resultsdb_api-2.1.5/Makefile 2021-11-14 10:41:38.000000000 +0100
@@ -81,7 +81,6 @@
.PHONY: mockbuild
mockbuild: mocksrpm
mock -r $(BUILDTARGET) --no-clean --rebuild $(NVR).$(TARGETDIST).src.rpm
- cp
/var/lib/mock/$(BUILDTARGET)/result/python2-resultsdb_api-$(VERSION)-$(RELEASE).$(TARGETDIST).noarch.rpm
.
cp
/var/lib/mock/$(BUILDTARGET)/result/python3-resultsdb_api-$(VERSION)-$(RELEASE).$(TARGETDIST).noarch.rpm
.
#.PHONY: kojibuild
@@ -102,5 +101,5 @@
.PHONY: $(VENV)
$(VENV):
virtualenv $(VENV)
- sh -c "set -e; . $(VENV)/bin/activate; pip install -r requirements.txt;
\
+ sh -c "set -e; . $(VENV)/bin/activate; pip install -r install.requires
-r tests.requires; \
deactivate"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/resultsdb_api-2.1.3/PKG-INFO
new/resultsdb_api-2.1.5/PKG-INFO
--- old/resultsdb_api-2.1.3/PKG-INFO 2020-03-05 17:30:04.431725300 +0100
+++ new/resultsdb_api-2.1.5/PKG-INFO 2021-11-14 10:46:06.048796400 +0100
@@ -1,12 +1,11 @@
-Metadata-Version: 1.1
+Metadata-Version: 2.1
Name: resultsdb_api
-Version: 2.1.3
+Version: 2.1.5
Summary: Library for simplifying the communication with ResultsDB
Home-page: https://pagure.io/taskotron/resultsdb_api
Author: Josef Skladanka
Author-email: [email protected]
License: UNKNOWN
-Description: UNKNOWN
Platform: UNKNOWN
Classifier: Development Status :: 2 - Pre-Alpha
Classifier: Intended Audience :: Developers
@@ -19,3 +18,7 @@
Classifier: Topic :: Internet
Classifier: Topic :: Scientific/Engineering :: Interface Engine/Protocol
Translator
Classifier: Topic :: Software Development :: Libraries :: Python Modules
+License-File: LICENSE
+
+UNKNOWN
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/resultsdb_api-2.1.3/install.requires
new/resultsdb_api-2.1.5/install.requires
--- old/resultsdb_api-2.1.3/install.requires 1970-01-01 01:00:00.000000000
+0100
+++ new/resultsdb_api-2.1.5/install.requires 2021-11-14 10:41:38.000000000
+0100
@@ -0,0 +1,2 @@
+requests >= 2.2.1
+simplejson >= 3.5.3
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/resultsdb_api-2.1.3/python-resultsdb_api.spec
new/resultsdb_api-2.1.5/python-resultsdb_api.spec
--- old/resultsdb_api-2.1.3/python-resultsdb_api.spec 2019-05-28
15:33:03.000000000 +0200
+++ new/resultsdb_api-2.1.5/python-resultsdb_api.spec 2021-11-14
10:41:38.000000000 +0100
@@ -1,22 +1,18 @@
Name: python-resultsdb_api
# NOTE: if you update version, *make sure* to also update `setup.py`
-Version: 2.1.3
+Version: 2.1.5
Release: 1%{?dist}
Summary: Interface api to ResultsDB
License: GPLv2+
URL: https://pagure.io/taskotron/resultsdb_api
-Source0:
https://qa.fedoraproject.org/releases/resultsdb_api/python-resultsdb_api-%{version}.tar.gz
+Source0:
https://qa.fedoraproject.org/releases/resultsdb_api/resultsdb_api-%{version}.tar.gz
BuildArch: noarch
-BuildRequires: git
-
-%global _description\
+%description
Interface api to ResultsDB
-%description %_description
-
%package -n python3-resultsdb_api
Summary: %summary
Requires: python3-simplejson
@@ -30,15 +26,11 @@
BuildRequires: python3-requests
BuildRequires: python3-virtualenv
-%description -n python3-resultsdb_api %_description
+%description -n python3-resultsdb_api
+Python3 interface to resultsdb.
%prep
-%setup -q -n python-resultsdb_api-%{version}
-
-%check
-## FIXME: fix the test suite
-## https://pagure.io/taskotron/resultsdb_api/issue/1
-# make test
+%autosetup -p1 -n resultsdb_api-%{version}
%build
%py3_build
@@ -46,14 +38,67 @@
%install
%py3_install
+%check
+%pytest
+
%files -n python3-resultsdb_api
%doc README.md
%license LICENSE
%{python3_sitelib}/resultsdb_api.*
%{python3_sitelib}/__pycache__/resultsdb_api.*
-%{python3_sitelib}/*.egg-info
+%{python3_sitelib}/resultsdb_api-%{version}*.egg-info
%changelog
+* Sun Nov 14 2021 Frantisek Zatloukal <[email protected]> - 2.1.5-1
+- Drop use of deprecated Retry parameter
+- Drop unnecessary `_KEEP` and just `None` instead
+- Make tox work (just runs pytest for now)
+- Port tests to unittest.mock and ResultsDB API v2 (#1)
+- Simplify update_testcase
+- update_testcase: fix variable name
+- ResultsDBAuth: it's `@staticmethod`, not `@static_method`
+- Drop Python 2 string type blob
+- Enable tests during the rpm build
+
+* Sun Nov 14 2021 Frantisek Zatloukal <[email protected]> - 2.1.4-3
+- Revert backported patch for auth code
+
+* Thu Nov 11 2021 Adam Williamson <[email protected]> - 2.1.4-2
+- Backport patch to fix critical error in auth code
+
+* Mon Nov 08 2021 Frantisek Zatloukal <[email protected]> - 2.1.4-1
+- add auth class with basic http auth support
+
+* Fri Jul 23 2021 Fedora Release Engineering <[email protected]> -
2.1.3-11
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
+
+* Fri Jun 04 2021 Python Maint <[email protected]> - 2.1.3-10
+- Rebuilt for Python 3.10
+
+* Wed Jan 27 2021 Fedora Release Engineering <[email protected]> -
2.1.3-9
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
+
+* Mon Nov 09 2020 Frantisek Zatloukal <[email protected]> - 2.1.3-8
+- Drop BR: git
+
+* Wed Jul 29 2020 Fedora Release Engineering <[email protected]> -
2.1.3-7
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
+
+* Tue May 26 2020 Miro Hron??ok <[email protected]> - 2.1.3-6
+- Rebuilt for Python 3.9
+
+* Thu Jan 30 2020 Fedora Release Engineering <[email protected]> -
2.1.3-5
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
+
+* Thu Oct 03 2019 Miro Hron??ok <[email protected]> - 2.1.3-4
+- Rebuilt for Python 3.8.0rc1 (#1748018)
+
+* Mon Aug 19 2019 Miro Hron??ok <[email protected]> - 2.1.3-3
+- Rebuilt for Python 3.8
+
+* Fri Jul 26 2019 Fedora Release Engineering <[email protected]> -
2.1.3-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
+
* Tue May 28 2019 Frantisek Zatloukal <[email protected]> - 2.1.3-1
- Fix 'RetryError' object has no attribute 'message'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/resultsdb_api-2.1.3/requirements.txt
new/resultsdb_api-2.1.5/requirements.txt
--- old/resultsdb_api-2.1.3/requirements.txt 2018-06-11 14:50:12.000000000
+0200
+++ new/resultsdb_api-2.1.5/requirements.txt 1970-01-01 01:00:00.000000000
+0100
@@ -1,16 +0,0 @@
-# This is a list of pypi packages to be installed into virtualenv.
Alternatively,
-# you can install these as RPMs instead of pypi packages. See the dependecies
-# with:
-# $ rpmspec -q --requires python-resultsdb_api.spec
-# $ rpmspec -q --buildrequires python-resultsdb_api.spec
-
-# A note for maintainers: Please keep this list in sync and in the same order
-# as the spec file.
-
-requests >= 2.2.1
-simplejson >= 3.5.3
-
-# Test suite dependencies
-dingus >= 0.3.4
-pytest >= 2.4.2
-pytest-cov >= 1.6
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/resultsdb_api-2.1.3/resultsdb_api.egg-info/PKG-INFO
new/resultsdb_api-2.1.5/resultsdb_api.egg-info/PKG-INFO
--- old/resultsdb_api-2.1.3/resultsdb_api.egg-info/PKG-INFO 2020-03-05
17:30:04.000000000 +0100
+++ new/resultsdb_api-2.1.5/resultsdb_api.egg-info/PKG-INFO 2021-11-14
10:46:05.000000000 +0100
@@ -1,12 +1,11 @@
-Metadata-Version: 1.1
+Metadata-Version: 2.1
Name: resultsdb-api
-Version: 2.1.3
+Version: 2.1.5
Summary: Library for simplifying the communication with ResultsDB
Home-page: https://pagure.io/taskotron/resultsdb_api
Author: Josef Skladanka
Author-email: [email protected]
License: UNKNOWN
-Description: UNKNOWN
Platform: UNKNOWN
Classifier: Development Status :: 2 - Pre-Alpha
Classifier: Intended Audience :: Developers
@@ -19,3 +18,7 @@
Classifier: Topic :: Internet
Classifier: Topic :: Scientific/Engineering :: Interface Engine/Protocol
Translator
Classifier: Topic :: Software Development :: Libraries :: Python Modules
+License-File: LICENSE
+
+UNKNOWN
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/resultsdb_api-2.1.3/resultsdb_api.egg-info/SOURCES.txt
new/resultsdb_api-2.1.5/resultsdb_api.egg-info/SOURCES.txt
--- old/resultsdb_api-2.1.3/resultsdb_api.egg-info/SOURCES.txt 2020-03-05
17:30:04.000000000 +0100
+++ new/resultsdb_api-2.1.5/resultsdb_api.egg-info/SOURCES.txt 2021-11-14
10:46:05.000000000 +0100
@@ -2,14 +2,15 @@
.arclint
.gitignore
LICENSE
-MANIFEST
+MANIFEST.in
Makefile
README.md
+install.requires
pytest.ini
python-resultsdb_api.spec
-requirements.txt
resultsdb_api.py
setup.py
+tests.requires
tokengetter.py
tox.ini
resultsdb_api.egg-info/PKG-INFO
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/resultsdb_api-2.1.3/resultsdb_api.egg-info/requires.txt
new/resultsdb_api-2.1.5/resultsdb_api.egg-info/requires.txt
--- old/resultsdb_api-2.1.3/resultsdb_api.egg-info/requires.txt 2020-03-05
17:30:04.000000000 +0100
+++ new/resultsdb_api-2.1.5/resultsdb_api.egg-info/requires.txt 2021-11-14
10:46:05.000000000 +0100
@@ -1,2 +1,2 @@
-requests
-simplejson
+requests>=2.2.1
+simplejson>=3.5.3
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/resultsdb_api-2.1.3/resultsdb_api.py
new/resultsdb_api-2.1.5/resultsdb_api.py
--- old/resultsdb_api-2.1.3/resultsdb_api.py 2019-05-28 15:33:03.000000000
+0200
+++ new/resultsdb_api-2.1.5/resultsdb_api.py 2021-11-14 10:41:38.000000000
+0100
@@ -24,18 +24,9 @@
import simplejson
import logging
-try:
- # make strings unicode on Python 2
- str = unicode
-except NameError:
- # except on Python 3 they already are, name 'unicode' is not defined
- pass
-
logger = logging.getLogger('resultsdb_api')
logger.addHandler(logging.NullHandler())
-_KEEP = object()
-
def _fparams(expand_kwargs=True):
"""Gets the parameters of the function, from which _fparams is called
and returns the list of params, minus `self`"""
@@ -112,20 +103,37 @@
raise ResultsDBapiException('Maximum number of retries exceeded:
%s' % message, None)
return self.__resultsdb_raise_on_error(r)
+
+class ResultsDBAuth(object):
+ """
+ Auth class to handle different
+ request level authentication types.
+ """
+
+ @staticmethod
+ def basic_auth(username, password):
+ """
+ Return `requests.auth.HTTPBasicAuth`.
+ """
+ return requests.auth.HTTPBasicAuth(username, password)
+
+
class ResultsDBapi(object):
- def __init__(self, api_url, auth_token=None, max_retries=3,
backoff_factor=1.0):
+ def __init__(self, api_url, auth_token=None, max_retries=3,
backoff_factor=1.0, request_auth=None):
# remove trailing slash(es), so we don't generate
# urls with a double slash which breaks werkzeug
# https://github.com/mitsuhiko/werkzeug/issues/491
self.url = api_url.rstrip('/')
self.auth_token = auth_token
+ self.request_auth = request_auth
+ allowed_methods = list(Retry.DEFAULT_ALLOWED_METHODS) + ["POST"]
self._retry = Retry(
total=max_retries,
backoff_factor=backoff_factor,
status_forcelist=(500, 502, 503, 504),
- method_whitelist=False # Enables POST retries
+ allowed_methods=allowed_methods
)
self._adapter = HTTPAdapter(max_retries=self._retry)
self.session = _ResultsDBSession()
@@ -162,15 +170,15 @@
headers = {'Content-type': 'application/json', 'Accept': 'text/plain'}
data = _fparams()
data['_auth_token'] = self.auth_token
- r = self.session.post(url, data=json.dumps(data), headers=headers)
+ r = self.session.post(url, data=json.dumps(data), headers=headers,
auth=self.request_auth)
return r.json()
- def update_group(self, uuid, ref_url=_KEEP, description=_KEEP):
+ def update_group(self, uuid, ref_url=None, description=None):
data = {}
- if ref_url is not _KEEP:
+ if ref_url is not None:
data['ref_url'] = ref_url
- if description is not _KEEP:
+ if description is not None:
data['description'] = description
if not data:
return self.get_group(uuid)
@@ -180,7 +188,7 @@
url = "%s/groups" % self.url
headers = {'Content-type': 'application/json', 'Accept': 'text/plain'}
- r = self.session.post(url, data=json.dumps(data), headers=headers)
+ r = self.session.post(url, data=json.dumps(data), headers=headers,
auth=self.request_auth)
return r.json()
@@ -201,7 +209,7 @@
data = _fparams(expand_kwargs=False)
data['_auth_token'] = self.auth_token
headers = {'Content-type': 'application/json', 'Accept': 'text/plain'}
- r = self.session.post(url, data=json.dumps(data), headers=headers)
+ r = self.session.post(url, data=json.dumps(data), headers=headers,
auth=self.request_auth)
return r.json()
@@ -213,7 +221,7 @@
def get_results(self, page=None, limit=None, since=None, outcome=None,
groups=None, testcases=None, testcases_like=None, raw_params=None, **kwargs):
url = "%s/results" % self.url
- r = self.session.get(url, params=self.__prepare_params(_fparams()))
+ r = self.session.get(url, params=self.__prepare_params(_fparams()),
auth=self.request_auth)
return r.json()
@@ -222,25 +230,14 @@
data = _fparams()
data['_auth_token'] = self.auth_token
headers = {'Content-type': 'application/json', 'Accept': 'text/plain'}
- r = self.session.post(url, data=json.dumps(data), headers=headers)
+ r = self.session.post(url, data=json.dumps(data), headers=headers,
auth=self.request_auth)
return r.json()
- def update_testcase(self, name, url=_KEEP):
- data = {}
- if ref_url is not _KEEP:
- data['ref_url'] = ref_url
- if not data:
+ def update_testcase(self, name, url=None):
+ if not url:
return self.get_testcase(name)
-
- data['name'] = name
- data['_auth_token'] = self.auth_token
-
- url = "%s/testcases" % self.url
- headers = {'Content-type': 'application/json', 'Accept': 'text/plain'}
- r = self.session.post(url, data=json.dumps(data), headers=headers)
-
- return r.json()
+ return self.create_testcase(name, ref_url=url)
def get_testcase(self, name):
url = "%s/testcases/%s" % (self.url, name)
@@ -250,6 +247,6 @@
def get_testcases(self, page=None, limit=None, name=None, name_like=None):
url = "%s/testcases" % self.url
- r = self.session.get(url, params=self.__prepare_params(_fparams()))
+ r = self.session.get(url, params=self.__prepare_params(_fparams()),
auth=self.request_auth)
return r.json()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/resultsdb_api-2.1.3/setup.py
new/resultsdb_api-2.1.5/setup.py
--- old/resultsdb_api-2.1.3/setup.py 2019-05-28 15:33:03.000000000 +0200
+++ new/resultsdb_api-2.1.5/setup.py 2021-11-14 10:41:38.000000000 +0100
@@ -21,12 +21,12 @@
setup( name = 'resultsdb_api',
py_modules = ['resultsdb_api'],
- version = '2.1.3',
+ version = '2.1.5',
description = 'Library for simplifying the communication with
ResultsDB',
author = 'Josef Skladanka',
author_email = '[email protected]',
url = "https://pagure.io/taskotron/resultsdb_api",
- install_requires = ['requests', 'simplejson'],
+ install_requires = open('install.requires').read().splitlines(),
classifiers = [
"Development Status :: 2 - Pre-Alpha",
"Intended Audience :: Developers",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/resultsdb_api-2.1.3/testing/test_api.py
new/resultsdb_api-2.1.5/testing/test_api.py
--- old/resultsdb_api-2.1.3/testing/test_api.py 2018-03-27 17:28:16.000000000
+0200
+++ new/resultsdb_api-2.1.5/testing/test_api.py 2021-11-14 10:41:38.000000000
+0100
@@ -23,7 +23,7 @@
import pytest
import requests
-from dingus import patch
+from unittest.mock import patch
class TestAPI():
@@ -41,176 +41,104 @@
self.helper = resultsdb_api.ResultsDBapi(self.rdb_url)
- @patch('requests.post')
- def test_create_testcase(self):
- self.helper.create_testcase(self.ref_testcase_name,
self.ref_testcase_url)
-
- post_calls = requests.post.calls()
-
- rdb_url = post_calls[0][1][0]
- headers = post_calls[0][2]['headers']
- data = json.loads(post_calls[0][2]['data'])
-
- assert rdb_url == "%s/testcases" % self.rdb_url
- assert headers['Content-type'] == self.ref_content_type
- assert headers['Accept'] == self.ref_accept
- assert data['url'] == self.ref_testcase_url
- assert data['name'] == self.ref_testcase_name
+ @patch('requests.Session.send')
+ def test_create_testcase(self, mocksend):
+ auth = resultsdb_api.ResultsDBAuth.basic_auth("user", "pass")
+ authhelper = resultsdb_api.ResultsDBapi(self.rdb_url,
request_auth=auth)
+
+ # test twice to test authentication, once without, once with
+ for (helper, authed) in ((self.helper, False), (authhelper, True)):
+ mocksend.reset_mock()
+ helper.create_testcase(self.ref_testcase_name,
self.ref_testcase_url)
+ mocksend.assert_called_once()
+ request = mocksend.mock_calls[0][1][0]
+ data = json.loads(request.body)
+
+ assert request.url == "%s/testcases" % self.rdb_url
+ assert request.headers['Content-type'] == self.ref_content_type
+ assert request.headers['Accept'] == self.ref_accept
+ if authed:
+ assert request.headers['Authorization'] == "Basic dXNlcjpwYXNz"
+ else:
+ assert 'Authorization' not in request.headers
+ assert data['ref_url'] == self.ref_testcase_url
+ assert data['name'] == self.ref_testcase_name
- @patch('requests.put')
- def test_update_testcase(self):
+ @patch('requests.Session.send')
+ def test_update_testcase(self, mocksend):
self.helper.update_testcase(self.ref_testcase_name,
self.ref_testcase_url)
- put_calls = requests.put.calls()
-
- rdb_url = put_calls[0][1][0]
- headers = put_calls[0][2]['headers']
- data = json.loads(put_calls[0][2]['data'])
-
- assert rdb_url == "%s/testcases/%s" % (self.rdb_url,
self.ref_testcase_name)
- assert headers['Content-type'] == self.ref_content_type
- assert headers['Accept'] == self.ref_accept
- assert data['url'] == self.ref_testcase_url
+ mocksend.assert_called_once()
+ request = mocksend.mock_calls[0][1][0]
+ data = json.loads(request.body)
+
+ assert request.url == "%s/testcases" % (self.rdb_url)
+ assert request.headers['Content-type'] == self.ref_content_type
+ assert request.headers['Accept'] == self.ref_accept
+ assert data['ref_url'] == self.ref_testcase_url
+ assert data['name'] == self.ref_testcase_name
- @patch('requests.get')
- def test_get_testcase(self):
+ @patch('requests.Session.send')
+ def test_get_testcase(self, mocksend):
self.helper.get_testcase(self.ref_testcase_name)
- get_calls = requests.get.calls()
+ mocksend.assert_called_once()
+ request = mocksend.mock_calls[0][1][0]
- rdb_url = get_calls[0][1][0]
+ assert request.url == "%s/testcases/%s" % (self.rdb_url,
self.ref_testcase_name)
- assert rdb_url == "%s/testcases/%s" % (self.rdb_url,
self.ref_testcase_name)
-
- @patch('requests.get')
- def test_get_testcases(self):
+ @patch('requests.Session.send')
+ def test_get_testcases(self, mocksend):
self.helper.get_testcases()
- get_calls = requests.get.calls()
-
- rdb_url = get_calls[0][1][0]
-
- assert rdb_url == "%s/testcases" % self.rdb_url
-
- @patch('requests.post')
- def test_create_job(self):
- self.helper.create_job(self.ref_url)
-
- post_calls = requests.post.calls()
-
- rdb_url = post_calls[0][1][0]
- headers = post_calls[0][2]['headers']
- data = json.loads(post_calls[0][2]['data'])
-
- assert rdb_url == "%s/jobs" % self.rdb_url
- assert headers['Content-type'] == self.ref_content_type
- assert headers['Accept'] == self.ref_accept
- assert data['ref_url'] == self.ref_url
-
- @patch('requests.put')
- def test_update_job(self):
- self.helper.update_job(id=self.ref_job_id, status=self.ref_status)
-
- put_calls = requests.put.calls()
-
- rdb_url = put_calls[0][1][0]
- headers = put_calls[0][2]['headers']
- data = json.loads(put_calls[0][2]['data'])
-
- assert rdb_url == "%s/jobs/%s" % (self.rdb_url, self.ref_job_id)
- assert headers['Content-type'] == self.ref_content_type
- assert headers['Accept'] == self.ref_accept
- assert data['status'] == self.ref_status
-
- def test_update_job_invalid(self):
- with pytest.raises(TypeError):
- self.helper.update_job()
-
- @patch('requests.get')
- def test_get_job(self):
- self.helper.get_job(self.ref_job_id)
-
- get_calls = requests.get.calls()
-
- rdb_url = get_calls[0][1][0]
+ mocksend.assert_called_once()
+ request = mocksend.mock_calls[0][1][0]
- assert rdb_url == "%s/jobs/%s" % (self.rdb_url, self.ref_job_id)
+ assert request.url == "%s/testcases" % self.rdb_url
- def test_get_job_invalid(self):
- with pytest.raises(TypeError):
- self.helper.get_job()
-
- @patch('requests.get')
- def test_get_jobs(self):
- self.helper.get_jobs()
-
- get_calls = requests.get.calls()
-
- rdb_url = get_calls[0][1][0]
-
- assert rdb_url == "%s/jobs" % self.rdb_url
-
- @patch('requests.get')
- def test_get_jobs_params(self):
- self.helper.get_jobs(status=self.ref_status)
-
- get_calls = requests.get.calls()
-
- rdb_url = get_calls[0][1][0]
- params = get_calls[0][2]['params']
-
- assert rdb_url == "%s/jobs" % self.rdb_url
- assert params['status'] == self.ref_status
-
- @patch('requests.post')
- def test_create_result(self):
- self.helper.create_result(self.ref_job_id, self.ref_testcase_name,
self.ref_outcome)
-
- post_calls = requests.post.calls()
-
- rdb_url = post_calls[0][1][0]
- headers = post_calls[0][2]['headers']
- data = json.loads(post_calls[0][2]['data'])
-
- assert rdb_url == "%s/results" % self.rdb_url
- assert headers['Content-type'] == self.ref_content_type
- assert headers['Accept'] == self.ref_accept
- assert data['job_id'] == self.ref_job_id
- assert data['testcase_name'] == self.ref_testcase_name
+ @patch('requests.Session.send')
+ def test_create_result(self, mocksend):
+ self.helper.create_result(self.ref_outcome, self.ref_testcase_name)
+
+ mocksend.assert_called_once()
+ request = mocksend.mock_calls[0][1][0]
+ data = json.loads(request.body)
+
+ assert request.url == "%s/results" % self.rdb_url
+ assert request.headers['Content-type'] == self.ref_content_type
+ assert request.headers['Accept'] == self.ref_accept
+ assert data['testcase'] == self.ref_testcase_name
assert data['outcome'] == self.ref_outcome
- @patch('requests.get')
- def test_get_result(self):
+ @patch('requests.Session.send')
+ def test_get_result(self, mocksend):
self.helper.get_result(self.ref_result_id)
- get_calls = requests.get.calls()
+ mocksend.assert_called_once()
+ request = mocksend.mock_calls[0][1][0]
- rdb_url = get_calls[0][1][0]
-
- assert rdb_url == "%s/results/%s" % (self.rdb_url, self.ref_job_id)
+ assert request.url == "%s/results/%s" % (self.rdb_url, self.ref_job_id)
def test_get_result_invalid(self):
with pytest.raises(TypeError):
self.helper.get_result()
- @patch('requests.get')
- def test_get_results(self):
+ @patch('requests.Session.send')
+ def test_get_results(self, mocksend):
self.helper.get_results()
- get_calls = requests.get.calls()
-
- rdb_url = get_calls[0][1][0]
+ mocksend.assert_called_once()
+ request = mocksend.mock_calls[0][1][0]
- assert rdb_url == "%s/results" % self.rdb_url
+ assert request.url == "%s/results" % self.rdb_url
- @patch('requests.get')
- def test_get_results_params(self):
+ @patch('requests.Session.request')
+ def test_get_results_params(self, mockreq):
self.helper.get_results(testcase_name=self.ref_testcase_name,
job_id=self.ref_job_id)
- get_calls = requests.get.calls()
-
- rdb_url = get_calls[0][1][0]
- params = get_calls[0][2]['params']
+ mockreq.assert_called_once()
+ rdb_url = mockreq.mock_calls[0][1][1]
+ params = mockreq.mock_calls[0][2]['params']
assert rdb_url == "%s/results" % self.rdb_url
assert params['testcase_name'] == self.ref_testcase_name
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/resultsdb_api-2.1.3/tests.requires
new/resultsdb_api-2.1.5/tests.requires
--- old/resultsdb_api-2.1.3/tests.requires 1970-01-01 01:00:00.000000000
+0100
+++ new/resultsdb_api-2.1.5/tests.requires 2021-11-14 10:41:38.000000000
+0100
@@ -0,0 +1,2 @@
+pytest >= 2.4.2
+pytest-cov >= 1.6
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/resultsdb_api-2.1.3/tox.ini
new/resultsdb_api-2.1.5/tox.ini
--- old/resultsdb_api-2.1.3/tox.ini 2018-03-28 15:14:06.000000000 +0200
+++ new/resultsdb_api-2.1.5/tox.ini 2021-11-14 10:41:38.000000000 +0100
@@ -1,5 +1,14 @@
-# This is a common file where different test suites/linters can be configured.
-# Phabricator uses this file when running `arc unit` or `arc lint`.
+[tox]
+envlist = py37,py38,py39,py310
+skip_missing_interpreters = true
+
+[testenv]
+deps =
+ -r{toxinidir}/install.requires
+ -r{toxinidir}/tests.requires
+
+commands=
+ pytest
[flake8]
max-line-length=99