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  }