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  }