1
2
3
4
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 TestBillingService_GetActionsBillingOrg(t *testing.T) {
18 client, mux, _, teardown := setup()
19 defer teardown()
20
21 mux.HandleFunc("/orgs/o/settings/billing/actions", func(w http.ResponseWriter, r *http.Request) {
22 testMethod(t, r, "GET")
23 fmt.Fprint(w, `{
24 "total_minutes_used": 305,
25 "total_paid_minutes_used": 0.0,
26 "included_minutes": 3000,
27 "minutes_used_breakdown": {
28 "UBUNTU": 205,
29 "MACOS": 10,
30 "WINDOWS": 90
31 }
32 }`)
33 })
34
35 ctx := context.Background()
36 hook, _, err := client.Billing.GetActionsBillingOrg(ctx, "o")
37 if err != nil {
38 t.Errorf("Billing.GetActionsBillingOrg returned error: %v", err)
39 }
40
41 want := &ActionBilling{
42 TotalMinutesUsed: 305,
43 TotalPaidMinutesUsed: 0,
44 IncludedMinutes: 3000,
45 MinutesUsedBreakdown: MinutesUsedBreakdown{
46 Ubuntu: 205,
47 MacOS: 10,
48 Windows: 90,
49 },
50 }
51 if !cmp.Equal(hook, want) {
52 t.Errorf("Billing.GetActionsBillingOrg returned %+v, want %+v", hook, want)
53 }
54
55 const methodName = "GetActionsBillingOrg"
56 testBadOptions(t, methodName, func() (err error) {
57 _, _, err = client.Billing.GetActionsBillingOrg(ctx, "\n")
58 return err
59 })
60
61 testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) {
62 got, resp, err := client.Billing.GetActionsBillingOrg(ctx, "o")
63 if got != nil {
64 t.Errorf("testNewRequestAndDoFailure %v = %#v, want nil", methodName, got)
65 }
66 return resp, err
67 })
68 }
69
70 func TestBillingService_GetActionsBillingOrg_invalidOrg(t *testing.T) {
71 client, _, _, teardown := setup()
72 defer teardown()
73
74 ctx := context.Background()
75 _, _, err := client.Billing.GetActionsBillingOrg(ctx, "%")
76 testURLParseError(t, err)
77 }
78
79 func TestBillingService_GetPackagesBillingOrg(t *testing.T) {
80 client, mux, _, teardown := setup()
81 defer teardown()
82
83 mux.HandleFunc("/orgs/o/settings/billing/packages", func(w http.ResponseWriter, r *http.Request) {
84 testMethod(t, r, "GET")
85 fmt.Fprint(w, `{
86 "total_gigabytes_bandwidth_used": 50,
87 "total_paid_gigabytes_bandwidth_used": 40,
88 "included_gigabytes_bandwidth": 10
89 }`)
90 })
91
92 ctx := context.Background()
93 hook, _, err := client.Billing.GetPackagesBillingOrg(ctx, "o")
94 if err != nil {
95 t.Errorf("Billing.GetPackagesBillingOrg returned error: %v", err)
96 }
97
98 want := &PackageBilling{
99 TotalGigabytesBandwidthUsed: 50,
100 TotalPaidGigabytesBandwidthUsed: 40,
101 IncludedGigabytesBandwidth: 10,
102 }
103 if !cmp.Equal(hook, want) {
104 t.Errorf("Billing.GetPackagesBillingOrg returned %+v, want %+v", hook, want)
105 }
106
107 const methodName = "GetPackagesBillingOrg"
108 testBadOptions(t, methodName, func() (err error) {
109 _, _, err = client.Billing.GetPackagesBillingOrg(ctx, "\n")
110 return err
111 })
112
113 testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) {
114 got, resp, err := client.Billing.GetPackagesBillingOrg(ctx, "o")
115 if got != nil {
116 t.Errorf("testNewRequestAndDoFailure %v = %#v, want nil", methodName, got)
117 }
118 return resp, err
119 })
120 }
121
122 func TestBillingService_GetPackagesBillingOrg_invalidOrg(t *testing.T) {
123 client, _, _, teardown := setup()
124 defer teardown()
125
126 ctx := context.Background()
127 _, _, err := client.Billing.GetPackagesBillingOrg(ctx, "%")
128 testURLParseError(t, err)
129 }
130
131 func TestBillingService_GetStorageBillingOrg(t *testing.T) {
132 client, mux, _, teardown := setup()
133 defer teardown()
134
135 mux.HandleFunc("/orgs/o/settings/billing/shared-storage", func(w http.ResponseWriter, r *http.Request) {
136 testMethod(t, r, "GET")
137 fmt.Fprint(w, `{
138 "days_left_in_billing_cycle": 20,
139 "estimated_paid_storage_for_month": 15.25,
140 "estimated_storage_for_month": 40
141 }`)
142 })
143
144 ctx := context.Background()
145 hook, _, err := client.Billing.GetStorageBillingOrg(ctx, "o")
146 if err != nil {
147 t.Errorf("Billing.GetStorageBillingOrg returned error: %v", err)
148 }
149
150 want := &StorageBilling{
151 DaysLeftInBillingCycle: 20,
152 EstimatedPaidStorageForMonth: 15.25,
153 EstimatedStorageForMonth: 40,
154 }
155 if !cmp.Equal(hook, want) {
156 t.Errorf("Billing.GetStorageBillingOrg returned %+v, want %+v", hook, want)
157 }
158
159 const methodName = "GetStorageBillingOrg"
160 testBadOptions(t, methodName, func() (err error) {
161 _, _, err = client.Billing.GetStorageBillingOrg(ctx, "\n")
162 return err
163 })
164
165 testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) {
166 got, resp, err := client.Billing.GetStorageBillingOrg(ctx, "o")
167 if got != nil {
168 t.Errorf("testNewRequestAndDoFailure %v = %#v, want nil", methodName, got)
169 }
170 return resp, err
171 })
172 }
173
174 func TestBillingService_GetStorageBillingOrg_invalidOrg(t *testing.T) {
175 client, _, _, teardown := setup()
176 defer teardown()
177
178 ctx := context.Background()
179 _, _, err := client.Billing.GetStorageBillingOrg(ctx, "%")
180 testURLParseError(t, err)
181 }
182
183 func TestBillingService_GetActionsBillingUser(t *testing.T) {
184 client, mux, _, teardown := setup()
185 defer teardown()
186
187 mux.HandleFunc("/users/u/settings/billing/actions", func(w http.ResponseWriter, r *http.Request) {
188 testMethod(t, r, "GET")
189 fmt.Fprint(w, `{
190 "total_minutes_used": 10,
191 "total_paid_minutes_used": 0,
192 "included_minutes": 3000,
193 "minutes_used_breakdown": {
194 "UBUNTU": 205,
195 "MACOS": 10,
196 "WINDOWS": 90
197 }
198 }`)
199 })
200
201 ctx := context.Background()
202 hook, _, err := client.Billing.GetActionsBillingUser(ctx, "u")
203 if err != nil {
204 t.Errorf("Billing.GetActionsBillingUser returned error: %v", err)
205 }
206
207 want := &ActionBilling{
208 TotalMinutesUsed: 10,
209 TotalPaidMinutesUsed: 0,
210 IncludedMinutes: 3000,
211 MinutesUsedBreakdown: MinutesUsedBreakdown{
212 Ubuntu: 205,
213 MacOS: 10,
214 Windows: 90,
215 },
216 }
217 if !cmp.Equal(hook, want) {
218 t.Errorf("Billing.GetActionsBillingUser returned %+v, want %+v", hook, want)
219 }
220
221 const methodName = "GetActionsBillingUser"
222 testBadOptions(t, methodName, func() (err error) {
223 _, _, err = client.Billing.GetActionsBillingOrg(ctx, "\n")
224 return err
225 })
226
227 testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) {
228 got, resp, err := client.Billing.GetActionsBillingUser(ctx, "o")
229 if got != nil {
230 t.Errorf("testNewRequestAndDoFailure %v = %#v, want nil", methodName, got)
231 }
232 return resp, err
233 })
234 }
235
236 func TestBillingService_GetActionsBillingUser_invalidUser(t *testing.T) {
237 client, _, _, teardown := setup()
238 defer teardown()
239
240 ctx := context.Background()
241 _, _, err := client.Billing.GetActionsBillingUser(ctx, "%")
242 testURLParseError(t, err)
243 }
244
245 func TestBillingService_GetPackagesBillingUser(t *testing.T) {
246 client, mux, _, teardown := setup()
247 defer teardown()
248
249 mux.HandleFunc("/users/u/settings/billing/packages", func(w http.ResponseWriter, r *http.Request) {
250 testMethod(t, r, "GET")
251 fmt.Fprint(w, `{
252 "total_gigabytes_bandwidth_used": 50,
253 "total_paid_gigabytes_bandwidth_used": 40,
254 "included_gigabytes_bandwidth": 10
255 }`)
256 })
257
258 ctx := context.Background()
259 hook, _, err := client.Billing.GetPackagesBillingUser(ctx, "u")
260 if err != nil {
261 t.Errorf("Billing.GetPackagesBillingUser returned error: %v", err)
262 }
263
264 want := &PackageBilling{
265 TotalGigabytesBandwidthUsed: 50,
266 TotalPaidGigabytesBandwidthUsed: 40,
267 IncludedGigabytesBandwidth: 10,
268 }
269 if !cmp.Equal(hook, want) {
270 t.Errorf("Billing.GetPackagesBillingUser returned %+v, want %+v", hook, want)
271 }
272
273 const methodName = "GetPackagesBillingUser"
274 testBadOptions(t, methodName, func() (err error) {
275 _, _, err = client.Billing.GetPackagesBillingUser(ctx, "\n")
276 return err
277 })
278
279 testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) {
280 got, resp, err := client.Billing.GetPackagesBillingUser(ctx, "o")
281 if got != nil {
282 t.Errorf("testNewRequestAndDoFailure %v = %#v, want nil", methodName, got)
283 }
284 return resp, err
285 })
286 }
287
288 func TestBillingService_GetPackagesBillingUser_invalidUser(t *testing.T) {
289 client, _, _, teardown := setup()
290 defer teardown()
291
292 ctx := context.Background()
293 _, _, err := client.Billing.GetPackagesBillingUser(ctx, "%")
294 testURLParseError(t, err)
295 }
296
297 func TestBillingService_GetStorageBillingUser(t *testing.T) {
298 client, mux, _, teardown := setup()
299 defer teardown()
300
301 mux.HandleFunc("/users/u/settings/billing/shared-storage", func(w http.ResponseWriter, r *http.Request) {
302 testMethod(t, r, "GET")
303 fmt.Fprint(w, `{
304 "days_left_in_billing_cycle": 20,
305 "estimated_paid_storage_for_month": 15.25,
306 "estimated_storage_for_month": 40
307 }`)
308 })
309
310 ctx := context.Background()
311 hook, _, err := client.Billing.GetStorageBillingUser(ctx, "u")
312 if err != nil {
313 t.Errorf("Billing.GetStorageBillingUser returned error: %v", err)
314 }
315
316 want := &StorageBilling{
317 DaysLeftInBillingCycle: 20,
318 EstimatedPaidStorageForMonth: 15.25,
319 EstimatedStorageForMonth: 40,
320 }
321 if !cmp.Equal(hook, want) {
322 t.Errorf("Billing.GetStorageBillingUser returned %+v, want %+v", hook, want)
323 }
324
325 const methodName = "GetStorageBillingUser"
326 testBadOptions(t, methodName, func() (err error) {
327 _, _, err = client.Billing.GetStorageBillingUser(ctx, "\n")
328 return err
329 })
330
331 testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) {
332 got, resp, err := client.Billing.GetStorageBillingUser(ctx, "o")
333 if got != nil {
334 t.Errorf("testNewRequestAndDoFailure %v = %#v, want nil", methodName, got)
335 }
336 return resp, err
337 })
338 }
339
340 func TestBillingService_GetStorageBillingUser_invalidUser(t *testing.T) {
341 client, _, _, teardown := setup()
342 defer teardown()
343
344 ctx := context.Background()
345 _, _, err := client.Billing.GetStorageBillingUser(ctx, "%")
346 testURLParseError(t, err)
347 }
348
349 func TestMinutesUsedBreakdown_Marshal(t *testing.T) {
350 testJSONMarshal(t, &MinutesUsedBreakdown{}, "{}")
351
352 u := &MinutesUsedBreakdown{
353 Ubuntu: 1,
354 MacOS: 1,
355 Windows: 1,
356 }
357
358 want := `{
359 "UBUNTU": 1,
360 "MACOS": 1,
361 "WINDOWS": 1
362 }`
363
364 testJSONMarshal(t, u, want)
365 }
366
367 func TestActionBilling_Marshal(t *testing.T) {
368 testJSONMarshal(t, &MinutesUsedBreakdown{}, "{}")
369
370 u := &ActionBilling{
371 TotalMinutesUsed: 1,
372 TotalPaidMinutesUsed: 1,
373 IncludedMinutes: 1,
374 MinutesUsedBreakdown: MinutesUsedBreakdown{
375 Ubuntu: 1,
376 MacOS: 1,
377 Windows: 1,
378 },
379 }
380
381 want := `{
382 "total_minutes_used": 1,
383 "total_paid_minutes_used": 1,
384 "included_minutes": 1,
385 "minutes_used_breakdown": {
386 "UBUNTU": 1,
387 "MACOS": 1,
388 "WINDOWS": 1
389 }
390 }`
391
392 testJSONMarshal(t, u, want)
393 }
394
395 func TestPackageBilling_Marshal(t *testing.T) {
396 testJSONMarshal(t, &PackageBilling{}, "{}")
397
398 u := &PackageBilling{
399 TotalGigabytesBandwidthUsed: 1,
400 TotalPaidGigabytesBandwidthUsed: 1,
401 IncludedGigabytesBandwidth: 1,
402 }
403
404 want := `{
405 "total_gigabytes_bandwidth_used": 1,
406 "total_paid_gigabytes_bandwidth_used": 1,
407 "included_gigabytes_bandwidth": 1
408 }`
409
410 testJSONMarshal(t, u, want)
411 }
412
413 func TestStorageBilling_Marshal(t *testing.T) {
414 testJSONMarshal(t, &StorageBilling{}, "{}")
415
416 u := &StorageBilling{
417 DaysLeftInBillingCycle: 1,
418 EstimatedPaidStorageForMonth: 1,
419 EstimatedStorageForMonth: 1,
420 }
421
422 want := `{
423 "days_left_in_billing_cycle": 1,
424 "estimated_paid_storage_for_month": 1,
425 "estimated_storage_for_month": 1
426 }`
427
428 testJSONMarshal(t, u, want)
429 }
430
431 func TestBillingService_GetAdvancedSecurityActiveCommittersOrg(t *testing.T) {
432 client, mux, _, teardown := setup()
433 defer teardown()
434
435 mux.HandleFunc("/orgs/o/settings/billing/advanced-security", func(w http.ResponseWriter, r *http.Request) {
436 testMethod(t, r, "GET")
437 fmt.Fprint(w, `{
438 "total_advanced_security_committers": 2,
439 "repositories": [
440 {
441 "name": "octocat-org/Hello-World",
442 "advanced_security_committers": 2,
443 "advanced_security_committers_breakdown": [
444 {
445 "user_login": "octokitten",
446 "last_pushed_date": "2021-10-25"
447 }
448 ]
449 }
450 ]
451 }`)
452 })
453
454 ctx := context.Background()
455 hook, _, err := client.Billing.GetAdvancedSecurityActiveCommittersOrg(ctx, "o")
456 if err != nil {
457 t.Errorf("Billing.GetAdvancedSecurityActiveCommittersOrg returned error: %v", err)
458 }
459
460 want := &ActiveCommitters{
461 TotalAdvancedSecurityCommitters: 2,
462 Repositories: []*RepositoryActiveCommitters{
463 {
464 Name: String("octocat-org/Hello-World"),
465 AdvancedSecurityCommitters: Int(2),
466 AdvancedSecurityCommittersBreakdown: []*AdvancedSecurityCommittersBreakdown{
467 {
468 UserLogin: String("octokitten"),
469 LastPushedDate: String("2021-10-25"),
470 },
471 },
472 },
473 },
474 }
475 if !cmp.Equal(hook, want) {
476 t.Errorf("Billing.GetAdvancedSecurityActiveCommittersOrg returned %+v, want %+v", hook, want)
477 }
478
479 const methodName = "GetAdvancedSecurityActiveCommittersOrg"
480 testBadOptions(t, methodName, func() (err error) {
481 _, _, err = client.Billing.GetAdvancedSecurityActiveCommittersOrg(ctx, "\n")
482 return err
483 })
484
485 testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) {
486 got, resp, err := client.Billing.GetAdvancedSecurityActiveCommittersOrg(ctx, "o")
487 if got != nil {
488 t.Errorf("testNewRequestAndDoFailure %v = %#v, want nil", methodName, got)
489 }
490 return resp, err
491 })
492 }
493
494 func TestBillingService_GetAdvancedSecurityActiveCommittersOrg_invalidOrg(t *testing.T) {
495 client, _, _, teardown := setup()
496 defer teardown()
497
498 ctx := context.Background()
499 _, _, err := client.Billing.GetAdvancedSecurityActiveCommittersOrg(ctx, "%")
500 testURLParseError(t, err)
501 }
502
View as plain text