blob: e70e545cf2824e9551e41d763ca5c8e7a2c491d8 [file] [log] [blame]
Mohammed Naser4c8e0cb2024-02-21 11:51:34 -05001package defaults
2
3import (
4 "context"
5 "fmt"
6 "slices"
7 "strings"
8 "testing"
9
10 "github.com/containers/image/v5/docker"
11 "github.com/stretchr/testify/require"
12)
13
14func TestImageExist(t *testing.T) {
15 images, err := GetImages()
16 require.NoError(t, err)
17
18 var uniqueImages []string
19 for _, image := range images {
20 if slices.Contains(uniqueImages, image) {
21 continue
22 }
23
24 uniqueImages = append(uniqueImages, image)
25 }
26
27 for _, image := range uniqueImages {
28 // NOTE(mnaser): ParseReference does not allow both tag & digest,
29 // so we strip the tags from the image name.
30 nameWithTag := strings.Split(image, "@")[0]
31 name := strings.Split(nameWithTag, ":")[0]
32 digest := strings.Split(image, "@")[1]
33 image := fmt.Sprintf("%s@%s", name, digest)
34
35 t.Run(image, func(t *testing.T) {
36 t.Parallel()
37
38 ref, err := docker.ParseReference(fmt.Sprintf("//%s", image))
39 require.NoError(t, err)
40
41 ctx := context.Background()
42 img, err := ref.NewImage(ctx, nil)
43 require.NoError(t, err)
44 defer img.Close()
45
46 _, _, err = img.Manifest(ctx)
47 require.NoError(t, err)
48 })
49 }
50}