diff options
| author | Francis Lavoie <lavofr@gmail.com> | 2022-03-18 17:08:23 -0400 | 
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-03-18 15:08:23 -0600 | 
| commit | c5fffb4ac2631f0b41a8e13b62925b9dc8346cb9 (patch) | |
| tree | c63bee8e93dd3b7b7544e18602a8606c3a38570d /caddytest | |
| parent | dc4d147388547515f77447d594024386b732e7d4 (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.txt | 114 | ||||
| -rw-r--r-- | caddytest/integration/caddyfile_adapt/map_with_raw_types.txt | 107 | 
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  | 
