github.com/google/go-github/v69@v69.2.0/github/enterprise_manage_ghes_test.go (about) 1 // Copyright 2025 The go-github AUTHORS. All rights reserved. 2 // 3 // Use of this source code is governed by a BSD-style 4 // license that can be found in the LICENSE file. 5 6 package github 7 8 import ( 9 "context" 10 "fmt" 11 "net/http" 12 "testing" 13 14 "github.com/google/go-cmp/cmp" 15 ) 16 17 func TestEnterpriseService_CheckSystemRequirements(t *testing.T) { 18 t.Parallel() 19 client, mux, _ := setup(t) 20 21 mux.HandleFunc("/manage/v1/checks/system-requirements", func(w http.ResponseWriter, r *http.Request) { 22 testMethod(t, r, "GET") 23 fmt.Fprint(w, `{ 24 "status": "OK", 25 "nodes": [{ 26 "hostname": "primary", 27 "status": "OK", 28 "roles_status": [{ 29 "status": "OK", 30 "role": "ConsulServer" 31 } 32 ]} 33 ]}`) 34 }) 35 36 ctx := context.Background() 37 systemRequirements, _, err := client.Enterprise.CheckSystemRequirements(ctx) 38 if err != nil { 39 t.Errorf("Enterprise.CheckSystemRequirements returned error: %v", err) 40 } 41 42 want := &SystemRequirements{ 43 Status: Ptr("OK"), 44 Nodes: []*SystemRequirementsNode{{ 45 Hostname: Ptr("primary"), 46 Status: Ptr("OK"), 47 RolesStatus: []*SystemRequirementsNodeRoleStatus{{ 48 Status: Ptr("OK"), 49 Role: Ptr("ConsulServer"), 50 }}, 51 }}, 52 } 53 if !cmp.Equal(systemRequirements, want) { 54 t.Errorf("Enterprise.CheckSystemRequirements returned %+v, want %+v", systemRequirements, want) 55 } 56 57 const methodName = "CheckSystemRequirements" 58 testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) { 59 got, resp, err := client.Enterprise.CheckSystemRequirements(ctx) 60 if got != nil { 61 t.Errorf("testNewRequestAndDoFailure %v = %#v, want nil", methodName, got) 62 } 63 return resp, err 64 }) 65 } 66 67 func TestEnterpriseService_ClusterStatus(t *testing.T) { 68 t.Parallel() 69 client, mux, _ := setup(t) 70 71 mux.HandleFunc("/manage/v1/cluster/status", func(w http.ResponseWriter, r *http.Request) { 72 testMethod(t, r, "GET") 73 fmt.Fprint(w, `{ 74 "status": "OK", 75 "nodes": [{ 76 "hostname": "primary", 77 "status": "OK", 78 "services": [] 79 }] 80 }`) 81 }) 82 83 ctx := context.Background() 84 clusterStatus, _, err := client.Enterprise.ClusterStatus(ctx) 85 if err != nil { 86 t.Errorf("Enterprise.ClusterStatus returned error: %v", err) 87 } 88 89 want := &ClusterStatus{ 90 Status: Ptr("OK"), 91 Nodes: []*ClusterStatusNode{{ 92 Hostname: Ptr("primary"), 93 Status: Ptr("OK"), 94 Services: []*ClusterStatusNodeServiceItem{}, 95 }}, 96 } 97 if !cmp.Equal(clusterStatus, want) { 98 t.Errorf("Enterprise.ClusterStatus returned %+v, want %+v", clusterStatus, want) 99 } 100 101 const methodName = "ClusterStatus" 102 testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) { 103 got, resp, err := client.Enterprise.ClusterStatus(ctx) 104 if got != nil { 105 t.Errorf("testNewRequestAndDoFailure %v = %#v, want nil", methodName, got) 106 } 107 return resp, err 108 }) 109 } 110 111 func TestEnterpriseService_ReplicationStatus(t *testing.T) { 112 t.Parallel() 113 client, mux, _ := setup(t) 114 115 mux.HandleFunc("/manage/v1/replication/status", func(w http.ResponseWriter, r *http.Request) { 116 testMethod(t, r, "GET") 117 testFormValues(t, r, values{ 118 "uuid": "1234-1234", 119 "cluster_roles": "primary", 120 }) 121 fmt.Fprint(w, `{ 122 "status": "OK", 123 "nodes": [{ 124 "hostname": "primary", 125 "status": "OK", 126 "services": [] 127 }] 128 }`) 129 }) 130 131 opt := &NodeQueryOptions{ 132 UUID: Ptr("1234-1234"), ClusterRoles: Ptr("primary"), 133 } 134 ctx := context.Background() 135 replicationStatus, _, err := client.Enterprise.ReplicationStatus(ctx, opt) 136 if err != nil { 137 t.Errorf("Enterprise.ReplicationStatus returned error: %v", err) 138 } 139 140 want := &ClusterStatus{ 141 Status: Ptr("OK"), 142 Nodes: []*ClusterStatusNode{{ 143 Hostname: Ptr("primary"), 144 Status: Ptr("OK"), 145 Services: []*ClusterStatusNodeServiceItem{}, 146 }}, 147 } 148 if !cmp.Equal(replicationStatus, want) { 149 t.Errorf("Enterprise.ReplicationStatus returned %+v, want %+v", replicationStatus, want) 150 } 151 152 const methodName = "ReplicationStatus" 153 testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) { 154 got, resp, err := client.Enterprise.ReplicationStatus(ctx, opt) 155 if got != nil { 156 t.Errorf("testNewRequestAndDoFailure %v = %#v, want nil", methodName, got) 157 } 158 return resp, err 159 }) 160 } 161 162 func TestEnterpriseService_Versions(t *testing.T) { 163 t.Parallel() 164 client, mux, _ := setup(t) 165 166 mux.HandleFunc("/manage/v1/version", func(w http.ResponseWriter, r *http.Request) { 167 testMethod(t, r, "GET") 168 testFormValues(t, r, values{ 169 "uuid": "1234-1234", 170 "cluster_roles": "primary", 171 }) 172 fmt.Fprint(w, `[{ 173 "hostname": "primary", 174 "version": { 175 "version": "3.9.0", 176 "platform": "azure", 177 "build_id": "fc542058b5", 178 "build_date": "2023-05-02" 179 } 180 }]`) 181 }) 182 183 opt := &NodeQueryOptions{ 184 UUID: Ptr("1234-1234"), ClusterRoles: Ptr("primary"), 185 } 186 ctx := context.Background() 187 releaseVersions, _, err := client.Enterprise.GetNodeReleaseVersions(ctx, opt) 188 if err != nil { 189 t.Errorf("Enterprise.GetNodeReleaseVersions returned error: %v", err) 190 } 191 192 want := []*NodeReleaseVersion{{ 193 Hostname: Ptr("primary"), 194 Version: &ReleaseVersion{ 195 Version: Ptr("3.9.0"), 196 Platform: Ptr("azure"), 197 BuildID: Ptr("fc542058b5"), 198 BuildDate: Ptr("2023-05-02"), 199 }, 200 }} 201 if !cmp.Equal(releaseVersions, want) { 202 t.Errorf("Enterprise.GetNodeReleaseVersions returned %+v, want %+v", releaseVersions, want) 203 } 204 205 const methodName = "GetNodeReleaseVersions" 206 testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) { 207 got, resp, err := client.Enterprise.GetNodeReleaseVersions(ctx, opt) 208 if got != nil { 209 t.Errorf("testNewRequestAndDoFailure %v = %#v, want nil", methodName, got) 210 } 211 return resp, err 212 }) 213 }