2015-07-11 02:05:06 +08:00
|
|
|
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"},
|
2015-11-11 07:04:02 +08:00
|
|
|
{"", []string{".html"}, ""},
|
2015-07-11 02:05:06 +08:00
|
|
|
} {
|
|
|
|
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)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|