diff --git a/config/setup/fastcgi_test.go b/config/setup/fastcgi_test.go index a0643e30c..f32f84d3d 100644 --- a/config/setup/fastcgi_test.go +++ b/config/setup/fastcgi_test.go @@ -1,6 +1,7 @@ package setup import ( + "fmt" "github.com/mholt/caddy/middleware/fastcgi" "testing" ) @@ -34,3 +35,63 @@ func TestFastCGI(t *testing.T) { } } + +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"}, + }}}, + } + 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) + } + } + } + +}