File tree Expand file tree Collapse file tree 3 files changed +71
-0
lines changed
Expand file tree Collapse file tree 3 files changed +71
-0
lines changed Original file line number Diff line number Diff line change 3636 "CurrentUserGPGKeyManager" ,
3737 "CurrentUserKey" ,
3838 "CurrentUserKeyManager" ,
39+ "CurrentUserRunner" ,
40+ "CurrentUserRunnerManager" ,
3941 "CurrentUserStatus" ,
4042 "CurrentUserStatusManager" ,
4143 "CurrentUser" ,
@@ -111,6 +113,31 @@ def get(
111113 return cast (CurrentUserKey , super ().get (id = id , lazy = lazy , ** kwargs ))
112114
113115
116+ class CurrentUserRunner (RESTObject ):
117+ pass
118+
119+
120+ class CurrentUserRunnerManager (CreateMixin , RESTManager ):
121+ _path = "/user/runners"
122+ _obj_cls = CurrentUserRunner
123+ _types = {"tag_list" : types .CommaSeparatedListAttribute }
124+ _create_attrs = RequiredOptional (
125+ required = ("runner_type" ,),
126+ optional = (
127+ "group_id" ,
128+ "project_id" ,
129+ "description" ,
130+ "paused" ,
131+ "locked" ,
132+ "run_untagged" ,
133+ "tag_list" ,
134+ "access_level" ,
135+ "maximum_timeout" ,
136+ "maintenance_note" ,
137+ ),
138+ )
139+
140+
114141class CurrentUserStatus (SaveMixin , RESTObject ):
115142 _id_attr = None
116143 _repr_attr = "message"
@@ -132,6 +159,7 @@ class CurrentUser(RESTObject):
132159 emails : CurrentUserEmailManager
133160 gpgkeys : CurrentUserGPGKeyManager
134161 keys : CurrentUserKeyManager
162+ runners : CurrentUserRunnerManager
135163 status : CurrentUserStatusManager
136164
137165
Original file line number Diff line number Diff line change 11import pytest
2+ import responses
23
34import gitlab
45from tests .unit import helpers
@@ -59,6 +60,23 @@ def gl_retry():
5960 )
6061
6162
63+ @pytest .fixture
64+ def resp_get_current_user ():
65+ with responses .RequestsMock () as rsps :
66+ rsps .add (
67+ method = responses .GET ,
68+ url = "http://localhost/api/v4/user" ,
69+ json = {
70+ "id" : 1 ,
71+ "username" : "username" ,
72+ "web_url" : "http://localhost/username" ,
73+ },
74+ content_type = "application/json" ,
75+ status = 200 ,
76+ )
77+ yield rsps
78+
79+
6280# Todo: parametrize, but check what tests it's really useful for
6381@pytest .fixture
6482def gl_trailing ():
@@ -129,6 +147,12 @@ def user(gl):
129147 return gl .users .get (1 , lazy = True )
130148
131149
150+ @pytest .fixture
151+ def current_user (gl , resp_get_current_user ):
152+ gl .auth ()
153+ return gl .user
154+
155+
132156@pytest .fixture
133157def migration (gl ):
134158 return gl .bulk_imports .get (1 , lazy = True )
Original file line number Diff line number Diff line change @@ -241,6 +241,19 @@ def resp_starred_projects():
241241 yield rsps
242242
243243
244+ @pytest .fixture
245+ def resp_runner_create ():
246+ with responses .RequestsMock () as rsps :
247+ rsps .add (
248+ method = responses .POST ,
249+ url = "http://localhost/api/v4/user/runners" ,
250+ json = {"id" : "6" , "token" : "6337ff461c94fd3fa32ba3b1ff4125" },
251+ content_type = "application/json" ,
252+ status = 200 ,
253+ )
254+ yield rsps
255+
256+
244257def test_get_user (gl , resp_get_user ):
245258 user = gl .users .get (1 )
246259 assert isinstance (user , User )
@@ -304,3 +317,9 @@ def test_list_starred_projects(user, resp_starred_projects):
304317 projects = user .starred_projects .list ()
305318 assert isinstance (projects [0 ], StarredProject )
306319 assert projects [0 ].id == project_content ["id" ]
320+
321+
322+ def test_create_user_runner (current_user , resp_runner_create ):
323+ runner = current_user .runners .create ({"runner_type" : "instance_type" })
324+ assert runner .id == "6"
325+ assert runner .token == "6337ff461c94fd3fa32ba3b1ff4125"
You can’t perform that action at this time.
0 commit comments