github.com/devseccon/trivy@v0.47.1-0.20231123133102-bd902a0bd996/pkg/fanal/analyzer/os/ubuntu/ubuntu_test.go (about) 1 package ubuntu 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_ubuntuOSAnalyzer_Analyze(t *testing.T) { 16 tests := []struct { 17 name string 18 inputFile string 19 want *analyzer.AnalysisResult 20 wantErr string 21 }{ 22 { 23 name: "happy path", 24 inputFile: "testdata/lsb-release", 25 want: &analyzer.AnalysisResult{ 26 OS: types.OS{Family: "ubuntu", Name: "18.04"}, 27 }, 28 }, 29 { 30 name: "sad path", 31 inputFile: "testdata/invalid", 32 wantErr: "ubuntu: unable to analyze OS information", 33 }, 34 } 35 for _, tt := range tests { 36 t.Run(tt.name, func(t *testing.T) { 37 a := ubuntuOSAnalyzer{} 38 f, err := os.Open(tt.inputFile) 39 require.NoError(t, err) 40 defer f.Close() 41 42 ctx := context.Background() 43 got, err := a.Analyze(ctx, analyzer.AnalysisInput{ 44 FilePath: "etc/lsb-release", 45 Content: f, 46 }) 47 if tt.wantErr != "" { 48 require.NotNil(t, err) 49 assert.Contains(t, err.Error(), tt.wantErr) 50 return 51 } else { 52 require.NoError(t, err) 53 } 54 assert.Equal(t, tt.want, got) 55 }) 56 } 57 } 58 59 func Test_ubuntuOSAnalyzer_Required(t *testing.T) { 60 tests := []struct { 61 name string 62 filePath string 63 want bool 64 }{ 65 { 66 name: "happy path", 67 filePath: "etc/lsb-release", 68 want: true, 69 }, 70 { 71 name: "sad path", 72 filePath: "etc/invalid", 73 want: false, 74 }, 75 } 76 for _, tt := range tests { 77 t.Run(tt.name, func(t *testing.T) { 78 a := ubuntuOSAnalyzer{} 79 got := a.Required(tt.filePath, nil) 80 assert.Equal(t, tt.want, got) 81 }) 82 } 83 }