diff options
| author | James Elliott <james-d-elliott@users.noreply.github.com> | 2025-02-18 20:38:36 +1100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-02-18 09:38:36 +0000 |
| commit | a9d1986fa9dec8701ee73b05aa99781f4bbe5f18 (patch) | |
| tree | bbcef1a55483271f43308179d4fd09ef8a894131 /internal/configuration/provider_test.go | |
| parent | 7ac3c6a4f3945c3c4272bac717addd1ef598b2b9 (diff) | |
feat(configuration): reusable definitions (#8077)
This adds reusable definitions into the mix for the configuration. This replaces the existing networks section for the access_control section and is automatically remapped for users.
Signed-off-by: James Elliott <james-d-elliott@users.noreply.github.com>
Diffstat (limited to 'internal/configuration/provider_test.go')
| -rw-r--r-- | internal/configuration/provider_test.go | 58 |
1 files changed, 57 insertions, 1 deletions
diff --git a/internal/configuration/provider_test.go b/internal/configuration/provider_test.go index 390ac4532..40e399769 100644 --- a/internal/configuration/provider_test.go +++ b/internal/configuration/provider_test.go @@ -1165,6 +1165,48 @@ func TestShouldFailIfYmlIsInvalid(t *testing.T) { assert.ErrorContains(t, val.Errors()[0], "unmarshal errors") } +func TestConfigurationDefinitions(t *testing.T) { + var ( + definitions *schema.Definitions + err error + ) + + val := schema.NewStructValidator() + + config := &schema.Configuration{} + + sources := NewDefaultSourcesWithDefaults([]string{"./test_resources/config_with_definitions.yml"}, nil, DefaultEnvPrefix, DefaultEnvDelimiter, nil) + + definitions, err = LoadDefinitions(val, sources...) + + require.NoError(t, err) + + _, err = LoadAdvanced(val, "", config, definitions, sources...) + + require.NoError(t, err) + + require.Len(t, config.Definitions.Network, 2) + + require.Contains(t, config.Definitions.Network, "lan") + require.Len(t, config.Definitions.Network["lan"], 2) + assert.Equal(t, "192.168.1.0/24", config.Definitions.Network["lan"][0].String()) + assert.Equal(t, "192.168.2.0/24", config.Definitions.Network["lan"][1].String()) + + require.Contains(t, config.Definitions.Network, "abc") + require.Len(t, config.Definitions.Network["abc"], 2) + assert.Equal(t, "192.168.3.0/24", config.Definitions.Network["abc"][0].String()) + assert.Equal(t, "192.168.4.0/24", config.Definitions.Network["abc"][1].String()) + + require.Len(t, config.AccessControl.Rules, 12) + require.Len(t, config.AccessControl.Rules[1].Networks, 5) + + assert.Equal(t, "192.168.0.0/24", config.AccessControl.Rules[1].Networks[0].String()) + assert.Equal(t, "192.168.1.0/24", config.AccessControl.Rules[1].Networks[1].String()) + assert.Equal(t, "192.168.2.0/24", config.AccessControl.Rules[1].Networks[2].String()) + assert.Equal(t, "192.168.3.0/24", config.AccessControl.Rules[1].Networks[3].String()) + assert.Equal(t, "192.168.4.0/24", config.AccessControl.Rules[1].Networks[4].String()) +} + func TestConfigurationTemplate(t *testing.T) { buf := &bytes.Buffer{} @@ -1242,7 +1284,21 @@ func TestConfigurationTemplate(t *testing.T) { val := schema.NewStructValidator() - keys, _, err := Load(val, NewBytesSource(config)) + var ( + keys []string + definitions *schema.Definitions + ) + + c := &schema.Configuration{} + + src := NewBytesSource(config) + + definitions, err = LoadDefinitions(val, src) + + require.NoError(t, err) + + keys, err = LoadAdvanced(val, "", c, definitions, src) + require.NoError(t, err) assert.Len(t, val.Errors(), 0) |
