Skip to content

Commit e4edecc

Browse files
committed
f
1 parent 76930b7 commit e4edecc

File tree

2 files changed

+9
-83
lines changed

2 files changed

+9
-83
lines changed

api/internal/managers/app/config/config.go

Lines changed: 7 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,7 @@ import (
1212
)
1313

1414
var (
15-
ErrConfigItemRequired = errors.New("item is required")
16-
ErrConfigValueNotFound = errors.New("value not found")
15+
ErrConfigItemRequired = errors.New("item is required")
1716
)
1817

1918
func (m *appConfigManager) GetConfig(config kotsv1beta1.Config) (kotsv1beta1.Config, error) {
@@ -27,37 +26,19 @@ func (m *appConfigManager) GetConfigValues() (map[string]string, error) {
2726
func (m *appConfigManager) ValidateConfigValues(config kotsv1beta1.Config, configValues map[string]string) error {
2827
var ve *types.APIError
2928

30-
configItems := make(map[string]kotsv1beta1.ConfigItem)
31-
configChildItems := make(map[string]kotsv1beta1.ConfigChildItem)
29+
filteredConfig, err := filterAppConfig(config)
30+
if err != nil {
31+
return fmt.Errorf("filter app config: %w", err)
32+
}
3233

33-
// first check required items
34-
for _, group := range config.Spec.Groups {
35-
if !isItemEnabled(group.When) {
36-
continue
37-
}
34+
// check required items
35+
for _, group := range filteredConfig.Spec.Groups {
3836
for _, item := range group.Items {
39-
configItems[item.Name] = item
40-
4137
configValue := getConfigValueFromItem(item, configValues)
4238
if isRequiredItem(item) && isUnsetItem(configValue) {
4339
ve = types.AppendFieldError(ve, item.Name, ErrConfigItemRequired)
4440
}
45-
46-
for _, childItem := range item.Items {
47-
configChildItems[childItem.Name] = childItem
48-
}
49-
}
50-
}
51-
52-
// then check if all the config values are present
53-
for name := range configValues {
54-
if _, ok := configItems[name]; ok {
55-
continue
56-
}
57-
if _, ok := configChildItems[name]; ok {
58-
continue
5941
}
60-
ve = types.AppendFieldError(ve, name, ErrConfigValueNotFound)
6142
}
6243

6344
return ve.ErrorOrNil()

api/internal/managers/app/config/config_test.go

Lines changed: 2 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -1633,32 +1633,6 @@ func TestValidateConfigValues(t *testing.T) {
16331633
wantErr: true,
16341634
errorFields: []string{"required_item"},
16351635
},
1636-
{
1637-
name: "unknown config value",
1638-
config: kotsv1beta1.Config{
1639-
Spec: kotsv1beta1.ConfigSpec{
1640-
Groups: []kotsv1beta1.ConfigGroup{
1641-
{
1642-
Name: "group1",
1643-
Items: []kotsv1beta1.ConfigItem{
1644-
{
1645-
Name: "known_item",
1646-
Required: false,
1647-
Value: multitype.BoolOrString{},
1648-
Default: multitype.BoolOrString{},
1649-
},
1650-
},
1651-
},
1652-
},
1653-
},
1654-
},
1655-
configValues: map[string]string{
1656-
"known_item": "value1",
1657-
"unknown_item": "value2",
1658-
},
1659-
wantErr: true,
1660-
errorFields: []string{"unknown_item"},
1661-
},
16621636
{
16631637
name: "required item with default value should not be required",
16641638
config: kotsv1beta1.Config{
@@ -1800,34 +1774,6 @@ func TestValidateConfigValues(t *testing.T) {
18001774
},
18011775
wantErr: false,
18021776
},
1803-
{
1804-
name: "unknown child item",
1805-
config: kotsv1beta1.Config{
1806-
Spec: kotsv1beta1.ConfigSpec{
1807-
Groups: []kotsv1beta1.ConfigGroup{
1808-
{
1809-
Name: "group1",
1810-
Items: []kotsv1beta1.ConfigItem{
1811-
{
1812-
Name: "parent_item",
1813-
Items: []kotsv1beta1.ConfigChildItem{
1814-
{
1815-
Name: "known_child",
1816-
},
1817-
},
1818-
},
1819-
},
1820-
},
1821-
},
1822-
},
1823-
},
1824-
configValues: map[string]string{
1825-
"known_child": "value1",
1826-
"unknown_child": "value2",
1827-
},
1828-
wantErr: true,
1829-
errorFields: []string{"unknown_child"},
1830-
},
18311777
{
18321778
name: "multiple validation errors",
18331779
config: kotsv1beta1.Config{
@@ -1858,7 +1804,7 @@ func TestValidateConfigValues(t *testing.T) {
18581804
"unknown_item2": "value2",
18591805
},
18601806
wantErr: true,
1861-
errorFields: []string{"required_item1", "required_item2", "unknown_item1", "unknown_item2"},
1807+
errorFields: []string{"required_item1", "required_item2"},
18621808
},
18631809
{
18641810
name: "empty config and values",
@@ -1880,8 +1826,7 @@ func TestValidateConfigValues(t *testing.T) {
18801826
configValues: map[string]string{
18811827
"unknown_item": "value1",
18821828
},
1883-
wantErr: true,
1884-
errorFields: []string{"unknown_item"},
1829+
wantErr: false,
18851830
},
18861831
}
18871832

0 commit comments

Comments
 (0)