Skip to content

Commit 41e5f3e

Browse files
committed
Implement DELETE for SCIM Users
1 parent 704fe20 commit 41e5f3e

File tree

2 files changed

+48
-1
lines changed

2 files changed

+48
-1
lines changed

github/enterprise_scim.go

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -269,7 +269,27 @@ func (s *EnterpriseService) DeleteSCIMGroup(ctx context.Context, enterprise, sci
269269
if err != nil {
270270
return nil, err
271271
}
272-
req.Header.Set("Accept", mediaTypeV3)
272+
273+
return s.client.Do(ctx, req, nil)
274+
}
275+
276+
// DeleteSCIMUser deletes a SCIM user from an enterprise.
277+
//
278+
// Suspends a SCIM user permanently from an enterprise. This action will:
279+
// remove all the user's data, anonymize their login, email, and display name,
280+
// erase all external identity SCIM attributes, delete the user's emails,
281+
// avatar, PATs, SSH keys, OAuth authorizations, GPG keys, and SAML mappings.
282+
// This action is irreversible.
283+
//
284+
// GitHub API docs: https://docs.github.com/enterprise-cloud@latest/rest/enterprise-admin/scim#delete-a-scim-user-from-an-enterprise
285+
//
286+
//meta:operation DELETE /scim/v2/enterprises/{enterprise}/Users/{scim_user_id}
287+
func (s *EnterpriseService) DeleteSCIMUser(ctx context.Context, enterprise, scimUserID string) (*Response, error) {
288+
u := fmt.Sprintf("scim/v2/enterprises/%v/Users/%v", enterprise, scimUserID)
289+
req, err := s.client.NewRequest("DELETE", u, nil)
290+
if err != nil {
291+
return nil, err
292+
}
273293

274294
return s.client.Do(ctx, req, nil)
275295
}

github/enterprise_scim_test.go

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -687,3 +687,30 @@ func TestEnterpriseService_DeleteSCIMGroup(t *testing.T) {
687687
return client.Enterprise.DeleteSCIMGroup(ctx, "ee", "abcd")
688688
})
689689
}
690+
691+
func TestEnterpriseService_DeleteSCIMUser(t *testing.T) {
692+
t.Parallel()
693+
client, mux, _ := setup(t)
694+
695+
mux.HandleFunc("/scim/v2/enterprises/ee/Users/7fce", func(w http.ResponseWriter, r *http.Request) {
696+
testMethod(t, r, "DELETE")
697+
testHeader(t, r, "Accept", mediaTypeV3)
698+
w.WriteHeader(http.StatusNoContent)
699+
})
700+
701+
ctx := t.Context()
702+
_, err := client.Enterprise.DeleteSCIMUser(ctx, "ee", "7fce")
703+
if err != nil {
704+
t.Fatalf("Enterprise.DeleteSCIMUser returned unexpected error: %v", err)
705+
}
706+
707+
const methodName = "DeleteSCIMUser"
708+
testBadOptions(t, methodName, func() (err error) {
709+
_, err = client.Enterprise.DeleteSCIMUser(ctx, "\n", "\n")
710+
return err
711+
})
712+
713+
testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) {
714+
return client.Enterprise.DeleteSCIMUser(ctx, "ee", "7fce")
715+
})
716+
}

0 commit comments

Comments
 (0)