olivetin/service/internal/config/source_file_test.go

52 lines
1.3 KiB
Go

package config_test
import (
"os"
"path/filepath"
"testing"
"github.com/OliveTin/OliveTin/internal/config"
"github.com/knadh/koanf/parsers/yaml"
"github.com/knadh/koanf/providers/file"
"github.com/knadh/koanf/v2"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestAppendSourceStampsActionSourceFiles(t *testing.T) {
dir := t.TempDir()
includeDir := filepath.Join(dir, "config.d")
require.NoError(t, os.Mkdir(includeDir, 0o755))
basePath := filepath.Join(dir, "config.yaml")
require.NoError(t, os.WriteFile(basePath, []byte(`
include: config.d
actions:
- title: From base
shell: echo base
`), 0o644))
includePath := filepath.Join(includeDir, "10-extra.yaml")
require.NoError(t, os.WriteFile(includePath, []byte(`
actions:
- title: From include
shell: echo include
entities:
- name: host
file: hosts.yaml
`), 0o644))
k := koanf.New(".")
require.NoError(t, k.Load(file.Provider(basePath), yaml.Parser()))
cfg := config.DefaultConfig()
config.AppendSource(cfg, k, basePath)
require.Len(t, cfg.Actions, 2)
assert.Equal(t, basePath, cfg.Actions[0].SourceFile)
assert.Equal(t, includePath, cfg.Actions[1].SourceFile)
require.Len(t, cfg.Entities, 1)
assert.Equal(t, includePath, cfg.Entities[0].SourceFile)
}