Browse Source

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.
Will Norris 11 years ago
parent
commit
2b11c0d910
2 changed files with 22 additions and 18 deletions
  1. +4
    -14
      github/orgs_teams.go
  2. +18
    -4
      github/orgs_teams_test.go

+ 4
- 14
github/orgs_teams.go View File

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


+ 18
- 4
github/orgs_teams_test.go View File

@ -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)


Loading…
Cancel
Save