Browse code

Add tests for AutoAcceptOption

Signed-off-by: Daniel Nephin <dnephin@docker.com>

Daniel Nephin authored on 2016/06/18 05:02:04
Showing 3 changed files
... ...
@@ -35,7 +35,7 @@ func newInitCommand(dockerCli *client.DockerCli) *cobra.Command {
35 35
 		},
36 36
 	}
37 37
 
38
-	flags := cmd.Flags()
38
+	flags = cmd.Flags()
39 39
 	flags.Var(&opts.listenAddr, flagListenAddr, "Listen address")
40 40
 	flags.Var(&opts.autoAccept, flagAutoAccept, "Auto acceptance policy (worker, manager, or none)")
41 41
 	flags.StringVar(&opts.secret, flagSecret, "", "Set secret value needed to accept nodes into cluster")
... ...
@@ -95,10 +95,10 @@ type AutoAcceptOption struct {
95 95
 // String prints a string representation of this option
96 96
 func (o *AutoAcceptOption) String() string {
97 97
 	keys := []string{}
98
-	for key := range o.values {
99
-		keys = append(keys, key)
98
+	for key, value := range o.values {
99
+		keys = append(keys, fmt.Sprintf("%s=%v", strings.ToLower(key), value))
100 100
 	}
101
-	return strings.Join(keys, " ")
101
+	return strings.Join(keys, ", ")
102 102
 }
103 103
 
104 104
 // Set sets a new value on this option
... ...
@@ -4,6 +4,7 @@ import (
4 4
 	"testing"
5 5
 
6 6
 	"github.com/docker/docker/pkg/testutil/assert"
7
+	"github.com/docker/engine-api/types/swarm"
7 8
 )
8 9
 
9 10
 func TestNodeAddrOptionSetHostAndPort(t *testing.T) {
... ...
@@ -33,3 +34,85 @@ func TestNodeAddrOptionSetInvalidFormat(t *testing.T) {
33 33
 	opt := NewListenAddrOption()
34 34
 	assert.Error(t, opt.Set("http://localhost:4545"), "Invalid url")
35 35
 }
36
+
37
+func TestAutoAcceptOptionSetWorker(t *testing.T) {
38
+	opt := NewAutoAcceptOption()
39
+	assert.NilError(t, opt.Set("worker"))
40
+	assert.Equal(t, opt.values[WORKER], true)
41
+}
42
+
43
+func TestAutoAcceptOptionSetManager(t *testing.T) {
44
+	opt := NewAutoAcceptOption()
45
+	assert.NilError(t, opt.Set("manager"))
46
+	assert.Equal(t, opt.values[MANAGER], true)
47
+}
48
+
49
+func TestAutoAcceptOptionSetInvalid(t *testing.T) {
50
+	opt := NewAutoAcceptOption()
51
+	assert.Error(t, opt.Set("bogus"), "must be one of")
52
+}
53
+
54
+func TestAutoAcceptOptionSetNone(t *testing.T) {
55
+	opt := NewAutoAcceptOption()
56
+	assert.NilError(t, opt.Set("none"))
57
+	assert.Equal(t, opt.values[MANAGER], false)
58
+	assert.Equal(t, opt.values[WORKER], false)
59
+}
60
+
61
+func TestAutoAcceptOptionSetConflict(t *testing.T) {
62
+	opt := NewAutoAcceptOption()
63
+	assert.NilError(t, opt.Set("manager"))
64
+	assert.Error(t, opt.Set("none"), "value NONE is incompatible with MANAGER")
65
+
66
+	opt = NewAutoAcceptOption()
67
+	assert.NilError(t, opt.Set("none"))
68
+	assert.Error(t, opt.Set("worker"), "value NONE is incompatible with WORKER")
69
+}
70
+
71
+func TestAutoAcceptOptionPoliciesDefault(t *testing.T) {
72
+	opt := NewAutoAcceptOption()
73
+	secret := "thesecret"
74
+
75
+	policies := opt.Policies(&secret)
76
+	assert.Equal(t, len(policies), 2)
77
+	assert.Equal(t, policies[0], swarm.Policy{
78
+		Role:       WORKER,
79
+		Autoaccept: true,
80
+		Secret:     &secret,
81
+	})
82
+	assert.Equal(t, policies[1], swarm.Policy{
83
+		Role:       MANAGER,
84
+		Autoaccept: false,
85
+		Secret:     &secret,
86
+	})
87
+}
88
+
89
+func TestAutoAcceptOptionPoliciesWithManager(t *testing.T) {
90
+	opt := NewAutoAcceptOption()
91
+	secret := "thesecret"
92
+
93
+	assert.NilError(t, opt.Set("manager"))
94
+
95
+	policies := opt.Policies(&secret)
96
+	assert.Equal(t, len(policies), 2)
97
+	assert.Equal(t, policies[0], swarm.Policy{
98
+		Role:       WORKER,
99
+		Autoaccept: false,
100
+		Secret:     &secret,
101
+	})
102
+	assert.Equal(t, policies[1], swarm.Policy{
103
+		Role:       MANAGER,
104
+		Autoaccept: true,
105
+		Secret:     &secret,
106
+	})
107
+}
108
+
109
+func TestAutoAcceptOptionString(t *testing.T) {
110
+	opt := NewAutoAcceptOption()
111
+	assert.NilError(t, opt.Set("manager"))
112
+	assert.NilError(t, opt.Set("worker"))
113
+
114
+	repr := opt.String()
115
+	assert.Contains(t, repr, "worker=true")
116
+	assert.Contains(t, repr, "manager=true")
117
+}