8 "github.com/stretchr/testify/require"
11 func TestLoadConfigGivesDefaultsWithoutAFile(t *testing.T) {
13 config, err := loadConfig(dir)
14 require.NoError(t, err)
15 require.Equal(t, defaultConfig(), config)
16 require.NoFileExists(t, filepath.Join(dir, "config.json"))
19 func TestLoadConfigKeepsDefaultsForMissingFields(t *testing.T) {
21 configWriteTest(t, dir, `{"endpoint": "api", "compactor": {"effort": "xhigh"}}`)
23 config, err := loadConfig(dir)
24 require.NoError(t, err)
25 require.Equal(t, Config{
26 Endpoint: configEndpointAPI,
27 Compactor: ModelConfig{
34 func TestLoadConfigRejectsInvalidFiles(t *testing.T) {
35 testCases := []struct {
40 name: "unknown field",
41 text: `{"endpont": "api"}`,
44 name: "unknown nested field",
45 text: `{"compactor": {"modle": "x"}}`,
49 text: `{"endpoint": "https://example.com/v1/responses"}`,
53 text: `{"compactor": {"model": ""}}`,
56 name: "second object",
61 text: `{"endpoint": `,
65 for _, tc := range testCases {
66 t.Run(tc.name, func(t *testing.T) {
68 configWriteTest(t, dir, tc.text)
70 _, err := loadConfig(dir)
76 func configWriteTest(t *testing.T, dir, text string) {
79 err := os.WriteFile(filepath.Join(dir, "config.json"), []byte(text), 0o600)
80 require.NoError(t, err)