8000 Added unit test for rollback command · docker/cli@6a0e94c · GitHub
[go: up one dir, main page]

Skip to content

Commit 6a0e94c

Browse files
committed
Added unit test for rollback command
Signed-off-by: Jimmy Leger <jimmy.leger@gmail.com>
1 parent 5826c88 commit 6a0e94c

File tree

1 file changed

+110
-0
lines changed

1 file changed

+110
-0
lines changed
Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
package service
2+
3+
import (
4+
"bytes"
5+
"fmt"
6+
"io/ioutil"
7+
"strings"
8+
"testing"
9+
10+
"github.com/docker/cli/cli/internal/test"
11+
"github.com/docker/docker/api/types"
12+
"github.com/docker/docker/api/types/swarm"
13+
"github.com/docker/docker/pkg/testutil"
14+
"github.com/stretchr/testify/assert"
15+
"golang.org/x/net/context"
16+
)
17+
18+
func TestRollback(t *testing.T) {
19+
testCases := []struct {
20+
name string
21+
args []string
22+
serviceUpdateFunc func(ctx context.Context, serviceID string, version swarm.Version, service swarm.ServiceSpec, options types.ServiceUpdateOptions) (types.ServiceUpdateResponse, error)
23+
expectedDockerCliErr string
24+
}{
25+
{
26+
name: "rollback-service",
27+
args: []string{"service-id"},
28+
},
29+
{
30+
name: "rollback-service-with-warnings",
31+
args: []string{"service-id"},
32+
serviceUpdateFunc: func(ctx context.Context, serviceID string, version swarm.Version, service swarm.ServiceSpec, options types.ServiceUpdateOptions) (types.ServiceUpdateResponse, error) {
33+
response := types.ServiceUpdateResponse{}
34+
35+
response.Warnings = []string{
36+
"- warning 1",
37+
"- warning 2",
38+
}
39+
40+
return response, nil
41+
},
42+
expectedDockerCliErr: "- warning 1\n- warning 2",
43+
},
44+
}
45+
46+
for _, tc := range testCases {
47+
buf := new(bytes.Buffer)
48+
err := new(bytes.Buffer)
49+
cli := test.NewFa 8000 keCli(&fakeClient{
50+
serviceUpdateFunc: tc.serviceUpdateFunc,
51+
}, buf)
52+
cli.SetErr(err)
53+
cmd := newRollbackCommand(cli)
54+
cmd.SetArgs(tc.args)
55+
cmd.Flags().Set("quiet", "true")
56+
cmd.Flags().Set("detach", "true")
57+
cmd.SetOutput(ioutil.Discard)
58+
assert.NoError(t, cmd.Execute())
59+
assert.Equal(t, strings.TrimSpace(err.String()), tc.expectedDockerCliErr)
60+
}
61+
}
62+
63+
func TestRollbackWithErrors(t *testing.T) {
64+
testCases := []struct {
65+
name string
66+
args []string
67+
serviceInspectWithRawFunc func(ctx context.Context, serviceID string, options types.ServiceInspectOptions) (swarm.Service, []byte, error)
68+
serviceUpdateFunc func(ctx context.Context, serviceID string, version swarm.Version, service swarm.ServiceSpec, options types.ServiceUpdateOptions) (types.ServiceUpdateResponse, error)
69+
expectedError string
70+
}{
71+
{
72+
name: "not-enough-args",
73+
expectedError: "requires exactly 1 argument",
74+
},
75+
{
76+
name: "too-many-args",
77+
args: []string{"service-id-1", "service-id-2"},
78+
expectedError: "requires exactly 1 argument",
79+
},
80+
{
81+
name: "service-does-not-exists",
82+
args: []string{"service-id"},
83+
serviceInspectWithRawFunc: func(ctx context.Context, serviceID string, options types.ServiceInspectOptions) (swarm.Service, []byte, error) {
84+
return swarm.Service{}, []byte{}, fmt.Errorf("no such services: %s", serviceID)
85+
},
86+
expectedError: "no such services: service-id",
87+
},
88+
{
89+
name: "service-update-failed",
90+
args: []string{"service-id"},
91+
serviceUpdateFunc: func(ctx context.Context, serviceID string, version swarm.Version, service swarm.ServiceSpec, options types.ServiceUpdateOptions) (types.ServiceUpdateResponse, error) {
92+
return types.ServiceUpdateResponse{}, fmt.Errorf("no such services: %s", serviceID)
93+
},
94+
expectedError: "no such services: service-id",
95+
},
96+
}
97+
98+
for _, tc := range testCases {
99+
buf := new(bytes.Buffer)
100+
cmd := newRollbackCommand(
101+
test.NewFakeCli(&fakeClient{
102+
serviceInspectWithRawFunc: tc.serviceInspectWithRawFunc,
103+
serviceUpdateFunc: tc.serviceUpdateFunc,
104+
}, buf))
105+
cmd.SetArgs(tc.args)
106+
cmd.Flags().Set("quiet", "true")
107+
cmd.SetOutput(ioutil.Discard)
108+
testutil.ErrorContains(t, cmd.Execute(), tc.expectedError)
109+
}
110+
}

0 commit comments

Comments
 (0)
0