Compare commits
1 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
0f74925694 |
78
cmd/gowebdav/main_test.go
Normal file
78
cmd/gowebdav/main_test.go
Normal file
@ -0,0 +1,78 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"context"
|
||||
"flag"
|
||||
"net/http"
|
||||
"net/http/httptest"
|
||||
"os"
|
||||
"testing"
|
||||
|
||||
"golang.org/x/net/webdav"
|
||||
)
|
||||
|
||||
func basicAuth(h http.Handler) http.HandlerFunc {
|
||||
return func(w http.ResponseWriter, r *http.Request) {
|
||||
if user, passwd, ok := r.BasicAuth(); ok {
|
||||
if user == "user" && passwd == "password" {
|
||||
h.ServeHTTP(w, r)
|
||||
return
|
||||
}
|
||||
|
||||
http.Error(w, "not authorized", 403)
|
||||
} else {
|
||||
w.Header().Set("WWW-Authenticate", `Basic realm="x"`)
|
||||
w.WriteHeader(401)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func newServer(t *testing.T) (*httptest.Server, webdav.FileSystem, context.Context) {
|
||||
mux := http.NewServeMux()
|
||||
fs := webdav.NewMemFS()
|
||||
ctx := fillFs(t, fs)
|
||||
mux.HandleFunc("/", basicAuth(&webdav.Handler{
|
||||
FileSystem: fs,
|
||||
LockSystem: webdav.NewMemLS(),
|
||||
}))
|
||||
srv := httptest.NewServer(mux)
|
||||
os.Setenv("ROOT", srv.URL)
|
||||
os.Setenv("USER", "user")
|
||||
os.Setenv("PASSWORD", "password")
|
||||
return srv, fs, ctx
|
||||
}
|
||||
|
||||
func fillFs(t *testing.T, fs webdav.FileSystem) context.Context {
|
||||
ctx := context.Background()
|
||||
f, err := fs.OpenFile(ctx, "hello.txt", os.O_CREATE, 0644)
|
||||
if err != nil {
|
||||
t.Errorf("fail to crate file: %v", err)
|
||||
}
|
||||
f.Write([]byte("hello gowebdav\n"))
|
||||
f.Close()
|
||||
err = fs.Mkdir(ctx, "/test", 0755)
|
||||
if err != nil {
|
||||
t.Errorf("fail to crate directory: %v", err)
|
||||
}
|
||||
f, err = fs.OpenFile(ctx, "/test/test.txt", os.O_CREATE, 0644)
|
||||
if err != nil {
|
||||
t.Errorf("fail to crate file: %v", err)
|
||||
}
|
||||
f.Write([]byte("test test gowebdav\n"))
|
||||
f.Close()
|
||||
return ctx
|
||||
}
|
||||
|
||||
func TestLs(t *testing.T) {
|
||||
oldArgs := os.Args
|
||||
defer func() { os.Args = oldArgs }()
|
||||
|
||||
srv, _, _ := newServer(t)
|
||||
|
||||
defer srv.Close()
|
||||
|
||||
flag.CommandLine = flag.NewFlagSet("ls", flag.ExitOnError)
|
||||
|
||||
os.Args = []string{"ls", "-X", "ls", "/"}
|
||||
main()
|
||||
}
|
Loading…
Reference in New Issue
Block a user