mirror of
https://github.com/aquasecurity/trivy.git
synced 2025-12-22 07:10:41 -08:00
Signed-off-by: Marcus Meissner <meissner@suse.de> Signed-off-by: knqyf263 <knqyf263@gmail.com> Co-authored-by: knqyf263 <knqyf263@gmail.com>
193 lines
3.7 KiB
Go
193 lines
3.7 KiB
Go
package release
|
|
|
|
import (
|
|
"context"
|
|
"os"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
|
|
"github.com/aquasecurity/trivy/pkg/fanal/analyzer"
|
|
"github.com/aquasecurity/trivy/pkg/fanal/types"
|
|
)
|
|
|
|
func Test_osReleaseAnalyzer_Analyze(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
inputFile string
|
|
input analyzer.AnalysisInput
|
|
want *analyzer.AnalysisResult
|
|
wantErr string
|
|
}{
|
|
{
|
|
name: "alpine",
|
|
inputFile: "testdata/alpine",
|
|
want: &analyzer.AnalysisResult{
|
|
OS: types.OS{
|
|
Family: types.Alpine,
|
|
Name: "3.15.4",
|
|
},
|
|
},
|
|
},
|
|
{
|
|
name: "openSUSE-leap 15.2.1",
|
|
inputFile: "testdata/opensuseleap-15.2.1",
|
|
want: &analyzer.AnalysisResult{
|
|
OS: types.OS{
|
|
Family: types.OpenSUSELeap,
|
|
Name: "15.2.1",
|
|
},
|
|
},
|
|
},
|
|
{
|
|
name: "openSUSE-leap 42.3",
|
|
inputFile: "testdata/opensuseleap-42.3",
|
|
want: &analyzer.AnalysisResult{
|
|
OS: types.OS{
|
|
Family: types.OpenSUSELeap,
|
|
Name: "42.3",
|
|
},
|
|
},
|
|
},
|
|
{
|
|
name: "openSUSE-tumbleweed",
|
|
inputFile: "testdata/opensusetumbleweed",
|
|
want: &analyzer.AnalysisResult{
|
|
OS: types.OS{
|
|
Family: types.OpenSUSETumbleweed,
|
|
Name: "20220412",
|
|
},
|
|
},
|
|
},
|
|
{
|
|
name: "SUSE Linux Enterprise Server",
|
|
inputFile: "testdata/sles",
|
|
want: &analyzer.AnalysisResult{
|
|
OS: types.OS{
|
|
Family: types.SLES,
|
|
Name: "15.3",
|
|
},
|
|
},
|
|
},
|
|
{
|
|
name: "SUSE Linux Enterprise Micro",
|
|
inputFile: "testdata/slemicro",
|
|
want: &analyzer.AnalysisResult{
|
|
OS: types.OS{
|
|
Family: types.SLEMicro,
|
|
Name: "5.3",
|
|
},
|
|
},
|
|
},
|
|
{
|
|
name: "SUSE Linux Enterprise Micro 6.0",
|
|
inputFile: "testdata/slemicro6.0",
|
|
want: &analyzer.AnalysisResult{
|
|
OS: types.OS{
|
|
Family: types.SLEMicro,
|
|
Name: "6.0",
|
|
},
|
|
},
|
|
},
|
|
{
|
|
name: "SUSE Linux Enterprise Micro 5.4 for Rancher",
|
|
inputFile: "testdata/slemicro-rancher",
|
|
want: &analyzer.AnalysisResult{
|
|
OS: types.OS{
|
|
Family: types.SLEMicro,
|
|
Name: "5.4",
|
|
},
|
|
},
|
|
},
|
|
{
|
|
name: "Photon OS",
|
|
inputFile: "testdata/photon",
|
|
want: &analyzer.AnalysisResult{
|
|
OS: types.OS{
|
|
Family: types.Photon,
|
|
Name: "4.0",
|
|
},
|
|
},
|
|
},
|
|
{
|
|
name: "Photon OS",
|
|
inputFile: "testdata/photon",
|
|
want: &analyzer.AnalysisResult{
|
|
OS: types.OS{
|
|
Family: types.Photon,
|
|
Name: "4.0",
|
|
},
|
|
},
|
|
},
|
|
{
|
|
name: "Azure Linux",
|
|
inputFile: "testdata/azurelinux-3.0",
|
|
want: &analyzer.AnalysisResult{
|
|
OS: types.OS{
|
|
Family: types.Azure,
|
|
Name: "3.0",
|
|
},
|
|
},
|
|
},
|
|
{
|
|
name: "Mariner 2.0",
|
|
inputFile: "testdata/mariner-2.0",
|
|
want: &analyzer.AnalysisResult{
|
|
OS: types.OS{
|
|
Family: types.CBLMariner,
|
|
Name: "2.0",
|
|
},
|
|
},
|
|
},
|
|
{
|
|
name: "Mariner 1.0",
|
|
inputFile: "testdata/mariner-1.0",
|
|
want: &analyzer.AnalysisResult{
|
|
OS: types.OS{
|
|
Family: types.CBLMariner,
|
|
Name: "1.0",
|
|
},
|
|
},
|
|
},
|
|
{
|
|
name: "Unknown OS",
|
|
inputFile: "testdata/unknown",
|
|
want: nil,
|
|
},
|
|
{
|
|
name: "No 'ID' field",
|
|
inputFile: "testdata/no-id",
|
|
want: nil,
|
|
},
|
|
{
|
|
name: "No 'VERSION_ID' field",
|
|
inputFile: "testdata/no-version",
|
|
want: nil,
|
|
},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
f, err := os.Open(tt.inputFile)
|
|
require.NoError(t, err)
|
|
defer f.Close()
|
|
|
|
a := osReleaseAnalyzer{}
|
|
res, err := a.Analyze(context.Background(), analyzer.AnalysisInput{
|
|
FilePath: "etc/os-release",
|
|
Content: f,
|
|
})
|
|
|
|
if tt.wantErr != "" {
|
|
require.Error(t, err)
|
|
assert.Equal(t, tt.wantErr, err.Error())
|
|
return
|
|
}
|
|
|
|
require.NoError(t, err)
|
|
assert.Equal(t, tt.want, res)
|
|
})
|
|
}
|
|
}
|