34 lines
768 B
Go
34 lines
768 B
Go
package config
|
|
|
|
import (
|
|
"reflect"
|
|
"testing"
|
|
|
|
"gopkg.in/yaml.v3"
|
|
)
|
|
|
|
func TestAuditaYAMLPreservesModuleSelection(t *testing.T) {
|
|
for _, tc := range []struct {
|
|
name string
|
|
modules []string
|
|
}{
|
|
{name: "omitted"},
|
|
{name: "explicit empty", modules: []string{}},
|
|
{name: "ordered repetitions", modules: []string{"grammar", "names", "grammar"}},
|
|
} {
|
|
t.Run(tc.name, func(t *testing.T) {
|
|
data, err := yaml.Marshal(AuditaConfig{Modules: tc.modules})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
var decoded AuditaConfig
|
|
if err := yaml.Unmarshal(data, &decoded); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if !reflect.DeepEqual(decoded.Modules, tc.modules) {
|
|
t.Fatalf("modules = %#v, want %#v; YAML:\n%s", decoded.Modules, tc.modules, data)
|
|
}
|
|
})
|
|
}
|
|
}
|