aboutsummaryrefslogtreecommitdiffhomepage
path: root/modules/caddyhttp/map
diff options
context:
space:
mode:
authorWill Norris <[email protected]>2022-09-28 12:38:20 -0700
committerGitHub <[email protected]>2022-09-28 13:38:20 -0600
commit61822f129b9edbbc1ed2fd068d8e5ba919b5881d (patch)
treeeb68fb6691feaaefdc5793b6d5e0406865bcb3f7 /modules/caddyhttp/map
parente3e8aabbcf65d37516bb97f9dc0f77df52f8cf55 (diff)
downloadcaddy-61822f129b9edbbc1ed2fd068d8e5ba919b5881d.tar.gz
caddy-61822f129b9edbbc1ed2fd068d8e5ba919b5881d.zip
caddyhttp: replace placeholders in map defaults (#5081)
This updates the map directive to replace placeholders in default values in the same way as matched values.
Diffstat (limited to 'modules/caddyhttp/map')
-rw-r--r--modules/caddyhttp/map/map.go2
-rw-r--r--modules/caddyhttp/map/map_test.go22
2 files changed, 23 insertions, 1 deletions
diff --git a/modules/caddyhttp/map/map.go b/modules/caddyhttp/map/map.go
index d41806d43..b972534b0 100644
--- a/modules/caddyhttp/map/map.go
+++ b/modules/caddyhttp/map/map.go
@@ -169,7 +169,7 @@ func (h Handler) ServeHTTP(w http.ResponseWriter, r *http.Request, next caddyhtt
// fall back to default if no match or if matched nil value
if len(h.Defaults) > destIdx {
- return h.Defaults[destIdx], true
+ return repl.ReplaceAll(h.Defaults[destIdx], ""), true
}
return nil, true
diff --git a/modules/caddyhttp/map/map_test.go b/modules/caddyhttp/map/map_test.go
index fe233bf2b..3ff5e7115 100644
--- a/modules/caddyhttp/map/map_test.go
+++ b/modules/caddyhttp/map/map_test.go
@@ -98,6 +98,28 @@ func TestHandler(t *testing.T) {
"output": "testing",
},
},
+ {
+ reqURI: "/foo",
+ handler: Handler{
+ Source: "{http.request.uri.path}",
+ Destinations: []string{"{output}"},
+ Defaults: []string{"default"},
+ },
+ expect: map[string]any{
+ "output": "default",
+ },
+ },
+ {
+ reqURI: "/foo",
+ handler: Handler{
+ Source: "{http.request.uri.path}",
+ Destinations: []string{"{output}"},
+ Defaults: []string{"{testvar}"},
+ },
+ expect: map[string]any{
+ "output": "testing",
+ },
+ },
} {
if err := tc.handler.Provision(caddy.Context{}); err != nil {
t.Fatalf("Test %d: Provisioning handler: %v", i, err)