mirror of
https://github.com/mickael-kerjean/filestash.git
synced 2025-10-29 00:55:51 +08:00
251 lines
5.5 KiB
Go
251 lines
5.5 KiB
Go
package model
|
|
|
|
import (
|
|
. "github.com/mickael-kerjean/filestash/server/common"
|
|
"io/ioutil"
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
var app *App
|
|
|
|
func init() {
|
|
app = &App{}
|
|
}
|
|
|
|
// func TestWebdav(t *testing.T) {
|
|
// if os.Getenv("WEBDAV_URL") == "" {
|
|
// fmt.Println("- skipped webdav")
|
|
// return
|
|
// }
|
|
// b, err := NewBackend(&App{}, map[string]string{
|
|
// "type": "webdav",
|
|
// "url": os.Getenv("WEBDAV_URL"),
|
|
// })
|
|
// if err != nil {
|
|
// t.Errorf("Can't create WebDav backend")
|
|
// }
|
|
// setup(t, b)
|
|
// suite(t, b)
|
|
// tearDown(t, b)
|
|
// }
|
|
|
|
// func TestFtp(t *testing.T) {
|
|
// if os.Getenv("FTP_USERNAME") == "" || os.Getenv("FTP_PASSWORD") == "" {
|
|
// fmt.Println("- skipped ftp")
|
|
// return
|
|
// }
|
|
// b, err := NewBackend(&App{}, map[string]string{
|
|
// "type": "ftp",
|
|
// "hostname": "127.0.0.1",
|
|
// "username": os.Getenv("FTP_USERNAME"),
|
|
// "password": os.Getenv("FTP_PASSWORD"),
|
|
// })
|
|
// if err != nil {
|
|
// t.Errorf("Can't create FTP backend")
|
|
// }
|
|
// setup(t, b)
|
|
// suite(t, b)
|
|
// tearDown(t, b)
|
|
// b.Rm("/tmp/")
|
|
// }
|
|
|
|
// func TestSFtp(t *testing.T) {
|
|
// if os.Getenv("SFTP_USERNAME") == "" || os.Getenv("SFTP_PASSWORD") == "" {
|
|
// fmt.Println("- skipped sftp")
|
|
// return
|
|
// }
|
|
// b, err := NewBackend(&App{}, map[string]string{
|
|
// "type": "sftp",
|
|
// "hostname": "127.0.0.1",
|
|
// "username": os.Getenv("SFTP_USERNAME"),
|
|
// "password": os.Getenv("SFTP_PASSWORD"),
|
|
// })
|
|
// if err != nil {
|
|
// t.Errorf("Can't create SFTP backend")
|
|
// }
|
|
// setup(t, b)
|
|
// suite(t, b)
|
|
// tearDown(t, b)
|
|
// }
|
|
|
|
// func TestGit(t *testing.T) {
|
|
// if os.Getenv("GIT_USERNAME") == "" || os.Getenv("GIT_PASSWORD") == "" {
|
|
// fmt.Println("- skipped git")
|
|
// return
|
|
// }
|
|
// b, err := NewBackend(app, map[string]string{
|
|
// "type": "git",
|
|
// "repo": "https://github.com/mickael-kerjean/tmp",
|
|
// "username": os.Getenv("GIT_EMAIL"),
|
|
// "password": os.Getenv("GIT_PASSWORD"),
|
|
// })
|
|
// if err != nil {
|
|
// t.Errorf("Can't create Git backend")
|
|
// }
|
|
// setup(t, b)
|
|
// suite(t, b)
|
|
// tearDown(t, b)
|
|
// }
|
|
|
|
// func TestS3(t *testing.T) {
|
|
// b, err := NewBackend(&App{}, map[string]string{
|
|
// "type": "s3",
|
|
// "access_key_id": "Q3AM3UQ867SPQQA43P2F",
|
|
// "secret_access_key": "zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG",
|
|
// "endpoint": "https://play.minio.io:9000/",
|
|
// })
|
|
// if err != nil {
|
|
// t.Errorf("Can't create S3 backend")
|
|
// }
|
|
// setup(t, b)
|
|
// // suite(t, b)
|
|
// //tearDown(t, b)
|
|
// }
|
|
|
|
// func TestDropbox(t *testing.T) {
|
|
// if os.Getenv("DROPBOX_TOKEN") == "" {
|
|
// fmt.Println("- skipped Dropbox")
|
|
// return
|
|
// }
|
|
// b, err := NewBackend(app, map[string]string{
|
|
// "type": "dropbox",
|
|
// "bearer": os.Getenv("DROPBOX_TOKEN"),
|
|
// })
|
|
// if err != nil {
|
|
// t.Errorf("Can't create a Dropbox backend")
|
|
// }
|
|
// setup(t, b)
|
|
// suite(t, b)
|
|
// tearDown(t, b)
|
|
// }
|
|
|
|
// func TestGoogleDrive(t *testing.T) {
|
|
// if os.Getenv("GDRIVE_TOKEN") == "" {
|
|
// fmt.Println("- skipped Google Drive")
|
|
// return
|
|
// }
|
|
// b, err := NewBackend(app, map[string]string{
|
|
// "type": "gdrive",
|
|
// "expiry": "",
|
|
// "token": os.Getenv("GDRIVE_TOKEN"),
|
|
// })
|
|
// if err != nil {
|
|
// t.Errorf("Can't create a Google Drive backend")
|
|
// }
|
|
// setup(t, b)
|
|
// suite(t, b)
|
|
// tearDown(t, b)
|
|
// }
|
|
|
|
func setup(t *testing.T, b IBackend) {
|
|
b.Rm("/tmp/test/")
|
|
b.Mkdir("/tmp/")
|
|
b.Mkdir("/tmp/test/")
|
|
}
|
|
func tearDown(t *testing.T, b IBackend) {
|
|
b.Rm("/tmp/test/")
|
|
}
|
|
|
|
func suite(t *testing.T, b IBackend) {
|
|
// create state
|
|
content := "lorem ipsum"
|
|
b.Mkdir("/tmp/test/trash/")
|
|
b.Touch("/tmp/test/test0.txt")
|
|
b.Save("/tmp/test/test0.txt", strings.NewReader(content))
|
|
b.Save("/tmp/test/test1.txt", strings.NewReader(content))
|
|
b.Touch("/tmp/test/test2.txt")
|
|
b.Mv("/tmp/test/test0.txt", "/tmp/test/trash/test0.txt")
|
|
|
|
// list all files
|
|
tmp0, err := b.Ls("/tmp/test/")
|
|
if err != nil {
|
|
t.Errorf("Ls error: %s", err)
|
|
return
|
|
}
|
|
if len(tmp0) != 3 {
|
|
t.Errorf("LS error: got: %d elmnt, want: %d", len(tmp0), 3)
|
|
return
|
|
}
|
|
|
|
// read file
|
|
tmp1, err := b.Cat("/tmp/test/trash/test0.txt")
|
|
if err != nil {
|
|
t.Errorf("Cat error: %s", err)
|
|
return
|
|
}
|
|
tmp2, err := ioutil.ReadAll(tmp1)
|
|
if err != nil {
|
|
t.Errorf("Cat error: %s", err)
|
|
return
|
|
}
|
|
if string(tmp2) != content {
|
|
t.Errorf("Incorrect file: %s, want: %s.", tmp2, content)
|
|
return
|
|
}
|
|
if obj, ok := tmp1.(interface{ Close() error }); ok {
|
|
obj.Close()
|
|
}
|
|
tmp1, err = b.Cat("/tmp/test/test1.txt")
|
|
if err != nil {
|
|
t.Errorf("Cat error: %s", err)
|
|
return
|
|
}
|
|
tmp2, err = ioutil.ReadAll(tmp1)
|
|
if err != nil {
|
|
t.Errorf("Cat error: %s", err)
|
|
return
|
|
}
|
|
if string(tmp2) != content {
|
|
t.Errorf("Incorrect file: %s, want: %s.", tmp2, content)
|
|
return
|
|
}
|
|
if obj, ok := tmp1.(interface{ Close() error }); ok {
|
|
obj.Close()
|
|
}
|
|
|
|
tmp1, err = b.Cat("/tmp/test/test2.txt")
|
|
if err != nil {
|
|
t.Errorf("Cat error: %s", err)
|
|
return
|
|
}
|
|
tmp2, err = ioutil.ReadAll(tmp1)
|
|
if err != nil {
|
|
t.Errorf("Cat error: %s", err)
|
|
return
|
|
}
|
|
if string(tmp2) != "" {
|
|
t.Errorf("Incorrect file: %s, want: %s.", tmp2, "")
|
|
return
|
|
}
|
|
if obj, ok := tmp1.(interface{ Close() error }); ok {
|
|
obj.Close()
|
|
}
|
|
|
|
// remove file
|
|
b.Rm("/tmp/test/test2.txt")
|
|
tmp0, err = b.Ls("/tmp/test/")
|
|
if len(tmp0) != 2 {
|
|
t.Errorf("Test folder elements, got: %d, want: %d.", len(tmp0), 2)
|
|
return
|
|
}
|
|
|
|
tmp0, err = b.Ls("/tmp/test/")
|
|
if err != nil {
|
|
t.Errorf("Ls error %s", err)
|
|
return
|
|
}
|
|
if len(tmp0) != 2 {
|
|
t.Errorf("LS error: got: %d elmnt, want: %d", len(tmp0), 2)
|
|
return
|
|
}
|
|
|
|
// remove folder
|
|
b.Rm("/tmp/test/")
|
|
tmp0, err = b.Ls("/tmp/test/")
|
|
if err == nil {
|
|
t.Errorf("Removed folder still exists: %d", len(tmp0))
|
|
return
|
|
}
|
|
}
|