Browse code

integration-cli/TestSwarmInit: Skip failing part on CLI after 18.06

Signed-off-by: Paweł Gronowski <pawel.gronowski@docker.com>

Paweł Gronowski authored on 2025/04/10 00:13:44
Showing 1 changed files
... ...
@@ -19,6 +19,7 @@ import (
19 19
 
20 20
 	"github.com/cloudflare/cfssl/helpers"
21 21
 	"github.com/docker/docker/api/types/swarm"
22
+	"github.com/docker/docker/api/types/versions"
22 23
 	"github.com/docker/docker/integration-cli/checker"
23 24
 	"github.com/docker/docker/integration-cli/cli"
24 25
 	"github.com/docker/docker/integration-cli/daemon"
... ...
@@ -69,10 +70,18 @@ func (s *DockerSwarmSuite) TestSwarmUpdate(c *testing.T) {
69 69
 	expected, err := os.ReadFile("fixtures/https/ca.pem")
70 70
 	assert.NilError(c, err)
71 71
 
72
-	spec = getSpec()
73
-	assert.Equal(c, len(spec.CAConfig.ExternalCAs), 2)
74
-	assert.Equal(c, spec.CAConfig.ExternalCAs[0].CACert, "")
75
-	assert.Equal(c, spec.CAConfig.ExternalCAs[1].CACert, string(expected))
72
+	version := cli.Docker(cli.Args("version", "--format", "{{ .Client.Version }}"), cli.Daemon(d)).Stdout()
73
+	version = strings.TrimSpace(version)
74
+	// This was broken in v18.06
75
+	// See: https://github.com/docker/cli/pull/5995
76
+	if version != "" && versions.LessThan(version, "18.06") {
77
+		spec = getSpec()
78
+		sw := d.GetSwarm(c)
79
+		if assert.Check(c, is.Len(spec.CAConfig.ExternalCAs, 2)) {
80
+			assert.Check(c, is.Equal(spec.CAConfig.ExternalCAs[0].CACert, sw.TLSInfo.TrustRoot))
81
+			assert.Check(c, is.Equal(spec.CAConfig.ExternalCAs[1].CACert, string(expected)))
82
+		}
83
+	}
76 84
 
77 85
 	// passing an invalid external CA fails
78 86
 	tempFile := fs.NewFile(c, "testfile", fs.WithContent("fakecert"))
... ...
@@ -117,11 +126,22 @@ func (s *DockerSwarmSuite) TestSwarmInit(c *testing.T) {
117 117
 	assert.NilError(c, err)
118 118
 
119 119
 	spec := getSpec()
120
-	assert.Equal(c, spec.CAConfig.NodeCertExpiry, 30*time.Hour)
121
-	assert.Equal(c, spec.Dispatcher.HeartbeatPeriod, 11*time.Second)
122
-	assert.Equal(c, len(spec.CAConfig.ExternalCAs), 2)
123
-	assert.Equal(c, spec.CAConfig.ExternalCAs[0].CACert, "")
124
-	assert.Equal(c, spec.CAConfig.ExternalCAs[1].CACert, string(expected))
120
+	assert.Check(c, is.Equal(spec.CAConfig.NodeCertExpiry, 30*time.Hour))
121
+	assert.Check(c, is.Equal(spec.Dispatcher.HeartbeatPeriod, 11*time.Second))
122
+
123
+	version := cli.Docker(cli.Args("version", "--format", "{{ .Client.Version }}"), cli.Daemon(d)).Stdout()
124
+	version = strings.TrimSpace(version)
125
+	// This was broken in v18.06
126
+	// See: https://github.com/docker/cli/pull/5995
127
+	if version != "" && versions.LessThan(version, "18.06") {
128
+		if assert.Check(c, is.Len(spec.CAConfig.ExternalCAs, 2)) {
129
+			// TODO: Should this actually be:
130
+			// assert.Check(c, is.Equal(spec.CAConfig.ExternalCAs[0].CACert, sw.TLSInfo.TrustRoot))
131
+			assert.Check(c, is.Equal(spec.CAConfig.ExternalCAs[0].CACert, ""))
132
+
133
+			assert.Check(c, is.Equal(spec.CAConfig.ExternalCAs[1].CACert, string(expected)))
134
+		}
135
+	}
125 136
 
126 137
 	assert.NilError(c, d.SwarmLeave(ctx, c, true))
127 138
 	cli.Docker(cli.Args("swarm", "init"), cli.Daemon(d)).Assert(c, icmd.Success)