mirror of
https://github.com/google/go-github.git
synced 2026-10-28 16:34:37 +08:00
748 lines
20 KiB
Go
748 lines
20 KiB
Go
// Copyright 2025 The go-github AUTHORS. All rights reserved.
|
|
//
|
|
// Use of this source code is governed by a BSD-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
package github
|
|
|
|
import (
|
|
"fmt"
|
|
"net/http"
|
|
"testing"
|
|
|
|
"github.com/google/go-cmp/cmp"
|
|
)
|
|
|
|
func TestEnterpriseService_ListTeams(t *testing.T) {
|
|
t.Parallel()
|
|
client, mux, _ := setup(t)
|
|
|
|
mux.HandleFunc("/enterprises/e/teams", func(w http.ResponseWriter, r *http.Request) {
|
|
testMethod(t, r, "GET")
|
|
fmt.Fprint(w, `[{
|
|
"id": 1,
|
|
"url": "https://example.com/team1",
|
|
"member_url": "https://example.com/members",
|
|
"name": "Team One",
|
|
"html_url": "https://example.com/html",
|
|
"slug": "team-one",
|
|
"created_at": `+refTimeStr(1136178000)+`,
|
|
"updated_at": `+refTimeStr(1136178001)+`,
|
|
"group_id": "99"
|
|
}]`)
|
|
})
|
|
|
|
ctx := t.Context()
|
|
opts := &ListOptions{Page: 1, PerPage: 10}
|
|
got, _, err := client.Enterprise.ListTeams(ctx, "e", opts)
|
|
if err != nil {
|
|
t.Fatalf("Enterprise.ListTeams returned error: %v", err)
|
|
}
|
|
|
|
want := []*EnterpriseTeam{
|
|
{
|
|
ID: 1,
|
|
URL: "https://example.com/team1",
|
|
MemberURL: "https://example.com/members",
|
|
Name: "Team One",
|
|
HTMLURL: "https://example.com/html",
|
|
Slug: "team-one",
|
|
GroupID: "99",
|
|
CreatedAt: *refTimestamp(1136178000),
|
|
UpdatedAt: *refTimestamp(1136178001),
|
|
},
|
|
}
|
|
|
|
if !cmp.Equal(got, want) {
|
|
t.Errorf("Enterprise.ListTeams = %+v, want %+v", got, want)
|
|
}
|
|
|
|
const methodName = "ListTeams"
|
|
testBadOptions(t, methodName, func() error {
|
|
_, _, err := client.Enterprise.ListTeams(ctx, "\n", opts)
|
|
return err
|
|
})
|
|
|
|
testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) {
|
|
got, resp, err := client.Enterprise.ListTeams(ctx, "e", opts)
|
|
if got != nil {
|
|
t.Errorf("testNewRequestAndDoFailure %v = %#v, want nil", methodName, got)
|
|
}
|
|
return resp, err
|
|
})
|
|
}
|
|
|
|
func TestEnterpriseService_CreateTeam(t *testing.T) {
|
|
t.Parallel()
|
|
client, mux, _ := setup(t)
|
|
|
|
input := EnterpriseTeamCreateOrUpdateRequest{
|
|
Name: "New Team",
|
|
}
|
|
|
|
mux.HandleFunc("/enterprises/e/teams", func(w http.ResponseWriter, r *http.Request) {
|
|
testMethod(t, r, "POST")
|
|
testJSONBody(t, r, input)
|
|
fmt.Fprint(w, `{
|
|
"id": 10,
|
|
"name": "New Team",
|
|
"slug": "new-team",
|
|
"url": "https://example.com/team"
|
|
}`)
|
|
})
|
|
|
|
ctx := t.Context()
|
|
got, _, err := client.Enterprise.CreateTeam(ctx, "e", input)
|
|
if err != nil {
|
|
t.Fatalf("Enterprise.CreateTeam returned error: %v", err)
|
|
}
|
|
|
|
want := &EnterpriseTeam{
|
|
ID: 10,
|
|
Name: "New Team",
|
|
Slug: "new-team",
|
|
URL: "https://example.com/team",
|
|
}
|
|
|
|
if !cmp.Equal(got, want) {
|
|
t.Errorf("Enterprise.CreateTeam = %+v, want %+v", got, want)
|
|
}
|
|
|
|
const methodName = "CreateTeam"
|
|
testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) {
|
|
got, resp, err := client.Enterprise.CreateTeam(ctx, "e", input)
|
|
if got != nil {
|
|
t.Errorf("testNewRequestAndDoFailure %v = %#v, want nil", methodName, got)
|
|
}
|
|
return resp, err
|
|
})
|
|
}
|
|
|
|
func TestEnterpriseService_GetTeam(t *testing.T) {
|
|
t.Parallel()
|
|
client, mux, _ := setup(t)
|
|
|
|
mux.HandleFunc("/enterprises/e/teams/t1", func(w http.ResponseWriter, r *http.Request) {
|
|
testMethod(t, r, "GET")
|
|
fmt.Fprint(w, `{
|
|
"id": 2,
|
|
"name": "Team One",
|
|
"slug": "t1"
|
|
}`)
|
|
})
|
|
|
|
ctx := t.Context()
|
|
got, _, err := client.Enterprise.GetTeam(ctx, "e", "t1")
|
|
if err != nil {
|
|
t.Fatalf("Enterprise.GetTeam returned error: %v", err)
|
|
}
|
|
|
|
want := &EnterpriseTeam{
|
|
ID: 2,
|
|
Name: "Team One",
|
|
Slug: "t1",
|
|
}
|
|
|
|
if !cmp.Equal(got, want) {
|
|
t.Errorf("Enterprise.GetTeam = %+v, want %+v", got, want)
|
|
}
|
|
|
|
const methodName = "GetTeam"
|
|
testBadOptions(t, methodName, func() error {
|
|
_, _, err := client.Enterprise.GetTeam(ctx, "\n", "t1")
|
|
return err
|
|
})
|
|
testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) {
|
|
got, resp, err := client.Enterprise.GetTeam(ctx, "e", "t1")
|
|
if got != nil {
|
|
t.Errorf("testNewRequestAndDoFailure %v = %#v, want nil", methodName, got)
|
|
}
|
|
return resp, err
|
|
})
|
|
}
|
|
|
|
func TestEnterpriseService_UpdateTeam(t *testing.T) {
|
|
t.Parallel()
|
|
client, mux, _ := setup(t)
|
|
|
|
input := EnterpriseTeamCreateOrUpdateRequest{
|
|
Name: "Updated Team",
|
|
}
|
|
|
|
mux.HandleFunc("/enterprises/e/teams/t1", func(w http.ResponseWriter, r *http.Request) {
|
|
testMethod(t, r, "PATCH")
|
|
testJSONBody(t, r, input)
|
|
fmt.Fprint(w, `{
|
|
"id": 3,
|
|
"name": "Updated Team",
|
|
"slug": "t1"
|
|
}`)
|
|
})
|
|
|
|
ctx := t.Context()
|
|
got, _, err := client.Enterprise.UpdateTeam(ctx, "e", "t1", input)
|
|
if err != nil {
|
|
t.Fatalf("Enterprise.UpdateTeam returned error: %v", err)
|
|
}
|
|
|
|
want := &EnterpriseTeam{
|
|
ID: 3,
|
|
Name: "Updated Team",
|
|
Slug: "t1",
|
|
}
|
|
|
|
if !cmp.Equal(got, want) {
|
|
t.Errorf("Enterprise.UpdateTeam = %+v, want %+v", got, want)
|
|
}
|
|
|
|
const methodName = "UpdateTeam"
|
|
testBadOptions(t, methodName, func() error {
|
|
_, _, err := client.Enterprise.UpdateTeam(ctx, "\n", "t1", input)
|
|
return err
|
|
})
|
|
testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) {
|
|
got, resp, err := client.Enterprise.UpdateTeam(ctx, "e", "t1", input)
|
|
if got != nil {
|
|
t.Errorf("testNewRequestAndDoFailure %v = %#v, want nil", methodName, got)
|
|
}
|
|
return resp, err
|
|
})
|
|
}
|
|
|
|
func TestEnterpriseService_DeleteTeam(t *testing.T) {
|
|
t.Parallel()
|
|
client, mux, _ := setup(t)
|
|
|
|
mux.HandleFunc("/enterprises/e/teams/t1", func(w http.ResponseWriter, r *http.Request) {
|
|
testMethod(t, r, "DELETE")
|
|
w.WriteHeader(http.StatusNoContent)
|
|
})
|
|
|
|
ctx := t.Context()
|
|
_, err := client.Enterprise.DeleteTeam(ctx, "e", "t1")
|
|
if err != nil {
|
|
t.Fatalf("Enterprise.DeleteTeam returned error: %v", err)
|
|
}
|
|
|
|
const methodName = "DeleteTeam"
|
|
testBadOptions(t, methodName, func() error {
|
|
_, err := client.Enterprise.DeleteTeam(ctx, "\n", "t1")
|
|
return err
|
|
})
|
|
testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) {
|
|
return client.Enterprise.DeleteTeam(ctx, "e", "t1")
|
|
})
|
|
}
|
|
|
|
func TestEnterpriseService_ListTeamMembers(t *testing.T) {
|
|
t.Parallel()
|
|
client, mux, _ := setup(t)
|
|
|
|
mux.HandleFunc("/enterprises/e/teams/t1/memberships", func(w http.ResponseWriter, r *http.Request) {
|
|
testMethod(t, r, "GET")
|
|
fmt.Fprint(w, `[{
|
|
"login": "user1",
|
|
"id": 1001,
|
|
"url": "https://example.com/user1"
|
|
}]`)
|
|
})
|
|
ctx := t.Context()
|
|
opts := &ListOptions{Page: 1, PerPage: 10}
|
|
got, _, err := client.Enterprise.ListTeamMembers(ctx, "e", "t1", opts)
|
|
if err != nil {
|
|
t.Fatalf("Enterprise.ListTeamMembers returned error: %v", err)
|
|
}
|
|
|
|
want := []*User{
|
|
{
|
|
Login: new("user1"),
|
|
ID: new(int64(1001)),
|
|
URL: new("https://example.com/user1"),
|
|
},
|
|
}
|
|
|
|
if !cmp.Equal(got, want) {
|
|
t.Errorf("Enterprise.ListTeamMembers = %+v, want %+v", got, want)
|
|
}
|
|
|
|
const methodName = "ListTeamMembers"
|
|
testBadOptions(t, methodName, func() error {
|
|
_, _, err := client.Enterprise.ListTeamMembers(ctx, "\n", "t1", opts)
|
|
return err
|
|
})
|
|
testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) {
|
|
got, resp, err := client.Enterprise.ListTeamMembers(ctx, "e", "t1", opts)
|
|
if got != nil {
|
|
t.Errorf("testNewRequestAndDoFailure %v = %#v, want nil", methodName, got)
|
|
}
|
|
return resp, err
|
|
})
|
|
}
|
|
|
|
func TestEnterpriseService_BulkAddTeamMembers(t *testing.T) {
|
|
t.Parallel()
|
|
client, mux, _ := setup(t)
|
|
|
|
mux.HandleFunc("/enterprises/e/teams/t1/memberships/add", func(w http.ResponseWriter, r *http.Request) {
|
|
testMethod(t, r, "POST")
|
|
|
|
fmt.Fprint(w, `[{
|
|
"login": "u1",
|
|
"id": 1
|
|
},{
|
|
"login": "u2",
|
|
"id": 2
|
|
}]`)
|
|
})
|
|
|
|
ctx := t.Context()
|
|
got, _, err := client.Enterprise.BulkAddTeamMembers(ctx, "e", "t1", []string{"u1", "u2"})
|
|
if err != nil {
|
|
t.Fatalf("BulkAddTeamMembers returned error: %v", err)
|
|
}
|
|
|
|
want := []*User{
|
|
{Login: new("u1"), ID: new(int64(1))},
|
|
{Login: new("u2"), ID: new(int64(2))},
|
|
}
|
|
|
|
if !cmp.Equal(got, want) {
|
|
t.Errorf("BulkAddTeamMembers = %+v, want %+v", got, want)
|
|
}
|
|
|
|
const methodName = "BulkAddTeamMembers"
|
|
testBadOptions(t, methodName, func() error {
|
|
_, _, err := client.Enterprise.BulkAddTeamMembers(ctx, "\n", "t1", []string{"u1"})
|
|
return err
|
|
})
|
|
testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) {
|
|
got, resp, err := client.Enterprise.BulkAddTeamMembers(ctx, "e", "t1", []string{"u1"})
|
|
if got != nil {
|
|
t.Errorf("testNewRequestAndDoFailure %v = %#v, want nil", methodName, got)
|
|
}
|
|
return resp, err
|
|
})
|
|
}
|
|
|
|
func TestEnterpriseService_BulkRemoveTeamMembers(t *testing.T) {
|
|
t.Parallel()
|
|
client, mux, _ := setup(t)
|
|
|
|
mux.HandleFunc("/enterprises/e/teams/t1/memberships/remove", func(w http.ResponseWriter, r *http.Request) {
|
|
testMethod(t, r, "POST")
|
|
|
|
fmt.Fprint(w, `[{
|
|
"login": "u1",
|
|
"id": 1
|
|
},{
|
|
"login": "u2",
|
|
"id": 2
|
|
}]`)
|
|
})
|
|
|
|
ctx := t.Context()
|
|
got, _, err := client.Enterprise.BulkRemoveTeamMembers(ctx, "e", "t1", []string{"u1", "u2"})
|
|
if err != nil {
|
|
t.Fatalf("BulkRemoveTeamMembers returned error: %v", err)
|
|
}
|
|
|
|
want := []*User{
|
|
{Login: new("u1"), ID: new(int64(1))},
|
|
{Login: new("u2"), ID: new(int64(2))},
|
|
}
|
|
|
|
if !cmp.Equal(got, want) {
|
|
t.Errorf("BulkRemoveTeamMembers = %+v, want %+v", got, want)
|
|
}
|
|
|
|
const methodName = "BulkRemoveTeamMembers"
|
|
testBadOptions(t, methodName, func() error {
|
|
_, _, err := client.Enterprise.BulkRemoveTeamMembers(ctx, "\n", "t1", []string{"u1"})
|
|
return err
|
|
})
|
|
testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) {
|
|
got, resp, err := client.Enterprise.BulkRemoveTeamMembers(ctx, "e", "t1", []string{"u1"})
|
|
if got != nil {
|
|
t.Errorf("testNewRequestAndDoFailure %v = %#v, want nil", methodName, got)
|
|
}
|
|
return resp, err
|
|
})
|
|
}
|
|
|
|
func TestEnterpriseService_GetTeamMembership(t *testing.T) {
|
|
t.Parallel()
|
|
client, mux, _ := setup(t)
|
|
|
|
mux.HandleFunc("/enterprises/e/teams/t1/memberships/u1", func(w http.ResponseWriter, r *http.Request) {
|
|
testMethod(t, r, "GET")
|
|
fmt.Fprint(w, `{
|
|
"login": "u1",
|
|
"id": 10
|
|
}`)
|
|
})
|
|
|
|
ctx := t.Context()
|
|
got, _, err := client.Enterprise.GetTeamMembership(ctx, "e", "t1", "u1")
|
|
if err != nil {
|
|
t.Fatalf("GetTeamMembership returned error: %v", err)
|
|
}
|
|
|
|
want := &User{
|
|
Login: new("u1"),
|
|
ID: new(int64(10)),
|
|
}
|
|
|
|
if !cmp.Equal(got, want) {
|
|
t.Errorf("GetTeamMembership = %+v, want %+v", got, want)
|
|
}
|
|
|
|
const methodName = "GetTeamMembership"
|
|
testBadOptions(t, methodName, func() error {
|
|
_, _, err := client.Enterprise.GetTeamMembership(ctx, "\n", "t1", "u1")
|
|
return err
|
|
})
|
|
testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) {
|
|
got, resp, err := client.Enterprise.GetTeamMembership(ctx, "e", "t1", "u1")
|
|
if got != nil {
|
|
t.Errorf("testNewRequestAndDoFailure %v = %#v, want nil", methodName, got)
|
|
}
|
|
return resp, err
|
|
})
|
|
}
|
|
|
|
func TestEnterpriseService_AddTeamMember(t *testing.T) {
|
|
t.Parallel()
|
|
client, mux, _ := setup(t)
|
|
|
|
mux.HandleFunc("/enterprises/e/teams/t1/memberships/u1", func(w http.ResponseWriter, r *http.Request) {
|
|
testMethod(t, r, "PUT")
|
|
fmt.Fprint(w, `{
|
|
"login": "u1",
|
|
"id": 5
|
|
}`)
|
|
})
|
|
|
|
ctx := t.Context()
|
|
got, _, err := client.Enterprise.AddTeamMember(ctx, "e", "t1", "u1")
|
|
if err != nil {
|
|
t.Fatalf("AddTeamMember returned error: %v", err)
|
|
}
|
|
|
|
want := &User{
|
|
Login: new("u1"),
|
|
ID: new(int64(5)),
|
|
}
|
|
|
|
if !cmp.Equal(got, want) {
|
|
t.Errorf("AddTeamMember = %+v, want %+v", got, want)
|
|
}
|
|
|
|
const methodName = "AddTeamMember"
|
|
testBadOptions(t, methodName, func() error {
|
|
_, _, err := client.Enterprise.AddTeamMember(ctx, "\n", "t1", "u1")
|
|
return err
|
|
})
|
|
testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) {
|
|
got, resp, err := client.Enterprise.AddTeamMember(ctx, "e", "t1", "u1")
|
|
if got != nil {
|
|
t.Errorf("testNewRequestAndDoFailure %v = %#v, want nil", methodName, got)
|
|
}
|
|
return resp, err
|
|
})
|
|
}
|
|
|
|
func TestEnterpriseService_RemoveTeamMember(t *testing.T) {
|
|
t.Parallel()
|
|
client, mux, _ := setup(t)
|
|
|
|
mux.HandleFunc("/enterprises/e/teams/t1/memberships/u1", func(w http.ResponseWriter, r *http.Request) {
|
|
testMethod(t, r, "DELETE")
|
|
w.WriteHeader(http.StatusNoContent)
|
|
})
|
|
|
|
ctx := t.Context()
|
|
resp, err := client.Enterprise.RemoveTeamMember(ctx, "e", "t1", "u1")
|
|
if err != nil {
|
|
t.Fatalf("RemoveTeamMember returned error: %v", err)
|
|
}
|
|
if resp == nil {
|
|
t.Fatal("RemoveTeamMember returned nil Response")
|
|
}
|
|
|
|
const methodName = "RemoveTeamMember"
|
|
testBadOptions(t, methodName, func() error {
|
|
_, err := client.Enterprise.RemoveTeamMember(ctx, "\n", "t1", "u1")
|
|
return err
|
|
})
|
|
testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) {
|
|
return client.Enterprise.RemoveTeamMember(ctx, "e", "t1", "u1")
|
|
})
|
|
}
|
|
|
|
func TestEnterpriseService_ListAssignments(t *testing.T) {
|
|
t.Parallel()
|
|
client, mux, _ := setup(t)
|
|
|
|
mux.HandleFunc("/enterprises/e/teams/t1/organizations", func(w http.ResponseWriter, r *http.Request) {
|
|
testMethod(t, r, "GET")
|
|
fmt.Fprint(w, `[
|
|
{
|
|
"login": "team-one",
|
|
"id": 1,
|
|
"node_id": "node-id",
|
|
"url": "https://example.com/team1",
|
|
"repos_url": "https://example.com/members",
|
|
"events_url": "https://example.com/events",
|
|
"hooks_url": "https://api.github.com/orgs/team-one/hooks",
|
|
"issues_url": "https://api.github.com/orgs/team-one/issues",
|
|
"members_url": "https://api.github.com/orgs/team-one/members",
|
|
"public_members_url": "https://api.github.com/orgs/team-one/public_members",
|
|
"avatar_url": "https://github.com/images/error/octocat_happy.gif",
|
|
"description": "Team One"
|
|
}
|
|
]`)
|
|
})
|
|
|
|
ctx := t.Context()
|
|
opts := &ListOptions{Page: 1, PerPage: 10}
|
|
got, _, err := client.Enterprise.ListAssignments(ctx, "e", "t1", opts)
|
|
if err != nil {
|
|
t.Fatalf("Enterprise.ListAssignments returned error: %v", err)
|
|
}
|
|
|
|
want := []*Organization{
|
|
{
|
|
Login: new("team-one"),
|
|
URL: new("https://example.com/team1"),
|
|
NodeID: new("node-id"),
|
|
ReposURL: new("https://example.com/members"),
|
|
EventsURL: new("https://example.com/events"),
|
|
ID: new(int64(1)),
|
|
HooksURL: new("https://api.github.com/orgs/team-one/hooks"),
|
|
IssuesURL: new("https://api.github.com/orgs/team-one/issues"),
|
|
MembersURL: new("https://api.github.com/orgs/team-one/members"),
|
|
PublicMembersURL: new("https://api.github.com/orgs/team-one/public_members"),
|
|
AvatarURL: new("https://github.com/images/error/octocat_happy.gif"),
|
|
Description: new("Team One"),
|
|
},
|
|
}
|
|
|
|
if !cmp.Equal(got, want) {
|
|
t.Errorf("Enterprise.ListAssignments = %+v, want %+v", got, want)
|
|
}
|
|
|
|
const methodName = "ListAssignments"
|
|
testBadOptions(t, methodName, func() error {
|
|
_, _, err := client.Enterprise.ListAssignments(ctx, "\n", "\n", opts)
|
|
return err
|
|
})
|
|
|
|
testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) {
|
|
got, resp, err := client.Enterprise.ListAssignments(ctx, "e", "t1", opts)
|
|
if got != nil {
|
|
t.Errorf("testNewRequestAndDoFailure %v = %#v, want nil", methodName, got)
|
|
}
|
|
return resp, err
|
|
})
|
|
}
|
|
|
|
func TestEnterpriseService_AddMultipleAssignments(t *testing.T) {
|
|
t.Parallel()
|
|
client, mux, _ := setup(t)
|
|
|
|
mux.HandleFunc("/enterprises/e/teams/t1/organizations/add", func(w http.ResponseWriter, r *http.Request) {
|
|
testMethod(t, r, "POST")
|
|
|
|
fmt.Fprint(w, `[{
|
|
"login": "o1",
|
|
"id": 1
|
|
},{
|
|
"login": "o2",
|
|
"id": 2
|
|
}]`)
|
|
})
|
|
|
|
ctx := t.Context()
|
|
got, _, err := client.Enterprise.AddMultipleAssignments(ctx, "e", "t1", []string{"o1", "o2"})
|
|
if err != nil {
|
|
t.Fatalf("AddMultipleAssignments returned error: %v", err)
|
|
}
|
|
|
|
want := []*Organization{
|
|
{Login: new("o1"), ID: new(int64(1))},
|
|
{Login: new("o2"), ID: new(int64(2))},
|
|
}
|
|
|
|
if !cmp.Equal(got, want) {
|
|
t.Errorf("AddMultipleAssignments = %+v, want %+v", got, want)
|
|
}
|
|
|
|
const methodName = "AddMultipleAssignments"
|
|
testBadOptions(t, methodName, func() error {
|
|
_, _, err := client.Enterprise.AddMultipleAssignments(ctx, "\n", "t1", []string{"o1"})
|
|
return err
|
|
})
|
|
testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) {
|
|
got, resp, err := client.Enterprise.AddMultipleAssignments(ctx, "e", "t1", []string{"o1"})
|
|
if got != nil {
|
|
t.Errorf("testNewRequestAndDoFailure %v = %#v, want nil", methodName, got)
|
|
}
|
|
return resp, err
|
|
})
|
|
}
|
|
|
|
func TestEnterpriseService_RemoveMultipleAssignments(t *testing.T) {
|
|
t.Parallel()
|
|
client, mux, _ := setup(t)
|
|
|
|
mux.HandleFunc("/enterprises/e/teams/t1/organizations/remove", func(w http.ResponseWriter, r *http.Request) {
|
|
testMethod(t, r, "POST")
|
|
|
|
fmt.Fprint(w, `[{
|
|
"login": "o1",
|
|
"id": 1
|
|
},{
|
|
"login": "o2",
|
|
"id": 2
|
|
}]`)
|
|
})
|
|
|
|
ctx := t.Context()
|
|
got, _, err := client.Enterprise.RemoveMultipleAssignments(ctx, "e", "t1", []string{"o1", "o2"})
|
|
if err != nil {
|
|
t.Fatalf("RemoveMultipleAssignments returned error: %v", err)
|
|
}
|
|
|
|
want := []*Organization{
|
|
{Login: new("o1"), ID: new(int64(1))},
|
|
{Login: new("o2"), ID: new(int64(2))},
|
|
}
|
|
|
|
if !cmp.Equal(got, want) {
|
|
t.Errorf("RemoveMultipleAssignments = %+v, want %+v", got, want)
|
|
}
|
|
|
|
const methodName = "RemoveMultipleAssignments"
|
|
testBadOptions(t, methodName, func() error {
|
|
_, _, err := client.Enterprise.RemoveMultipleAssignments(ctx, "\n", "t1", []string{"o1"})
|
|
return err
|
|
})
|
|
testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) {
|
|
got, resp, err := client.Enterprise.RemoveMultipleAssignments(ctx, "e", "t1", []string{"o1"})
|
|
if got != nil {
|
|
t.Errorf("testNewRequestAndDoFailure %v = %#v, want nil", methodName, got)
|
|
}
|
|
return resp, err
|
|
})
|
|
}
|
|
|
|
func TestEnterpriseService_GetAssignment(t *testing.T) {
|
|
t.Parallel()
|
|
client, mux, _ := setup(t)
|
|
|
|
mux.HandleFunc("/enterprises/e/teams/t1/organizations/o1", func(w http.ResponseWriter, r *http.Request) {
|
|
testMethod(t, r, "GET")
|
|
fmt.Fprint(w, `{
|
|
"login": "o1",
|
|
"id": 10
|
|
}`)
|
|
})
|
|
|
|
ctx := t.Context()
|
|
got, _, err := client.Enterprise.GetAssignment(ctx, "e", "t1", "o1")
|
|
if err != nil {
|
|
t.Fatalf("GetAssignment returned error: %v", err)
|
|
}
|
|
|
|
want := &Organization{
|
|
Login: new("o1"),
|
|
ID: new(int64(10)),
|
|
}
|
|
|
|
if !cmp.Equal(got, want) {
|
|
t.Errorf("GetAssignment = %+v, want %+v", got, want)
|
|
}
|
|
|
|
const methodName = "GetAssignment"
|
|
testBadOptions(t, methodName, func() error {
|
|
_, _, err := client.Enterprise.GetAssignment(ctx, "\n", "t1", "o1")
|
|
return err
|
|
})
|
|
testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) {
|
|
got, resp, err := client.Enterprise.GetAssignment(ctx, "e", "t1", "o1")
|
|
if got != nil {
|
|
t.Errorf("testNewRequestAndDoFailure %v = %#v, want nil", methodName, got)
|
|
}
|
|
return resp, err
|
|
})
|
|
}
|
|
|
|
func TestEnterpriseService_AddAssignment(t *testing.T) {
|
|
t.Parallel()
|
|
client, mux, _ := setup(t)
|
|
|
|
mux.HandleFunc("/enterprises/e/teams/t1/organizations/o1", func(w http.ResponseWriter, r *http.Request) {
|
|
testMethod(t, r, "PUT")
|
|
fmt.Fprint(w, `{
|
|
"login": "o1",
|
|
"id": 5
|
|
}`)
|
|
})
|
|
|
|
ctx := t.Context()
|
|
got, _, err := client.Enterprise.AddAssignment(ctx, "e", "t1", "o1")
|
|
if err != nil {
|
|
t.Fatalf("AddAssignment returned error: %v", err)
|
|
}
|
|
|
|
want := &Organization{
|
|
Login: new("o1"),
|
|
ID: new(int64(5)),
|
|
}
|
|
|
|
if !cmp.Equal(got, want) {
|
|
t.Errorf("AddAssignment = %+v, want %+v", got, want)
|
|
}
|
|
|
|
const methodName = "AddAssignment"
|
|
testBadOptions(t, methodName, func() error {
|
|
_, _, err := client.Enterprise.AddAssignment(ctx, "\n", "t1", "o1")
|
|
return err
|
|
})
|
|
testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) {
|
|
got, resp, err := client.Enterprise.AddAssignment(ctx, "e", "t1", "o1")
|
|
if got != nil {
|
|
t.Errorf("testNewRequestAndDoFailure %v = %#v, want nil", methodName, got)
|
|
}
|
|
return resp, err
|
|
})
|
|
}
|
|
|
|
func TestEnterpriseService_RemoveAssignment(t *testing.T) {
|
|
t.Parallel()
|
|
client, mux, _ := setup(t)
|
|
|
|
mux.HandleFunc("/enterprises/e/teams/t1/organizations/o1", func(w http.ResponseWriter, r *http.Request) {
|
|
testMethod(t, r, "DELETE")
|
|
w.WriteHeader(http.StatusNoContent)
|
|
})
|
|
|
|
ctx := t.Context()
|
|
resp, err := client.Enterprise.RemoveAssignment(ctx, "e", "t1", "o1")
|
|
if err != nil {
|
|
t.Fatalf("RemoveAssignment returned error: %v", err)
|
|
}
|
|
if resp == nil {
|
|
t.Fatal("RemoveAssignment returned nil Response")
|
|
}
|
|
|
|
const methodName = "RemoveAssignment"
|
|
testBadOptions(t, methodName, func() error {
|
|
_, err := client.Enterprise.RemoveAssignment(ctx, "\n", "t1", "o1")
|
|
return err
|
|
})
|
|
testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) {
|
|
return client.Enterprise.RemoveAssignment(ctx, "e", "t1", "o1")
|
|
})
|
|
}
|