Skip to content

Commit f88c9bc

Browse files
committed
tests: add User API unit tests
Signed-off-by: Cole Robinson <crobinso@redhat.com>
1 parent ddc3b47 commit f88c9bc

8 files changed

Lines changed: 86 additions & 1 deletion

File tree

bugzilla/base.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1788,7 +1788,8 @@ def getusers(self, userlist):
17881788
:userlist: List of usernames to lookup
17891789
:returns: List of User records
17901790
"""
1791-
rawusers = self._backend.user_get({"names": listify(userlist)})
1791+
userlist = listify(userlist)
1792+
rawusers = self._backend.user_get({"names": userlist})
17921793
userobjs = [User(self, **rawuser) for rawuser in
17931794
rawusers.get('users', [])]
17941795

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{'email': 'example1@example.com', 'name': 'fooname', 'password': 'foopass'}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{'names': ['example2@example.com']}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{'names': ['example1@example.com']}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{'match': ['example1@example.com']}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{'groups': {'remove': ['fedora_contrib']}, 'names': ['example name']}

tests/mockbackend.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,12 +77,16 @@ def product_get(self, *args):
7777
def product_get_accessible(self, *args):
7878
return self.__helper(args)
7979

80+
def user_create(self, *args):
81+
return self.__helper(args)
8082
def user_get(self, *args):
8183
return self.__helper(args)
8284
def user_login(self, *args):
8385
return self.__helper(args)
8486
def user_logout(self, *args):
8587
return self.__helper(args)
88+
def user_update(self, *args):
89+
return self.__helper(args)
8690

8791

8892
def _make_backend_class(version="6.0.0", extensions=None,

tests/test_api_users.py

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
#
2+
# Copyright Red Hat, Inc. 2012
3+
#
4+
# This work is licensed under the GNU GPLv2 or later.
5+
# See the COPYING file in the top-level directory.
6+
#
7+
8+
"""
9+
Test miscellaneous API bits
10+
"""
11+
12+
import pytest
13+
14+
import bugzilla
15+
16+
import tests
17+
import tests.mockbackend
18+
19+
20+
def test_api_users():
21+
# Basic API testing of the users APIs
22+
user_ret = {'users': [
23+
{'can_login': True,
24+
'email': 'example1@example.com',
25+
'id': 1010101,
26+
'name': 'example1@example.com',
27+
'real_name': 'Mr. Example Man'},
28+
{'can_login': False,
29+
'email': 'example2@example.com',
30+
'id': 2222333,
31+
'name': 'example name',
32+
'real_name': 'Example real name',
33+
'saved_reports': [],
34+
'saved_searches': [],
35+
'groups': [
36+
{"id": 1, "name": "testgroup", "description": "somedesc"}
37+
]},
38+
]}
39+
40+
# getusers and User testing
41+
fakebz = tests.mockbackend.make_bz(
42+
user_get_args="data/mockargs/test_api_users_get1.txt",
43+
user_get_return=user_ret,
44+
user_update_args="data/mockargs/test_api_users_update1.txt",
45+
user_update_return={})
46+
userobj = fakebz.getuser("example2@example.com")
47+
48+
# Some userobj testing
49+
userobj.refresh()
50+
assert userobj.userid == 2222333
51+
assert userobj.email == "example2@example.com"
52+
assert userobj.name == "example name"
53+
assert userobj.can_login is False
54+
userobj.updateperms("rem", ["fedora_contrib"])
55+
56+
# Catch a validation error
57+
with pytest.raises(bugzilla.BugzillaError):
58+
userobj.updateperms("badaction", ["newgroup"])
59+
60+
# createuser tests
61+
fakebz = tests.mockbackend.make_bz(
62+
user_get_args="data/mockargs/test_api_users_get2.txt",
63+
user_get_return=user_ret,
64+
user_create_args="data/mockargs/test_api_users_create.txt",
65+
user_create_return={})
66+
userobj = fakebz.createuser("example1@example.com", "fooname", "foopass")
67+
assert userobj.email == "example1@example.com"
68+
69+
70+
# searchuser tests
71+
fakebz = tests.mockbackend.make_bz(
72+
user_get_args="data/mockargs/test_api_users_get3.txt",
73+
user_get_return=user_ret)
74+
userlist = fakebz.searchusers("example1@example.com")
75+
assert len(userlist) == 2

0 commit comments

Comments
 (0)