summaryrefslogtreecommitdiff
path: root/caddytest
diff options
context:
space:
mode:
authorMark Sargent <99003+sarge@users.noreply.github.com>2020-06-27 09:12:37 +1200
committerGitHub <noreply@github.com>2020-06-26 15:12:37 -0600
commit6004d3f779b8175d92d8eb7819ed800e8eddbff6 (patch)
treea21b7e73d65f75656745c82b6792dca59be57b72 /caddytest
parentcaca55e582c74e43338b270ebb5ff277c4404195 (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.go143
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")
+}