Skip to content

Commit ac3e22e

Browse files
committed
remove []Condition->Conditions change and add Route processing tests for unsupported fields
1 parent 12b12f1 commit ac3e22e

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

41 files changed

+595
-465
lines changed

internal/controller/nginx/config/policies/clientsettings/validator.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,19 +24,19 @@ func NewValidator(genericValidator validation.GenericValidator) *Validator {
2424
}
2525

2626
// Validate validates the spec of a ClientSettingsPolicy.
27-
func (v *Validator) Validate(policy policies.Policy) conditions.Conditions {
27+
func (v *Validator) Validate(policy policies.Policy) []conditions.Condition {
2828
csp := helpers.MustCastObject[*ngfAPI.ClientSettingsPolicy](policy)
2929

3030
targetRefPath := field.NewPath("spec").Child("targetRef")
3131
supportedKinds := []gatewayv1.Kind{kinds.Gateway, kinds.HTTPRoute, kinds.GRPCRoute}
3232
supportedGroups := []gatewayv1.Group{gatewayv1.GroupName}
3333

3434
if err := policies.ValidateTargetRef(csp.Spec.TargetRef, targetRefPath, supportedGroups, supportedKinds); err != nil {
35-
return conditions.Conditions{conditions.NewPolicyInvalid(err.Error())}
35+
return []conditions.Condition{conditions.NewPolicyInvalid(err.Error())}
3636
}
3737

3838
if err := v.validateSettings(csp.Spec); err != nil {
39-
return conditions.Conditions{conditions.NewPolicyInvalid(err.Error())}
39+
return []conditions.Condition{conditions.NewPolicyInvalid(err.Error())}
4040
}
4141

4242
return nil
@@ -46,7 +46,7 @@ func (v *Validator) Validate(policy policies.Policy) conditions.Conditions {
4646
func (v *Validator) ValidateGlobalSettings(
4747
_ policies.Policy,
4848
_ *policies.GlobalSettings,
49-
) conditions.Conditions {
49+
) []conditions.Condition {
5050
return nil
5151
}
5252

internal/controller/nginx/config/policies/clientsettings/validator_test.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -56,15 +56,15 @@ func TestValidator_Validate(t *testing.T) {
5656
tests := []struct {
5757
name string
5858
policy *ngfAPI.ClientSettingsPolicy
59-
expConditions conditions.Conditions
59+
expConditions []conditions.Condition
6060
}{
6161
{
6262
name: "invalid target ref; unsupported group",
6363
policy: createModifiedPolicy(func(p *ngfAPI.ClientSettingsPolicy) *ngfAPI.ClientSettingsPolicy {
6464
p.Spec.TargetRef.Group = "Unsupported"
6565
return p
6666
}),
67-
expConditions: conditions.Conditions{
67+
expConditions: []conditions.Condition{
6868
conditions.NewPolicyInvalid("spec.targetRef.group: Unsupported value: \"Unsupported\": " +
6969
"supported values: \"gateway.networking.k8s.io\""),
7070
},
@@ -75,7 +75,7 @@ func TestValidator_Validate(t *testing.T) {
7575
p.Spec.TargetRef.Kind = "Unsupported"
7676
return p
7777
}),
78-
expConditions: conditions.Conditions{
78+
expConditions: []conditions.Condition{
7979
conditions.NewPolicyInvalid("spec.targetRef.kind: Unsupported value: \"Unsupported\": " +
8080
"supported values: \"Gateway\", \"HTTPRoute\", \"GRPCRoute\""),
8181
},
@@ -86,7 +86,7 @@ func TestValidator_Validate(t *testing.T) {
8686
p.Spec.Body.MaxSize = helpers.GetPointer[ngfAPI.Size]("invalid")
8787
return p
8888
}),
89-
expConditions: conditions.Conditions{
89+
expConditions: []conditions.Condition{
9090
conditions.NewPolicyInvalid("spec.body.maxSize: Invalid value: \"invalid\": ^\\d{1,4}(k|m|g)?$ " +
9191
"(e.g. '1024', or '8k', or '20m', or '1g', regex used for validation is 'must contain a number. " +
9292
"May be followed by 'k', 'm', or 'g', otherwise bytes are assumed')"),
@@ -101,7 +101,7 @@ func TestValidator_Validate(t *testing.T) {
101101
p.Spec.KeepAlive.Timeout.Header = helpers.GetPointer[ngfAPI.Duration]("invalid")
102102
return p
103103
}),
104-
expConditions: conditions.Conditions{
104+
expConditions: []conditions.Condition{
105105
conditions.NewPolicyInvalid(
106106
"[spec.body.timeout: Invalid value: \"invalid\": ^[0-9]{1,4}(ms|s|m|h)? " +
107107
"(e.g. '5ms', or '10s', or '500m', or '1000h', regex used for validation is " +
@@ -123,7 +123,7 @@ func TestValidator_Validate(t *testing.T) {
123123
p.Spec.KeepAlive.Timeout.Server = nil
124124
return p
125125
}),
126-
expConditions: conditions.Conditions{
126+
expConditions: []conditions.Condition{
127127
conditions.NewPolicyInvalid("spec.keepAlive.timeout: Invalid value: null: " +
128128
"server timeout must be set if header timeout is set"),
129129
},

internal/controller/nginx/config/policies/observability/validator.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ func NewValidator(genericValidator validation.GenericValidator) *Validator {
2424
}
2525

2626
// Validate validates the spec of an ObservabilityPolicy.
27-
func (v *Validator) Validate(policy policies.Policy) conditions.Conditions {
27+
func (v *Validator) Validate(policy policies.Policy) []conditions.Condition {
2828
obs := helpers.MustCastObject[*ngfAPIv1alpha2.ObservabilityPolicy](policy)
2929

3030
targetRefPath := field.NewPath("spec").Child("targetRefs")
@@ -33,12 +33,12 @@ func (v *Validator) Validate(policy policies.Policy) conditions.Conditions {
3333

3434
for _, ref := range obs.Spec.TargetRefs {
3535
if err := policies.ValidateTargetRef(ref, targetRefPath, supportedGroups, supportedKinds); err != nil {
36-
return conditions.Conditions{conditions.NewPolicyInvalid(err.Error())}
36+
return []conditions.Condition{conditions.NewPolicyInvalid(err.Error())}
3737
}
3838
}
3939

4040
if err := v.validateSettings(obs.Spec); err != nil {
41-
return conditions.Conditions{conditions.NewPolicyInvalid(err.Error())}
41+
return []conditions.Condition{conditions.NewPolicyInvalid(err.Error())}
4242
}
4343

4444
return nil
@@ -48,15 +48,15 @@ func (v *Validator) Validate(policy policies.Policy) conditions.Conditions {
4848
func (v *Validator) ValidateGlobalSettings(
4949
_ policies.Policy,
5050
globalSettings *policies.GlobalSettings,
51-
) conditions.Conditions {
51+
) []conditions.Condition {
5252
if globalSettings == nil {
53-
return conditions.Conditions{
53+
return []conditions.Condition{
5454
conditions.NewPolicyNotAcceptedNginxProxyNotSet(conditions.PolicyMessageNginxProxyInvalid),
5555
}
5656
}
5757

5858
if !globalSettings.TelemetryEnabled {
59-
return conditions.Conditions{
59+
return []conditions.Condition{
6060
conditions.NewPolicyNotAcceptedNginxProxyNotSet(conditions.PolicyMessageTelemetryNotEnabled),
6161
}
6262
}

internal/controller/nginx/config/policies/observability/validator_test.go

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -57,15 +57,15 @@ func TestValidator_Validate(t *testing.T) {
5757
tests := []struct {
5858
name string
5959
policy *ngfAPIv1alpha2.ObservabilityPolicy
60-
expConditions conditions.Conditions
60+
expConditions []conditions.Condition
6161
}{
6262
{
6363
name: "invalid target ref; unsupported group",
6464
policy: createModifiedPolicy(func(p *ngfAPIv1alpha2.ObservabilityPolicy) *ngfAPIv1alpha2.ObservabilityPolicy {
6565
p.Spec.TargetRefs[0].Group = "Unsupported"
6666
return p
6767
}),
68-
expConditions: conditions.Conditions{
68+
expConditions: []conditions.Condition{
6969
conditions.NewPolicyInvalid("spec.targetRefs.group: Unsupported value: \"Unsupported\": " +
7070
"supported values: \"gateway.networking.k8s.io\""),
7171
},
@@ -76,7 +76,7 @@ func TestValidator_Validate(t *testing.T) {
7676
p.Spec.TargetRefs[0].Kind = "Unsupported"
7777
return p
7878
}),
79-
expConditions: conditions.Conditions{
79+
expConditions: []conditions.Condition{
8080
conditions.NewPolicyInvalid("spec.targetRefs.kind: Unsupported value: \"Unsupported\": " +
8181
"supported values: \"HTTPRoute\", \"GRPCRoute\""),
8282
},
@@ -87,7 +87,7 @@ func TestValidator_Validate(t *testing.T) {
8787
p.Spec.Tracing.Strategy = "invalid"
8888
return p
8989
}),
90-
expConditions: conditions.Conditions{
90+
expConditions: []conditions.Condition{
9191
conditions.NewPolicyInvalid("spec.tracing.strategy: Unsupported value: \"invalid\": " +
9292
"supported values: \"ratio\", \"parent\""),
9393
},
@@ -98,7 +98,7 @@ func TestValidator_Validate(t *testing.T) {
9898
p.Spec.Tracing.Context = helpers.GetPointer[ngfAPIv1alpha2.TraceContext]("invalid")
9999
return p
100100
}),
101-
expConditions: conditions.Conditions{
101+
expConditions: []conditions.Condition{
102102
conditions.NewPolicyInvalid("spec.tracing.context: Unsupported value: \"invalid\": " +
103103
"supported values: \"extract\", \"inject\", \"propagate\", \"ignore\""),
104104
},
@@ -109,7 +109,7 @@ func TestValidator_Validate(t *testing.T) {
109109
p.Spec.Tracing.SpanName = helpers.GetPointer("invalid$$$")
110110
return p
111111
}),
112-
expConditions: conditions.Conditions{
112+
expConditions: []conditions.Condition{
113113
conditions.NewPolicyInvalid("spec.tracing.spanName: Invalid value: \"invalid$$$\": " +
114114
"a valid value must have all '\"' escaped and must not contain any '$' or end with an " +
115115
"unescaped '\\' (regex used for validation is '([^\"$\\\\]|\\\\[^$])*')"),
@@ -121,7 +121,7 @@ func TestValidator_Validate(t *testing.T) {
121121
p.Spec.Tracing.SpanAttributes[0].Key = "invalid$$$"
122122
return p
123123
}),
124-
expConditions: conditions.Conditions{
124+
expConditions: []conditions.Condition{
125125
conditions.NewPolicyInvalid("spec.tracing.spanAttributes.key: Invalid value: \"invalid$$$\": " +
126126
"a valid value must have all '\"' escaped and must not contain any '$' or end with an " +
127127
"unescaped '\\' (regex used for validation is '([^\"$\\\\]|\\\\[^$])*')"),
@@ -133,7 +133,7 @@ func TestValidator_Validate(t *testing.T) {
133133
p.Spec.Tracing.SpanAttributes[0].Value = "invalid$$$"
134134
return p
135135
}),
136-
expConditions: conditions.Conditions{
136+
expConditions: []conditions.Condition{
137137
conditions.NewPolicyInvalid("spec.tracing.spanAttributes.value: Invalid value: \"invalid$$$\": " +
138138
"a valid value must have all '\"' escaped and must not contain any '$' or end with an " +
139139
"unescaped '\\' (regex used for validation is '([^\"$\\\\]|\\\\[^$])*')"),
@@ -178,18 +178,18 @@ func TestValidator_ValidateGlobalSettings(t *testing.T) {
178178
tests := []struct {
179179
name string
180180
globalSettings *policies.GlobalSettings
181-
expConditions conditions.Conditions
181+
expConditions []conditions.Condition
182182
}{
183183
{
184184
name: "global settings are nil",
185-
expConditions: conditions.Conditions{
185+
expConditions: []conditions.Condition{
186186
conditions.NewPolicyNotAcceptedNginxProxyNotSet(conditions.PolicyMessageNginxProxyInvalid),
187187
},
188188
},
189189
{
190190
name: "telemetry is not enabled",
191191
globalSettings: &policies.GlobalSettings{TelemetryEnabled: false},
192-
expConditions: conditions.Conditions{
192+
expConditions: []conditions.Condition{
193193
conditions.NewPolicyNotAcceptedNginxProxyNotSet(conditions.PolicyMessageTelemetryNotEnabled),
194194
},
195195
},

internal/controller/nginx/config/policies/policiesfakes/fake_validator.go

Lines changed: 20 additions & 20 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

internal/controller/nginx/config/policies/upstreamsettings/validator.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ func NewValidator(genericValidator validation.GenericValidator) Validator {
2424
}
2525

2626
// Validate validates the spec of an UpstreamsSettingsPolicy.
27-
func (v Validator) Validate(policy policies.Policy) conditions.Conditions {
27+
func (v Validator) Validate(policy policies.Policy) []conditions.Condition {
2828
usp := helpers.MustCastObject[*ngfAPI.UpstreamSettingsPolicy](policy)
2929

3030
targetRefsPath := field.NewPath("spec").Child("targetRefs")
@@ -34,12 +34,12 @@ func (v Validator) Validate(policy policies.Policy) conditions.Conditions {
3434
for i, ref := range usp.Spec.TargetRefs {
3535
indexedPath := targetRefsPath.Index(i)
3636
if err := policies.ValidateTargetRef(ref, indexedPath, supportedGroups, supportedKinds); err != nil {
37-
return conditions.Conditions{conditions.NewPolicyInvalid(err.Error())}
37+
return []conditions.Condition{conditions.NewPolicyInvalid(err.Error())}
3838
}
3939
}
4040

4141
if err := v.validateSettings(usp.Spec); err != nil {
42-
return conditions.Conditions{conditions.NewPolicyInvalid(err.Error())}
42+
return []conditions.Condition{conditions.NewPolicyInvalid(err.Error())}
4343
}
4444

4545
return nil
@@ -49,7 +49,7 @@ func (v Validator) Validate(policy policies.Policy) conditions.Conditions {
4949
func (v Validator) ValidateGlobalSettings(
5050
_ policies.Policy,
5151
_ *policies.GlobalSettings,
52-
) conditions.Conditions {
52+
) []conditions.Condition {
5353
return nil
5454
}
5555

0 commit comments

Comments
 (0)