fleet/orbit/pkg/dataflatten/ini_test.go
2023-11-01 20:11:35 -06:00

109 lines
1.9 KiB
Go

// based on github.com/kolide/launcher/pkg/osquery/tables
package dataflatten
import (
"os"
"path"
"testing"
"github.com/stretchr/testify/require"
)
var (
iniTestFilePath = path.Join("testdata", "secdata.ini")
iniTestFileLen = 87
)
func TestIniToBool(t *testing.T) {
t.Parallel()
var tests = []struct {
in string
expected bool
isBool bool
}{
{
in: "hello world",
},
{
in: "Yes",
expected: true,
isBool: true,
},
{
in: "No",
expected: false,
isBool: true,
},
}
for _, tt := range tests {
tt := tt
t.Run(tt.in, func(t *testing.T) {
t.Parallel()
asBool, ok := iniToBool(tt.in)
if tt.isBool {
require.True(t, ok)
require.Equal(t, tt.expected, asBool)
} else {
require.False(t, ok)
}
})
}
}
func TestIniFile(t *testing.T) {
t.Parallel()
rows, err := IniFile(iniTestFilePath)
require.NoError(t, err)
require.Len(t, rows, iniTestFileLen)
}
func TestIni(t *testing.T) {
t.Parallel()
fileBytes, err := os.ReadFile(iniTestFilePath)
require.NoError(t, err)
rows, err := Ini(fileBytes)
require.NoError(t, err)
require.Len(t, rows, iniTestFileLen)
}
func TestIniSecedit(t *testing.T) {
t.Parallel()
rows, err := IniFile(path.Join("testdata", "secdata.ini"))
require.NoError(t, err)
var tests = []struct {
name string
expected Row
}{
{
name: "converted boolean",
expected: Row{Path: []string{"Unicode", "Unicode"}, Value: "true"},
},
{
name: "string value",
expected: Row{Path: []string{"System Access", "NewAdministratorName"}, Value: "Administrator"},
},
{
// We're not casting this to false
name: "number value",
expected: Row{Path: []string{"Event Audit", "AuditDSAccess"}, Value: "0"},
},
}
for _, tt := range tests {
tt := tt
t.Run(tt.name, func(t *testing.T) {
t.Parallel()
require.Contains(t, rows, tt.expected)
})
}
}