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  }