File tree Expand file tree Collapse file tree 3 files changed +49
-0
lines changed Expand file tree Collapse file tree 3 files changed +49
-0
lines changed Original file line number Diff line number Diff line change @@ -189,6 +189,8 @@ def __init__(
189
189
"""See :class:`~gitlab.v4.objects.PagesDomainManager`"""
190
190
self .user_activities = objects .UserActivitiesManager (self )
191
191
"""See :class:`~gitlab.v4.objects.UserActivitiesManager`"""
192
+ self .user_runners = objects .UserRunnerManager (self )
193
+ """See :class:`~gitlab.v4.objects.UserRunnerManager`"""
192
194
self .applications = objects .ApplicationManager (self )
193
195
"""See :class:`~gitlab.v4.objects.ApplicationManager`"""
194
196
self .variables = objects .VariableManager (self )
Original file line number Diff line number Diff line change 63
63
"UserMembershipManager" ,
64
64
"UserProject" ,
65
65
"UserProjectManager" ,
66
+ "UserRunner" ,
67
+ "UserRunnerManager" ,
66
68
]
67
69
68
70
@@ -678,3 +680,28 @@ class UserFollowingManager(ListMixin, RESTManager):
678
680
_path = "/users/{user_id}/following"
679
681
_obj_cls = User
680
682
_from_parent_attrs = {"user_id" : "id" }
683
+
684
+
685
+ class UserRunner (RESTObject ):
686
+ pass
687
+
688
+
689
+ class UserRunnerManager (CreateMixin , RESTManager ):
690
+ _path = "/user/runners"
691
+ _obj_cls = UserRunner
692
+ _types = {"tag_list" : types .CommaSeparatedListAttribute }
693
+ _create_attrs = RequiredOptional (
694
+ required = ("runner_type" ,),
695
+ optional = (
696
+ "group_id" ,
697
+ "project_id" ,
698
+ "description" ,
699
+ "paused" ,
700
+ "locked" ,
701
+ "run_untagged" ,
702
+ "tag_list" ,
703
+ "access_level" ,
704
+ "maximum_timeout" ,
705
+ "maintenance_note" ,
706
+ ),
707
+ )
Original file line number Diff line number Diff line change 6
6
import pytest
7
7
import responses
8
8
9
+ import gitlab
9
10
from gitlab .v4 .objects import StarredProject , User , UserMembership , UserStatus
10
11
11
12
from .test_projects import project_content
@@ -241,6 +242,19 @@ def resp_starred_projects():
241
242
yield rsps
242
243
243
244
245
+ @pytest .fixture
246
+ def resp_runner_create ():
247
+ with responses .RequestsMock () as rsps :
248
+ rsps .add (
249
+ method = responses .POST ,
250
+ url = "http://localhost/api/v4/user/runners" ,
251
+ json = {"id" : "6" , "token" : "6337ff461c94fd3fa32ba3b1ff4125" },
252
+ content_type = "application/json" ,
253
+ status = 200 ,
254
+ )
255
+ yield rsps
256
+
257
+
244
258
def test_get_user (gl , resp_get_user ):
245
259
user = gl .users .get (1 )
246
260
assert isinstance (user , User )
@@ -304,3 +318,9 @@ def test_list_starred_projects(user, resp_starred_projects):
304
318
projects = user .starred_projects .list ()
305
319
assert isinstance (projects [0 ], StarredProject )
306
320
assert projects [0 ].id == project_content ["id" ]
321
+
322
+
323
+ def test_create_user_runner (gl : gitlab .Gitlab , resp_runner_create ):
324
+ runner = gl .user_runners .create ({"runner_type" : "instance_type" })
325
+ assert runner .id == "6"
326
+ assert runner .token == "6337ff461c94fd3fa32ba3b1ff4125"
You can’t perform that action at this time.
0 commit comments