migrate TestAPISwarmCAHash to Integration Test
| ... | ... |
@@ -183,22 +183,6 @@ func (s *DockerSwarmSuite) TestUpdateSwarmAddExternalCA(c *testing.T) {
|
| 183 | 183 |
assert.Equal(c, info.Cluster.Spec.CAConfig.ExternalCAs[1].CACert, "cacert") |
| 184 | 184 |
} |
| 185 | 185 |
|
| 186 |
-func (s *DockerSwarmSuite) TestAPISwarmCAHash(c *testing.T) {
|
|
| 187 |
- ctx := testutil.GetContext(c) |
|
| 188 |
- d1 := s.AddDaemon(ctx, c, true, true) |
|
| 189 |
- d2 := s.AddDaemon(ctx, c, false, false) |
|
| 190 |
- splitToken := strings.Split(d1.JoinTokens(c).Worker, "-") |
|
| 191 |
- splitToken[2] = "1kxftv4ofnc6mt30lmgipg6ngf9luhwqopfk1tz6bdmnkubg0e" |
|
| 192 |
- replacementToken := strings.Join(splitToken, "-") |
|
| 193 |
- c2 := d2.NewClientT(c) |
|
| 194 |
- _, err := c2.SwarmJoin(testutil.GetContext(c), client.SwarmJoinOptions{
|
|
| 195 |
- ListenAddr: d2.SwarmListenAddr(), |
|
| 196 |
- JoinToken: replacementToken, |
|
| 197 |
- RemoteAddrs: []string{d1.SwarmListenAddr()},
|
|
| 198 |
- }) |
|
| 199 |
- assert.ErrorContains(c, err, "remote CA does not match fingerprint") |
|
| 200 |
-} |
|
| 201 |
- |
|
| 202 | 186 |
func (s *DockerSwarmSuite) TestAPISwarmPromoteDemote(c *testing.T) {
|
| 203 | 187 |
ctx := testutil.GetContext(c) |
| 204 | 188 |
d1 := s.AddDaemon(ctx, c, false, false) |
| 205 | 189 |
new file mode 100644 |
| ... | ... |
@@ -0,0 +1,36 @@ |
| 0 |
+package service |
|
| 1 |
+ |
|
| 2 |
+import ( |
|
| 3 |
+ "strings" |
|
| 4 |
+ "testing" |
|
| 5 |
+ |
|
| 6 |
+ "github.com/moby/moby/client" |
|
| 7 |
+ "github.com/moby/moby/v2/integration/internal/swarm" |
|
| 8 |
+ "github.com/moby/moby/v2/internal/testutil/daemon" |
|
| 9 |
+ "gotest.tools/v3/assert" |
|
| 10 |
+ "gotest.tools/v3/skip" |
|
| 11 |
+) |
|
| 12 |
+ |
|
| 13 |
+func TestSwarmCAHash(t *testing.T) {
|
|
| 14 |
+ skip.If(t, strings.HasPrefix(testEnv.FirewallBackendDriver(), "nftables"), "swarm cannot be used with nftables") |
|
| 15 |
+ ctx := setupTest(t) |
|
| 16 |
+ |
|
| 17 |
+ d1 := swarm.NewSwarm(ctx, t, testEnv) |
|
| 18 |
+ defer d1.Stop(t) |
|
| 19 |
+ d2 := daemon.New(t) |
|
| 20 |
+ d2.Start(t) |
|
| 21 |
+ defer d2.Stop(t) |
|
| 22 |
+ |
|
| 23 |
+ splitToken := strings.Split(d1.JoinTokens(t).Worker, "-") |
|
| 24 |
+ splitToken[2] = "1kxftv4ofnc6mt30lmgipg6ngf9luhwqopfk1tz6bdmnkubg0e" |
|
| 25 |
+ replacementToken := strings.Join(splitToken, "-") |
|
| 26 |
+ c2 := d2.NewClientT(t) |
|
| 27 |
+ defer c2.Close() |
|
| 28 |
+ |
|
| 29 |
+ _, err := c2.SwarmJoin(ctx, client.SwarmJoinOptions{
|
|
| 30 |
+ ListenAddr: d2.SwarmListenAddr(), |
|
| 31 |
+ JoinToken: replacementToken, |
|
| 32 |
+ RemoteAddrs: []string{d1.SwarmListenAddr()},
|
|
| 33 |
+ }) |
|
| 34 |
+ assert.ErrorContains(t, err, "remote CA does not match fingerprint") |
|
| 35 |
+} |