diff options
Diffstat (limited to 'gitlab')
| -rw-r--r-- | gitlab/objects.py | 8 | ||||
| -rw-r--r-- | gitlab/tests/test_manager.py | 23 |
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) |
