URL: http://github.com/python-gitlab/python-gitlab/commit/35f9cb800c8b0d1473f3b6e113ff5c5a83874b7a
We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
2 parents 49a0032 + e78e121 commit 35f9cb8Copy full SHA for 35f9cb8
4 files changed
docs/gl_objects/users.rst
@@ -80,6 +80,10 @@ Set an external identity for a user::
80
user.extern_uid = '3'
81
user.save()
82
83
+Delete an external identity by provider name::
84
+
85
+ user.identityproviders.delete('oauth2_generic')
86
87
User custom attributes
88
======================
89
gitlab/tests/objects/test_users.py
@@ -95,6 +95,19 @@ def resp_get_user_status():
95
yield rsps
96
97
98
+@pytest.fixture
99
+def resp_delete_user_identity(no_content):
100
+ with responses.RequestsMock() as rsps:
101
+ rsps.add(
102
+ method=responses.DELETE,
103
+ url="http://localhost/api/v4/users/1/identities/test_provider",
104
+ json=no_content,
105
+ content_type="application/json",
106
+ status=204,
107
+ )
108
+ yield rsps
109
110
111
def test_get_user(gl, resp_get_user):
112
user = gl.users.get(1)
113
assert isinstance(user, User)
@@ -118,3 +131,7 @@ def test_user_status(user, resp_get_user_status):
118
131
def test_user_activate_deactivate(user, resp_activate):
119
132
user.activate()
120
133
user.deactivate()
134
135
136
+def test_delete_user_identity(user, resp_delete_user_identity):
137
+ user.identityproviders.delete("test_provider")
gitlab/v4/objects/__init__.py
@@ -217,6 +217,17 @@ class UserStatusManager(GetWithoutIdMixin, RESTManager):
217
_from_parent_attrs = {"user_id": "id"}
218
219
220
+class UserIdentityProviderManager(DeleteMixin, RESTManager):
221
+ """Manager for user identities.
222
223
+ This manager does not actually manage objects but enables
224
+ functionality for deletion of user identities by provider.
225
+ """
226
227
+ _path = "/users/%(user_id)s/identities"
228
+ _from_parent_attrs = {"user_id": "id"}
229
230
231
class UserImpersonationToken(ObjectDeleteMixin, RESTObject):
232
pass
233
@@ -320,6 +331,7 @@ class User(SaveMixin, ObjectDeleteMixin, RESTObject):
320
331
("emails", "UserEmailManager"),
321
332
("events", "UserEventManager"),
322
333
("gpgkeys", "UserGPGKeyManager"),
334
+ ("identityproviders", "UserIdentityProviderManager"),
323
335
("impersonationtokens", "UserImpersonationTokenManager"),
324
336
("keys", "UserKeyManager"),
325
337
("memberships", "UserMembershipManager"),
tools/functional/api/test_users.py
@@ -0,0 +1,20 @@
1
+"""
2
+GitLab API:
3
+https://docs.gitlab.com/ee/api/users.html
4
+https://docs.gitlab.com/ee/api/users.html#delete-authentication-identity-from-user
5
6
7
8
+def test_user_identities(gl, user):
9
+ provider = "test_provider"
10
11
+ user.provider = provider
12
+ user.extern_uid = "1"
13
+ user.save()
14
15
+ assert provider in [item["provider"] for item in user.identities]
16
17
+ user.identityproviders.delete(provider)
18
+ user = gl.users.get(user.id)
19
20
+ assert provider not in [item["provider"] for item in user.identities]
0 commit comments