package extensions import ( "net/http" "net/http/httptest" "os" "path/filepath" "testing" "github.com/mholt/caddy/middleware" ) func TestExtensions(t *testing.T) { rootDir := os.TempDir() // create a temporary page path := filepath.Join(rootDir, "extensions_test.html") _, err := os.Create(path) if err != nil { t.Fatal(err) } defer os.Remove(path) for i, test := range []struct { path string extensions []string expectedURL string }{ {"/extensions_test", []string{".html"}, "/extensions_test.html"}, {"/extensions_test/", []string{".html"}, "/extensions_test/"}, {"/extensions_test", []string{".json"}, "/extensions_test"}, {"/another_test", []string{".html"}, "/another_test"}, } { ex := Ext{ Next: middleware.HandlerFunc(func(w http.ResponseWriter, r *http.Request) (int, error) { return 0, nil }), Root: rootDir, Extensions: test.extensions, } req, err := http.NewRequest("GET", test.path, nil) if err != nil { t.Fatalf("Test %d: Could not create HTTP request: %v", i, err) } rec := httptest.NewRecorder() ex.ServeHTTP(rec, req) if got := req.URL.String(); got != test.expectedURL { t.Fatalf("Test %d: Got unexpected request URL: %q, wanted %q", i, got, test.expectedURL) } } }