1
2
3
4
5
6 package github
7
8 import (
9 "context"
10 "net/http"
11 "testing"
12 )
13
14 func TestSCIMService_ListSCIMProvisionedIdentities(t *testing.T) {
15 client, mux, _, teardown := setup()
16 defer teardown()
17
18 mux.HandleFunc("/scim/v2/organizations/o/Users", func(w http.ResponseWriter, r *http.Request) {
19 testMethod(t, r, "GET")
20 w.WriteHeader(http.StatusOK)
21 })
22
23 ctx := context.Background()
24 opts := &ListSCIMProvisionedIdentitiesOptions{}
25 _, err := client.SCIM.ListSCIMProvisionedIdentities(ctx, "o", opts)
26 if err != nil {
27 t.Errorf("SCIM.ListSCIMProvisionedIdentities returned error: %v", err)
28 }
29
30 const methodName = "ListSCIMProvisionedIdentities"
31 testBadOptions(t, methodName, func() (err error) {
32 _, err = client.SCIM.ListSCIMProvisionedIdentities(ctx, "\n", opts)
33 return err
34 })
35
36 testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) {
37 return client.SCIM.ListSCIMProvisionedIdentities(ctx, "o", opts)
38 })
39 }
40
41 func TestSCIMService_ProvisionAndInviteSCIMUser(t *testing.T) {
42 client, mux, _, teardown := setup()
43 defer teardown()
44
45 mux.HandleFunc("/scim/v2/organizations/o/Users", func(w http.ResponseWriter, r *http.Request) {
46 testMethod(t, r, "POST")
47 w.WriteHeader(http.StatusOK)
48 })
49
50 ctx := context.Background()
51 opts := &SCIMUserAttributes{
52 UserName: "userName",
53 Name: SCIMUserName{
54 GivenName: "givenName",
55 FamilyName: "familyName",
56 },
57 Emails: []*SCIMUserEmail{
58 {
59 Value: "octocat@github.com",
60 },
61 },
62 }
63 _, err := client.SCIM.ProvisionAndInviteSCIMUser(ctx, "o", opts)
64 if err != nil {
65 t.Errorf("SCIM.ListSCIMProvisionedIdentities returned error: %v", err)
66 }
67
68 const methodName = "ProvisionAndInviteSCIMUser"
69 testBadOptions(t, methodName, func() (err error) {
70 _, err = client.SCIM.ProvisionAndInviteSCIMUser(ctx, "\n", opts)
71 return err
72 })
73
74 testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) {
75 return client.SCIM.ProvisionAndInviteSCIMUser(ctx, "o", opts)
76 })
77 }
78
79 func TestSCIMService_GetSCIMProvisioningInfoForUser(t *testing.T) {
80 client, mux, _, teardown := setup()
81 defer teardown()
82
83 mux.HandleFunc("/scim/v2/organizations/o/Users/123", func(w http.ResponseWriter, r *http.Request) {
84 testMethod(t, r, "GET")
85 w.WriteHeader(http.StatusOK)
86 })
87
88 ctx := context.Background()
89 _, err := client.SCIM.GetSCIMProvisioningInfoForUser(ctx, "o", "123")
90 if err != nil {
91 t.Errorf("SCIM.GetSCIMProvisioningInfoForUser returned error: %v", err)
92 }
93
94 const methodName = "GetSCIMProvisioningInfoForUser"
95 testBadOptions(t, methodName, func() error {
96 _, err := client.SCIM.GetSCIMProvisioningInfoForUser(ctx, "\n", "123")
97 return err
98 })
99
100 testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) {
101 return client.SCIM.GetSCIMProvisioningInfoForUser(ctx, "o", "123")
102 })
103 }
104
105 func TestSCIMService_UpdateProvisionedOrgMembership(t *testing.T) {
106 client, mux, _, teardown := setup()
107 defer teardown()
108
109 mux.HandleFunc("/scim/v2/organizations/o/Users/123", func(w http.ResponseWriter, r *http.Request) {
110 testMethod(t, r, "PUT")
111 w.WriteHeader(http.StatusOK)
112 })
113
114 ctx := context.Background()
115 opts := &SCIMUserAttributes{
116 UserName: "userName",
117 Name: SCIMUserName{
118 GivenName: "givenName",
119 FamilyName: "familyName",
120 },
121 Emails: []*SCIMUserEmail{
122 {
123 Value: "octocat@github.com",
124 },
125 },
126 }
127 _, err := client.SCIM.UpdateProvisionedOrgMembership(ctx, "o", "123", opts)
128 if err != nil {
129 t.Errorf("SCIM.UpdateProvisionedOrgMembership returned error: %v", err)
130 }
131
132 const methodName = "UpdateProvisionedOrgMembership"
133 testBadOptions(t, methodName, func() error {
134 _, err := client.SCIM.UpdateProvisionedOrgMembership(ctx, "\n", "123", opts)
135 return err
136 })
137
138 testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) {
139 return client.SCIM.UpdateProvisionedOrgMembership(ctx, "o", "123", opts)
140 })
141 }
142
143 func TestSCIMService_UpdateAttributeForSCIMUser(t *testing.T) {
144 client, mux, _, teardown := setup()
145 defer teardown()
146
147 mux.HandleFunc("/scim/v2/organizations/o/Users/123", func(w http.ResponseWriter, r *http.Request) {
148 testMethod(t, r, "PATCH")
149 w.WriteHeader(http.StatusNoContent)
150 })
151
152 ctx := context.Background()
153 opts := &UpdateAttributeForSCIMUserOptions{}
154 _, err := client.SCIM.UpdateAttributeForSCIMUser(ctx, "o", "123", opts)
155 if err != nil {
156 t.Errorf("SCIM.UpdateAttributeForSCIMUser returned error: %v", err)
157 }
158
159 const methodName = "UpdateAttributeForSCIMUser"
160 testBadOptions(t, methodName, func() error {
161 _, err := client.SCIM.UpdateAttributeForSCIMUser(ctx, "\n", "123", opts)
162 return err
163 })
164
165 testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) {
166 return client.SCIM.UpdateAttributeForSCIMUser(ctx, "o", "123", opts)
167 })
168 }
169
170 func TestSCIMService_DeleteSCIMUserFromOrg(t *testing.T) {
171 client, mux, _, teardown := setup()
172 defer teardown()
173
174 mux.HandleFunc("/scim/v2/organizations/o/Users/123", func(w http.ResponseWriter, r *http.Request) {
175 testMethod(t, r, "DELETE")
176 w.WriteHeader(http.StatusNoContent)
177 })
178
179 ctx := context.Background()
180 _, err := client.SCIM.DeleteSCIMUserFromOrg(ctx, "o", "123")
181 if err != nil {
182 t.Errorf("SCIM.DeleteSCIMUserFromOrg returned error: %v", err)
183 }
184
185 const methodName = "DeleteSCIMUserFromOrg"
186 testBadOptions(t, methodName, func() error {
187 _, err := client.SCIM.DeleteSCIMUserFromOrg(ctx, "\n", "")
188 return err
189 })
190
191 testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) {
192 return client.SCIM.DeleteSCIMUserFromOrg(ctx, "o", "123")
193 })
194 }
195
196 func TestSCIMUserAttributes_Marshal(t *testing.T) {
197 testJSONMarshal(t, &SCIMUserAttributes{}, `{
198 "userName":"","name":{"givenName":"","familyName":""},"emails":null
199 }`)
200
201 u := &SCIMUserAttributes{
202 UserName: "userName1",
203 Name: SCIMUserName{
204 GivenName: "Name1",
205 FamilyName: "Fname",
206 Formatted: String("formatted name"),
207 },
208 DisplayName: String("Name"),
209 Emails: []*SCIMUserEmail{
210 {
211 Value: "value",
212 Primary: Bool(false),
213 Type: String("type"),
214 },
215 },
216 Schemas: []string{"schema1"},
217 ExternalID: String("id"),
218 Groups: []string{"group1"},
219 Active: Bool(true),
220 }
221
222 want := `{
223 "userName": "userName1",
224 "name": {
225 "givenName": "Name1",
226 "familyName": "Fname",
227 "formatted": "formatted name"
228 },
229 "displayName": "Name",
230 "emails": [{
231 "value": "value",
232 "primary": false,
233 "type": "type"
234 }],
235 "schemas": ["schema1"],
236 "externalId": "id",
237 "groups": ["group1"],
238 "active": true
239 }`
240
241 testJSONMarshal(t, u, want)
242 }
243
View as plain text