github.com/docker/docker-ce@v17.12.1-ce-rc2+incompatible/components/cli/opts/network_test.go (about) 1 package opts 2 3 import ( 4 "testing" 5 6 "github.com/docker/cli/internal/test/testutil" 7 "github.com/stretchr/testify/assert" 8 ) 9 10 func TestNetworkOptLegacySyntax(t *testing.T) { 11 testCases := []struct { 12 value string 13 expected []NetworkAttachmentOpts 14 }{ 15 { 16 value: "docknet1", 17 expected: []NetworkAttachmentOpts{ 18 { 19 Target: "docknet1", 20 }, 21 }, 22 }, 23 } 24 for _, tc := range testCases { 25 var network NetworkOpt 26 assert.NoError(t, network.Set(tc.value)) 27 assert.Equal(t, tc.expected, network.Value()) 28 } 29 } 30 31 func TestNetworkOptCompleteSyntax(t *testing.T) { 32 testCases := []struct { 33 value string 34 expected []NetworkAttachmentOpts 35 }{ 36 { 37 value: "name=docknet1,alias=web,driver-opt=field1=value1", 38 expected: []NetworkAttachmentOpts{ 39 { 40 Target: "docknet1", 41 Aliases: []string{"web"}, 42 DriverOpts: map[string]string{ 43 "field1": "value1", 44 }, 45 }, 46 }, 47 }, 48 { 49 value: "name=docknet1,alias=web1,alias=web2,driver-opt=field1=value1,driver-opt=field2=value2", 50 expected: []NetworkAttachmentOpts{ 51 { 52 Target: "docknet1", 53 Aliases: []string{"web1", "web2"}, 54 DriverOpts: map[string]string{ 55 "field1": "value1", 56 "field2": "value2", 57 }, 58 }, 59 }, 60 }, 61 { 62 value: "name=docknet1", 63 expected: []NetworkAttachmentOpts{ 64 { 65 Target: "docknet1", 66 Aliases: []string{}, 67 }, 68 }, 69 }, 70 } 71 for _, tc := range testCases { 72 var network NetworkOpt 73 assert.NoError(t, network.Set(tc.value)) 74 assert.Equal(t, tc.expected, network.Value()) 75 } 76 } 77 78 func TestNetworkOptInvalidSyntax(t *testing.T) { 79 testCases := []struct { 80 value string 81 expectedError string 82 }{ 83 { 84 value: "invalidField=docknet1", 85 expectedError: "invalid field", 86 }, 87 { 88 value: "network=docknet1,invalid=web", 89 expectedError: "invalid field", 90 }, 91 { 92 value: "driver-opt=field1=value1,driver-opt=field2=value2", 93 expectedError: "network name/id is not specified", 94 }, 95 } 96 for _, tc := range testCases { 97 var network NetworkOpt 98 testutil.ErrorContains(t, network.Set(tc.value), tc.expectedError) 99 } 100 }