github.1git.de/docker/cli@v26.1.3+incompatible/cli/command/network/connect_test.go (about) 1 package network 2 3 import ( 4 "context" 5 "io" 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(io.Discard) 41 assert.ErrorContains(t, cmd.Execute(), tc.expectedError) 42 } 43 } 44 45 func TestNetworkConnectWithFlags(t *testing.T) { 46 expectedOpts := []network.IPAMConfig{ 47 { 48 Subnet: "192.168.4.0/24", 49 IPRange: "192.168.4.0/24", 50 Gateway: "192.168.4.1/24", 51 AuxAddress: map[string]string{}, 52 }, 53 } 54 cli := test.NewFakeCli(&fakeClient{ 55 networkConnectFunc: func(ctx context.Context, networkID, container string, config *network.EndpointSettings) error { 56 assert.Check(t, is.DeepEqual(expectedOpts, config.IPAMConfig), "not expected driver error") 57 return nil 58 }, 59 }) 60 args := []string{"banana"} 61 cmd := newCreateCommand(cli) 62 63 cmd.SetArgs(args) 64 cmd.Flags().Set("driver", "foo") 65 cmd.Flags().Set("ip-range", "192.168.4.0/24") 66 cmd.Flags().Set("gateway", "192.168.4.1/24") 67 cmd.Flags().Set("subnet", "192.168.4.0/24") 68 assert.NilError(t, cmd.Execute()) 69 }