| package swarm |
| |
| import ( |
| "testing" |
| |
| "github.com/docker/docker/pkg/testutil/assert" |
| ) |
| |
| func TestNodeAddrOptionSetHostAndPort(t *testing.T) { |
| opt := NewNodeAddrOption("old:123") |
| addr := "newhost:5555" |
| assert.NilError(t, opt.Set(addr)) |
| assert.Equal(t, opt.Value(), addr) |
| } |
| |
| func TestNodeAddrOptionSetHostOnly(t *testing.T) { |
| opt := NewListenAddrOption() |
| assert.NilError(t, opt.Set("newhost")) |
| assert.Equal(t, opt.Value(), "newhost:2377") |
| } |
| |
| func TestNodeAddrOptionSetHostOnlyIPv6(t *testing.T) { |
| opt := NewListenAddrOption() |
| assert.NilError(t, opt.Set("::1")) |
| assert.Equal(t, opt.Value(), "[::1]:2377") |
| } |
| |
| func TestNodeAddrOptionSetPortOnly(t *testing.T) { |
| opt := NewListenAddrOption() |
| assert.NilError(t, opt.Set(":4545")) |
| assert.Equal(t, opt.Value(), "0.0.0.0:4545") |
| } |
| |
| func TestNodeAddrOptionSetInvalidFormat(t *testing.T) { |
| opt := NewListenAddrOption() |
| assert.Error(t, opt.Set("http://localhost:4545"), "Invalid") |
| } |
| |
| func TestExternalCAOptionErrors(t *testing.T) { |
| testCases := []struct { |
| externalCA string |
| expectedError string |
| }{ |
| { |
| externalCA: "", |
| expectedError: "EOF", |
| }, |
| { |
| externalCA: "anything", |
| expectedError: "invalid field 'anything' must be a key=value pair", |
| }, |
| { |
| externalCA: "foo=bar", |
| expectedError: "the external-ca option needs a protocol= parameter", |
| }, |
| { |
| externalCA: "protocol=baz", |
| expectedError: "unrecognized external CA protocol baz", |
| }, |
| { |
| externalCA: "protocol=cfssl", |
| expectedError: "the external-ca option needs a url= parameter", |
| }, |
| } |
| for _, tc := range testCases { |
| opt := &ExternalCAOption{} |
| assert.Error(t, opt.Set(tc.externalCA), tc.expectedError) |
| } |
| } |
| |
| func TestExternalCAOption(t *testing.T) { |
| testCases := []struct { |
| externalCA string |
| expected string |
| }{ |
| { |
| externalCA: "protocol=cfssl,url=anything", |
| expected: "cfssl: anything", |
| }, |
| { |
| externalCA: "protocol=CFSSL,url=anything", |
| expected: "cfssl: anything", |
| }, |
| { |
| externalCA: "protocol=Cfssl,url=https://example.com", |
| expected: "cfssl: https://example.com", |
| }, |
| { |
| externalCA: "protocol=Cfssl,url=https://example.com,foo=bar", |
| expected: "cfssl: https://example.com", |
| }, |
| { |
| externalCA: "protocol=Cfssl,url=https://example.com,foo=bar,foo=baz", |
| expected: "cfssl: https://example.com", |
| }, |
| } |
| for _, tc := range testCases { |
| opt := &ExternalCAOption{} |
| assert.NilError(t, opt.Set(tc.externalCA)) |
| assert.Equal(t, opt.String(), tc.expected) |
| } |
| } |
| |
| func TestExternalCAOptionMultiple(t *testing.T) { |
| opt := &ExternalCAOption{} |
| assert.NilError(t, opt.Set("protocol=cfssl,url=https://example.com")) |
| assert.NilError(t, opt.Set("protocol=CFSSL,url=anything")) |
| assert.Equal(t, len(opt.Value()), 2) |
| assert.Equal(t, opt.String(), "cfssl: https://example.com, cfssl: anything") |
| } |