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 }