github.com/flavio/docker@v0.1.3-0.20170117145210-f63d1a6eec47/cli/command/swarm/opts_test.go (about) 1 package swarm 2 3 import ( 4 "testing" 5 6 "github.com/docker/docker/pkg/testutil/assert" 7 ) 8 9 func TestNodeAddrOptionSetHostAndPort(t *testing.T) { 10 opt := NewNodeAddrOption("old:123") 11 addr := "newhost:5555" 12 assert.NilError(t, opt.Set(addr)) 13 assert.Equal(t, opt.Value(), addr) 14 } 15 16 func TestNodeAddrOptionSetHostOnly(t *testing.T) { 17 opt := NewListenAddrOption() 18 assert.NilError(t, opt.Set("newhost")) 19 assert.Equal(t, opt.Value(), "newhost:2377") 20 } 21 22 func TestNodeAddrOptionSetHostOnlyIPv6(t *testing.T) { 23 opt := NewListenAddrOption() 24 assert.NilError(t, opt.Set("::1")) 25 assert.Equal(t, opt.Value(), "[::1]:2377") 26 } 27 28 func TestNodeAddrOptionSetPortOnly(t *testing.T) { 29 opt := NewListenAddrOption() 30 assert.NilError(t, opt.Set(":4545")) 31 assert.Equal(t, opt.Value(), "0.0.0.0:4545") 32 } 33 34 func TestNodeAddrOptionSetInvalidFormat(t *testing.T) { 35 opt := NewListenAddrOption() 36 assert.Error(t, opt.Set("http://localhost:4545"), "Invalid") 37 } 38 39 func TestExternalCAOptionErrors(t *testing.T) { 40 testCases := []struct { 41 externalCA string 42 expectedError string 43 }{ 44 { 45 externalCA: "", 46 expectedError: "EOF", 47 }, 48 { 49 externalCA: "anything", 50 expectedError: "invalid field 'anything' must be a key=value pair", 51 }, 52 { 53 externalCA: "foo=bar", 54 expectedError: "the external-ca option needs a protocol= parameter", 55 }, 56 { 57 externalCA: "protocol=baz", 58 expectedError: "unrecognized external CA protocol baz", 59 }, 60 { 61 externalCA: "protocol=cfssl", 62 expectedError: "the external-ca option needs a url= parameter", 63 }, 64 } 65 for _, tc := range testCases { 66 opt := &ExternalCAOption{} 67 assert.Error(t, opt.Set(tc.externalCA), tc.expectedError) 68 } 69 } 70 71 func TestExternalCAOption(t *testing.T) { 72 testCases := []struct { 73 externalCA string 74 expected string 75 }{ 76 { 77 externalCA: "protocol=cfssl,url=anything", 78 expected: "cfssl: anything", 79 }, 80 { 81 externalCA: "protocol=CFSSL,url=anything", 82 expected: "cfssl: anything", 83 }, 84 { 85 externalCA: "protocol=Cfssl,url=https://example.com", 86 expected: "cfssl: https://example.com", 87 }, 88 { 89 externalCA: "protocol=Cfssl,url=https://example.com,foo=bar", 90 expected: "cfssl: https://example.com", 91 }, 92 { 93 externalCA: "protocol=Cfssl,url=https://example.com,foo=bar,foo=baz", 94 expected: "cfssl: https://example.com", 95 }, 96 } 97 for _, tc := range testCases { 98 opt := &ExternalCAOption{} 99 assert.NilError(t, opt.Set(tc.externalCA)) 100 assert.Equal(t, opt.String(), tc.expected) 101 } 102 } 103 104 func TestExternalCAOptionMultiple(t *testing.T) { 105 opt := &ExternalCAOption{} 106 assert.NilError(t, opt.Set("protocol=cfssl,url=https://example.com")) 107 assert.NilError(t, opt.Set("protocol=CFSSL,url=anything")) 108 assert.Equal(t, len(opt.Value()), 2) 109 assert.Equal(t, opt.String(), "cfssl: https://example.com, cfssl: anything") 110 }