mirror of
https://github.com/caddyserver/caddy.git
synced 2025-11-18 20:43:23 -05:00
Merged config and app packages into one called caddy. Abstracted away caddy startup functionality making it easier to embed Caddy in any Go application and use it as a library. Graceful restart (should) now ensure child starts properly. Now piping a gob bundle to child process so that the child can match up inherited listeners to server address. Much cleanup still to do.
108 lines
3.1 KiB
Go
108 lines
3.1 KiB
Go
package setup
|
|
|
|
import (
|
|
"fmt"
|
|
"github.com/mholt/caddy/middleware/fastcgi"
|
|
"testing"
|
|
)
|
|
|
|
func TestFastCGI(t *testing.T) {
|
|
|
|
c := NewTestController(`fastcgi / 127.0.0.1:9000`)
|
|
|
|
mid, err := FastCGI(c)
|
|
|
|
if err != nil {
|
|
t.Errorf("Expected no errors, got: %v", err)
|
|
}
|
|
|
|
if mid == nil {
|
|
t.Fatal("Expected middleware, was nil instead")
|
|
}
|
|
|
|
handler := mid(EmptyNext)
|
|
myHandler, ok := handler.(fastcgi.Handler)
|
|
|
|
if !ok {
|
|
t.Fatalf("Expected handler to be type , got: %#v", handler)
|
|
}
|
|
|
|
if myHandler.Rules[0].Path != "/" {
|
|
t.Errorf("Expected / as the Path")
|
|
}
|
|
if myHandler.Rules[0].Address != "127.0.0.1:9000" {
|
|
t.Errorf("Expected 127.0.0.1:9000 as the Address")
|
|
}
|
|
|
|
}
|
|
|
|
func TestFastcgiParse(t *testing.T) {
|
|
tests := []struct {
|
|
inputFastcgiConfig string
|
|
shouldErr bool
|
|
expectedFastcgiConfig []fastcgi.Rule
|
|
}{
|
|
|
|
{`fastcgi /blog 127.0.0.1:9000 php`,
|
|
false, []fastcgi.Rule{{
|
|
Path: "/blog",
|
|
Address: "127.0.0.1:9000",
|
|
Ext: ".php",
|
|
SplitPath: ".php",
|
|
IndexFiles: []string{"index.php"},
|
|
}}},
|
|
{`fastcgi / 127.0.0.1:9001 {
|
|
split .html
|
|
}`,
|
|
false, []fastcgi.Rule{{
|
|
Path: "/",
|
|
Address: "127.0.0.1:9001",
|
|
Ext: "",
|
|
SplitPath: ".html",
|
|
IndexFiles: []string{},
|
|
}}},
|
|
}
|
|
for i, test := range tests {
|
|
c := NewTestController(test.inputFastcgiConfig)
|
|
actualFastcgiConfigs, err := fastcgiParse(c)
|
|
|
|
if err == nil && test.shouldErr {
|
|
t.Errorf("Test %d didn't error, but it should have", i)
|
|
} else if err != nil && !test.shouldErr {
|
|
t.Errorf("Test %d errored, but it shouldn't have; got '%v'", i, err)
|
|
}
|
|
if len(actualFastcgiConfigs) != len(test.expectedFastcgiConfig) {
|
|
t.Fatalf("Test %d expected %d no of FastCGI configs, but got %d ",
|
|
i, len(test.expectedFastcgiConfig), len(actualFastcgiConfigs))
|
|
}
|
|
for j, actualFastcgiConfig := range actualFastcgiConfigs {
|
|
|
|
if actualFastcgiConfig.Path != test.expectedFastcgiConfig[j].Path {
|
|
t.Errorf("Test %d expected %dth FastCGI Path to be %s , but got %s",
|
|
i, j, test.expectedFastcgiConfig[j].Path, actualFastcgiConfig.Path)
|
|
}
|
|
|
|
if actualFastcgiConfig.Address != test.expectedFastcgiConfig[j].Address {
|
|
t.Errorf("Test %d expected %dth FastCGI Address to be %s , but got %s",
|
|
i, j, test.expectedFastcgiConfig[j].Address, actualFastcgiConfig.Address)
|
|
}
|
|
|
|
if actualFastcgiConfig.Ext != test.expectedFastcgiConfig[j].Ext {
|
|
t.Errorf("Test %d expected %dth FastCGI Ext to be %s , but got %s",
|
|
i, j, test.expectedFastcgiConfig[j].Ext, actualFastcgiConfig.Ext)
|
|
}
|
|
|
|
if actualFastcgiConfig.SplitPath != test.expectedFastcgiConfig[j].SplitPath {
|
|
t.Errorf("Test %d expected %dth FastCGI SplitPath to be %s , but got %s",
|
|
i, j, test.expectedFastcgiConfig[j].SplitPath, actualFastcgiConfig.SplitPath)
|
|
}
|
|
|
|
if fmt.Sprint(actualFastcgiConfig.IndexFiles) != fmt.Sprint(test.expectedFastcgiConfig[j].IndexFiles) {
|
|
t.Errorf("Test %d expected %dth FastCGI IndexFiles to be %s , but got %s",
|
|
i, j, test.expectedFastcgiConfig[j].IndexFiles, actualFastcgiConfig.IndexFiles)
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|