Browse Source

add last two team membership functions

Will Norris 13 years ago
parent
commit
e2b94468e8
2 changed files with 127 additions and 0 deletions
  1. +30
    -0
      github/orgs.go
  2. +97
    -0
      github/orgs_test.go

+ 30
- 0
github/orgs.go View File

@ -277,6 +277,36 @@ func (s *OrganizationsService) DeleteTeam(team int) error {
return err
}
// ListTeamMembers lists all of the users who are members of the specified
// team.
//
// GitHub API docs: http://developer.github.com/v3/orgs/teams/#list-team-members
func (s *OrganizationsService) ListTeamMembers(team int) ([]User, error) {
url_ := fmt.Sprintf("teams/%v/members", team)
req, err := s.client.NewRequest("GET", url_, nil)
if err != nil {
return nil, err
}
members := new([]User)
_, err = s.client.Do(req, members)
return *members, err
}
// CheckTeamMembership checks if a user is a member of the specified team.
//
// GitHub API docs: http://developer.github.com/v3/orgs/teams/#get-team-member
func (s *OrganizationsService) CheckTeamMembership(team int, user string) (bool, error) {
url_ := fmt.Sprintf("teams/%v/members/%v", team, user)
req, err := s.client.NewRequest("GET", url_, nil)
if err != nil {
return false, err
}
_, err = s.client.Do(req, nil)
return parseBoolResponse(err)
}
// AddTeamMember adds a user to a team.
//
// GitHub API docs: http://developer.github.com/v3/orgs/teams/#add-team-member


+ 97
- 0
github/orgs_test.go View File

@ -529,6 +529,103 @@ func TestOrganizationsService_DeleteTeam(t *testing.T) {
}
}
func TestOrganizationsService_ListTeamMembers(t *testing.T) {
setup()
defer teardown()
mux.HandleFunc("/teams/1/members", func(w http.ResponseWriter, r *http.Request) {
if m := "GET"; m != r.Method {
t.Errorf("Request method = %v, want %v", r.Method, m)
}
fmt.Fprint(w, `[{"id":1}]`)
})
members, err := client.Organizations.ListTeamMembers(1)
if err != nil {
t.Errorf("Organizations.ListTeamMembers returned error: %v", err)
}
want := []User{User{ID: 1}}
if !reflect.DeepEqual(members, want) {
t.Errorf("Organizations.ListTeamMembers returned %+v, want %+v", members, want)
}
}
func TestOrganizationsService_CheckTeamMembership(t *testing.T) {
setup()
defer teardown()
mux.HandleFunc("/teams/1/members/u", func(w http.ResponseWriter, r *http.Request) {
if m := "GET"; m != r.Method {
t.Errorf("Request method = %v, want %v", r.Method, m)
}
})
member, err := client.Organizations.CheckTeamMembership(1, "u")
if err != nil {
t.Errorf("Organizations.CheckTeamMembership returned error: %v", err)
}
want := true
if member != want {
t.Errorf("Organizations.CheckTeamMembership returned %+v, want %+v", member, want)
}
}
// ensure that a 404 response is interpreted as "false" and not an error
func TestOrganizationsService_CheckTeamMembership_notMember(t *testing.T) {
setup()
defer teardown()
mux.HandleFunc("/teams/1/members/u", func(w http.ResponseWriter, r *http.Request) {
if m := "GET"; m != r.Method {
t.Errorf("Request method = %v, want %v", r.Method, m)
}
w.WriteHeader(http.StatusNotFound)
})
member, err := client.Organizations.CheckTeamMembership(1, "u")
if err != nil {
t.Errorf("Organizations.CheckTeamMembership returned error: %+v", err)
}
want := false
if member != want {
t.Errorf("Organizations.CheckTeamMembership returned %+v, want %+v", member, want)
}
}
// ensure that a 400 response is interpreted as an actual error, and not simply
// as "false" like the above case of a 404
func TestOrganizationsService_CheckTeamMembership_error(t *testing.T) {
setup()
defer teardown()
mux.HandleFunc("/teams/1/members/u", func(w http.ResponseWriter, r *http.Request) {
if m := "GET"; m != r.Method {
t.Errorf("Request method = %v, want %v", r.Method, m)
}
http.Error(w, "BadRequest", http.StatusBadRequest)
})
member, err := client.Organizations.CheckTeamMembership(1, "u")
if err == nil {
t.Errorf("Expected HTTP 400 response")
}
want := false
if member != want {
t.Errorf("Organizations.CheckTeamMembership returned %+v, want %+v", member, want)
}
}
func TestOrganizationsService_CheckMembership_invalidUser(t *testing.T) {
_, err := client.Organizations.CheckTeamMembership(1, "%")
if err == nil {
t.Errorf("Expected error to be returned")
}
if err, ok := err.(*url.Error); !ok {
t.Errorf("Expected URL parse error, got %+v", err)
}
}
func TestOrganizationsService_AddTeamMember(t *testing.T) {
setup()
defer teardown()


Loading…
Cancel
Save