From 2b11c0d910bd9e1a4d9276371ae0606006d3eb44 Mon Sep 17 00:00:00 2001 From: Will Norris Date: Mon, 6 Jul 2015 12:54:07 -0700 Subject: [PATCH] fix passing of new team permission options AddTeamRepo's "permission" option and AddTeamMembership's "role" option should both be passed as part of a JSON request body, not as URL query parameters. --- github/orgs_teams.go | 18 ++++-------------- github/orgs_teams_test.go | 22 ++++++++++++++++++---- 2 files changed, 22 insertions(+), 18 deletions(-) diff --git a/github/orgs_teams.go b/github/orgs_teams.go index 85de2b7..858c545 100644 --- a/github/orgs_teams.go +++ b/github/orgs_teams.go @@ -251,7 +251,7 @@ type OrganizationAddTeamRepoOptions struct { // admin - team members can pull, push and administer this repository // // If not specified, the team's permission attribute will be used. - Permission string `url:"permission,omitempty"` + Permission string `json:"permission,omitempty"` } // AddTeamRepo adds a repository to be managed by the specified team. The @@ -261,12 +261,7 @@ type OrganizationAddTeamRepoOptions struct { // GitHub API docs: http://developer.github.com/v3/orgs/teams/#add-team-repo func (s *OrganizationsService) AddTeamRepo(team int, owner string, repo string, opt *OrganizationAddTeamRepoOptions) (*Response, error) { u := fmt.Sprintf("teams/%v/repos/%v/%v", team, owner, repo) - u, err := addOptions(u, opt) - if err != nil { - return nil, err - } - - req, err := s.client.NewRequest("PUT", u, nil) + req, err := s.client.NewRequest("PUT", u, opt) if err != nil { return nil, err } @@ -346,7 +341,7 @@ type OrganizationAddTeamMembershipOptions struct { // maintainer, and edit the team’s name and description // // Default value is "member". - Role string `url:"role,omitempty"` + Role string `json:"role,omitempty"` } // AddTeamMembership adds or invites a user to a team. @@ -369,12 +364,7 @@ type OrganizationAddTeamMembershipOptions struct { // GitHub API docs: https://developer.github.com/v3/orgs/teams/#add-team-membership func (s *OrganizationsService) AddTeamMembership(team int, user string, opt *OrganizationAddTeamMembershipOptions) (*Membership, *Response, error) { u := fmt.Sprintf("teams/%v/memberships/%v", team, user) - u, err := addOptions(u, opt) - if err != nil { - return nil, nil, err - } - - req, err := s.client.NewRequest("PUT", u, nil) + req, err := s.client.NewRequest("PUT", u, opt) if err != nil { return nil, nil, err } diff --git a/github/orgs_teams_test.go b/github/orgs_teams_test.go index 57bb840..a258137 100644 --- a/github/orgs_teams_test.go +++ b/github/orgs_teams_test.go @@ -357,14 +357,21 @@ func TestOrganizationsService_AddTeamRepo(t *testing.T) { setup() defer teardown() + opt := &OrganizationAddTeamRepoOptions{Permission: "admin"} + mux.HandleFunc("/teams/1/repos/o/r", func(w http.ResponseWriter, r *http.Request) { + v := new(OrganizationAddTeamRepoOptions) + json.NewDecoder(r.Body).Decode(v) + testMethod(t, r, "PUT") - testFormValues(t, r, values{"permission": "admin"}) testHeader(t, r, "Accept", mediaTypeOrgPermissionPreview) + if !reflect.DeepEqual(v, opt) { + t.Errorf("Request body = %+v, want %+v", v, opt) + } + w.WriteHeader(http.StatusNoContent) }) - opt := &OrganizationAddTeamRepoOptions{Permission: "admin"} _, err := client.Organizations.AddTeamRepo(1, "o", "r", opt) if err != nil { t.Errorf("Organizations.AddTeamRepo returned error: %v", err) @@ -435,14 +442,21 @@ func TestOrganizationsService_AddTeamMembership(t *testing.T) { setup() defer teardown() + opt := &OrganizationAddTeamMembershipOptions{Role: "maintainer"} + mux.HandleFunc("/teams/1/memberships/u", func(w http.ResponseWriter, r *http.Request) { + v := new(OrganizationAddTeamMembershipOptions) + json.NewDecoder(r.Body).Decode(v) + testMethod(t, r, "PUT") - testFormValues(t, r, values{"role": "maintainer"}) testHeader(t, r, "Accept", mediaTypeOrgPermissionPreview) + if !reflect.DeepEqual(v, opt) { + t.Errorf("Request body = %+v, want %+v", v, opt) + } + fmt.Fprint(w, `{"url":"u", "state":"pending"}`) }) - opt := &OrganizationAddTeamMembershipOptions{Role: "maintainer"} membership, _, err := client.Organizations.AddTeamMembership(1, "u", opt) if err != nil { t.Errorf("Organizations.AddTeamMembership returned error: %v", err)