1
2
3
4
5
6 package github
7
8 import (
9 "context"
10 "encoding/json"
11 "fmt"
12 "net/http"
13 "testing"
14
15 "github.com/google/go-cmp/cmp"
16 )
17
18 func TestTeamsService__ListTeamMembersByID(t *testing.T) {
19 client, mux, _, teardown := setup()
20 defer teardown()
21
22 mux.HandleFunc("/organizations/1/team/2/members", func(w http.ResponseWriter, r *http.Request) {
23 testMethod(t, r, "GET")
24 testFormValues(t, r, values{"role": "member", "page": "2"})
25 fmt.Fprint(w, `[{"id":1}]`)
26 })
27
28 opt := &TeamListTeamMembersOptions{Role: "member", ListOptions: ListOptions{Page: 2}}
29 ctx := context.Background()
30 members, _, err := client.Teams.ListTeamMembersByID(ctx, 1, 2, opt)
31 if err != nil {
32 t.Errorf("Teams.ListTeamMembersByID returned error: %v", err)
33 }
34
35 want := []*User{{ID: Int64(1)}}
36 if !cmp.Equal(members, want) {
37 t.Errorf("Teams.ListTeamMembersByID returned %+v, want %+v", members, want)
38 }
39
40 const methodName = "ListTeamMembersByID"
41 testBadOptions(t, methodName, func() (err error) {
42 _, _, err = client.Teams.ListTeamMembersByID(ctx, -1, -2, opt)
43 return err
44 })
45
46 testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) {
47 got, resp, err := client.Teams.ListTeamMembersByID(ctx, 1, 2, opt)
48 if got != nil {
49 t.Errorf("testNewRequestAndDoFailure %v = %#v, want nil", methodName, got)
50 }
51 return resp, err
52 })
53 }
54
55 func TestTeamsService__ListTeamMembersByID_notFound(t *testing.T) {
56 client, mux, _, teardown := setup()
57 defer teardown()
58
59 mux.HandleFunc("/organizations/1/team/2/members", func(w http.ResponseWriter, r *http.Request) {
60 testMethod(t, r, "GET")
61 testFormValues(t, r, values{"role": "member", "page": "2"})
62 w.WriteHeader(http.StatusNotFound)
63 })
64
65 opt := &TeamListTeamMembersOptions{Role: "member", ListOptions: ListOptions{Page: 2}}
66 ctx := context.Background()
67 members, resp, err := client.Teams.ListTeamMembersByID(ctx, 1, 2, opt)
68 if err == nil {
69 t.Errorf("Expected HTTP 404 response")
70 }
71 if got, want := resp.Response.StatusCode, http.StatusNotFound; got != want {
72 t.Errorf("Teams.ListTeamMembersByID returned status %d, want %d", got, want)
73 }
74 if members != nil {
75 t.Errorf("Teams.ListTeamMembersByID returned %+v, want nil", members)
76 }
77
78 const methodName = "ListTeamMembersByID"
79 testBadOptions(t, methodName, func() (err error) {
80 _, _, err = client.Teams.ListTeamMembersByID(ctx, 1, 2, opt)
81 return err
82 })
83
84 testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) {
85 got, resp, err := client.Teams.ListTeamMembersByID(ctx, 1, 2, opt)
86 if got != nil {
87 t.Errorf("testNewRequestAndDoFailure %v = %#v, want nil", methodName, got)
88 }
89 return resp, err
90 })
91 }
92
93 func TestTeamsService__ListTeamMembersBySlug(t *testing.T) {
94 client, mux, _, teardown := setup()
95 defer teardown()
96
97 mux.HandleFunc("/orgs/o/teams/s/members", func(w http.ResponseWriter, r *http.Request) {
98 testMethod(t, r, "GET")
99 testFormValues(t, r, values{"role": "member", "page": "2"})
100 fmt.Fprint(w, `[{"id":1}]`)
101 })
102
103 opt := &TeamListTeamMembersOptions{Role: "member", ListOptions: ListOptions{Page: 2}}
104 ctx := context.Background()
105 members, _, err := client.Teams.ListTeamMembersBySlug(ctx, "o", "s", opt)
106 if err != nil {
107 t.Errorf("Teams.ListTeamMembersBySlug returned error: %v", err)
108 }
109
110 want := []*User{{ID: Int64(1)}}
111 if !cmp.Equal(members, want) {
112 t.Errorf("Teams.ListTeamMembersBySlug returned %+v, want %+v", members, want)
113 }
114
115 const methodName = "ListTeamMembersBySlug"
116 testBadOptions(t, methodName, func() (err error) {
117 _, _, err = client.Teams.ListTeamMembersBySlug(ctx, "\n", "\n", opt)
118 return err
119 })
120
121 testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) {
122 got, resp, err := client.Teams.ListTeamMembersBySlug(ctx, "o", "s", opt)
123 if got != nil {
124 t.Errorf("testNewRequestAndDoFailure %v = %#v, want nil", methodName, got)
125 }
126 return resp, err
127 })
128 }
129
130 func TestTeamsService__ListTeamMembersBySlug_notFound(t *testing.T) {
131 client, mux, _, teardown := setup()
132 defer teardown()
133
134 mux.HandleFunc("/orgs/o/teams/s/members", func(w http.ResponseWriter, r *http.Request) {
135 testMethod(t, r, "GET")
136 testFormValues(t, r, values{"role": "member", "page": "2"})
137 w.WriteHeader(http.StatusNotFound)
138 })
139
140 opt := &TeamListTeamMembersOptions{Role: "member", ListOptions: ListOptions{Page: 2}}
141 ctx := context.Background()
142 members, resp, err := client.Teams.ListTeamMembersBySlug(ctx, "o", "s", opt)
143 if err == nil {
144 t.Errorf("Expected HTTP 404 response")
145 }
146 if got, want := resp.Response.StatusCode, http.StatusNotFound; got != want {
147 t.Errorf("Teams.ListTeamMembersBySlug returned status %d, want %d", got, want)
148 }
149 if members != nil {
150 t.Errorf("Teams.ListTeamMembersBySlug returned %+v, want nil", members)
151 }
152
153 const methodName = "ListTeamMembersBySlug"
154 testBadOptions(t, methodName, func() (err error) {
155 _, _, err = client.Teams.ListTeamMembersBySlug(ctx, "o", "s", opt)
156 return err
157 })
158
159 testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) {
160 got, resp, err := client.Teams.ListTeamMembersBySlug(ctx, "o", "s", opt)
161 if got != nil {
162 t.Errorf("testNewRequestAndDoFailure %v = %#v, want nil", methodName, got)
163 }
164 return resp, err
165 })
166 }
167
168 func TestTeamsService__ListTeamMembersBySlug_invalidOrg(t *testing.T) {
169 client, _, _, teardown := setup()
170 defer teardown()
171
172 ctx := context.Background()
173 _, _, err := client.Teams.ListTeamMembersBySlug(ctx, "%", "s", nil)
174 testURLParseError(t, err)
175 }
176
177 func TestTeamsService__GetTeamMembershipByID(t *testing.T) {
178 client, mux, _, teardown := setup()
179 defer teardown()
180
181 mux.HandleFunc("/organizations/1/team/2/memberships/u", func(w http.ResponseWriter, r *http.Request) {
182 testMethod(t, r, "GET")
183 fmt.Fprint(w, `{"url":"u", "state":"active"}`)
184 })
185
186 ctx := context.Background()
187 membership, _, err := client.Teams.GetTeamMembershipByID(ctx, 1, 2, "u")
188 if err != nil {
189 t.Errorf("Teams.GetTeamMembershipByID returned error: %v", err)
190 }
191
192 want := &Membership{URL: String("u"), State: String("active")}
193 if !cmp.Equal(membership, want) {
194 t.Errorf("Teams.GetTeamMembershipByID returned %+v, want %+v", membership, want)
195 }
196
197 const methodName = "GetTeamMembershipByID"
198 testBadOptions(t, methodName, func() (err error) {
199 _, _, err = client.Teams.GetTeamMembershipByID(ctx, -1, -2, "\n")
200 return err
201 })
202
203 testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) {
204 got, resp, err := client.Teams.GetTeamMembershipByID(ctx, 1, 2, "u")
205 if got != nil {
206 t.Errorf("testNewRequestAndDoFailure %v = %#v, want nil", methodName, got)
207 }
208 return resp, err
209 })
210 }
211
212 func TestTeamsService__GetTeamMembershipByID_notFound(t *testing.T) {
213 client, mux, _, teardown := setup()
214 defer teardown()
215
216 mux.HandleFunc("/organizations/1/team/2/memberships/u", func(w http.ResponseWriter, r *http.Request) {
217 testMethod(t, r, "GET")
218 w.WriteHeader(http.StatusNotFound)
219 })
220
221 ctx := context.Background()
222 membership, resp, err := client.Teams.GetTeamMembershipByID(ctx, 1, 2, "u")
223 if err == nil {
224 t.Errorf("Expected HTTP 404 response")
225 }
226 if got, want := resp.Response.StatusCode, http.StatusNotFound; got != want {
227 t.Errorf("Teams.GetTeamMembershipByID returned status %d, want %d", got, want)
228 }
229 if membership != nil {
230 t.Errorf("Teams.GetTeamMembershipByID returned %+v, want nil", membership)
231 }
232
233 const methodName = "GetTeamMembershipByID"
234 testBadOptions(t, methodName, func() (err error) {
235 _, _, err = client.Teams.GetTeamMembershipByID(ctx, 1, 2, "u")
236 return err
237 })
238
239 testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) {
240 got, resp, err := client.Teams.GetTeamMembershipByID(ctx, 1, 2, "u")
241 if got != nil {
242 t.Errorf("testNewRequestAndDoFailure %v = %#v, want nil", methodName, got)
243 }
244 return resp, err
245 })
246 }
247
248 func TestTeamsService__GetTeamMembershipBySlug(t *testing.T) {
249 client, mux, _, teardown := setup()
250 defer teardown()
251
252 mux.HandleFunc("/orgs/o/teams/s/memberships/u", func(w http.ResponseWriter, r *http.Request) {
253 testMethod(t, r, "GET")
254 fmt.Fprint(w, `{"url":"u", "state":"active"}`)
255 })
256
257 ctx := context.Background()
258 membership, _, err := client.Teams.GetTeamMembershipBySlug(ctx, "o", "s", "u")
259 if err != nil {
260 t.Errorf("Teams.GetTeamMembershipBySlug returned error: %v", err)
261 }
262
263 want := &Membership{URL: String("u"), State: String("active")}
264 if !cmp.Equal(membership, want) {
265 t.Errorf("Teams.GetTeamMembershipBySlug returned %+v, want %+v", membership, want)
266 }
267
268 const methodName = "GetTeamMembershipBySlug"
269 testBadOptions(t, methodName, func() (err error) {
270 _, _, err = client.Teams.GetTeamMembershipBySlug(ctx, "\n", "\n", "\n")
271 return err
272 })
273
274 testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) {
275 got, resp, err := client.Teams.GetTeamMembershipBySlug(ctx, "o", "s", "u")
276 if got != nil {
277 t.Errorf("testNewRequestAndDoFailure %v = %#v, want nil", methodName, got)
278 }
279 return resp, err
280 })
281 }
282
283 func TestTeamsService__GetTeamMembershipBySlug_notFound(t *testing.T) {
284 client, mux, _, teardown := setup()
285 defer teardown()
286
287 mux.HandleFunc("/orgs/o/teams/s/memberships/u", func(w http.ResponseWriter, r *http.Request) {
288 testMethod(t, r, "GET")
289 w.WriteHeader(http.StatusNotFound)
290 })
291
292 ctx := context.Background()
293 membership, resp, err := client.Teams.GetTeamMembershipBySlug(ctx, "o", "s", "u")
294 if err == nil {
295 t.Errorf("Expected HTTP 404 response")
296 }
297 if got, want := resp.Response.StatusCode, http.StatusNotFound; got != want {
298 t.Errorf("Teams.GetTeamMembershipBySlug returned status %d, want %d", got, want)
299 }
300 if membership != nil {
301 t.Errorf("Teams.GetTeamMembershipBySlug returned %+v, want nil", membership)
302 }
303
304 const methodName = "GetTeamMembershipBySlug"
305 testBadOptions(t, methodName, func() (err error) {
306 _, _, err = client.Teams.GetTeamMembershipBySlug(ctx, "o", "s", "u")
307 return err
308 })
309
310 testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) {
311 got, resp, err := client.Teams.GetTeamMembershipBySlug(ctx, "o", "s", "u")
312 if got != nil {
313 t.Errorf("testNewRequestAndDoFailure %v = %#v, want nil", methodName, got)
314 }
315 return resp, err
316 })
317 }
318
319 func TestTeamsService__GetTeamMembershipBySlug_invalidOrg(t *testing.T) {
320 client, _, _, teardown := setup()
321 defer teardown()
322
323 ctx := context.Background()
324 _, _, err := client.Teams.GetTeamMembershipBySlug(ctx, "%s", "s", "u")
325 testURLParseError(t, err)
326 }
327
328 func TestTeamsService__AddTeamMembershipByID(t *testing.T) {
329 client, mux, _, teardown := setup()
330 defer teardown()
331
332 opt := &TeamAddTeamMembershipOptions{Role: "maintainer"}
333
334 mux.HandleFunc("/organizations/1/team/2/memberships/u", func(w http.ResponseWriter, r *http.Request) {
335 v := new(TeamAddTeamMembershipOptions)
336 json.NewDecoder(r.Body).Decode(v)
337
338 testMethod(t, r, "PUT")
339 if !cmp.Equal(v, opt) {
340 t.Errorf("Request body = %+v, want %+v", v, opt)
341 }
342
343 fmt.Fprint(w, `{"url":"u", "state":"pending"}`)
344 })
345
346 ctx := context.Background()
347 membership, _, err := client.Teams.AddTeamMembershipByID(ctx, 1, 2, "u", opt)
348 if err != nil {
349 t.Errorf("Teams.AddTeamMembershipByID returned error: %v", err)
350 }
351
352 want := &Membership{URL: String("u"), State: String("pending")}
353 if !cmp.Equal(membership, want) {
354 t.Errorf("Teams.AddTeamMembershipByID returned %+v, want %+v", membership, want)
355 }
356
357 const methodName = "AddTeamMembershipByID"
358 testBadOptions(t, methodName, func() (err error) {
359 _, _, err = client.Teams.AddTeamMembershipByID(ctx, -1, -2, "\n", opt)
360 return err
361 })
362
363 testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) {
364 got, resp, err := client.Teams.AddTeamMembershipByID(ctx, 1, 2, "u", opt)
365 if got != nil {
366 t.Errorf("testNewRequestAndDoFailure %v = %#v, want nil", methodName, got)
367 }
368 return resp, err
369 })
370 }
371
372 func TestTeamsService__AddTeamMembershipByID_notFound(t *testing.T) {
373 client, mux, _, teardown := setup()
374 defer teardown()
375
376 opt := &TeamAddTeamMembershipOptions{Role: "maintainer"}
377
378 mux.HandleFunc("/organizations/1/team/2/memberships/u", func(w http.ResponseWriter, r *http.Request) {
379 v := new(TeamAddTeamMembershipOptions)
380 json.NewDecoder(r.Body).Decode(v)
381
382 testMethod(t, r, "PUT")
383 if !cmp.Equal(v, opt) {
384 t.Errorf("Request body = %+v, want %+v", v, opt)
385 }
386
387 w.WriteHeader(http.StatusNotFound)
388 })
389
390 ctx := context.Background()
391 membership, resp, err := client.Teams.AddTeamMembershipByID(ctx, 1, 2, "u", opt)
392 if err == nil {
393 t.Errorf("Expected HTTP 404 response")
394 }
395 if got, want := resp.Response.StatusCode, http.StatusNotFound; got != want {
396 t.Errorf("Teams.AddTeamMembershipByID returned status %d, want %d", got, want)
397 }
398 if membership != nil {
399 t.Errorf("Teams.AddTeamMembershipByID returned %+v, want nil", membership)
400 }
401
402 const methodName = "AddTeamMembershipByID"
403 testBadOptions(t, methodName, func() (err error) {
404 _, _, err = client.Teams.AddTeamMembershipByID(ctx, 1, 2, "u", opt)
405 return err
406 })
407
408 testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) {
409 got, resp, err := client.Teams.AddTeamMembershipByID(ctx, 1, 2, "u", opt)
410 if got != nil {
411 t.Errorf("testNewRequestAndDoFailure %v = %#v, want nil", methodName, got)
412 }
413 return resp, err
414 })
415 }
416
417 func TestTeamsService__AddTeamMembershipBySlug(t *testing.T) {
418 client, mux, _, teardown := setup()
419 defer teardown()
420
421 opt := &TeamAddTeamMembershipOptions{Role: "maintainer"}
422
423 mux.HandleFunc("/orgs/o/teams/s/memberships/u", func(w http.ResponseWriter, r *http.Request) {
424 v := new(TeamAddTeamMembershipOptions)
425 json.NewDecoder(r.Body).Decode(v)
426
427 testMethod(t, r, "PUT")
428 if !cmp.Equal(v, opt) {
429 t.Errorf("Request body = %+v, want %+v", v, opt)
430 }
431
432 fmt.Fprint(w, `{"url":"u", "state":"pending"}`)
433 })
434
435 ctx := context.Background()
436 membership, _, err := client.Teams.AddTeamMembershipBySlug(ctx, "o", "s", "u", opt)
437 if err != nil {
438 t.Errorf("Teams.AddTeamMembershipBySlug returned error: %v", err)
439 }
440
441 want := &Membership{URL: String("u"), State: String("pending")}
442 if !cmp.Equal(membership, want) {
443 t.Errorf("Teams.AddTeamMembershipBySlug returned %+v, want %+v", membership, want)
444 }
445
446 const methodName = "AddTeamMembershipBySlug"
447 testBadOptions(t, methodName, func() (err error) {
448 _, _, err = client.Teams.AddTeamMembershipBySlug(ctx, "\n", "\n", "\n", opt)
449 return err
450 })
451
452 testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) {
453 got, resp, err := client.Teams.AddTeamMembershipBySlug(ctx, "o", "s", "u", opt)
454 if got != nil {
455 t.Errorf("testNewRequestAndDoFailure %v = %#v, want nil", methodName, got)
456 }
457 return resp, err
458 })
459 }
460
461 func TestTeamsService__AddTeamMembershipBySlug_notFound(t *testing.T) {
462 client, mux, _, teardown := setup()
463 defer teardown()
464
465 opt := &TeamAddTeamMembershipOptions{Role: "maintainer"}
466
467 mux.HandleFunc("/orgs/o/teams/s/memberships/u", func(w http.ResponseWriter, r *http.Request) {
468 v := new(TeamAddTeamMembershipOptions)
469 json.NewDecoder(r.Body).Decode(v)
470
471 testMethod(t, r, "PUT")
472 if !cmp.Equal(v, opt) {
473 t.Errorf("Request body = %+v, want %+v", v, opt)
474 }
475
476 w.WriteHeader(http.StatusNotFound)
477 })
478
479 ctx := context.Background()
480 membership, resp, err := client.Teams.AddTeamMembershipBySlug(ctx, "o", "s", "u", opt)
481 if err == nil {
482 t.Errorf("Expected HTTP 404 response")
483 }
484 if got, want := resp.Response.StatusCode, http.StatusNotFound; got != want {
485 t.Errorf("Teams.AddTeamMembershipBySlug returned status %d, want %d", got, want)
486 }
487 if membership != nil {
488 t.Errorf("Teams.AddTeamMembershipBySlug returned %+v, want nil", membership)
489 }
490
491 const methodName = "AddTeamMembershipBySlug"
492 testBadOptions(t, methodName, func() (err error) {
493 _, _, err = client.Teams.AddTeamMembershipBySlug(ctx, "o", "s", "u", opt)
494 return err
495 })
496
497 testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) {
498 got, resp, err := client.Teams.AddTeamMembershipBySlug(ctx, "o", "s", "u", opt)
499 if got != nil {
500 t.Errorf("testNewRequestAndDoFailure %v = %#v, want nil", methodName, got)
501 }
502 return resp, err
503 })
504 }
505
506 func TestTeamsService__AddTeamMembershipBySlug_invalidOrg(t *testing.T) {
507 client, _, _, teardown := setup()
508 defer teardown()
509
510 ctx := context.Background()
511 _, _, err := client.Teams.AddTeamMembershipBySlug(ctx, "%", "s", "u", nil)
512 testURLParseError(t, err)
513 }
514
515 func TestTeamsService__RemoveTeamMembershipByID(t *testing.T) {
516 client, mux, _, teardown := setup()
517 defer teardown()
518
519 mux.HandleFunc("/organizations/1/team/2/memberships/u", func(w http.ResponseWriter, r *http.Request) {
520 testMethod(t, r, "DELETE")
521 w.WriteHeader(http.StatusNoContent)
522 })
523
524 ctx := context.Background()
525 _, err := client.Teams.RemoveTeamMembershipByID(ctx, 1, 2, "u")
526 if err != nil {
527 t.Errorf("Teams.RemoveTeamMembershipByID returned error: %v", err)
528 }
529
530 const methodName = "RemoveTeamMembershipByID"
531 testBadOptions(t, methodName, func() (err error) {
532 _, err = client.Teams.RemoveTeamMembershipByID(ctx, -1, -2, "\n")
533 return err
534 })
535
536 testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) {
537 return client.Teams.RemoveTeamMembershipByID(ctx, 1, 2, "u")
538 })
539 }
540
541 func TestTeamsService__RemoveTeamMembershipByID_notFound(t *testing.T) {
542 client, mux, _, teardown := setup()
543 defer teardown()
544
545 mux.HandleFunc("/organizations/1/team/2/memberships/u", func(w http.ResponseWriter, r *http.Request) {
546 testMethod(t, r, "DELETE")
547 w.WriteHeader(http.StatusNotFound)
548 })
549
550 ctx := context.Background()
551 resp, err := client.Teams.RemoveTeamMembershipByID(ctx, 1, 2, "u")
552 if err == nil {
553 t.Errorf("Expected HTTP 404 response")
554 }
555 if got, want := resp.Response.StatusCode, http.StatusNotFound; got != want {
556 t.Errorf("Teams.RemoveTeamMembershipByID returned status %d, want %d", got, want)
557 }
558
559 const methodName = "RemoveTeamMembershipByID"
560 testBadOptions(t, methodName, func() (err error) {
561 _, err = client.Teams.RemoveTeamMembershipByID(ctx, 1, 2, "u")
562 return err
563 })
564
565 testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) {
566 return client.Teams.RemoveTeamMembershipByID(ctx, 1, 2, "u")
567 })
568 }
569
570 func TestTeamsService__RemoveTeamMembershipBySlug(t *testing.T) {
571 client, mux, _, teardown := setup()
572 defer teardown()
573
574 mux.HandleFunc("/orgs/o/teams/s/memberships/u", func(w http.ResponseWriter, r *http.Request) {
575 testMethod(t, r, "DELETE")
576 w.WriteHeader(http.StatusNoContent)
577 })
578
579 ctx := context.Background()
580 _, err := client.Teams.RemoveTeamMembershipBySlug(ctx, "o", "s", "u")
581 if err != nil {
582 t.Errorf("Teams.RemoveTeamMembershipBySlug returned error: %v", err)
583 }
584
585 const methodName = "RemoveTeamMembershipBySlug"
586 testBadOptions(t, methodName, func() (err error) {
587 _, err = client.Teams.RemoveTeamMembershipBySlug(ctx, "\n", "\n", "\n")
588 return err
589 })
590
591 testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) {
592 return client.Teams.RemoveTeamMembershipBySlug(ctx, "o", "s", "u")
593 })
594 }
595
596 func TestTeamsService__RemoveTeamMembershipBySlug_notFound(t *testing.T) {
597 client, mux, _, teardown := setup()
598 defer teardown()
599
600 mux.HandleFunc("/orgs/o/teams/s/memberships/u", func(w http.ResponseWriter, r *http.Request) {
601 testMethod(t, r, "DELETE")
602 w.WriteHeader(http.StatusNotFound)
603 })
604
605 ctx := context.Background()
606 resp, err := client.Teams.RemoveTeamMembershipBySlug(ctx, "o", "s", "u")
607 if err == nil {
608 t.Errorf("Expected HTTP 404 response")
609 }
610 if got, want := resp.Response.StatusCode, http.StatusNotFound; got != want {
611 t.Errorf("Teams.RemoveTeamMembershipBySlug returned status %d, want %d", got, want)
612 }
613
614 const methodName = "RemoveTeamMembershipBySlug"
615 testBadOptions(t, methodName, func() (err error) {
616 _, err = client.Teams.RemoveTeamMembershipBySlug(ctx, "o", "s", "u")
617 return err
618 })
619
620 testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) {
621 return client.Teams.RemoveTeamMembershipBySlug(ctx, "o", "s", "u")
622 })
623 }
624
625 func TestTeamsService__RemoveTeamMembershipBySlug_invalidOrg(t *testing.T) {
626 client, _, _, teardown := setup()
627 defer teardown()
628
629 ctx := context.Background()
630 _, err := client.Teams.RemoveTeamMembershipBySlug(ctx, "%", "s", "u")
631 testURLParseError(t, err)
632 }
633
634 func TestTeamsService__ListPendingTeamInvitationsByID(t *testing.T) {
635 client, mux, _, teardown := setup()
636 defer teardown()
637
638 mux.HandleFunc("/organizations/1/team/2/invitations", func(w http.ResponseWriter, r *http.Request) {
639 testMethod(t, r, "GET")
640 testFormValues(t, r, values{"page": "2"})
641 fmt.Fprint(w, `[{"id":1}]`)
642 })
643
644 opt := &ListOptions{Page: 2}
645 ctx := context.Background()
646 invitations, _, err := client.Teams.ListPendingTeamInvitationsByID(ctx, 1, 2, opt)
647 if err != nil {
648 t.Errorf("Teams.ListPendingTeamInvitationsByID returned error: %v", err)
649 }
650
651 want := []*Invitation{{ID: Int64(1)}}
652 if !cmp.Equal(invitations, want) {
653 t.Errorf("Teams.ListPendingTeamInvitationsByID returned %+v, want %+v", invitations, want)
654 }
655
656 const methodName = "ListPendingTeamInvitationsByID"
657 testBadOptions(t, methodName, func() (err error) {
658 _, _, err = client.Teams.ListPendingTeamInvitationsByID(ctx, -1, -2, opt)
659 return err
660 })
661
662 testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) {
663 got, resp, err := client.Teams.ListPendingTeamInvitationsByID(ctx, 1, 2, opt)
664 if got != nil {
665 t.Errorf("testNewRequestAndDoFailure %v = %#v, want nil", methodName, got)
666 }
667 return resp, err
668 })
669 }
670
671 func TestTeamsService__ListPendingTeamInvitationsByID_notFound(t *testing.T) {
672 client, mux, _, teardown := setup()
673 defer teardown()
674
675 mux.HandleFunc("/organizations/1/team/2/invitations", func(w http.ResponseWriter, r *http.Request) {
676 testMethod(t, r, "GET")
677 testFormValues(t, r, values{"page": "2"})
678 w.WriteHeader(http.StatusNotFound)
679 })
680
681 opt := &ListOptions{Page: 2}
682 ctx := context.Background()
683 invitations, resp, err := client.Teams.ListPendingTeamInvitationsByID(ctx, 1, 2, opt)
684 if err == nil {
685 t.Errorf("Expected HTTP 404 response")
686 }
687 if got, want := resp.Response.StatusCode, http.StatusNotFound; got != want {
688 t.Errorf("Teams.RemoveTeamMembershipByID returned status %d, want %d", got, want)
689 }
690 if invitations != nil {
691 t.Errorf("Teams.RemoveTeamMembershipByID returned %+v, want nil", invitations)
692 }
693
694 const methodName = "ListPendingTeamInvitationsByID"
695 testBadOptions(t, methodName, func() (err error) {
696 _, _, err = client.Teams.ListPendingTeamInvitationsByID(ctx, 1, 2, opt)
697 return err
698 })
699
700 testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) {
701 got, resp, err := client.Teams.ListPendingTeamInvitationsByID(ctx, 1, 2, opt)
702 if got != nil {
703 t.Errorf("testNewRequestAndDoFailure %v = %#v, want nil", methodName, got)
704 }
705 return resp, err
706 })
707 }
708
709 func TestTeamsService__ListPendingTeamInvitationsBySlug(t *testing.T) {
710 client, mux, _, teardown := setup()
711 defer teardown()
712
713 mux.HandleFunc("/orgs/o/teams/s/invitations", func(w http.ResponseWriter, r *http.Request) {
714 testMethod(t, r, "GET")
715 testFormValues(t, r, values{"page": "2"})
716 fmt.Fprint(w, `[{"id":1}]`)
717 })
718
719 opt := &ListOptions{Page: 2}
720 ctx := context.Background()
721 invitations, _, err := client.Teams.ListPendingTeamInvitationsBySlug(ctx, "o", "s", opt)
722 if err != nil {
723 t.Errorf("Teams.ListPendingTeamInvitationsByID returned error: %v", err)
724 }
725
726 want := []*Invitation{{ID: Int64(1)}}
727 if !cmp.Equal(invitations, want) {
728 t.Errorf("Teams.ListPendingTeamInvitationsByID returned %+v, want %+v", invitations, want)
729 }
730
731 const methodName = "ListPendingTeamInvitationsBySlug"
732 testBadOptions(t, methodName, func() (err error) {
733 _, _, err = client.Teams.ListPendingTeamInvitationsBySlug(ctx, "\n", "\n", opt)
734 return err
735 })
736
737 testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) {
738 got, resp, err := client.Teams.ListPendingTeamInvitationsBySlug(ctx, "o", "s", opt)
739 if got != nil {
740 t.Errorf("testNewRequestAndDoFailure %v = %#v, want nil", methodName, got)
741 }
742 return resp, err
743 })
744 }
745
746 func TestTeamsService__ListPendingTeamInvitationsBySlug_notFound(t *testing.T) {
747 client, mux, _, teardown := setup()
748 defer teardown()
749
750 mux.HandleFunc("/orgs/o/teams/s/invitations", func(w http.ResponseWriter, r *http.Request) {
751 testMethod(t, r, "GET")
752 testFormValues(t, r, values{"page": "2"})
753 w.WriteHeader(http.StatusNotFound)
754 })
755
756 opt := &ListOptions{Page: 2}
757 ctx := context.Background()
758 invitations, resp, err := client.Teams.ListPendingTeamInvitationsBySlug(ctx, "o", "s", opt)
759 if err == nil {
760 t.Errorf("Expected HTTP 404 response")
761 }
762 if got, want := resp.Response.StatusCode, http.StatusNotFound; got != want {
763 t.Errorf("Teams.RemoveTeamMembershipByID returned status %d, want %d", got, want)
764 }
765 if invitations != nil {
766 t.Errorf("Teams.RemoveTeamMembershipByID returned %+v, want nil", invitations)
767 }
768
769 const methodName = "ListPendingTeamInvitationsBySlug"
770 testBadOptions(t, methodName, func() (err error) {
771 _, _, err = client.Teams.ListPendingTeamInvitationsBySlug(ctx, "o", "s", opt)
772 return err
773 })
774
775 testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) {
776 got, resp, err := client.Teams.ListPendingTeamInvitationsBySlug(ctx, "o", "s", opt)
777 if got != nil {
778 t.Errorf("testNewRequestAndDoFailure %v = %#v, want nil", methodName, got)
779 }
780 return resp, err
781 })
782 }
783
784 func TestTeamsService__ListPendingTeamInvitationsBySlug_invalidOrg(t *testing.T) {
785 client, _, _, teardown := setup()
786 defer teardown()
787
788 ctx := context.Background()
789 _, _, err := client.Teams.ListPendingTeamInvitationsBySlug(ctx, "%", "s", nil)
790 testURLParseError(t, err)
791 }
792
793 func TestTeamAddTeamMembershipOptions_Marshal(t *testing.T) {
794 testJSONMarshal(t, &TeamAddTeamMembershipOptions{}, "{}")
795
796 u := &TeamAddTeamMembershipOptions{
797 Role: "role",
798 }
799
800 want := `{
801 "role": "role"
802 }`
803
804 testJSONMarshal(t, u, want)
805 }
806
807 func TestTeamListTeamMembersOptions_Marshal(t *testing.T) {
808 testJSONMarshal(t, &TeamListTeamMembersOptions{}, "{}")
809
810 u := &TeamListTeamMembersOptions{
811 Role: "role",
812 ListOptions: ListOptions{
813 Page: 1,
814 PerPage: 2,
815 },
816 }
817
818 want := `{
819 "role": "role",
820 "Page": 1,
821 "PerPage": 2
822 }`
823
824 testJSONMarshal(t, u, want)
825 }
826
View as plain text