github.com/thajeztah/cli@v0.0.0-20240223162942-dc6bfac81a8b/cli/command/container/client_test.go (about) 1 package container 2 3 import ( 4 "context" 5 "io" 6 7 "github.com/docker/docker/api/types" 8 "github.com/docker/docker/api/types/container" 9 "github.com/docker/docker/api/types/image" 10 "github.com/docker/docker/api/types/network" 11 "github.com/docker/docker/api/types/system" 12 "github.com/docker/docker/client" 13 specs "github.com/opencontainers/image-spec/specs-go/v1" 14 ) 15 16 type fakeClient struct { 17 client.Client 18 inspectFunc func(string) (types.ContainerJSON, error) 19 execInspectFunc func(execID string) (types.ContainerExecInspect, error) 20 execCreateFunc func(containerID string, config types.ExecConfig) (types.IDResponse, error) 21 createContainerFunc func(config *container.Config, 22 hostConfig *container.HostConfig, 23 networkingConfig *network.NetworkingConfig, 24 platform *specs.Platform, 25 containerName string) (container.CreateResponse, error) 26 containerStartFunc func(containerID string, options container.StartOptions) error 27 imageCreateFunc func(parentReference string, options image.CreateOptions) (io.ReadCloser, error) 28 infoFunc func() (system.Info, error) 29 containerStatPathFunc func(containerID, path string) (types.ContainerPathStat, error) 30 containerCopyFromFunc func(containerID, srcPath string) (io.ReadCloser, types.ContainerPathStat, error) 31 logFunc func(string, container.LogsOptions) (io.ReadCloser, error) 32 waitFunc func(string) (<-chan container.WaitResponse, <-chan error) 33 containerListFunc func(container.ListOptions) ([]types.Container, error) 34 containerExportFunc func(string) (io.ReadCloser, error) 35 containerExecResizeFunc func(id string, options container.ResizeOptions) error 36 containerRemoveFunc func(ctx context.Context, containerID string, options container.RemoveOptions) error 37 containerKillFunc func(ctx context.Context, containerID, signal string) error 38 Version string 39 } 40 41 func (f *fakeClient) ContainerList(_ context.Context, options container.ListOptions) ([]types.Container, error) { 42 if f.containerListFunc != nil { 43 return f.containerListFunc(options) 44 } 45 return []types.Container{}, nil 46 } 47 48 func (f *fakeClient) ContainerInspect(_ context.Context, containerID string) (types.ContainerJSON, error) { 49 if f.inspectFunc != nil { 50 return f.inspectFunc(containerID) 51 } 52 return types.ContainerJSON{}, nil 53 } 54 55 func (f *fakeClient) ContainerExecCreate(_ context.Context, containerID string, config types.ExecConfig) (types.IDResponse, error) { 56 if f.execCreateFunc != nil { 57 return f.execCreateFunc(containerID, config) 58 } 59 return types.IDResponse{}, nil 60 } 61 62 func (f *fakeClient) ContainerExecInspect(_ context.Context, execID string) (types.ContainerExecInspect, error) { 63 if f.execInspectFunc != nil { 64 return f.execInspectFunc(execID) 65 } 66 return types.ContainerExecInspect{}, nil 67 } 68 69 func (f *fakeClient) ContainerExecStart(context.Context, string, types.ExecStartCheck) error { 70 return nil 71 } 72 73 func (f *fakeClient) ContainerCreate( 74 _ context.Context, 75 config *container.Config, 76 hostConfig *container.HostConfig, 77 networkingConfig *network.NetworkingConfig, 78 platform *specs.Platform, 79 containerName string, 80 ) (container.CreateResponse, error) { 81 if f.createContainerFunc != nil { 82 return f.createContainerFunc(config, hostConfig, networkingConfig, platform, containerName) 83 } 84 return container.CreateResponse{}, nil 85 } 86 87 func (f *fakeClient) ContainerRemove(ctx context.Context, containerID string, options container.RemoveOptions) error { 88 if f.containerRemoveFunc != nil { 89 return f.containerRemoveFunc(ctx, containerID, options) 90 } 91 return nil 92 } 93 94 func (f *fakeClient) ImageCreate(_ context.Context, parentReference string, options image.CreateOptions) (io.ReadCloser, error) { 95 if f.imageCreateFunc != nil { 96 return f.imageCreateFunc(parentReference, options) 97 } 98 return nil, nil 99 } 100 101 func (f *fakeClient) Info(_ context.Context) (system.Info, error) { 102 if f.infoFunc != nil { 103 return f.infoFunc() 104 } 105 return system.Info{}, nil 106 } 107 108 func (f *fakeClient) ContainerStatPath(_ context.Context, containerID, path string) (types.ContainerPathStat, error) { 109 if f.containerStatPathFunc != nil { 110 return f.containerStatPathFunc(containerID, path) 111 } 112 return types.ContainerPathStat{}, nil 113 } 114 115 func (f *fakeClient) CopyFromContainer(_ context.Context, containerID, srcPath string) (io.ReadCloser, types.ContainerPathStat, error) { 116 if f.containerCopyFromFunc != nil { 117 return f.containerCopyFromFunc(containerID, srcPath) 118 } 119 return nil, types.ContainerPathStat{}, nil 120 } 121 122 func (f *fakeClient) ContainerLogs(_ context.Context, containerID string, options container.LogsOptions) (io.ReadCloser, error) { 123 if f.logFunc != nil { 124 return f.logFunc(containerID, options) 125 } 126 return nil, nil 127 } 128 129 func (f *fakeClient) ClientVersion() string { 130 return f.Version 131 } 132 133 func (f *fakeClient) ContainerWait(_ context.Context, containerID string, _ container.WaitCondition) (<-chan container.WaitResponse, <-chan error) { 134 if f.waitFunc != nil { 135 return f.waitFunc(containerID) 136 } 137 return nil, nil 138 } 139 140 func (f *fakeClient) ContainerStart(_ context.Context, containerID string, options container.StartOptions) error { 141 if f.containerStartFunc != nil { 142 return f.containerStartFunc(containerID, options) 143 } 144 return nil 145 } 146 147 func (f *fakeClient) ContainerExport(_ context.Context, containerID string) (io.ReadCloser, error) { 148 if f.containerExportFunc != nil { 149 return f.containerExportFunc(containerID) 150 } 151 return nil, nil 152 } 153 154 func (f *fakeClient) ContainerExecResize(_ context.Context, id string, options container.ResizeOptions) error { 155 if f.containerExecResizeFunc != nil { 156 return f.containerExecResizeFunc(id, options) 157 } 158 return nil 159 } 160 161 func (f *fakeClient) ContainerKill(ctx context.Context, containerID, signal string) error { 162 if f.containerKillFunc != nil { 163 return f.containerKillFunc(ctx, containerID, signal) 164 } 165 return nil 166 }