diff --git a/config/setup/ext_test.go b/config/setup/ext_test.go index 30cd12a7b..2054b56ae 100644 --- a/config/setup/ext_test.go +++ b/config/setup/ext_test.go @@ -2,7 +2,7 @@ package setup import ( "testing" - + "github.com/mholt/caddy/middleware/extensions" ) @@ -21,11 +21,11 @@ func TestExt(t *testing.T) { handler := mid(emptyNext) myHandler, ok := handler.(extensions.Ext) - + if !ok { t.Fatalf("Expected handler to be type Ext, got: %#v", handler) } - + if myHandler.Extensions[0] != ".html" { t.Errorf("Expected .html in the list of Extensions") } @@ -38,6 +38,39 @@ func TestExt(t *testing.T) { if !sameNext(myHandler.Next, emptyNext) { t.Error("'Next' field of handler was not set properly") } - - + +} + +func TestExtParse(t *testing.T) { + tests := []struct { + inputExts string + shouldErr bool + expectedExts []string + }{ + {`ext .html .htm .php`, false, []string{".html", ".htm", ".php"}}, + {`ext .php .html .xml`, false, []string{".php", ".html", ".xml"}}, + {`ext .txt .php .xml`, false, []string{".txt", ".php", ".xml"}}, + } + for i, test := range tests { + c := newTestController(test.inputExts) + actualExts, err := extParse(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(actualExts) != len(test.expectedExts) { + t.Fatalf("Test %d expected %d rules, but got %d", + i, len(test.expectedExts), len(actualExts)) + } + for j, actualExt := range actualExts { + if actualExt != test.expectedExts[j] { + t.Fatalf("Test %d expected %dth extension to be %s , but got %s", + i, j, test.expectedExts[j], actualExt) + } + } + } + }