github.com/google/go-github/v49@v49.1.0/github/teams_members_test.go (about) 1 // Copyright 2018 The go-github AUTHORS. All rights reserved. 2 // 3 // Use of this source code is governed by a BSD-style 4 // license that can be found in the LICENSE file. 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 }