1
2
3
4
5
6 package github
7
8 import (
9 "context"
10 "fmt"
11 "net/http"
12 "testing"
13 "time"
14
15 "github.com/google/go-cmp/cmp"
16 )
17
18 func TestActionsService_ListRepoVariables(t *testing.T) {
19 client, mux, _, teardown := setup()
20 defer teardown()
21
22 mux.HandleFunc("/repos/o/r/actions/variables", func(w http.ResponseWriter, r *http.Request) {
23 testMethod(t, r, "GET")
24 testFormValues(t, r, values{"per_page": "2", "page": "2"})
25 fmt.Fprint(w, `{"total_count":4,"variables":[{"name":"A","value":"AA","created_at":"2019-01-02T15:04:05Z","updated_at":"2020-01-02T15:04:05Z"},{"name":"B","value":"BB","created_at":"2019-01-02T15:04:05Z","updated_at":"2020-01-02T15:04:05Z"}]}`)
26 })
27
28 opts := &ListOptions{Page: 2, PerPage: 2}
29 ctx := context.Background()
30 variables, _, err := client.Actions.ListRepoVariables(ctx, "o", "r", opts)
31 if err != nil {
32 t.Errorf("Actions.ListRepoVariables returned error: %v", err)
33 }
34
35 want := &ActionsVariables{
36 TotalCount: 4,
37 Variables: []*ActionsVariable{
38 {Name: "A", Value: "AA", CreatedAt: &Timestamp{time.Date(2019, time.January, 02, 15, 04, 05, 0, time.UTC)}, UpdatedAt: &Timestamp{time.Date(2020, time.January, 02, 15, 04, 05, 0, time.UTC)}},
39 {Name: "B", Value: "BB", CreatedAt: &Timestamp{time.Date(2019, time.January, 02, 15, 04, 05, 0, time.UTC)}, UpdatedAt: &Timestamp{time.Date(2020, time.January, 02, 15, 04, 05, 0, time.UTC)}},
40 },
41 }
42 if !cmp.Equal(variables, want) {
43 t.Errorf("Actions.ListRepoVariables returned %+v, want %+v", variables, want)
44 }
45
46 const methodName = "ListRepoVariables"
47 testBadOptions(t, methodName, func() (err error) {
48 _, _, err = client.Actions.ListRepoVariables(ctx, "\n", "\n", opts)
49 return err
50 })
51
52 testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) {
53 got, resp, err := client.Actions.ListRepoVariables(ctx, "o", "r", opts)
54 if got != nil {
55 t.Errorf("testNewRequestAndDoFailure %v = %#v, want nil", methodName, got)
56 }
57 return resp, err
58 })
59 }
60
61 func TestActionsService_GetRepoVariable(t *testing.T) {
62 client, mux, _, teardown := setup()
63 defer teardown()
64
65 mux.HandleFunc("/repos/o/r/actions/variables/NAME", func(w http.ResponseWriter, r *http.Request) {
66 testMethod(t, r, "GET")
67 fmt.Fprint(w, `{"name":"NAME","value":"VALUE","created_at":"2019-01-02T15:04:05Z","updated_at":"2020-01-02T15:04:05Z"}`)
68 })
69
70 ctx := context.Background()
71 variable, _, err := client.Actions.GetRepoVariable(ctx, "o", "r", "NAME")
72 if err != nil {
73 t.Errorf("Actions.GetRepoVariable returned error: %v", err)
74 }
75
76 want := &ActionsVariable{
77 Name: "NAME",
78 Value: "VALUE",
79 CreatedAt: &Timestamp{time.Date(2019, time.January, 02, 15, 04, 05, 0, time.UTC)},
80 UpdatedAt: &Timestamp{time.Date(2020, time.January, 02, 15, 04, 05, 0, time.UTC)},
81 }
82 if !cmp.Equal(variable, want) {
83 t.Errorf("Actions.GetRepoVariable returned %+v, want %+v", variable, want)
84 }
85
86 const methodName = "GetRepoVariable"
87 testBadOptions(t, methodName, func() (err error) {
88 _, _, err = client.Actions.GetRepoVariable(ctx, "\n", "\n", "\n")
89 return err
90 })
91
92 testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) {
93 got, resp, err := client.Actions.GetRepoVariable(ctx, "o", "r", "NAME")
94 if got != nil {
95 t.Errorf("testNewRequestAndDoFailure %v = %#v, want nil", methodName, got)
96 }
97 return resp, err
98 })
99 }
100
101 func TestActionsService_CreateRepoVariable(t *testing.T) {
102 client, mux, _, teardown := setup()
103 defer teardown()
104
105 mux.HandleFunc("/repos/o/r/actions/variables", func(w http.ResponseWriter, r *http.Request) {
106 testMethod(t, r, "POST")
107 testHeader(t, r, "Content-Type", "application/json")
108 testBody(t, r, `{"name":"NAME","value":"VALUE"}`+"\n")
109 w.WriteHeader(http.StatusCreated)
110 })
111
112 input := &ActionsVariable{
113 Name: "NAME",
114 Value: "VALUE",
115 }
116 ctx := context.Background()
117 _, err := client.Actions.CreateRepoVariable(ctx, "o", "r", input)
118 if err != nil {
119 t.Errorf("Actions.CreateRepoVariable returned error: %v", err)
120 }
121
122 const methodName = "CreateRepoVariable"
123 testBadOptions(t, methodName, func() (err error) {
124 _, err = client.Actions.CreateRepoVariable(ctx, "\n", "\n", input)
125 return err
126 })
127
128 testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) {
129 return client.Actions.CreateRepoVariable(ctx, "o", "r", input)
130 })
131 }
132
133 func TestActionsService_UpdateRepoVariable(t *testing.T) {
134 client, mux, _, teardown := setup()
135 defer teardown()
136
137 mux.HandleFunc("/repos/o/r/actions/variables/NAME", func(w http.ResponseWriter, r *http.Request) {
138 testMethod(t, r, "PATCH")
139 testHeader(t, r, "Content-Type", "application/json")
140 testBody(t, r, `{"name":"NAME","value":"VALUE"}`+"\n")
141 w.WriteHeader(http.StatusNoContent)
142 })
143
144 input := &ActionsVariable{
145 Name: "NAME",
146 Value: "VALUE",
147 }
148 ctx := context.Background()
149 _, err := client.Actions.UpdateRepoVariable(ctx, "o", "r", input)
150 if err != nil {
151 t.Errorf("Actions.UpdateRepoVariable returned error: %v", err)
152 }
153
154 const methodName = "UpdateRepoVariable"
155 testBadOptions(t, methodName, func() (err error) {
156 _, err = client.Actions.UpdateRepoVariable(ctx, "\n", "\n", input)
157 return err
158 })
159
160 testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) {
161 return client.Actions.UpdateRepoVariable(ctx, "o", "r", input)
162 })
163 }
164
165 func TestActionsService_DeleteRepoVariable(t *testing.T) {
166 client, mux, _, teardown := setup()
167 defer teardown()
168
169 mux.HandleFunc("/repos/o/r/actions/variables/NAME", func(w http.ResponseWriter, r *http.Request) {
170 testMethod(t, r, "DELETE")
171 })
172
173 ctx := context.Background()
174 _, err := client.Actions.DeleteRepoVariable(ctx, "o", "r", "NAME")
175 if err != nil {
176 t.Errorf("Actions.( returned error: %v", err)
177 }
178
179 const methodName = "DeleteRepoVariable"
180 testBadOptions(t, methodName, func() (err error) {
181 _, err = client.Actions.DeleteRepoVariable(ctx, "\n", "\n", "\n")
182 return err
183 })
184
185 testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) {
186 return client.Actions.DeleteRepoVariable(ctx, "o", "r", "NAME")
187 })
188 }
189
190 func TestActionsService_ListOrgVariables(t *testing.T) {
191 client, mux, _, teardown := setup()
192 defer teardown()
193
194 mux.HandleFunc("/orgs/o/actions/variables", func(w http.ResponseWriter, r *http.Request) {
195 testMethod(t, r, "GET")
196 testFormValues(t, r, values{"per_page": "2", "page": "2"})
197 fmt.Fprint(w, `{"total_count":3,"variables":[{"name":"A","value":"AA","created_at":"2019-08-10T14:59:22Z","updated_at":"2020-01-10T14:59:22Z","visibility":"private"},{"name":"B","value":"BB","created_at":"2019-08-10T14:59:22Z","updated_at":"2020-01-10T14:59:22Z","visibility":"all"},{"name":"C","value":"CC","created_at":"2019-08-10T14:59:22Z","updated_at":"2020-01-10T14:59:22Z","visibility":"selected","selected_repositories_url":"https://api.github.com/orgs/octo-org/actions/variables/VAR/repositories"}]}`)
198 })
199
200 opts := &ListOptions{Page: 2, PerPage: 2}
201 ctx := context.Background()
202 variables, _, err := client.Actions.ListOrgVariables(ctx, "o", opts)
203 if err != nil {
204 t.Errorf("Actions.ListOrgVariables returned error: %v", err)
205 }
206
207 want := &ActionsVariables{
208 TotalCount: 3,
209 Variables: []*ActionsVariable{
210 {Name: "A", Value: "AA", CreatedAt: &Timestamp{time.Date(2019, time.August, 10, 14, 59, 22, 0, time.UTC)}, UpdatedAt: &Timestamp{time.Date(2020, time.January, 10, 14, 59, 22, 0, time.UTC)}, Visibility: String("private")},
211 {Name: "B", Value: "BB", CreatedAt: &Timestamp{time.Date(2019, time.August, 10, 14, 59, 22, 0, time.UTC)}, UpdatedAt: &Timestamp{time.Date(2020, time.January, 10, 14, 59, 22, 0, time.UTC)}, Visibility: String("all")},
212 {Name: "C", Value: "CC", CreatedAt: &Timestamp{time.Date(2019, time.August, 10, 14, 59, 22, 0, time.UTC)}, UpdatedAt: &Timestamp{time.Date(2020, time.January, 10, 14, 59, 22, 0, time.UTC)}, Visibility: String("selected"), SelectedRepositoriesURL: String("https://api.github.com/orgs/octo-org/actions/variables/VAR/repositories")},
213 },
214 }
215 if !cmp.Equal(variables, want) {
216 t.Errorf("Actions.ListOrgVariables returned %+v, want %+v", variables, want)
217 }
218
219 const methodName = "ListOrgVariables"
220 testBadOptions(t, methodName, func() (err error) {
221 _, _, err = client.Actions.ListOrgVariables(ctx, "\n", opts)
222 return err
223 })
224
225 testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) {
226 got, resp, err := client.Actions.ListOrgVariables(ctx, "o", opts)
227 if got != nil {
228 t.Errorf("testNewRequestAndDoFailure %v = %#v, want nil", methodName, got)
229 }
230 return resp, err
231 })
232 }
233
234 func TestActionsService_GetOrgVariable(t *testing.T) {
235 client, mux, _, teardown := setup()
236 defer teardown()
237
238 mux.HandleFunc("/orgs/o/actions/variables/NAME", func(w http.ResponseWriter, r *http.Request) {
239 testMethod(t, r, "GET")
240 fmt.Fprint(w, `{"name":"NAME","value":"VALUE","created_at":"2019-01-02T15:04:05Z","updated_at":"2020-01-02T15:04:05Z","visibility":"selected","selected_repositories_url":"https://api.github.com/orgs/octo-org/actions/variables/VAR/repositories"}`)
241 })
242
243 ctx := context.Background()
244 variable, _, err := client.Actions.GetOrgVariable(ctx, "o", "NAME")
245 if err != nil {
246 t.Errorf("Actions.GetOrgVariable returned error: %v", err)
247 }
248
249 want := &ActionsVariable{
250 Name: "NAME",
251 Value: "VALUE",
252 CreatedAt: &Timestamp{time.Date(2019, time.January, 02, 15, 04, 05, 0, time.UTC)},
253 UpdatedAt: &Timestamp{time.Date(2020, time.January, 02, 15, 04, 05, 0, time.UTC)},
254 Visibility: String("selected"),
255 SelectedRepositoriesURL: String("https://api.github.com/orgs/octo-org/actions/variables/VAR/repositories"),
256 }
257 if !cmp.Equal(variable, want) {
258 t.Errorf("Actions.GetOrgVariable returned %+v, want %+v", variable, want)
259 }
260
261 const methodName = "GetOrgVariable"
262 testBadOptions(t, methodName, func() (err error) {
263 _, _, err = client.Actions.GetOrgVariable(ctx, "\n", "\n")
264 return err
265 })
266
267 testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) {
268 got, resp, err := client.Actions.GetOrgVariable(ctx, "o", "NAME")
269 if got != nil {
270 t.Errorf("testNewRequestAndDoFailure %v = %#v, want nil", methodName, got)
271 }
272 return resp, err
273 })
274 }
275
276 func TestActionsService_CreateOrgVariable(t *testing.T) {
277 client, mux, _, teardown := setup()
278 defer teardown()
279
280 mux.HandleFunc("/orgs/o/actions/variables", func(w http.ResponseWriter, r *http.Request) {
281 testMethod(t, r, "POST")
282 testHeader(t, r, "Content-Type", "application/json")
283 testBody(t, r, `{"name":"NAME","value":"VALUE","visibility":"selected","selected_repository_ids":[1296269,1269280]}`+"\n")
284 w.WriteHeader(http.StatusCreated)
285 })
286
287 input := &ActionsVariable{
288 Name: "NAME",
289 Value: "VALUE",
290 Visibility: String("selected"),
291 SelectedRepositoryIDs: &SelectedRepoIDs{1296269, 1269280},
292 }
293 ctx := context.Background()
294 _, err := client.Actions.CreateOrgVariable(ctx, "o", input)
295 if err != nil {
296 t.Errorf("Actions.CreateOrgVariable returned error: %v", err)
297 }
298
299 const methodName = "CreateOrgVariable"
300 testBadOptions(t, methodName, func() (err error) {
301 _, err = client.Actions.CreateOrgVariable(ctx, "\n", input)
302 return err
303 })
304
305 testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) {
306 return client.Actions.CreateOrgVariable(ctx, "o", input)
307 })
308 }
309
310 func TestActionsService_UpdateOrgVariable(t *testing.T) {
311 client, mux, _, teardown := setup()
312 defer teardown()
313
314 mux.HandleFunc("/orgs/o/actions/variables/NAME", func(w http.ResponseWriter, r *http.Request) {
315 testMethod(t, r, "PATCH")
316 testHeader(t, r, "Content-Type", "application/json")
317 testBody(t, r, `{"name":"NAME","value":"VALUE","visibility":"selected","selected_repository_ids":[1296269,1269280]}`+"\n")
318 w.WriteHeader(http.StatusNoContent)
319 })
320
321 input := &ActionsVariable{
322 Name: "NAME",
323 Value: "VALUE",
324 Visibility: String("selected"),
325 SelectedRepositoryIDs: &SelectedRepoIDs{1296269, 1269280},
326 }
327 ctx := context.Background()
328 _, err := client.Actions.UpdateOrgVariable(ctx, "o", input)
329 if err != nil {
330 t.Errorf("Actions.UpdateOrgVariable returned error: %v", err)
331 }
332
333 const methodName = "UpdateOrgVariable"
334 testBadOptions(t, methodName, func() (err error) {
335 _, err = client.Actions.UpdateOrgVariable(ctx, "\n", input)
336 return err
337 })
338
339 testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) {
340 return client.Actions.UpdateOrgVariable(ctx, "o", input)
341 })
342 }
343
344 func TestActionsService_ListSelectedReposForOrgVariable(t *testing.T) {
345 client, mux, _, teardown := setup()
346 defer teardown()
347
348 mux.HandleFunc("/orgs/o/actions/variables/NAME/repositories", func(w http.ResponseWriter, r *http.Request) {
349 testMethod(t, r, "GET")
350 fmt.Fprintf(w, `{"total_count":1,"repositories":[{"id":1}]}`)
351 })
352
353 opts := &ListOptions{Page: 2, PerPage: 2}
354 ctx := context.Background()
355 repos, _, err := client.Actions.ListSelectedReposForOrgVariable(ctx, "o", "NAME", opts)
356 if err != nil {
357 t.Errorf("Actions.( returned error: %v", err)
358 }
359
360 want := &SelectedReposList{
361 TotalCount: Int(1),
362 Repositories: []*Repository{
363 {ID: Int64(1)},
364 },
365 }
366 if !cmp.Equal(repos, want) {
367 t.Errorf("Actions.( returned %+v, want %+v", repos, want)
368 }
369
370 const methodName = "ListSelectedReposForOrgVariable"
371 testBadOptions(t, methodName, func() (err error) {
372 _, _, err = client.Actions.ListSelectedReposForOrgVariable(ctx, "\n", "\n", opts)
373 return err
374 })
375
376 testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) {
377 got, resp, err := client.Actions.ListSelectedReposForOrgVariable(ctx, "o", "NAME", opts)
378 if got != nil {
379 t.Errorf("testNewRequestAndDoFailure %v = %#v, want nil", methodName, got)
380 }
381 return resp, err
382 })
383 }
384
385 func TestActionsService_SetSelectedReposForOrgSVariable(t *testing.T) {
386 client, mux, _, teardown := setup()
387 defer teardown()
388
389 mux.HandleFunc("/orgs/o/actions/variables/NAME/repositories", func(w http.ResponseWriter, r *http.Request) {
390 testMethod(t, r, "PUT")
391 testHeader(t, r, "Content-Type", "application/json")
392 testBody(t, r, `{"selected_repository_ids":[64780797]}`+"\n")
393 })
394
395 ctx := context.Background()
396 _, err := client.Actions.SetSelectedReposForOrgVariable(ctx, "o", "NAME", SelectedRepoIDs{64780797})
397 if err != nil {
398 t.Errorf("Actions.( returned error: %v", err)
399 }
400
401 const methodName = "SetSelectedReposForOrgVariable"
402 testBadOptions(t, methodName, func() (err error) {
403 _, err = client.Actions.SetSelectedReposForOrgVariable(ctx, "\n", "\n", SelectedRepoIDs{64780797})
404 return err
405 })
406
407 testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) {
408 return client.Actions.SetSelectedReposForOrgVariable(ctx, "o", "NAME", SelectedRepoIDs{64780797})
409 })
410 }
411
412 func TestActionsService_AddSelectedRepoToOrgVariable(t *testing.T) {
413 client, mux, _, teardown := setup()
414 defer teardown()
415
416 mux.HandleFunc("/orgs/o/actions/variables/NAME/repositories/1234", func(w http.ResponseWriter, r *http.Request) {
417 testMethod(t, r, "PUT")
418 })
419
420 repo := &Repository{ID: Int64(1234)}
421 ctx := context.Background()
422 _, err := client.Actions.AddSelectedRepoToOrgVariable(ctx, "o", "NAME", repo)
423 if err != nil {
424 t.Errorf("Actions.AddSelectedRepoToOrgVariable returned error: %v", err)
425 }
426
427 const methodName = "AddSelectedRepoToOrgVariable"
428 testBadOptions(t, methodName, func() (err error) {
429 _, err = client.Actions.AddSelectedRepoToOrgVariable(ctx, "\n", "\n", repo)
430 return err
431 })
432
433 testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) {
434 return client.Actions.AddSelectedRepoToOrgVariable(ctx, "o", "NAME", repo)
435 })
436 }
437
438 func TestActionsService_RemoveSelectedRepoFromOrgVariable(t *testing.T) {
439 client, mux, _, teardown := setup()
440 defer teardown()
441
442 mux.HandleFunc("/orgs/o/actions/variables/NAME/repositories/1234", func(w http.ResponseWriter, r *http.Request) {
443 testMethod(t, r, "DELETE")
444 })
445
446 repo := &Repository{ID: Int64(1234)}
447 ctx := context.Background()
448 _, err := client.Actions.RemoveSelectedRepoFromOrgVariable(ctx, "o", "NAME", repo)
449 if err != nil {
450 t.Errorf("Actions.RemoveSelectedRepoFromOrgVariable returned error: %v", err)
451 }
452
453 const methodName = "RemoveSelectedRepoFromOrgVariable"
454 testBadOptions(t, methodName, func() (err error) {
455 _, err = client.Actions.RemoveSelectedRepoFromOrgVariable(ctx, "\n", "\n", repo)
456 return err
457 })
458
459 testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) {
460 return client.Actions.RemoveSelectedRepoFromOrgVariable(ctx, "o", "NAME", repo)
461 })
462 }
463
464 func TestActionsService_DeleteOrgVariable(t *testing.T) {
465 client, mux, _, teardown := setup()
466 defer teardown()
467
468 mux.HandleFunc("/orgs/o/actions/variables/NAME", func(w http.ResponseWriter, r *http.Request) {
469 testMethod(t, r, "DELETE")
470 })
471
472 ctx := context.Background()
473 _, err := client.Actions.DeleteOrgVariable(ctx, "o", "NAME")
474 if err != nil {
475 t.Errorf("Actions.DeleteOrgVariable returned error: %v", err)
476 }
477
478 const methodName = "DeleteOrgVariable"
479 testBadOptions(t, methodName, func() (err error) {
480 _, err = client.Actions.DeleteOrgVariable(ctx, "\n", "\n")
481 return err
482 })
483
484 testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) {
485 return client.Actions.DeleteOrgVariable(ctx, "o", "NAME")
486 })
487 }
488
489 func TestActionsService_ListEnvVariables(t *testing.T) {
490 client, mux, _, teardown := setup()
491 defer teardown()
492
493 mux.HandleFunc("/repositories/1/environments/e/variables", func(w http.ResponseWriter, r *http.Request) {
494 testMethod(t, r, "GET")
495 testFormValues(t, r, values{"per_page": "2", "page": "2"})
496 fmt.Fprint(w, `{"total_count":4,"variables":[{"name":"A","value":"AA","created_at":"2019-01-02T15:04:05Z","updated_at":"2020-01-02T15:04:05Z"},{"name":"B","value":"BB","created_at":"2019-01-02T15:04:05Z","updated_at":"2020-01-02T15:04:05Z"}]}`)
497 })
498
499 opts := &ListOptions{Page: 2, PerPage: 2}
500 ctx := context.Background()
501 variables, _, err := client.Actions.ListEnvVariables(ctx, 1, "e", opts)
502 if err != nil {
503 t.Errorf("Actions.ListEnvVariables returned error: %v", err)
504 }
505
506 want := &ActionsVariables{
507 TotalCount: 4,
508 Variables: []*ActionsVariable{
509 {Name: "A", Value: "AA", CreatedAt: &Timestamp{time.Date(2019, time.January, 02, 15, 04, 05, 0, time.UTC)}, UpdatedAt: &Timestamp{time.Date(2020, time.January, 02, 15, 04, 05, 0, time.UTC)}},
510 {Name: "B", Value: "BB", CreatedAt: &Timestamp{time.Date(2019, time.January, 02, 15, 04, 05, 0, time.UTC)}, UpdatedAt: &Timestamp{time.Date(2020, time.January, 02, 15, 04, 05, 0, time.UTC)}},
511 },
512 }
513 if !cmp.Equal(variables, want) {
514 t.Errorf("Actions.ListEnvVariables returned %+v, want %+v", variables, want)
515 }
516
517 const methodName = "ListEnvVariables"
518 testBadOptions(t, methodName, func() (err error) {
519 _, _, err = client.Actions.ListEnvVariables(ctx, 0.0, "\n", opts)
520 return err
521 })
522
523 testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) {
524 got, resp, err := client.Actions.ListEnvVariables(ctx, 1, "e", opts)
525 if got != nil {
526 t.Errorf("testNewRequestAndDoFailure %v = %#v, want nil", methodName, got)
527 }
528 return resp, err
529 })
530 }
531
532 func TestActionsService_GetEnvVariable(t *testing.T) {
533 client, mux, _, teardown := setup()
534 defer teardown()
535
536 mux.HandleFunc("/repositories/1/environments/e/variables/variable", func(w http.ResponseWriter, r *http.Request) {
537 testMethod(t, r, "GET")
538 fmt.Fprint(w, `{"name":"variable","value":"VAR","created_at":"2019-01-02T15:04:05Z","updated_at":"2020-01-02T15:04:05Z"}`)
539 })
540
541 ctx := context.Background()
542 variable, _, err := client.Actions.GetEnvVariable(ctx, 1, "e", "variable")
543 if err != nil {
544 t.Errorf("Actions.GetEnvVariable returned error: %v", err)
545 }
546
547 want := &ActionsVariable{
548 Name: "variable",
549 Value: "VAR",
550 CreatedAt: &Timestamp{time.Date(2019, time.January, 02, 15, 04, 05, 0, time.UTC)},
551 UpdatedAt: &Timestamp{time.Date(2020, time.January, 02, 15, 04, 05, 0, time.UTC)},
552 }
553 if !cmp.Equal(variable, want) {
554 t.Errorf("Actions.GetEnvVariable returned %+v, want %+v", variable, want)
555 }
556
557 const methodName = "GetEnvVariable"
558 testBadOptions(t, methodName, func() (err error) {
559 _, _, err = client.Actions.GetEnvVariable(ctx, 0.0, "\n", "\n")
560 return err
561 })
562
563 testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) {
564 got, resp, err := client.Actions.GetEnvVariable(ctx, 1, "e", "variable")
565 if got != nil {
566 t.Errorf("testNewRequestAndDoFailure %v = %#v, want nil", methodName, got)
567 }
568 return resp, err
569 })
570 }
571
572 func TestActionsService_CreateEnvVariable(t *testing.T) {
573 client, mux, _, teardown := setup()
574 defer teardown()
575
576 mux.HandleFunc("/repositories/1/environments/e/variables", func(w http.ResponseWriter, r *http.Request) {
577 testMethod(t, r, "POST")
578 testHeader(t, r, "Content-Type", "application/json")
579 testBody(t, r, `{"name":"variable","value":"VAR"}`+"\n")
580 w.WriteHeader(http.StatusCreated)
581 })
582
583 input := &ActionsVariable{
584 Name: "variable",
585 Value: "VAR",
586 }
587 ctx := context.Background()
588 _, err := client.Actions.CreateEnvVariable(ctx, 1, "e", input)
589 if err != nil {
590 t.Errorf("Actions.CreateEnvVariable returned error: %v", err)
591 }
592
593 const methodName = "CreateEnvVariable"
594 testBadOptions(t, methodName, func() (err error) {
595 _, err = client.Actions.CreateEnvVariable(ctx, 0.0, "\n", input)
596 return err
597 })
598
599 testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) {
600 return client.Actions.CreateEnvVariable(ctx, 1, "e", input)
601 })
602 }
603
604 func TestActionsService_UpdateEnvVariable(t *testing.T) {
605 client, mux, _, teardown := setup()
606 defer teardown()
607
608 mux.HandleFunc("/repositories/1/environments/e/variables/variable", func(w http.ResponseWriter, r *http.Request) {
609 testMethod(t, r, "PATCH")
610 testHeader(t, r, "Content-Type", "application/json")
611 testBody(t, r, `{"name":"variable","value":"VAR"}`+"\n")
612 w.WriteHeader(http.StatusNoContent)
613 })
614
615 input := &ActionsVariable{
616 Name: "variable",
617 Value: "VAR",
618 }
619 ctx := context.Background()
620 _, err := client.Actions.UpdateEnvVariable(ctx, 1, "e", input)
621 if err != nil {
622 t.Errorf("Actions.UpdateEnvVariable returned error: %v", err)
623 }
624
625 const methodName = "UpdateEnvVariable"
626 testBadOptions(t, methodName, func() (err error) {
627 _, err = client.Actions.UpdateEnvVariable(ctx, 0.0, "\n", input)
628 return err
629 })
630
631 testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) {
632 return client.Actions.UpdateEnvVariable(ctx, 1, "e", input)
633 })
634 }
635
636 func TestActionsService_DeleteEnvVariable(t *testing.T) {
637 client, mux, _, teardown := setup()
638 defer teardown()
639
640 mux.HandleFunc("/repositories/1/environments/e/variables/variable", func(w http.ResponseWriter, r *http.Request) {
641 testMethod(t, r, "DELETE")
642 })
643
644 ctx := context.Background()
645 _, err := client.Actions.DeleteEnvVariable(ctx, 1, "e", "variable")
646 if err != nil {
647 t.Errorf("Actions.DeleteEnvVariable returned error: %v", err)
648 }
649
650 const methodName = "DeleteEnvVariable"
651 testBadOptions(t, methodName, func() (err error) {
652 _, err = client.Actions.DeleteEnvVariable(ctx, 0.0, "\n", "\n")
653 return err
654 })
655
656 testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) {
657 return client.Actions.DeleteEnvVariable(ctx, 1, "r", "variable")
658 })
659 }
660
View as plain text