1package ubuntu 2 3import ( 4 "io/ioutil" 5 "testing" 6 7 "github.com/aquasecurity/fanal/types" 8 9 "github.com/aquasecurity/fanal/analyzer" 10 "github.com/stretchr/testify/assert" 11 "github.com/stretchr/testify/require" 12) 13 14func Test_ubuntuOSAnalyzer_Analyze(t *testing.T) { 15 tests := []struct { 16 name string 17 inputFile string 18 want analyzer.AnalyzeReturn 19 wantErr string 20 }{ 21 { 22 name: "happy path", 23 inputFile: "testdata/lsb-release", 24 want: analyzer.AnalyzeReturn{ 25 OS: types.OS{Family: "ubuntu", Name: "18.04"}, 26 }, 27 }, 28 { 29 name: "sad path", 30 inputFile: "testdata/invalid", 31 wantErr: "ubuntu: unable to analyze OS information", 32 }, 33 } 34 for _, tt := range tests { 35 t.Run(tt.name, func(t *testing.T) { 36 a := ubuntuOSAnalyzer{} 37 b, err := ioutil.ReadFile(tt.inputFile) 38 require.NoError(t, err) 39 40 got, err := a.Analyze(b) 41 if tt.wantErr != "" { 42 require.NotNil(t, err) 43 assert.Contains(t, err.Error(), tt.wantErr) 44 return 45 } else { 46 require.NoError(t, err) 47 } 48 assert.Equal(t, tt.want, got) 49 }) 50 } 51} 52 53func Test_ubuntuOSAnalyzer_Required(t *testing.T) { 54 tests := []struct { 55 name string 56 filePath string 57 want bool 58 }{ 59 { 60 name: "happy path", 61 filePath: "etc/lsb-release", 62 want: true, 63 }, 64 { 65 name: "sad path", 66 filePath: "etc/invalid", 67 want: false, 68 }, 69 } 70 for _, tt := range tests { 71 t.Run(tt.name, func(t *testing.T) { 72 a := ubuntuOSAnalyzer{} 73 got := a.Required(tt.filePath, nil) 74 assert.Equal(t, tt.want, got) 75 }) 76 } 77} 78