summaryrefslogtreecommitdiff
path: root/caddytest
diff options
context:
space:
mode:
authorFrancis Lavoie <lavofr@gmail.com>2022-03-18 17:08:23 -0400
committerGitHub <noreply@github.com>2022-03-18 15:08:23 -0600
commitc5fffb4ac2631f0b41a8e13b62925b9dc8346cb9 (patch)
treec63bee8e93dd3b7b7544e18602a8606c3a38570d /caddytest
parentdc4d147388547515f77447d594024386b732e7d4 (diff)
caddyfile: Support for raw token values; improve `map`, `expression` (#4643)
* caddyfile: Support for raw token values, improve `map`, `expression` * Applied code review comments * Rename RawVal to ValRaw Co-authored-by: Matthew Holt <mholt@users.noreply.github.com>
Diffstat (limited to 'caddytest')
-rw-r--r--caddytest/integration/caddyfile_adapt/expression_quotes.txt114
-rw-r--r--caddytest/integration/caddyfile_adapt/map_with_raw_types.txt107
2 files changed, 221 insertions, 0 deletions
diff --git a/caddytest/integration/caddyfile_adapt/expression_quotes.txt b/caddytest/integration/caddyfile_adapt/expression_quotes.txt
new file mode 100644
index 0000000..f5f8983
--- /dev/null
+++ b/caddytest/integration/caddyfile_adapt/expression_quotes.txt
@@ -0,0 +1,114 @@
+example.com
+
+@a expression {http.error.status_code} == 400
+abort @a
+
+@b expression {http.error.status_code} == "401"
+abort @b
+
+@c expression {http.error.status_code} == `402`
+abort @c
+
+@d expression "{http.error.status_code} == 403"
+abort @d
+
+@e expression `{http.error.status_code} == 404`
+abort @e
+----------
+{
+ "apps": {
+ "http": {
+ "servers": {
+ "srv0": {
+ "listen": [
+ ":443"
+ ],
+ "routes": [
+ {
+ "match": [
+ {
+ "host": [
+ "example.com"
+ ]
+ }
+ ],
+ "handle": [
+ {
+ "handler": "subroute",
+ "routes": [
+ {
+ "handle": [
+ {
+ "abort": true,
+ "handler": "static_response"
+ }
+ ],
+ "match": [
+ {
+ "expression": "{http.error.status_code} == 400"
+ }
+ ]
+ },
+ {
+ "handle": [
+ {
+ "abort": true,
+ "handler": "static_response"
+ }
+ ],
+ "match": [
+ {
+ "expression": "{http.error.status_code} == \"401\""
+ }
+ ]
+ },
+ {
+ "handle": [
+ {
+ "abort": true,
+ "handler": "static_response"
+ }
+ ],
+ "match": [
+ {
+ "expression": "{http.error.status_code} == `402`"
+ }
+ ]
+ },
+ {
+ "handle": [
+ {
+ "abort": true,
+ "handler": "static_response"
+ }
+ ],
+ "match": [
+ {
+ "expression": "{http.error.status_code} == 403"
+ }
+ ]
+ },
+ {
+ "handle": [
+ {
+ "abort": true,
+ "handler": "static_response"
+ }
+ ],
+ "match": [
+ {
+ "expression": "{http.error.status_code} == 404"
+ }
+ ]
+ }
+ ]
+ }
+ ],
+ "terminal": true
+ }
+ ]
+ }
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/caddytest/integration/caddyfile_adapt/map_with_raw_types.txt b/caddytest/integration/caddyfile_adapt/map_with_raw_types.txt
new file mode 100644
index 0000000..54b2b60
--- /dev/null
+++ b/caddytest/integration/caddyfile_adapt/map_with_raw_types.txt
@@ -0,0 +1,107 @@
+example.com
+
+map {host} {my_placeholder} {magic_number} {
+ # Should output boolean "true" and an integer
+ example.com true 3
+
+ # Should output a string and null
+ foo.example.com "string value"
+
+ # Should output two strings (quoted int)
+ (.*)\.example.com "${1} subdomain" "5"
+
+ # Should output null and a string (quoted int)
+ ~.*\.net$ - `7`
+
+ # Should output a float and the string "false"
+ ~.*\.xyz$ 123.456 "false"
+
+ # Should output two strings, second being escaped quote
+ default "unknown domain" \"""
+}
+----------
+{
+ "apps": {
+ "http": {
+ "servers": {
+ "srv0": {
+ "listen": [
+ ":443"
+ ],
+ "routes": [
+ {
+ "match": [
+ {
+ "host": [
+ "example.com"
+ ]
+ }
+ ],
+ "handle": [
+ {
+ "handler": "subroute",
+ "routes": [
+ {
+ "handle": [
+ {
+ "defaults": [
+ "unknown domain",
+ "\""
+ ],
+ "destinations": [
+ "{my_placeholder}",
+ "{magic_number}"
+ ],
+ "handler": "map",
+ "mappings": [
+ {
+ "input": "example.com",
+ "outputs": [
+ true,
+ 3
+ ]
+ },
+ {
+ "input": "foo.example.com",
+ "outputs": [
+ "string value",
+ null
+ ]
+ },
+ {
+ "input": "(.*)\\.example.com",
+ "outputs": [
+ "${1} subdomain",
+ "5"
+ ]
+ },
+ {
+ "input_regexp": ".*\\.net$",
+ "outputs": [
+ null,
+ "7"
+ ]
+ },
+ {
+ "input_regexp": ".*\\.xyz$",
+ "outputs": [
+ 123.456,
+ "false"
+ ]
+ }
+ ],
+ "source": "{http.request.host}"
+ }
+ ]
+ }
+ ]
+ }
+ ],
+ "terminal": true
+ }
+ ]
+ }
+ }
+ }
+ }
+} \ No newline at end of file