...

Source file src/github.com/google/go-github/v55/github/teams_members_test.go

Documentation: github.com/google/go-github/v55/github

     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  }
   826  

View as plain text