github.com/devseccon/trivy@v0.47.1-0.20231123133102-bd902a0bd996/pkg/fanal/analyzer/language/conda/meta/meta_test.go (about) 1 package meta 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_packagingAnalyzer_Analyze(t *testing.T) { 16 tests := []struct { 17 name string 18 inputFile string 19 want *analyzer.AnalysisResult 20 wantErr string 21 }{ 22 { 23 name: "pip", 24 inputFile: "testdata/pip-22.2.2-py38h06a4308_0.json", 25 want: &analyzer.AnalysisResult{ 26 Applications: []types.Application{ 27 { 28 Type: types.CondaPkg, 29 FilePath: "testdata/pip-22.2.2-py38h06a4308_0.json", 30 Libraries: types.Packages{ 31 { 32 Name: "pip", 33 Version: "22.2.2", 34 Licenses: []string{"MIT"}, 35 FilePath: "testdata/pip-22.2.2-py38h06a4308_0.json", 36 }, 37 }, 38 }, 39 }, 40 }, 41 }, 42 { 43 name: "invalid", 44 inputFile: "testdata/invalid.json", 45 wantErr: "unable to parse conda package", 46 }, 47 } 48 for _, tt := range tests { 49 t.Run(tt.name, func(t *testing.T) { 50 f, err := os.Open(tt.inputFile) 51 require.NoError(t, err) 52 defer f.Close() 53 54 stat, err := f.Stat() 55 require.NoError(t, err) 56 57 a := metaAnalyzer{} 58 ctx := context.Background() 59 got, err := a.Analyze(ctx, analyzer.AnalysisInput{ 60 FilePath: tt.inputFile, 61 Info: stat, 62 Content: f, 63 }) 64 65 if tt.wantErr != "" { 66 assert.ErrorContains(t, err, tt.wantErr) 67 return 68 } 69 70 assert.NoError(t, err) 71 assert.Equal(t, tt.want, got) 72 }) 73 } 74 75 } 76 77 func Test_packagingAnalyzer_Required(t *testing.T) { 78 tests := []struct { 79 name string 80 filePath string 81 want bool 82 }{ 83 { 84 name: "pip", 85 filePath: "/home/<user>/miniconda3/envs/<env>/conda-meta/pip-22.2.2-py38h06a4308_0.json", 86 want: true, 87 }, 88 { 89 name: "invalid", 90 filePath: "/home/<user>/miniconda3/envs/<env>/conda-meta/invalid.json", 91 want: false, 92 }, 93 } 94 for _, tt := range tests { 95 t.Run(tt.name, func(t *testing.T) { 96 a := metaAnalyzer{} 97 got := a.Required(tt.filePath, nil) 98 assert.Equal(t, tt.want, got) 99 }) 100 } 101 }