mirror of
https://github.com/caddyserver/caddy.git
synced 2025-06-22 23:12:24 -04:00
92 lines
1.9 KiB
Go
92 lines
1.9 KiB
Go
package caddyfile
|
|
|
|
import "testing"
|
|
|
|
var tests = []struct {
|
|
caddyfile, json string
|
|
}{
|
|
{ // 0
|
|
caddyfile: `foo {
|
|
root /bar
|
|
}`,
|
|
json: `[{"hosts":["foo"],"body":{"root":["/bar"]}}]`,
|
|
},
|
|
{ // 1
|
|
caddyfile: `host1, host2 {
|
|
dir {
|
|
def
|
|
}
|
|
}`,
|
|
json: `[{"hosts":["host1","host2"],"body":{"dir":[{"def":null}]}}]`,
|
|
},
|
|
{ // 2
|
|
caddyfile: `host1, host2 {
|
|
dir abc {
|
|
def ghi
|
|
}
|
|
}`,
|
|
json: `[{"hosts":["host1","host2"],"body":{"dir":["abc",{"def":["ghi"]}]}}]`,
|
|
},
|
|
{ // 3
|
|
caddyfile: `host1:1234, host2:5678 {
|
|
dir abc {
|
|
}
|
|
}`,
|
|
json: `[{"hosts":["host1:1234","host2:5678"],"body":{"dir":["abc",{}]}}]`,
|
|
},
|
|
{ // 4
|
|
caddyfile: `host {
|
|
foo "bar baz"
|
|
}`,
|
|
json: `[{"hosts":["host"],"body":{"foo":["bar baz"]}}]`,
|
|
},
|
|
{ // 5
|
|
caddyfile: `host, host:80 {
|
|
foo "bar \"baz\""
|
|
}`,
|
|
json: `[{"hosts":["host","host:80"],"body":{"foo":["bar \"baz\""]}}]`,
|
|
},
|
|
{ // 6
|
|
caddyfile: `host {
|
|
foo "bar
|
|
baz"
|
|
}`,
|
|
json: `[{"hosts":["host"],"body":{"foo":["bar\nbaz"]}}]`,
|
|
},
|
|
{ // 7
|
|
caddyfile: `host {
|
|
dir 123 4.56 true
|
|
}`,
|
|
json: `[{"hosts":["host"],"body":{"dir":["123","4.56","true"]}}]`, // NOTE: I guess we assume numbers and booleans should be encoded as strings...?
|
|
},
|
|
{ // 8
|
|
caddyfile: `http://host, https://host {
|
|
}`,
|
|
json: `[{"hosts":["host:http","host:https"],"body":{}}]`, // hosts in JSON are always host:port format (if port is specified)
|
|
},
|
|
}
|
|
|
|
func TestToJSON(t *testing.T) {
|
|
for i, test := range tests {
|
|
output, err := ToJSON([]byte(test.caddyfile))
|
|
if err != nil {
|
|
t.Errorf("Test %d: %v", i, err)
|
|
}
|
|
if string(output) != test.json {
|
|
t.Errorf("Test %d\nExpected:\n'%s'\nActual:\n'%s'", i, test.json, string(output))
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestFromJSON(t *testing.T) {
|
|
for i, test := range tests {
|
|
output, err := FromJSON([]byte(test.json))
|
|
if err != nil {
|
|
t.Errorf("Test %d: %v", i, err)
|
|
}
|
|
if string(output) != test.caddyfile {
|
|
t.Errorf("Test %d\nExpected:\n'%s'\nActual:\n'%s'", i, test.caddyfile, string(output))
|
|
}
|
|
}
|
|
}
|