Resolved router test cases
This commit is contained in:
@@ -153,6 +153,10 @@ func validateRules(rules []routingRule) error {
|
|||||||
if rule.Target.URL == "" {
|
if rule.Target.URL == "" {
|
||||||
return fmt.Errorf("invalid rule: url is required for targetType 'url'")
|
return fmt.Errorf("invalid rule: url is required for targetType 'url'")
|
||||||
}
|
}
|
||||||
|
// Validate HTTPS scheme
|
||||||
|
if err := isValidHTTPSURL(rule.Target.URL); err != nil {
|
||||||
|
return fmt.Errorf("invalid URI %s in request body for url: %v", rule.Target.URL, err)
|
||||||
|
}
|
||||||
if _, err := url.Parse(rule.Target.URL); err != nil {
|
if _, err := url.Parse(rule.Target.URL); err != nil {
|
||||||
return fmt.Errorf("invalid URL - %s: %w", rule.Target.URL, err)
|
return fmt.Errorf("invalid URL - %s: %w", rule.Target.URL, err)
|
||||||
}
|
}
|
||||||
@@ -162,6 +166,9 @@ func validateRules(rules []routingRule) error {
|
|||||||
}
|
}
|
||||||
case targetTypeBPP, targetTypeBAP:
|
case targetTypeBPP, targetTypeBAP:
|
||||||
if rule.Target.URL != "" {
|
if rule.Target.URL != "" {
|
||||||
|
if err := isValidHTTPSURL(rule.Target.URL); err != nil {
|
||||||
|
return fmt.Errorf("invalid URI %s in request body for %s: %v", rule.Target.URL, rule.TargetType, err)
|
||||||
|
}
|
||||||
if _, err := url.Parse(rule.Target.URL); err != nil {
|
if _, err := url.Parse(rule.Target.URL); err != nil {
|
||||||
return fmt.Errorf("invalid URL - %s defined in routing config for target type %s: %w", rule.Target.URL, rule.TargetType, err)
|
return fmt.Errorf("invalid URL - %s defined in routing config for target type %s: %w", rule.Target.URL, rule.TargetType, err)
|
||||||
}
|
}
|
||||||
@@ -234,6 +241,9 @@ func handleProtocolMapping(route *model.Route, npURI, endpoint string) (*model.R
|
|||||||
},
|
},
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
if err := isValidHTTPSURL(target); err != nil {
|
||||||
|
return nil, fmt.Errorf("invalid %s URI - %s in request body for %s: %v", strings.ToUpper(route.TargetType), target, endpoint, err)
|
||||||
|
}
|
||||||
targetURL, err := url.Parse(target)
|
targetURL, err := url.Parse(target)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("invalid %s URI - %s in request body for %s: %w", strings.ToUpper(route.TargetType), target, endpoint, err)
|
return nil, fmt.Errorf("invalid %s URI - %s in request body for %s: %w", strings.ToUpper(route.TargetType), target, endpoint, err)
|
||||||
@@ -248,3 +258,15 @@ func handleProtocolMapping(route *model.Route, npURI, endpoint string) (*model.R
|
|||||||
},
|
},
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// isValidHTTPSURL ensures the provided URL is a valid HTTPS URL.
|
||||||
|
func isValidHTTPSURL(rawURL string) error {
|
||||||
|
parsedURL, err := url.Parse(rawURL)
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("invalid URL - %s: %v", rawURL, err)
|
||||||
|
}
|
||||||
|
if parsedURL.Scheme != "https" {
|
||||||
|
return fmt.Errorf("URL '%s' must use https scheme", rawURL)
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|||||||
@@ -296,7 +296,7 @@ func TestValidateRulesFailure(t *testing.T) {
|
|||||||
Endpoints: []string{"search"},
|
Endpoints: []string{"search"},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
wantErr: "invalid URL - htp://invalid-url.com: URL 'htp://invalid-url.com' must use https scheme",
|
wantErr: "invalid URI htp://invalid-url.com in request body for url: URL 'htp://invalid-url.com' must use https scheme",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "Missing topic_id for targetType: publisher",
|
name: "Missing topic_id for targetType: publisher",
|
||||||
@@ -326,7 +326,7 @@ func TestValidateRulesFailure(t *testing.T) {
|
|||||||
Endpoints: []string{"search"},
|
Endpoints: []string{"search"},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
wantErr: "invalid URL - htp://invalid-url.com defined in routing config for target type bpp",
|
wantErr: "invalid URI htp://invalid-url.com in request body for bpp: URL 'htp://invalid-url.com' must use https scheme",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "Invalid URL for BAP targetType",
|
name: "Invalid URL for BAP targetType",
|
||||||
@@ -341,7 +341,7 @@ func TestValidateRulesFailure(t *testing.T) {
|
|||||||
Endpoints: []string{"search"},
|
Endpoints: []string{"search"},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
wantErr: "invalid URL - http://[invalid].com defined in routing config for target type bap",
|
wantErr: "invalid URI http://[invalid].com in request body for bap",
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user