Skip to content

Commit fc3259f

Browse files
committed
Implement test for ListProvisionedSCIMUsers
1 parent d68a9e0 commit fc3259f

File tree

2 files changed

+108
-2
lines changed

2 files changed

+108
-2
lines changed

github/enterprise_scim.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -167,12 +167,12 @@ func (s *EnterpriseService) ListProvisionedSCIMGroups(ctx context.Context, enter
167167
return groups, resp, nil
168168
}
169169

170-
// ListSCIMProvisionedUsers lists provisioned SCIM enterprise users.
170+
// ListProvisionedSCIMUsers lists provisioned SCIM enterprise users.
171171
//
172172
// GitHub API docs: https://docs.github.com/enterprise-cloud@latest/rest/enterprise-admin/scim#list-scim-provisioned-identities-for-an-enterprise
173173
//
174174
//meta:operation GET /scim/v2/enterprises/{enterprise}/Users
175-
func (s *EnterpriseService) ListSCIMProvisionedUsers(ctx context.Context, enterprise string, opts *ListProvisionedSCIMUsersEnterpriseOptions) (*SCIMEnterpriseUsers, *Response, error) {
175+
func (s *EnterpriseService) ListProvisionedSCIMUsers(ctx context.Context, enterprise string, opts *ListProvisionedSCIMUsersEnterpriseOptions) (*SCIMEnterpriseUsers, *Response, error) {
176176
u := fmt.Sprintf("scim/v2/enterprises/%v/Users", enterprise)
177177
u, err := addOptions(u, opts)
178178
if err != nil {
@@ -183,6 +183,7 @@ func (s *EnterpriseService) ListSCIMProvisionedUsers(ctx context.Context, enterp
183183
if err != nil {
184184
return nil, nil, err
185185
}
186+
req.Header.Set("Accept", mediaTypeSCIM)
186187

187188
users := new(SCIMEnterpriseUsers)
188189
resp, err := s.client.Do(ctx, req, users)

github/enterprise_scim_test.go

Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -333,3 +333,108 @@ func TestEnterpriseService_ListProvisionedSCIMGroups(t *testing.T) {
333333
return r, err
334334
})
335335
}
336+
337+
func TestEnterpriseService_ListProvisionedSCIMUsers(t *testing.T) {
338+
t.Parallel()
339+
client, mux, _ := setup(t)
340+
341+
mux.HandleFunc("/scim/v2/enterprises/octo-org/Users", func(w http.ResponseWriter, r *http.Request) {
342+
testMethod(t, r, "GET")
343+
testHeader(t, r, "Accept", mediaTypeSCIM)
344+
testFormValues(t, r, values{
345+
"startIndex": "1",
346+
"count": "3",
347+
"filter": `userName eq "[email protected]"`,
348+
})
349+
w.WriteHeader(http.StatusOK)
350+
_, _ = w.Write([]byte(`{
351+
"schemas": ["` + SCIMSchemasURINamespacesListResponse + `"],
352+
"totalResults": 1,
353+
"itemsPerPage": 1,
354+
"startIndex": 1,
355+
"Resources": [
356+
{
357+
"schemas": ["` + SCIMSchemasURINamespacesUser + `"],
358+
"id": "5fc0",
359+
"externalId": "00u1",
360+
"userName": "[email protected]",
361+
"displayName": "Mona Octocat",
362+
"name": {
363+
"givenName": "Mona",
364+
"familyName": "Octocat",
365+
"formatted": "Mona Octocat"
366+
},
367+
"emails": [
368+
{
369+
"value": "[email protected]",
370+
"primary": true
371+
}
372+
],
373+
"active": true,
374+
"meta": {
375+
"resourceType": "User",
376+
"created": ` + referenceTimeStr + `,
377+
"lastModified": ` + referenceTimeStr + `,
378+
"location": "https://api.github.com/scim/v2/organizations/octo-org/Users/5fc0"
379+
}
380+
}
381+
]
382+
}`))
383+
})
384+
385+
ctx := t.Context()
386+
opts := &ListProvisionedSCIMUsersEnterpriseOptions{
387+
StartIndex: 1,
388+
Count: 3,
389+
Filter: `userName eq "[email protected]"`,
390+
}
391+
users, _, err := client.Enterprise.ListProvisionedSCIMUsers(ctx, "octo-org", opts)
392+
if err != nil {
393+
t.Fatalf("Enterprise.ListProvisionedSCIMUsers returned unexpected error: %v", err)
394+
}
395+
396+
want := SCIMEnterpriseUsers{
397+
Schemas: []string{SCIMSchemasURINamespacesListResponse},
398+
TotalResults: Ptr(1),
399+
ItemsPerPage: Ptr(1),
400+
StartIndex: Ptr(1),
401+
Resources: []*SCIMEnterpriseUserAttributes{{
402+
Schemas: []string{SCIMSchemasURINamespacesUser},
403+
ID: Ptr("5fc0"),
404+
ExternalID: "00u1",
405+
UserName: "[email protected]",
406+
DisplayName: "Mona Octocat",
407+
Name: &SCIMEnterpriseUserName{
408+
GivenName: "Mona",
409+
FamilyName: "Octocat",
410+
Formatted: Ptr("Mona Octocat"),
411+
},
412+
Emails: []*SCIMEnterpriseUserEmail{{
413+
414+
Primary: true,
415+
}},
416+
Active: true,
417+
Meta: &SCIMEnterpriseMeta{
418+
ResourceType: "User",
419+
Created: &Timestamp{referenceTime},
420+
LastModified: &Timestamp{referenceTime},
421+
Location: Ptr("https://api.github.com/scim/v2/organizations/octo-org/Users/5fc0"),
422+
},
423+
}},
424+
}
425+
426+
if diff := cmp.Diff(want, *users); diff != "" {
427+
t.Errorf("Enterprise.ListProvisionedSCIMUsers diff mismatch (-want +got):\n%v", diff)
428+
}
429+
430+
const methodName = "ListProvisionedSCIMUsers"
431+
testBadOptions(t, methodName, func() (err error) {
432+
_, _, err = client.Enterprise.ListProvisionedSCIMUsers(ctx, "\n", opts)
433+
return err
434+
})
435+
436+
testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) {
437+
_, r, err := client.Enterprise.ListProvisionedSCIMUsers(ctx, "o", opts)
438+
return r, err
439+
})
440+
}

0 commit comments

Comments
 (0)