github.com/devseccon/trivy@v0.47.1-0.20231123133102-bd902a0bd996/pkg/fanal/image/remote_test.go (about) 1 package image 2 3 import ( 4 "testing" 5 6 "github.com/google/go-containerregistry/pkg/name" 7 "github.com/stretchr/testify/assert" 8 "github.com/stretchr/testify/require" 9 ) 10 11 func Test_implicitReference_TagName(t *testing.T) { 12 tests := []struct { 13 name string 14 image string 15 want string 16 }{ 17 { 18 name: "explicit tag", 19 image: "aquasec/trivy:0.15.0", 20 want: "0.15.0", 21 }, 22 { 23 name: "implicit tag", 24 image: "aquasec/trivy", 25 want: "latest", 26 }, 27 } 28 for _, tt := range tests { 29 t.Run(tt.name, func(t *testing.T) { 30 r, err := name.ParseReference(tt.image) 31 require.NoError(t, err) 32 33 ref := implicitReference{ref: r} 34 35 got := ref.TagName() 36 assert.Equal(t, tt.want, got) 37 }) 38 } 39 } 40 41 func Test_implicitReference_RepositoryName(t *testing.T) { 42 tests := []struct { 43 name string 44 image string 45 want string 46 }{ 47 { 48 name: "explicit default registry", 49 image: "index.docker.io/aquasec/trivy:0.15.0", 50 want: "aquasec/trivy", 51 }, 52 { 53 name: "explicit default namespace", 54 image: "library/alpine:3.12", 55 want: "alpine", 56 }, 57 { 58 name: "implicit registry", 59 image: "aquasec/trivy:latest", 60 want: "aquasec/trivy", 61 }, 62 { 63 name: "implicit namespace", 64 image: "alpine:latest", 65 want: "alpine", 66 }, 67 { 68 name: "non-default registry", 69 image: "gcr.io/library/alpine:3.12", 70 want: "gcr.io/library/alpine", 71 }, 72 } 73 for _, tt := range tests { 74 t.Run(tt.name, func(t *testing.T) { 75 r, err := name.ParseReference(tt.image) 76 require.NoError(t, err) 77 78 ref := implicitReference{ref: r} 79 80 got := ref.RepositoryName() 81 assert.Equal(t, tt.want, got) 82 }) 83 } 84 }