fleet/server/vulnerabilities/io/metadata_test.go
Juan Fernandez 6ff2c449cf
Improve test coverage and bug fix (#10301)
Addresses https://github.com/fleetdm/fleet/issues/10112

Improved test coverage, also fixed a bug related to vulnerability processing for mac office apps.
2023-03-06 15:07:27 -04:00

97 lines
2.9 KiB
Go

package io
import (
"strconv"
"testing"
"time"
"github.com/stretchr/testify/require"
)
func TestSecurityBulletinName(t *testing.T) {
t.Run("MacOfficeRelNotesFileName", func(t *testing.T) {
now := time.Now()
result := MacOfficeRelNotesFileName(now)
require.Contains(t, result, "macoffice")
require.Contains(t, result, strconv.Itoa(now.Year()))
require.Contains(t, result, strconv.Itoa(int(now.Month())))
require.Contains(t, result, strconv.Itoa(now.Day()))
})
t.Run("MSRCFileName", func(t *testing.T) {
now := time.Now()
result := MSRCFileName("Windows 2020", now)
require.Contains(t, result, "Windows_2020")
require.Contains(t, result, strconv.Itoa(now.Year()))
require.Contains(t, result, strconv.Itoa(int(now.Month())))
require.Contains(t, result, strconv.Itoa(now.Day()))
})
t.Run("String", func(t *testing.T) {
sut, err := NewMSRCMetadata("Windows_10-2022_09_10.json")
require.NoError(t, err)
require.Equal(t, "Windows_10-2022_09_10.json", sut.String())
})
t.Run("validates timestamp on filename at construction time", func(t *testing.T) {
_, err := NewMSRCMetadata("Windows_10-2022.json")
require.Error(t, err)
_, err = NewMacOfficeRelNotesMetadata("Windows_10-2022.json")
require.Error(t, err)
})
t.Run("#date", func(t *testing.T) {
sut, err := NewMSRCMetadata("Windows_10-2022_09_10.json")
require.NoError(t, err)
result, err := sut.date()
require.NoError(t, err)
require.Equal(t, 2022, result.Year())
require.Equal(t, time.Month(9), result.Month())
require.Equal(t, 10, result.Day())
})
t.Run("#ProductName", func(t *testing.T) {
sut, err := NewMSRCMetadata("Windows_10-2022_09_10.json")
require.NoError(t, err)
require.Equal(t, "Windows 10", sut.ProductName())
})
t.Run("Product name not included in filename", func(t *testing.T) {
sut := MetadataFileName{prefix: "", filename: "2022_09_10.json"}
require.Equal(t, "", sut.ProductName())
})
t.Run("Date not included in filename", func(t *testing.T) {
sut := MetadataFileName{prefix: "", filename: "Windows_10.json"}
_, err := sut.date()
require.Error(t, err)
})
t.Run("#Before", func(t *testing.T) {
a, err := NewMSRCMetadata("Windows_10-2022_09_10.json")
require.NoError(t, err)
b, err := NewMSRCMetadata("Windows_10-2022_10_10.json")
require.NoError(t, err)
c, err := NewMSRCMetadata("Windows_10-2022_10_10.json")
require.NoError(t, err)
require.True(t, a.Before(b))
require.False(t, b.Before(a))
require.False(t, b.Before(c))
require.False(t, c.Before(b))
t.Run("when a is empty", func(t *testing.T) {
a := MetadataFileName{}
b, err := NewMSRCMetadata("Windows_10-2022_09_10.json")
require.NoError(t, err)
require.True(t, a.Before(b))
})
t.Run("when b is empty", func(t *testing.T) {
a, err := NewMSRCMetadata("Windows_10-2022_09_10.json")
b := MetadataFileName{}
require.NoError(t, err)
require.False(t, a.Before(b))
})
})
}