Skip to content

Commit 17012b4

Browse files
committed
add common path validator
1 parent 1d0cd8d commit 17012b4

File tree

9 files changed

+115
-191
lines changed

9 files changed

+115
-191
lines changed

internal/mode/static/nginx/config/validation/common_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ func TestValidateValidHeaderName(t *testing.T) {
7575
)
7676
}
7777

78-
func TestValidatePath(t *testing.T) {
78+
func TestValidatePathForFilters(t *testing.T) {
7979
t.Parallel()
8080
validator := validatePath
8181

internal/mode/static/nginx/config/validation/http_filters.go

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@ type HTTPURLRewriteValidator struct{}
1111
// which in NGINX is done with the proxy_set_header directive.
1212
type HTTPHeaderValidator struct{}
1313

14+
// HTTPCommonValidator validates values for path used in filters.
15+
type HTTPPathValidator struct{}
16+
1417
var supportedRedirectSchemes = map[string]struct{}{
1518
"http": {},
1619
"https": {},
@@ -47,13 +50,8 @@ func (HTTPRedirectValidator) ValidateHostname(hostname string) error {
4750
return validateEscapedStringNoVarExpansion(hostname, hostnameExamples)
4851
}
4952

50-
// ValidateRewritePath validates a path used in a URL Rewrite filter.
51-
func (HTTPURLRewriteValidator) ValidateRewritePath(path string) error {
52-
return validatePath(path)
53-
}
54-
55-
// ValidateRedirectPath validates a path used in a Request Redirect filter.
56-
func (HTTPRedirectValidator) ValidateRedirectPath(path string) error {
53+
// ValidatePath validates a path used in filters.
54+
func (HTTPPathValidator) ValidatePath(path string) error {
5755
return validatePath(path)
5856
}
5957

internal/mode/static/nginx/config/validation/http_filters_test.go

Lines changed: 4 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -71,13 +71,13 @@ func TestValidateHostname(t *testing.T) {
7171
)
7272
}
7373

74-
func TestValidateRewritePath(t *testing.T) {
74+
func TestValidatePath(t *testing.T) {
7575
t.Parallel()
76-
validator := HTTPURLRewriteValidator{}
76+
validator := HTTPPathValidator{}
7777

7878
testValidValuesForSimpleValidator(
7979
t,
80-
validator.ValidateRewritePath,
80+
validator.ValidatePath,
8181
"",
8282
"/path",
8383
"/longer/path",
@@ -86,29 +86,7 @@ func TestValidateRewritePath(t *testing.T) {
8686

8787
testInvalidValuesForSimpleValidator(
8888
t,
89-
validator.ValidateRewritePath,
90-
"path",
91-
"$path",
92-
"/path$",
93-
)
94-
}
95-
96-
func TestValidateRedirectPath(t *testing.T) {
97-
t.Parallel()
98-
validator := HTTPRedirectValidator{}
99-
100-
testValidValuesForSimpleValidator(
101-
t,
102-
validator.ValidateRedirectPath,
103-
"",
104-
"/path",
105-
"/longer/path",
106-
"/trailing/",
107-
)
108-
109-
testInvalidValuesForSimpleValidator(
110-
t,
111-
validator.ValidateRedirectPath,
89+
validator.ValidatePath,
11290
"path",
11391
"$path",
11492
"/path$",

internal/mode/static/nginx/config/validation/http_validator.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ type HTTPValidator struct {
1212
HTTPRedirectValidator
1313
HTTPURLRewriteValidator
1414
HTTPHeaderValidator
15+
HTTPPathValidator
1516
}
1617

1718
var _ validation.HTTPFieldsValidator = HTTPValidator{}

internal/mode/static/state/graph/httproute.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -340,7 +340,7 @@ func validateFilterRedirect(
340340
return append(allErrs, valErr)
341341
}
342342

343-
if err := validator.ValidateRedirectPath(path); err != nil {
343+
if err := validator.ValidatePath(path); err != nil {
344344
valErr := field.Invalid(redirectPath.Child("path"), *redirect.Path, err.Error())
345345
allErrs = append(allErrs, valErr)
346346
}
@@ -389,7 +389,7 @@ func validateFilterRewrite(
389389
return append(allErrs, valErr)
390390
}
391391

392-
if err := validator.ValidateRewritePath(path); err != nil {
392+
if err := validator.ValidatePath(path); err != nil {
393393
valErr := field.Invalid(rewritePath.Child("path"), *rewrite.Path, err.Error())
394394
allErrs = append(allErrs, valErr)
395395
}

internal/mode/static/state/graph/httproute_test.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1274,7 +1274,7 @@ func TestValidateFilterRedirect(t *testing.T) {
12741274
{
12751275
validator: func() *validationfakes.FakeHTTPFieldsValidator {
12761276
validator := &validationfakes.FakeHTTPFieldsValidator{}
1277-
validator.ValidateRedirectPathReturns(errors.New("invalid path value"))
1277+
validator.ValidatePathReturns(errors.New("invalid path value"))
12781278
return validator
12791279
}(),
12801280
requestRedirect: &gatewayv1.HTTPRequestRedirectFilter{
@@ -1289,7 +1289,7 @@ func TestValidateFilterRedirect(t *testing.T) {
12891289
{
12901290
validator: func() *validationfakes.FakeHTTPFieldsValidator {
12911291
validator := &validationfakes.FakeHTTPFieldsValidator{}
1292-
validator.ValidateRedirectPathReturns(errors.New("invalid path"))
1292+
validator.ValidatePathReturns(errors.New("invalid path"))
12931293
return validator
12941294
}(),
12951295
requestRedirect: &gatewayv1.HTTPRequestRedirectFilter{
@@ -1403,7 +1403,7 @@ func TestValidateFilterRewrite(t *testing.T) {
14031403
{
14041404
validator: func() *validationfakes.FakeHTTPFieldsValidator {
14051405
validator := &validationfakes.FakeHTTPFieldsValidator{}
1406-
validator.ValidateRewritePathReturns(errors.New("invalid path value"))
1406+
validator.ValidatePathReturns(errors.New("invalid path value"))
14071407
return validator
14081408
}(),
14091409
urlRewrite: &gatewayv1.HTTPURLRewriteFilter{
@@ -1418,7 +1418,7 @@ func TestValidateFilterRewrite(t *testing.T) {
14181418
{
14191419
validator: func() *validationfakes.FakeHTTPFieldsValidator {
14201420
validator := &validationfakes.FakeHTTPFieldsValidator{}
1421-
validator.ValidateRewritePathReturns(errors.New("invalid path"))
1421+
validator.ValidatePathReturns(errors.New("invalid path"))
14221422
return validator
14231423
}(),
14241424
urlRewrite: &gatewayv1.HTTPURLRewriteFilter{
@@ -1434,7 +1434,7 @@ func TestValidateFilterRewrite(t *testing.T) {
14341434
validator: func() *validationfakes.FakeHTTPFieldsValidator {
14351435
validator := &validationfakes.FakeHTTPFieldsValidator{}
14361436
validator.ValidateHostnameReturns(errors.New("invalid hostname"))
1437-
validator.ValidateRewritePathReturns(errors.New("invalid path"))
1437+
validator.ValidatePathReturns(errors.New("invalid path"))
14381438
return validator
14391439
}(),
14401440
urlRewrite: &gatewayv1.HTTPURLRewriteFilter{

0 commit comments

Comments
 (0)