| 131 | } |
| 132 | |
| 133 | func TestSwarmInitWithExternalCA(t *testing.T) { |
| 134 | cli := test.NewFakeCli(&fakeClient{ |
| 135 | swarmInitFunc: func(options client.SwarmInitOptions) (client.SwarmInitResult, error) { |
| 136 | if assert.Check(t, is.Len(options.Spec.CAConfig.ExternalCAs, 1)) { |
| 137 | assert.Equal(t, options.Spec.CAConfig.ExternalCAs[0].CACert, cert) |
| 138 | assert.Equal(t, options.Spec.CAConfig.ExternalCAs[0].Protocol, swarm.ExternalCAProtocolCFSSL) |
| 139 | assert.Equal(t, options.Spec.CAConfig.ExternalCAs[0].URL, "https://example.com") |
| 140 | } |
| 141 | return client.SwarmInitResult{NodeID: "nodeID"}, nil |
| 142 | }, |
| 143 | }) |
| 144 | |
| 145 | tempDir := t.TempDir() |
| 146 | certFile := filepath.Join(tempDir, "cert.pem") |
| 147 | err := os.WriteFile(certFile, []byte(cert), 0o644) |
| 148 | assert.NilError(t, err) |
| 149 | |
| 150 | cmd := newInitCommand(cli) |
| 151 | cmd.SetArgs([]string{}) |
| 152 | cmd.SetOut(io.Discard) |
| 153 | cmd.SetErr(io.Discard) |
| 154 | assert.NilError(t, cmd.Flags().Set(flagExternalCA, "protocol=cfssl,url=https://example.com,cacert="+certFile)) |
| 155 | assert.NilError(t, cmd.Execute()) |
| 156 | } |