github.com/google/go-github/v33@v33.0.0/github/admin_stats_test.go (about) 1 package github 2 3 import ( 4 "context" 5 "fmt" 6 "net/http" 7 "reflect" 8 "testing" 9 "time" 10 ) 11 12 func TestAdminService_GetAdminStats(t *testing.T) { 13 client, mux, _, teardown := setup() 14 defer teardown() 15 16 mux.HandleFunc("/enterprise/stats/all", func(w http.ResponseWriter, r *http.Request) { 17 testMethod(t, r, "GET") 18 19 fmt.Fprint(w, ` 20 { 21 "repos": { 22 "total_repos": 212, 23 "root_repos": 194, 24 "fork_repos": 18, 25 "org_repos": 51, 26 "total_pushes": 3082, 27 "total_wikis": 15 28 }, 29 "hooks": { 30 "total_hooks": 27, 31 "active_hooks": 23, 32 "inactive_hooks": 4 33 }, 34 "pages": { 35 "total_pages": 36 36 }, 37 "orgs": { 38 "total_orgs": 33, 39 "disabled_orgs": 0, 40 "total_teams": 60, 41 "total_team_members": 314 42 }, 43 "users": { 44 "total_users": 254, 45 "admin_users": 45, 46 "suspended_users": 21 47 }, 48 "pulls": { 49 "total_pulls": 86, 50 "merged_pulls": 60, 51 "mergeable_pulls": 21, 52 "unmergeable_pulls": 3 53 }, 54 "issues": { 55 "total_issues": 179, 56 "open_issues": 83, 57 "closed_issues": 96 58 }, 59 "milestones": { 60 "total_milestones": 7, 61 "open_milestones": 6, 62 "closed_milestones": 1 63 }, 64 "gists": { 65 "total_gists": 178, 66 "private_gists": 151, 67 "public_gists": 25 68 }, 69 "comments": { 70 "total_commit_comments": 6, 71 "total_gist_comments": 28, 72 "total_issue_comments": 366, 73 "total_pull_request_comments": 30 74 } 75 } 76 `) 77 }) 78 79 ctx := context.Background() 80 stats, _, err := client.Admin.GetAdminStats(ctx) 81 if err != nil { 82 t.Errorf("AdminService.GetAdminStats returned error: %v", err) 83 } 84 85 if want := testAdminStats; !reflect.DeepEqual(stats, want) { 86 t.Errorf("AdminService.GetAdminStats returned %+v, want %+v", stats, want) 87 } 88 89 // Test s.client.NewRequest failure 90 client.BaseURL.Path = "" 91 got, resp, err := client.Admin.GetAdminStats(ctx) 92 if got != nil { 93 t.Errorf("client.BaseURL.Path='' GetAdminStats = %#v, want nil", got) 94 } 95 if resp != nil { 96 t.Errorf("client.BaseURL.Path='' GetAdminStats resp = %#v, want nil", resp) 97 } 98 if err == nil { 99 t.Error("client.BaseURL.Path='' GetAdminStats err = nil, want error") 100 } 101 102 // Test s.client.Do failure 103 client.BaseURL.Path = "/api-v3/" 104 client.rateLimits[0].Reset.Time = time.Now().Add(10 * time.Minute) 105 got, resp, err = client.Admin.GetAdminStats(ctx) 106 if got != nil { 107 t.Errorf("rate.Reset.Time > now GetAdminStats = %#v, want nil", got) 108 } 109 if want := http.StatusForbidden; resp == nil || resp.Response.StatusCode != want { 110 t.Errorf("rate.Reset.Time > now GetAdminStats resp = %#v, want StatusCode=%v", resp.Response, want) 111 } 112 if err == nil { 113 t.Error("rate.Reset.Time > now GetAdminStats err = nil, want error") 114 } 115 } 116 117 func TestAdminService_Stringify(t *testing.T) { 118 want := "github.AdminStats{Issues:github.IssueStats{TotalIssues:179, OpenIssues:83, ClosedIssues:96}, Hooks:github.HookStats{TotalHooks:27, ActiveHooks:23, InactiveHooks:4}, Milestones:github.MilestoneStats{TotalMilestones:7, OpenMilestones:6, ClosedMilestones:1}, Orgs:github.OrgStats{TotalOrgs:33, DisabledOrgs:0, TotalTeams:60, TotalTeamMembers:314}, Comments:github.CommentStats{TotalCommitComments:6, TotalGistComments:28, TotalIssueComments:366, TotalPullRequestComments:30}, Pages:github.PageStats{TotalPages:36}, Users:github.UserStats{TotalUsers:254, AdminUsers:45, SuspendedUsers:21}, Gists:github.GistStats{TotalGists:178, PrivateGists:151, PublicGists:25}, Pulls:github.PullStats{TotalPulls:86, MergedPulls:60, MergablePulls:21, UnmergablePulls:3}, Repos:github.RepoStats{TotalRepos:212, RootRepos:194, ForkRepos:18, OrgRepos:51, TotalPushes:3082, TotalWikis:15}}" 119 if got := testAdminStats.String(); got != want { 120 t.Errorf("testAdminStats.String = %q, want %q", got, want) 121 } 122 123 want = "github.IssueStats{TotalIssues:179, OpenIssues:83, ClosedIssues:96}" 124 if got := testAdminStats.Issues.String(); got != want { 125 t.Errorf("testAdminStats.Issues.String = %q, want %q", got, want) 126 } 127 128 want = "github.HookStats{TotalHooks:27, ActiveHooks:23, InactiveHooks:4}" 129 if got := testAdminStats.Hooks.String(); got != want { 130 t.Errorf("testAdminStats.Hooks.String = %q, want %q", got, want) 131 } 132 133 want = "github.MilestoneStats{TotalMilestones:7, OpenMilestones:6, ClosedMilestones:1}" 134 if got := testAdminStats.Milestones.String(); got != want { 135 t.Errorf("testAdminStats.Milestones.String = %q, want %q", got, want) 136 } 137 138 want = "github.OrgStats{TotalOrgs:33, DisabledOrgs:0, TotalTeams:60, TotalTeamMembers:314}" 139 if got := testAdminStats.Orgs.String(); got != want { 140 t.Errorf("testAdminStats.Orgs.String = %q, want %q", got, want) 141 } 142 143 want = "github.CommentStats{TotalCommitComments:6, TotalGistComments:28, TotalIssueComments:366, TotalPullRequestComments:30}" 144 if got := testAdminStats.Comments.String(); got != want { 145 t.Errorf("testAdminStats.Comments.String = %q, want %q", got, want) 146 } 147 148 want = "github.PageStats{TotalPages:36}" 149 if got := testAdminStats.Pages.String(); got != want { 150 t.Errorf("testAdminStats.Pages.String = %q, want %q", got, want) 151 } 152 153 want = "github.UserStats{TotalUsers:254, AdminUsers:45, SuspendedUsers:21}" 154 if got := testAdminStats.Users.String(); got != want { 155 t.Errorf("testAdminStats.Users.String = %q, want %q", got, want) 156 } 157 158 want = "github.GistStats{TotalGists:178, PrivateGists:151, PublicGists:25}" 159 if got := testAdminStats.Gists.String(); got != want { 160 t.Errorf("testAdminStats.Gists.String = %q, want %q", got, want) 161 } 162 163 want = "github.PullStats{TotalPulls:86, MergedPulls:60, MergablePulls:21, UnmergablePulls:3}" 164 if got := testAdminStats.Pulls.String(); got != want { 165 t.Errorf("testAdminStats.Pulls.String = %q, want %q", got, want) 166 } 167 168 want = "github.RepoStats{TotalRepos:212, RootRepos:194, ForkRepos:18, OrgRepos:51, TotalPushes:3082, TotalWikis:15}" 169 if got := testAdminStats.Repos.String(); got != want { 170 t.Errorf("testAdminStats.Repos.String = %q, want %q", got, want) 171 } 172 } 173 174 var testAdminStats = &AdminStats{ 175 Repos: &RepoStats{ 176 TotalRepos: Int(212), 177 RootRepos: Int(194), 178 ForkRepos: Int(18), 179 OrgRepos: Int(51), 180 TotalPushes: Int(3082), 181 TotalWikis: Int(15), 182 }, 183 Hooks: &HookStats{ 184 TotalHooks: Int(27), 185 ActiveHooks: Int(23), 186 InactiveHooks: Int(4), 187 }, 188 Pages: &PageStats{ 189 TotalPages: Int(36), 190 }, 191 Orgs: &OrgStats{ 192 TotalOrgs: Int(33), 193 DisabledOrgs: Int(0), 194 TotalTeams: Int(60), 195 TotalTeamMembers: Int(314), 196 }, 197 Users: &UserStats{ 198 TotalUsers: Int(254), 199 AdminUsers: Int(45), 200 SuspendedUsers: Int(21), 201 }, 202 Pulls: &PullStats{ 203 TotalPulls: Int(86), 204 MergedPulls: Int(60), 205 MergablePulls: Int(21), 206 UnmergablePulls: Int(3), 207 }, 208 Issues: &IssueStats{ 209 TotalIssues: Int(179), 210 OpenIssues: Int(83), 211 ClosedIssues: Int(96), 212 }, 213 Milestones: &MilestoneStats{ 214 TotalMilestones: Int(7), 215 OpenMilestones: Int(6), 216 ClosedMilestones: Int(1), 217 }, 218 Gists: &GistStats{ 219 TotalGists: Int(178), 220 PrivateGists: Int(151), 221 PublicGists: Int(25), 222 }, 223 Comments: &CommentStats{ 224 TotalCommitComments: Int(6), 225 TotalGistComments: Int(28), 226 TotalIssueComments: Int(366), 227 TotalPullRequestComments: Int(30), 228 }, 229 }