summaryrefslogtreecommitdiff
path: root/caddytest/integration/caddyfile_adapt_test.go
diff options
context:
space:
mode:
authorFrancis Lavoie <lavofr@gmail.com>2020-05-14 17:53:28 -0400
committerGitHub <noreply@github.com>2020-05-14 17:53:28 -0400
commitbde3823b76b457a933e684cd096ca84fc6378997 (patch)
tree13310a50f98a15ac1a15ddcec9746eab87d057ae /caddytest/integration/caddyfile_adapt_test.go
parent4df56c77e380cdfec5e23862f7faa8bd843022e6 (diff)
caddytest: Refactor Caddyfile adapt tests to separate files (#3398)
Diffstat (limited to 'caddytest/integration/caddyfile_adapt_test.go')
-rw-r--r--caddytest/integration/caddyfile_adapt_test.go594
1 files changed, 27 insertions, 567 deletions
diff --git a/caddytest/integration/caddyfile_adapt_test.go b/caddytest/integration/caddyfile_adapt_test.go
index 280e22e..bfe22ad 100644
--- a/caddytest/integration/caddyfile_adapt_test.go
+++ b/caddytest/integration/caddyfile_adapt_test.go
@@ -1,587 +1,47 @@
package integration
import (
+ "io/ioutil"
+ "regexp"
+ "strings"
"testing"
"github.com/caddyserver/caddy/v2/caddytest"
)
-func TestHttpOnlyOnLocalhost(t *testing.T) {
- caddytest.AssertAdapt(t, `
- localhost:80 {
- respond /version 200 {
- body "hello from localhost"
- }
- }
- `, "caddyfile", `{
- "apps": {
- "http": {
- "servers": {
- "srv0": {
- "listen": [
- ":80"
- ],
- "routes": [
- {
- "match": [
- {
- "host": [
- "localhost"
- ]
- }
- ],
- "handle": [
- {
- "handler": "subroute",
- "routes": [
- {
- "handle": [
- {
- "body": "hello from localhost",
- "handler": "static_response",
- "status_code": 200
- }
- ],
- "match": [
- {
- "path": [
- "/version"
- ]
- }
- ]
- }
- ]
- }
- ],
- "terminal": true
- }
- ]
- }
- }
- }
+func TestCaddyfileAdaptToJSON(t *testing.T) {
+ // load the list of test files from the dir
+ files, err := ioutil.ReadDir("./caddyfile_adapt")
+ if err != nil {
+ t.Errorf("failed to read caddyfile_adapt dir: %s", err)
}
-}`)
-}
-func TestHttpOnlyOnAnyAddress(t *testing.T) {
- caddytest.AssertAdapt(t, `
- :80 {
- respond /version 200 {
- body "hello from localhost"
- }
- }
- `, "caddyfile", `{
- "apps": {
- "http": {
- "servers": {
- "srv0": {
- "listen": [
- ":80"
- ],
- "routes": [
- {
- "match": [
- {
- "path": [
- "/version"
- ]
- }
- ],
- "handle": [
- {
- "body": "hello from localhost",
- "handler": "static_response",
- "status_code": 200
- }
- ]
- }
- ]
- }
- }
- }
- }
-}`)
-}
+ // prep a regexp to fix strings on windows
+ winNewlines := regexp.MustCompile(`\r?\n`)
-func TestHttpsOnDomain(t *testing.T) {
- caddytest.AssertAdapt(t, `
- a.caddy.localhost {
- respond /version 200 {
- body "hello from localhost"
- }
- }
- `, "caddyfile", `{
- "apps": {
- "http": {
- "servers": {
- "srv0": {
- "listen": [
- ":443"
- ],
- "routes": [
- {
- "match": [
- {
- "host": [
- "a.caddy.localhost"
- ]
- }
- ],
- "handle": [
- {
- "handler": "subroute",
- "routes": [
- {
- "handle": [
- {
- "body": "hello from localhost",
- "handler": "static_response",
- "status_code": 200
- }
- ],
- "match": [
- {
- "path": [
- "/version"
- ]
- }
- ]
- }
- ]
- }
- ],
- "terminal": true
- }
- ]
- }
- }
+ for _, f := range files {
+ if f.IsDir() {
+ continue
}
- }
-}`)
-}
-func TestHttpOnlyOnDomain(t *testing.T) {
- caddytest.AssertAdapt(t, `
- http://a.caddy.localhost {
- respond /version 200 {
- body "hello from localhost"
+ // read the test file
+ filename := f.Name()
+ data, err := ioutil.ReadFile("./caddyfile_adapt/" + filename)
+ if err != nil {
+ t.Errorf("failed to read %s dir: %s", filename, err)
}
- }
- `, "caddyfile", `{
- "apps": {
- "http": {
- "servers": {
- "srv0": {
- "listen": [
- ":80"
- ],
- "routes": [
- {
- "match": [
- {
- "host": [
- "a.caddy.localhost"
- ]
- }
- ],
- "handle": [
- {
- "handler": "subroute",
- "routes": [
- {
- "handle": [
- {
- "body": "hello from localhost",
- "handler": "static_response",
- "status_code": 200
- }
- ],
- "match": [
- {
- "path": [
- "/version"
- ]
- }
- ]
- }
- ]
- }
- ],
- "terminal": true
- }
- ],
- "automatic_https": {
- "skip": [
- "a.caddy.localhost"
- ]
- }
- }
- }
- }
- }
-}`)
-}
-func TestHttpOnlyOnNonStandardPort(t *testing.T) {
- caddytest.AssertAdapt(t, `
- http://a.caddy.localhost:81 {
- respond /version 200 {
- body "hello from localhost"
- }
- }
- `, "caddyfile", `{
- "apps": {
- "http": {
- "servers": {
- "srv0": {
- "listen": [
- ":81"
- ],
- "routes": [
- {
- "match": [
- {
- "host": [
- "a.caddy.localhost"
- ]
- }
- ],
- "handle": [
- {
- "handler": "subroute",
- "routes": [
- {
- "handle": [
- {
- "body": "hello from localhost",
- "handler": "static_response",
- "status_code": 200
- }
- ],
- "match": [
- {
- "path": [
- "/version"
- ]
- }
- ]
- }
- ]
- }
- ],
- "terminal": true
- }
- ],
- "automatic_https": {
- "skip": [
- "a.caddy.localhost"
- ]
- }
- }
- }
- }
- }
-}`)
-}
-
-func TestMatcherSyntax(t *testing.T) {
- caddytest.AssertAdapt(t, `
- :80 {
- @matcher {
- method GET
- }
- respond @matcher "get"
+ // split the Caddyfile (first) and JSON (second) parts
+ parts := strings.Split(string(data), "----------")
+ caddyfile, json := strings.TrimSpace(parts[0]), strings.TrimSpace(parts[1])
- @matcher2 method POST
- respond @matcher2 "post"
-
- @matcher3 not method PUT
- respond @matcher3 "not put"
- }
- `, "caddyfile", `{
- "apps": {
- "http": {
- "servers": {
- "srv0": {
- "listen": [
- ":80"
- ],
- "routes": [
- {
- "match": [
- {
- "method": [
- "GET"
- ]
- }
- ],
- "handle": [
- {
- "body": "get",
- "handler": "static_response"
- }
- ]
- },
- {
- "match": [
- {
- "method": [
- "POST"
- ]
- }
- ],
- "handle": [
- {
- "body": "post",
- "handler": "static_response"
- }
- ]
- },
- {
- "match": [
- {
- "not": [
- {
- "method": [
- "PUT"
- ]
- }
- ]
- }
- ],
- "handle": [
- {
- "body": "not put",
- "handler": "static_response"
- }
- ]
- }
- ]
- }
- }
- }
- }
-}`)
-}
-
-func TestNotBlockMerging(t *testing.T) {
- caddytest.AssertAdapt(t, `
- :80
-
- @test {
- not {
- header Abc "123"
- header Bcd "123"
- }
- }
- respond @test 403
- `, "caddyfile", `{
- "apps": {
- "http": {
- "servers": {
- "srv0": {
- "listen": [
- ":80"
- ],
- "routes": [
- {
- "match": [
- {
- "not": [
- {
- "header": {
- "Abc": [
- "123"
- ],
- "Bcd": [
- "123"
- ]
- }
- }
- ]
- }
- ],
- "handle": [
- {
- "handler": "static_response",
- "status_code": 403
- }
- ]
- }
- ]
- }
- }
- }
- }
-}`)
-}
-
-func TestGlobalOptions(t *testing.T) {
- caddytest.AssertAdapt(t, `
- {
- debug
- http_port 8080
- https_port 8443
- default_sni localhost
- order root first
- storage file_system {
- root /data
- }
- acme_ca https://example.com
- acme_ca_root /path/to/ca.crt
- email test@example.com
- admin off
- on_demand_tls {
- ask https://example.com
- interval 30s
- burst 20
- }
- local_certs
- key_type ed25519
- }
-
- :80
- `, "caddyfile", `{
- "admin": {
- "disabled": true
- },
- "logging": {
- "logs": {
- "default": {
- "level": "DEBUG"
- }
- }
- },
- "storage": {
- "module": "file_system",
- "root": "/data"
- },
- "apps": {
- "http": {
- "http_port": 8080,
- "https_port": 8443,
- "servers": {
- "srv0": {
- "listen": [
- ":80"
- ]
- }
- }
- },
- "tls": {
- "automation": {
- "policies": [
- {
- "issuer": {
- "module": "internal"
- }
- }
- ],
- "on_demand": {
- "rate_limit": {
- "interval": 30000000000,
- "burst": 20
- },
- "ask": "https://example.com"
- }
- }
- }
- }
-}`)
-}
-
-func TestLogRollDays(t *testing.T) {
- caddytest.AssertAdapt(t, `
- :80
-
- log {
- output file /var/log/access.log {
- roll_size 1gb
- roll_keep 5
- roll_keep_for 90d
- }
- }
- `, "caddyfile", `{
- "logging": {
- "logs": {
- "default": {
- "exclude": [
- "http.log.access.log0"
- ]
- },
- "log0": {
- "writer": {
- "filename": "/var/log/access.log",
- "output": "file",
- "roll_keep": 5,
- "roll_keep_days": 90,
- "roll_size_mb": 954
- },
- "include": [
- "http.log.access.log0"
- ]
- }
- }
- },
- "apps": {
- "http": {
- "servers": {
- "srv0": {
- "listen": [
- ":80"
- ],
- "logs": {
- "default_logger_name": "log0"
- }
- }
- }
- }
- }
-}`)
-}
+ // replace windows newlines in the json with unix newlines
+ json = winNewlines.ReplaceAllString(json, "\n")
-func TestShorthandParameterizedPlaceholders(t *testing.T) {
- caddytest.AssertAdapt(t, `
- localhost:80
- respond * "{header.content-type} {labels.0} {query.p} {path.0} {re.name.0}"
- `, "caddyfile", `{
- "apps": {
- "http": {
- "servers": {
- "srv0": {
- "listen": [
- ":80"
- ],
- "routes": [
- {
- "match": [
- {
- "host": [
- "localhost"
- ]
- }
- ],
- "handle": [
- {
- "handler": "subroute",
- "routes": [
- {
- "handle": [
- {
- "body": "{http.request.header.content-type} {http.request.host.labels.0} {http.request.uri.query.p} {http.request.uri.path.0} {http.regexp.name.0}",
- "handler": "static_response"
- }
- ]
- }
- ]
- }
- ],
- "terminal": true
- }
- ]
- }
- }
+ // run the test
+ ok := caddytest.CompareAdapt(t, caddyfile, "caddyfile", json)
+ if !ok {
+ t.Errorf("failed to adapt %s", filename)
}
}
-}`)
}