diff options
author | Mark Sargent <99003+sarge@users.noreply.github.com> | 2020-06-27 09:12:37 +1200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-06-26 15:12:37 -0600 |
commit | 6004d3f779b8175d92d8eb7819ed800e8eddbff6 (patch) | |
tree | a21b7e73d65f75656745c82b6792dca59be57b72 /caddytest | |
parent | caca55e582c74e43338b270ebb5ff277c4404195 (diff) |
caddyhttp: Add 'map' handler (#3199)
* inital map implementation
* resolve the value during middleware execution
* use regex instead
* pr feedback
* renamed mmap to maphandler
* refactored GetString implementation
* fixed mispelling
* additional feedback
Diffstat (limited to 'caddytest')
-rw-r--r-- | caddytest/integration/map_test.go | 143 |
1 files changed, 143 insertions, 0 deletions
diff --git a/caddytest/integration/map_test.go b/caddytest/integration/map_test.go new file mode 100644 index 0000000..e31b95a --- /dev/null +++ b/caddytest/integration/map_test.go @@ -0,0 +1,143 @@ +package integration + +import ( + "bytes" + "testing" + + "github.com/caddyserver/caddy/v2/caddytest" +) + +func TestMap(t *testing.T) { + + // arrange + tester := caddytest.NewTester(t) + tester.InitServer(`{ + http_port 9080 + https_port 9443 + } + + localhost:9080 { + + map http.request.method dest-name { + default unknown + G.T get-called + POST post-called + } + + respond /version 200 { + body "hello from localhost {dest-name}" + } + } + `, "caddyfile") + + // act and assert + tester.AssertGetResponse("http://localhost:9080/version", 200, "hello from localhost get-called") + tester.AssertPostResponseBody("http://localhost:9080/version", []string{}, bytes.NewBuffer([]byte{}), 200, "hello from localhost post-called") +} + +func TestMapRespondWithDefault(t *testing.T) { + + // arrange + tester := caddytest.NewTester(t) + tester.InitServer(`{ + http_port 9080 + https_port 9443 + } + + localhost:9080 { + + map http.request.method dest-name { + default unknown + GET get-called + } + + respond /version 200 { + body "hello from localhost {dest-name}" + } + } + `, "caddyfile") + + // act and assert + tester.AssertGetResponse("http://localhost:9080/version", 200, "hello from localhost get-called") + tester.AssertPostResponseBody("http://localhost:9080/version", []string{}, bytes.NewBuffer([]byte{}), 200, "hello from localhost unknown") +} + +func TestMapAsJson(t *testing.T) { + + // arrange + tester := caddytest.NewTester(t) + tester.InitServer(`{ + "apps": { + "http": { + "http_port": 9080, + "https_port": 9443, + "servers": { + "srv0": { + "listen": [ + ":9080" + ], + "routes": [ + { + "handle": [ + { + "handler": "subroute", + "routes": [ + { + "handle": [ + { + "handler": "map", + "source": "http.request.method", + "destination": "dest-name", + "default": "unknown", + "items": [ + { + "expression": "GET", + "value": "get-called" + }, + { + "expression": "POST", + "value": "post-called" + } + ] + } + ] + }, + { + "handle": [ + { + "body": "hello from localhost {dest-name}", + "handler": "static_response", + "status_code": 200 + } + ], + "match": [ + { + "path": [ + "/version" + ] + } + ] + } + ] + } + ], + "match": [ + { + "host": [ + "localhost" + ] + } + ], + "terminal": true + } + ] + } + } + } + } + } + `, "json") + + tester.AssertGetResponse("http://localhost:9080/version", 200, "hello from localhost get-called") + tester.AssertPostResponseBody("http://localhost:9080/version", []string{}, bytes.NewBuffer([]byte{}), 200, "hello from localhost post-called") +} |