Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitac2e534

Browse files
committed
define UserManager.get_by_username() to get a user by username
1 parent8f59516 commitac2e534

File tree

3 files changed

+49
-0
lines changed

3 files changed

+49
-0
lines changed

‎gitlab/objects.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -573,6 +573,20 @@ def search(self, query, **kwargs):
573573
url=self.obj_cls._url+'?search='+query
574574
returnself._custom_list(url,self.obj_cls,**kwargs)
575575

576+
defget_by_username(self,username,**kwargs):
577+
"""Get a user by its username.
578+
579+
Returns a User object or None if the named user does not
580+
exist.
581+
"""
582+
url=self.obj_cls._url+'?username='+username
583+
results=self._custom_list(url,self.obj_cls,**kwargs)
584+
assertlen(results)in (0,1)
585+
try:
586+
returnresults[0]
587+
exceptIndexError:
588+
raiseGitlabGetError('no such user: '+username)
589+
576590

577591
classCurrentUserKey(GitlabObject):
578592
_url='/user/keys'

‎gitlab/tests/test_manager.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -258,6 +258,32 @@ def resp_get_search(url, request):
258258
self.assertEqual(data[0].id,1)
259259
self.assertEqual(data[1].id,2)
260260

261+
deftest_user_manager_get_by_username(self):
262+
mgr=UserManager(self.gitlab)
263+
264+
@urlmatch(scheme="http",netloc="localhost",path="/api/v3/users",
265+
query="username=foo",method="get")
266+
defresp_get_username(url,request):
267+
headers= {'content-type':'application/json'}
268+
content='[{"name": "foo", "id": 1}]'.encode("utf-8")
269+
returnresponse(200,content,headers,None,5,request)
270+
271+
withHTTMock(resp_get_username):
272+
data=mgr.get_by_username('foo')
273+
self.assertEqual(type(data),User)
274+
self.assertEqual(data.name,"foo")
275+
self.assertEqual(data.id,1)
276+
277+
@urlmatch(scheme="http",netloc="localhost",path="/api/v3/users",
278+
query="username=foo",method="get")
279+
defresp_get_username_nomatch(url,request):
280+
headers= {'content-type':'application/json'}
281+
content='[]'.encode("utf-8")
282+
returnresponse(200,content,headers,None,5,request)
283+
284+
withHTTMock(resp_get_username_nomatch):
285+
self.assertRaises(GitlabGetError,mgr.get_by_username,'foo')
286+
261287
deftest_group_manager_search(self):
262288
mgr=GroupManager(self.gitlab)
263289

‎tools/python_test.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,15 @@
5454
assertexpected==actual
5555
assertgl.users.search('asdf')== []
5656

57+
assertgl.users.get_by_username('foobar')==foobar_user
58+
assertgl.users.get_by_username('foo')==new_user
59+
try:
60+
gl.users.get_by_username('asdf')
61+
exceptgitlab.GitlabGetError:
62+
pass
63+
else:
64+
assertFalse
65+
5766
# SSH keys
5867
key=new_user.keys.create({'title':'testkey','key':SSH_KEY})
5968
assert(len(new_user.keys.list())==1)

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp