summaryrefslogtreecommitdiff
path: root/internal/configuration/provider_test.go
diff options
context:
space:
mode:
authorJames Elliott <james-d-elliott@users.noreply.github.com>2025-02-18 20:38:36 +1100
committerGitHub <noreply@github.com>2025-02-18 09:38:36 +0000
commita9d1986fa9dec8701ee73b05aa99781f4bbe5f18 (patch)
treebbcef1a55483271f43308179d4fd09ef8a894131 /internal/configuration/provider_test.go
parent7ac3c6a4f3945c3c4272bac717addd1ef598b2b9 (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.go58
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)