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  }