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  }