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 }