github.com/devseccon/trivy@v0.47.1-0.20231123133102-bd902a0bd996/pkg/fanal/analyzer/buildinfo/content_manifest_test.go (about) 1 package buildinfo 2 3 import ( 4 "context" 5 "os" 6 "testing" 7 8 "github.com/stretchr/testify/assert" 9 "github.com/stretchr/testify/require" 10 11 "github.com/devseccon/trivy/pkg/fanal/analyzer" 12 "github.com/devseccon/trivy/pkg/fanal/types" 13 ) 14 15 func Test_contentManifestAnalyzer_Analyze(t *testing.T) { 16 tests := []struct { 17 name string 18 input string 19 want *analyzer.AnalysisResult 20 wantErr string 21 }{ 22 { 23 name: "happy path", 24 input: "testdata/content_manifests/ubi8-minimal-container-8.5-218.json", 25 want: &analyzer.AnalysisResult{ 26 BuildInfo: &types.BuildInfo{ 27 ContentSets: []string{ 28 "rhel-8-for-x86_64-baseos-rpms", 29 "rhel-8-for-x86_64-appstream-rpms", 30 }, 31 }, 32 }, 33 }, 34 { 35 name: "broken json", 36 input: "testdata/content_manifests/broken.json", 37 wantErr: "invalid content manifest", 38 }, 39 } 40 for _, tt := range tests { 41 t.Run(tt.name, func(t *testing.T) { 42 f, err := os.Open(tt.input) 43 require.NoError(t, err) 44 defer f.Close() 45 46 a := contentManifestAnalyzer{} 47 got, err := a.Analyze(context.Background(), analyzer.AnalysisInput{ 48 FilePath: tt.input, 49 Content: f, 50 }) 51 52 if tt.wantErr != "" { 53 require.Error(t, err) 54 assert.Contains(t, err.Error(), tt.wantErr) 55 return 56 } 57 58 require.NoError(t, err) 59 assert.Equal(t, tt.want, got) 60 }) 61 } 62 } 63 64 func Test_contentManifestAnalyzer_Required(t *testing.T) { 65 tests := []struct { 66 name string 67 filePath string 68 want bool 69 }{ 70 { 71 name: "happy path", 72 filePath: "root/buildinfo/content_manifests/nodejs-12-container-1-66.json", 73 want: true, 74 }, 75 { 76 name: "sad path", 77 filePath: "root/buildinfo/content_manifests/nodejs-12-container-1-66.xml", 78 want: false, 79 }, 80 } 81 for _, tt := range tests { 82 t.Run(tt.name, func(t *testing.T) { 83 a := contentManifestAnalyzer{} 84 got := a.Required(tt.filePath, nil) 85 assert.Equal(t, tt.want, got) 86 }) 87 } 88 }