github.com/thajeztah/cli@v0.0.0-20240223162942-dc6bfac81a8b/cli/command/image/client_test.go (about)

     1  package image
     2  
     3  import (
     4  	"context"
     5  	"io"
     6  	"strings"
     7  	"time"
     8  
     9  	"github.com/docker/docker/api/types"
    10  	"github.com/docker/docker/api/types/filters"
    11  	"github.com/docker/docker/api/types/image"
    12  	"github.com/docker/docker/api/types/system"
    13  	"github.com/docker/docker/client"
    14  )
    15  
    16  type fakeClient struct {
    17  	client.Client
    18  	imageTagFunc     func(string, string) error
    19  	imageSaveFunc    func(images []string) (io.ReadCloser, error)
    20  	imageRemoveFunc  func(image string, options image.RemoveOptions) ([]image.DeleteResponse, error)
    21  	imagePushFunc    func(ref string, options image.PushOptions) (io.ReadCloser, error)
    22  	infoFunc         func() (system.Info, error)
    23  	imagePullFunc    func(ref string, options image.PullOptions) (io.ReadCloser, error)
    24  	imagesPruneFunc  func(pruneFilter filters.Args) (types.ImagesPruneReport, error)
    25  	imageLoadFunc    func(input io.Reader, quiet bool) (types.ImageLoadResponse, error)
    26  	imageListFunc    func(options image.ListOptions) ([]image.Summary, error)
    27  	imageInspectFunc func(image string) (types.ImageInspect, []byte, error)
    28  	imageImportFunc  func(source types.ImageImportSource, ref string, options image.ImportOptions) (io.ReadCloser, error)
    29  	imageHistoryFunc func(image string) ([]image.HistoryResponseItem, error)
    30  	imageBuildFunc   func(context.Context, io.Reader, types.ImageBuildOptions) (types.ImageBuildResponse, error)
    31  }
    32  
    33  func (cli *fakeClient) ImageTag(_ context.Context, img, ref string) error {
    34  	if cli.imageTagFunc != nil {
    35  		return cli.imageTagFunc(img, ref)
    36  	}
    37  	return nil
    38  }
    39  
    40  func (cli *fakeClient) ImageSave(_ context.Context, images []string) (io.ReadCloser, error) {
    41  	if cli.imageSaveFunc != nil {
    42  		return cli.imageSaveFunc(images)
    43  	}
    44  	return io.NopCloser(strings.NewReader("")), nil
    45  }
    46  
    47  func (cli *fakeClient) ImageRemove(_ context.Context, img string,
    48  	options image.RemoveOptions,
    49  ) ([]image.DeleteResponse, error) {
    50  	if cli.imageRemoveFunc != nil {
    51  		return cli.imageRemoveFunc(img, options)
    52  	}
    53  	return []image.DeleteResponse{}, nil
    54  }
    55  
    56  func (cli *fakeClient) ImagePush(_ context.Context, ref string, options image.PushOptions) (io.ReadCloser, error) {
    57  	if cli.imagePushFunc != nil {
    58  		return cli.imagePushFunc(ref, options)
    59  	}
    60  	return io.NopCloser(strings.NewReader("")), nil
    61  }
    62  
    63  func (cli *fakeClient) Info(_ context.Context) (system.Info, error) {
    64  	if cli.infoFunc != nil {
    65  		return cli.infoFunc()
    66  	}
    67  	return system.Info{}, nil
    68  }
    69  
    70  func (cli *fakeClient) ImagePull(_ context.Context, ref string, options image.PullOptions) (io.ReadCloser, error) {
    71  	if cli.imagePullFunc != nil {
    72  		cli.imagePullFunc(ref, options)
    73  	}
    74  	return io.NopCloser(strings.NewReader("")), nil
    75  }
    76  
    77  func (cli *fakeClient) ImagesPrune(_ context.Context, pruneFilter filters.Args) (types.ImagesPruneReport, error) {
    78  	if cli.imagesPruneFunc != nil {
    79  		return cli.imagesPruneFunc(pruneFilter)
    80  	}
    81  	return types.ImagesPruneReport{}, nil
    82  }
    83  
    84  func (cli *fakeClient) ImageLoad(_ context.Context, input io.Reader, quiet bool) (types.ImageLoadResponse, error) {
    85  	if cli.imageLoadFunc != nil {
    86  		return cli.imageLoadFunc(input, quiet)
    87  	}
    88  	return types.ImageLoadResponse{}, nil
    89  }
    90  
    91  func (cli *fakeClient) ImageList(_ context.Context, options image.ListOptions) ([]image.Summary, error) {
    92  	if cli.imageListFunc != nil {
    93  		return cli.imageListFunc(options)
    94  	}
    95  	return []image.Summary{}, nil
    96  }
    97  
    98  func (cli *fakeClient) ImageInspectWithRaw(_ context.Context, img string) (types.ImageInspect, []byte, error) {
    99  	if cli.imageInspectFunc != nil {
   100  		return cli.imageInspectFunc(img)
   101  	}
   102  	return types.ImageInspect{}, nil, nil
   103  }
   104  
   105  func (cli *fakeClient) ImageImport(_ context.Context, source types.ImageImportSource, ref string,
   106  	options image.ImportOptions,
   107  ) (io.ReadCloser, error) {
   108  	if cli.imageImportFunc != nil {
   109  		return cli.imageImportFunc(source, ref, options)
   110  	}
   111  	return io.NopCloser(strings.NewReader("")), nil
   112  }
   113  
   114  func (cli *fakeClient) ImageHistory(_ context.Context, img string) ([]image.HistoryResponseItem, error) {
   115  	if cli.imageHistoryFunc != nil {
   116  		return cli.imageHistoryFunc(img)
   117  	}
   118  	return []image.HistoryResponseItem{{ID: img, Created: time.Now().Unix()}}, nil
   119  }
   120  
   121  func (cli *fakeClient) ImageBuild(ctx context.Context, buildContext io.Reader, options types.ImageBuildOptions) (types.ImageBuildResponse, error) {
   122  	if cli.imageBuildFunc != nil {
   123  		return cli.imageBuildFunc(ctx, buildContext, options)
   124  	}
   125  	return types.ImageBuildResponse{Body: io.NopCloser(strings.NewReader(""))}, nil
   126  }