package xml import ( "testing" "time" "github.com/stretchr/testify/require" ) func TestVulnunerability(t *testing.T) { t.Run("VulnerabilityXML", func(t *testing.T) { t.Run("#PublishedDateEpoch", func(t *testing.T) { sut := Vulnerability{ Revisions: []RevisionHistory{ { Description: "
Information published.
", Date: "2022-05-10T07:00:00", }, }, } resultEpoch := sut.PublishedDateEpoch() require.NotNil(t, resultEpoch) resultDate := time.Unix(*resultEpoch, 0) require.Equal(t, 2022, resultDate.Year()) require.Equal(t, time.May, resultDate.Month()) require.Equal(t, 10, resultDate.Day()) }) t.Run("#IncludesVendorFix", func(t *testing.T) { t.Run("no remediations", func(t *testing.T) { sut := Vulnerability{} require.False(t, sut.IncludesVendorFix("1")) }) t.Run("no vendor fixes", func(t *testing.T) { sut := Vulnerability{ Remediations: []VulnerabilityRemediation{ { Type: "Known Issue", ProductIDs: []string{"11896", "11897"}, Description: "5013942", URL: "https://support.microsoft.com/help/5013942", }, }, } require.False(t, sut.IncludesVendorFix("11896")) }) t.Run("no vendor fix matches", func(t *testing.T) { sut := Vulnerability{ Remediations: []VulnerabilityRemediation{ { Type: "Vendor Fix", FixedBuild: "10.0.17763.2928", ProductIDs: []string{"11568", "11569"}, Description: "5013941", Supercedence: "5012647", RestartRequired: "Yes", URL: "https://catalog.update.microsoft.com/v7/site/Search.aspx?q=KB5013941", }, }, } require.False(t, sut.IncludesVendorFix("123")) }) t.Run("vendor fix matches", func(t *testing.T) { sut := Vulnerability{ Remediations: []VulnerabilityRemediation{ { Type: "Vendor Fix", FixedBuild: "10.0.17763.2928", ProductIDs: []string{"11568", "11569"}, Description: "5013941", Supercedence: "5012647", RestartRequired: "Yes", URL: "https://catalog.update.microsoft.com/v7/site/Search.aspx?q=KB5013941", }, }, } require.True(t, sut.IncludesVendorFix("11568")) }) }) }) }