caddy/middleware/extensions/ext_test.go
2015-11-10 16:04:02 -07:00

57 lines
1.3 KiB
Go

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"},
{"", []string{".html"}, ""},
} {
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)
}
}
}