github.com/ali-iotechsys/cli@v20.10.0+incompatible/cli/command/network/connect_test.go (about)

     1  package network
     2  
     3  import (
     4  	"context"
     5  	"io/ioutil"
     6  	"testing"
     7  
     8  	"github.com/docker/cli/internal/test"
     9  	"github.com/docker/docker/api/types/network"
    10  	"github.com/pkg/errors"
    11  	"gotest.tools/v3/assert"
    12  	is "gotest.tools/v3/assert/cmp"
    13  )
    14  
    15  func TestNetworkConnectErrors(t *testing.T) {
    16  	testCases := []struct {
    17  		args               []string
    18  		networkConnectFunc func(ctx context.Context, networkID, container string, config *network.EndpointSettings) error
    19  		expectedError      string
    20  	}{
    21  		{
    22  			expectedError: "requires exactly 2 arguments",
    23  		},
    24  		{
    25  			args: []string{"toto", "titi"},
    26  			networkConnectFunc: func(ctx context.Context, networkID, container string, config *network.EndpointSettings) error {
    27  				return errors.Errorf("error connecting network")
    28  			},
    29  			expectedError: "error connecting network",
    30  		},
    31  	}
    32  
    33  	for _, tc := range testCases {
    34  		cmd := newConnectCommand(
    35  			test.NewFakeCli(&fakeClient{
    36  				networkConnectFunc: tc.networkConnectFunc,
    37  			}),
    38  		)
    39  		cmd.SetArgs(tc.args)
    40  		cmd.SetOut(ioutil.Discard)
    41  		assert.ErrorContains(t, cmd.Execute(), tc.expectedError)
    42  
    43  	}
    44  }
    45  
    46  func TestNetworkConnectWithFlags(t *testing.T) {
    47  	expectedOpts := []network.IPAMConfig{
    48  		{
    49  			Subnet:     "192.168.4.0/24",
    50  			IPRange:    "192.168.4.0/24",
    51  			Gateway:    "192.168.4.1/24",
    52  			AuxAddress: map[string]string{},
    53  		},
    54  	}
    55  	cli := test.NewFakeCli(&fakeClient{
    56  		networkConnectFunc: func(ctx context.Context, networkID, container string, config *network.EndpointSettings) error {
    57  			assert.Check(t, is.DeepEqual(expectedOpts, config.IPAMConfig), "not expected driver error")
    58  			return nil
    59  		},
    60  	})
    61  	args := []string{"banana"}
    62  	cmd := newCreateCommand(cli)
    63  
    64  	cmd.SetArgs(args)
    65  	cmd.Flags().Set("driver", "foo")
    66  	cmd.Flags().Set("ip-range", "192.168.4.0/24")
    67  	cmd.Flags().Set("gateway", "192.168.4.1/24")
    68  	cmd.Flags().Set("subnet", "192.168.4.0/24")
    69  	assert.NilError(t, cmd.Execute())
    70  }