summaryrefslogtreecommitdiff
path: root/gitlab
diff options
context:
space:
mode:
Diffstat (limited to 'gitlab')
-rw-r--r--gitlab/objects.py8
-rw-r--r--gitlab/tests/test_manager.py23
2 files changed, 31 insertions, 0 deletions
diff --git a/gitlab/objects.py b/gitlab/objects.py
index 9849179..7a679fc 100644
--- a/gitlab/objects.py
+++ b/gitlab/objects.py
@@ -565,6 +565,14 @@ class User(GitlabObject):
class UserManager(BaseManager):
obj_cls = User
+ def search(self, query, **kwargs):
+ """Search users.
+
+ Returns a list of matching users.
+ """
+ url = self.obj_cls._url + '?search=' + query
+ return self._custom_list(url, self.obj_cls, **kwargs)
+
class CurrentUserKey(GitlabObject):
_url = '/user/keys'
diff --git a/gitlab/tests/test_manager.py b/gitlab/tests/test_manager.py
index f1286af..1b808a9 100644
--- a/gitlab/tests/test_manager.py
+++ b/gitlab/tests/test_manager.py
@@ -235,6 +235,29 @@ class TestGitlabManager(unittest.TestCase):
self.assertEqual(data[0].id, 1)
self.assertEqual(data[1].id, 2)
+ def test_user_manager_search(self):
+ mgr = UserManager(self.gitlab)
+
+ @urlmatch(scheme="http", netloc="localhost", path="/api/v3/users",
+ query="search=foo", method="get")
+ def resp_get_search(url, request):
+ headers = {'content-type': 'application/json'}
+ content = ('[{"name": "foo1", "id": 1}, '
+ '{"name": "foo2", "id": 2}]')
+ content = content.encode("utf-8")
+ return response(200, content, headers, None, 5, request)
+
+ with HTTMock(resp_get_search):
+ data = mgr.search('foo')
+ self.assertEqual(type(data), list)
+ self.assertEqual(2, len(data))
+ self.assertEqual(type(data[0]), User)
+ self.assertEqual(type(data[1]), User)
+ self.assertEqual(data[0].name, "foo1")
+ self.assertEqual(data[1].name, "foo2")
+ self.assertEqual(data[0].id, 1)
+ self.assertEqual(data[1].id, 2)
+
def test_group_manager_search(self):
mgr = GroupManager(self.gitlab)