|
1 | 1 | package commands |
2 | 2 |
|
3 | 3 | import ( |
4 | | - "fmt" |
5 | | - "strings" |
6 | 4 | "testing" |
7 | 5 |
|
8 | | - "github.com/loilo-inc/canarycage/cli/cage/cageapp" |
9 | 6 | "github.com/loilo-inc/canarycage/env" |
10 | 7 | "github.com/loilo-inc/canarycage/mocks/mock_types" |
11 | 8 | "github.com/loilo-inc/canarycage/test" |
12 | 9 | "github.com/loilo-inc/canarycage/types" |
13 | 10 | "github.com/stretchr/testify/assert" |
14 | | - "github.com/urfave/cli/v2" |
15 | 11 | "go.uber.org/mock/gomock" |
16 | 12 | ) |
17 | 13 |
|
18 | | -func TestCommands(t *testing.T) { |
19 | | - region := "ap-notheast-1" |
20 | | - cluster := "cluster" |
21 | | - service := "service" |
22 | | - stdinService := fmt.Sprintf("%s\n%s\n%s\n%s\n", region, cluster, service, "yes") |
23 | | - stdinTask := fmt.Sprintf("%s\n%s\n%s\n", region, cluster, "yes") |
24 | | - setup := func(t *testing.T, input string) (*cli.App, *mock_types.MockCage) { |
25 | | - ctrl := gomock.NewController(t) |
26 | | - cagecli := mock_types.NewMockCage(ctrl) |
27 | | - cageapp := &cageapp.App{Stdin: strings.NewReader(input)} |
28 | | - app := cli.NewApp() |
29 | | - cmds := NewCageCommands(func(envars *env.Envars) (types.Cage, error) { |
30 | | - return cagecli, nil |
31 | | - }) |
32 | | - app.Commands = []*cli.Command{ |
33 | | - cmds.Up(cageapp), |
34 | | - cmds.RollOut(cageapp), |
35 | | - cmds.Run(cageapp), |
36 | | - } |
37 | | - app.Flags = []cli.Flag{ |
38 | | - &cli.BoolFlag{ |
39 | | - Name: "ci", |
40 | | - Destination: &cageapp.CI, |
41 | | - Value: false, |
42 | | - }, |
43 | | - } |
44 | | - return app, cagecli |
45 | | - } |
46 | | - t.Run("rollout", func(t *testing.T) { |
47 | | - t.Run("basic", func(t *testing.T) { |
48 | | - app, cagecli := setup(t, stdinService) |
49 | | - cagecli.EXPECT().RollOut(gomock.Any(), &types.RollOutInput{}).Return(&types.RollOutResult{}, nil) |
50 | | - err := app.Run([]string{"cage", "rollout", "--region", "ap-notheast-1", "../../../fixtures"}) |
51 | | - assert.NoError(t, err) |
52 | | - }) |
53 | | - t.Run("basic/ci", func(t *testing.T) { |
54 | | - app, cagecli := setup(t, "") |
55 | | - cagecli.EXPECT().RollOut(gomock.Any(), &types.RollOutInput{}).Return(&types.RollOutResult{}, nil) |
56 | | - err := app.Run([]string{"cage", "--ci", "rollout", "--region", "ap-notheast-1", "../../../fixtures"}) |
57 | | - assert.NoError(t, err) |
58 | | - }) |
59 | | - t.Run("basic/update-service", func(t *testing.T) { |
60 | | - app, cagecli := setup(t, stdinService) |
61 | | - cagecli.EXPECT().RollOut(gomock.Any(), &types.RollOutInput{UpdateService: true}).Return(&types.RollOutResult{}, nil) |
62 | | - err := app.Run([]string{"cage", "rollout", "--region", "ap-notheast-1", "--updateService", "../../../fixtures"}) |
63 | | - assert.NoError(t, err) |
64 | | - }) |
65 | | - t.Run("error", func(t *testing.T) { |
66 | | - app, cagecli := setup(t, stdinService) |
67 | | - cagecli.EXPECT().RollOut(gomock.Any(), &types.RollOutInput{}).Return(&types.RollOutResult{}, fmt.Errorf("error")) |
68 | | - err := app.Run([]string{"cage", "rollout", "--region", "ap-notheast-1", "../../../fixtures"}) |
69 | | - assert.EqualError(t, err, "error") |
70 | | - }) |
71 | | - }) |
72 | | - t.Run("up", func(t *testing.T) { |
73 | | - t.Run("basic", func(t *testing.T) { |
74 | | - app, cagecli := setup(t, stdinService) |
75 | | - cagecli.EXPECT().Up(gomock.Any()).Return(&types.UpResult{}, nil) |
76 | | - err := app.Run([]string{"cage", "up", "--region", "ap-notheast-1", "../../../fixtures"}) |
77 | | - assert.NoError(t, err) |
78 | | - }) |
79 | | - t.Run("basic/ci", func(t *testing.T) { |
80 | | - app, cagecli := setup(t, "") |
81 | | - cagecli.EXPECT().Up(gomock.Any()).Return(&types.UpResult{}, nil) |
82 | | - err := app.Run([]string{"cage", "--ci", "up", "--region", "ap-notheast-1", "../../../fixtures"}) |
83 | | - assert.NoError(t, err) |
84 | | - }) |
85 | | - t.Run("error", func(t *testing.T) { |
86 | | - app, cagecli := setup(t, stdinService) |
87 | | - cagecli.EXPECT().Up(gomock.Any()).Return(nil, fmt.Errorf("error")) |
88 | | - err := app.Run([]string{"cage", "up", "--region", "ap-notheast-1", "../../../fixtures"}) |
89 | | - assert.EqualError(t, err, "error") |
90 | | - }) |
91 | | - }) |
92 | | - t.Run("run", func(t *testing.T) { |
93 | | - t.Run("basic", func(t *testing.T) { |
94 | | - app, cagecli := setup(t, stdinTask) |
95 | | - cagecli.EXPECT().Run(gomock.Any(), gomock.Any()).Return(&types.RunResult{}, nil) |
96 | | - err := app.Run([]string{"cage", "run", "--region", "ap-notheast-1", "../../../fixtures", "container", "exec"}) |
97 | | - assert.NoError(t, err) |
98 | | - }) |
99 | | - t.Run("basic/ci", func(t *testing.T) { |
100 | | - app, cagecli := setup(t, "") |
101 | | - cagecli.EXPECT().Run(gomock.Any(), gomock.Any()).Return(&types.RunResult{}, nil) |
102 | | - err := app.Run([]string{"cage", "--ci", "run", "--region", "ap-notheast-1", "../../../fixtures", "container", "exec"}) |
103 | | - assert.NoError(t, err) |
104 | | - }) |
105 | | - t.Run("error", func(t *testing.T) { |
106 | | - app, cagecli := setup(t, stdinTask) |
107 | | - cagecli.EXPECT().Run(gomock.Any(), gomock.Any()).Return(nil, fmt.Errorf("error")) |
108 | | - err := app.Run([]string{"cage", "run", "--region", "ap-notheast-1", "../../../fixtures", "container", "exec"}) |
109 | | - assert.EqualError(t, err, "error") |
110 | | - }) |
111 | | - }) |
112 | | -} |
113 | | - |
114 | 14 | func TestSetupCage(t *testing.T) { |
115 | 15 | t.Run("basic", func(t *testing.T) { |
116 | 16 | envars := &env.Envars{Region: "us-west-2"} |
|
0 commit comments