Skip to content

Commit

Permalink
define UserManager.search() to search for users
Browse files Browse the repository at this point in the history
  • Loading branch information
rhansen committed Feb 12, 2016
1 parent 01802c0 commit 8f59516
Show file tree
Hide file tree
Showing 3 changed files with 43 additions and 0 deletions.
8 changes: 8 additions & 0 deletions gitlab/objects.py
Expand Up @@ -565,6 +565,14 @@ def __eq__(self, other):
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'
Expand Down
23 changes: 23 additions & 0 deletions gitlab/tests/test_manager.py
Expand Up @@ -235,6 +235,29 @@ def resp_get_all(url, request):
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)

Expand Down
12 changes: 12 additions & 0 deletions tools/python_test.py
Expand Up @@ -43,12 +43,24 @@
new_user.block()
new_user.unblock()

foobar_user = gl.users.create(
{'email': 'foobar@example.com', 'username': 'foobar',
'name': 'Foo Bar', 'password': 'foobar_password'})

assert gl.users.search('foobar') == [foobar_user]
usercmp = lambda x,y: cmp(x.id, y.id)
expected = sorted([new_user, foobar_user], cmp=usercmp)
actual = sorted(gl.users.search('foo'), cmp=usercmp)
assert expected == actual
assert gl.users.search('asdf') == []

# SSH keys
key = new_user.keys.create({'title': 'testkey', 'key': SSH_KEY})
assert(len(new_user.keys.list()) == 1)
key.delete()

new_user.delete()
foobar_user.delete()
assert(len(gl.users.list()) == 1)

# current user key
Expand Down

0 comments on commit 8f59516

Please sign in to comment.