mirror of
https://github.com/pldubouilh/gossa.git
synced 2026-09-02 23:27:39 -04:00
prefixed ui + refactor
This commit is contained in:
+36
-23
@@ -8,6 +8,7 @@ import (
|
||||
"regexp"
|
||||
"strings"
|
||||
"testing"
|
||||
"time"
|
||||
)
|
||||
|
||||
func dieMaybe(t *testing.T, err error) {
|
||||
@@ -29,10 +30,10 @@ func get(t *testing.T, url string) string {
|
||||
return trimSpaces(string(body))
|
||||
}
|
||||
|
||||
func postDummyFile(t *testing.T, path string, payload string) string {
|
||||
func postDummyFile(t *testing.T, url string, path string, payload string) string {
|
||||
// Generated by curl-to-Go: https://mholt.github.io/curl-to-go
|
||||
body := strings.NewReader("------WebKitFormBoundarycCRIderiXxJWEUcU\r\nContent-Disposition: form-data; name=\"\u1112\u1161 \u1112\u1161\"; filename=\"\u1112\u1161 \u1112\u1161\"\r\nContent-Type: application/octet-stream\r\n\r\n" + payload)
|
||||
req, err := http.NewRequest("POST", "http://127.0.0.1:8001/post", body)
|
||||
req, err := http.NewRequest("POST", url+"post", body)
|
||||
dieMaybe(t, err)
|
||||
req.Header.Set("Content-Type", "multipart/form-data; boundary=----WebKitFormBoundarycCRIderiXxJWEUcU")
|
||||
req.Header.Set("Gossa-Path", path)
|
||||
@@ -83,54 +84,54 @@ func fetchAndTestDefault(t *testing.T, url string) string {
|
||||
return bodyStr
|
||||
}
|
||||
|
||||
func TestGetFolder(t *testing.T) {
|
||||
func doTest(t *testing.T, url string) {
|
||||
payload := ""
|
||||
path := ""
|
||||
bodyStr := ""
|
||||
|
||||
// ~~~~~~~~~~~~~~~~~
|
||||
fmt.Println("\r\n~~~~~~~~~~ test fetching default path")
|
||||
fetchAndTestDefault(t, "http://127.0.0.1:8001/")
|
||||
fetchAndTestDefault(t, url)
|
||||
|
||||
// ~~~~~~~~~~~~~~~~~
|
||||
fmt.Println("\r\n~~~~~~~~~~ test fetching an invalid path - redirected to root")
|
||||
fetchAndTestDefault(t, "http://127.0.0.1:8001/../../")
|
||||
fetchAndTestDefault(t, "http://127.0.0.1:8001/hols/../../")
|
||||
fetchAndTestDefault(t, url+"../../")
|
||||
fetchAndTestDefault(t, url+"hols/../../")
|
||||
|
||||
// ~~~~~~~~~~~~~~~~~
|
||||
fmt.Println("\r\n~~~~~~~~~~ test fetching a regular file")
|
||||
bodyStr = get(t, "http://127.0.0.1:8001/subdir_with%20space/file_with%20space.html")
|
||||
bodyStr = get(t, url+"subdir_with%20space/file_with%20space.html")
|
||||
if !strings.Contains(bodyStr, `<b>spacious!!</b>`) {
|
||||
t.Fatal("fetching a regular file errored")
|
||||
}
|
||||
|
||||
// ~~~~~~~~~~~~~~~~~
|
||||
fmt.Println("\r\n~~~~~~~~~~ test fetching a invalid file")
|
||||
bodyStr = get(t, "http://127.0.0.1:8001/../../../../../../../../../../etc/passwd")
|
||||
bodyStr = get(t, url+"../../../../../../../../../../etc/passwd")
|
||||
if !strings.Contains(bodyStr, `error`) {
|
||||
t.Fatal("fetching a invalid file didnt errored")
|
||||
}
|
||||
|
||||
// ~~~~~~~~~~~~~~~~~
|
||||
fmt.Println("\r\n~~~~~~~~~~ test mkdir rpc")
|
||||
bodyStr = postJSON(t, "http://127.0.0.1:8001/rpc", `{"call":"mkdirp","args":["/AAA"]}`)
|
||||
bodyStr = postJSON(t, url+"rpc", `{"call":"mkdirp","args":["/AAA"]}`)
|
||||
if !strings.Contains(bodyStr, `ok`) {
|
||||
t.Fatal("mkdir rpc errored")
|
||||
}
|
||||
|
||||
bodyStr = fetchAndTestDefault(t, "http://127.0.0.1:8001/")
|
||||
bodyStr = fetchAndTestDefault(t, url)
|
||||
if !strings.Contains(bodyStr, `href="AAA">AAA/</a>`) {
|
||||
t.Fatal("mkdir rpc folder not created")
|
||||
}
|
||||
|
||||
// ~~~~~~~~~~~~~~~~~
|
||||
fmt.Println("\r\n~~~~~~~~~~ test invalid mkdir rpc")
|
||||
bodyStr = postJSON(t, "http://127.0.0.1:8001/rpc", `{"call":"mkdirp","args":["../BBB"]}`)
|
||||
bodyStr = postJSON(t, url+"rpc", `{"call":"mkdirp","args":["../BBB"]}`)
|
||||
if !strings.Contains(bodyStr, `error`) {
|
||||
t.Fatal("invalid mkdir rpc didnt errored #0")
|
||||
}
|
||||
|
||||
bodyStr = postJSON(t, "http://127.0.0.1:8001/rpc", `{"call":"mkdirp","args":["/../BBB"]}`)
|
||||
bodyStr = postJSON(t, url+"rpc", `{"call":"mkdirp","args":["/../BBB"]}`)
|
||||
if !strings.Contains(bodyStr, `error`) {
|
||||
t.Fatal("invalid mkdir rpc didnt errored #1")
|
||||
}
|
||||
@@ -139,36 +140,36 @@ func TestGetFolder(t *testing.T) {
|
||||
fmt.Println("\r\n~~~~~~~~~~ test post file")
|
||||
path = "%2F%E1%84%92%E1%85%A1%20%E1%84%92%E1%85%A1" // "하 하" encoded
|
||||
payload = "123 하"
|
||||
bodyStr = postDummyFile(t, path, payload)
|
||||
bodyStr = postDummyFile(t, url, path, payload)
|
||||
if !strings.Contains(bodyStr, `ok`) {
|
||||
t.Fatal("post file errored")
|
||||
}
|
||||
|
||||
bodyStr = get(t, "http://127.0.0.1:8001/"+path)
|
||||
bodyStr = get(t, url+path)
|
||||
if !strings.Contains(bodyStr, payload) {
|
||||
t.Fatal("post file errored reaching new file")
|
||||
}
|
||||
|
||||
bodyStr = fetchAndTestDefault(t, "http://127.0.0.1:8001/")
|
||||
bodyStr = fetchAndTestDefault(t, url)
|
||||
if !strings.Contains(bodyStr, `href="%E1%84%92%E1%85%A1%20%E1%84%92%E1%85%A1">하 하</a>`) {
|
||||
t.Fatal("post file errored checking new file row")
|
||||
}
|
||||
|
||||
// ~~~~~~~~~~~~~~~~~
|
||||
fmt.Println("\r\n~~~~~~~~~~ test post file incorrect path")
|
||||
bodyStr = postDummyFile(t, "%2E%2E"+path, payload)
|
||||
bodyStr = postDummyFile(t, url, "%2E%2E"+path, payload)
|
||||
if !strings.Contains(bodyStr, `err`) {
|
||||
t.Fatal("post file incorrect path didnt errored")
|
||||
}
|
||||
|
||||
// ~~~~~~~~~~~~~~~~~
|
||||
fmt.Println("\r\n~~~~~~~~~~ test mv rpc")
|
||||
bodyStr = postJSON(t, "http://127.0.0.1:8001/rpc", `{"call":"mv","args":["/AAA", "/hols/AAA"]}`)
|
||||
bodyStr = postJSON(t, url+"rpc", `{"call":"mv","args":["/AAA", "/hols/AAA"]}`)
|
||||
if !strings.Contains(bodyStr, `ok`) {
|
||||
t.Fatal("mv rpc errored")
|
||||
}
|
||||
|
||||
bodyStr = fetchAndTestDefault(t, "http://127.0.0.1:8001/")
|
||||
bodyStr = fetchAndTestDefault(t, url)
|
||||
if strings.Contains(bodyStr, `href="AAA">AAA/</a></td> </tr>`) {
|
||||
t.Fatal("mv rpc folder not moved")
|
||||
}
|
||||
@@ -176,30 +177,42 @@ func TestGetFolder(t *testing.T) {
|
||||
// ~~~~~~~~~~~~~~~~~
|
||||
fmt.Println("\r\n~~~~~~~~~~ test upload in new folder")
|
||||
payload = "abcdef1234"
|
||||
bodyStr = postDummyFile(t, "%2Fhols%2FAAA%2Fabcdef", payload)
|
||||
bodyStr = postDummyFile(t, url, "%2Fhols%2FAAA%2Fabcdef", payload)
|
||||
if strings.Contains(bodyStr, `err`) {
|
||||
t.Fatal("upload in new folder errored")
|
||||
}
|
||||
|
||||
bodyStr = get(t, "http://127.0.0.1:8001/hols/AAA/abcdef")
|
||||
bodyStr = get(t, url+"hols/AAA/abcdef")
|
||||
if !strings.Contains(bodyStr, payload) {
|
||||
t.Fatal("upload in new folder error reaching new file")
|
||||
}
|
||||
|
||||
// ~~~~~~~~~~~~~~~~~
|
||||
fmt.Println("\r\n~~~~~~~~~~ test rm rpc & cleanup")
|
||||
bodyStr = postJSON(t, "http://127.0.0.1:8001/rpc", `{"call":"rm","args":["/hols/AAA"]}`)
|
||||
bodyStr = postJSON(t, url+"rpc", `{"call":"rm","args":["/hols/AAA"]}`)
|
||||
if !strings.Contains(bodyStr, `ok`) {
|
||||
t.Fatal("cleanup errored #0")
|
||||
}
|
||||
|
||||
bodyStr = get(t, "http://127.0.0.1:8001/hols/AAA")
|
||||
bodyStr = get(t, url+"hols/AAA")
|
||||
if !strings.Contains(bodyStr, `error`) {
|
||||
t.Fatal("cleanup errored #1")
|
||||
}
|
||||
|
||||
bodyStr = postJSON(t, "http://127.0.0.1:8001/rpc", `{"call":"rm","args":["/하 하"]}`)
|
||||
bodyStr = postJSON(t, url+"rpc", `{"call":"rm","args":["/하 하"]}`)
|
||||
if !strings.Contains(bodyStr, `ok`) {
|
||||
t.Fatal("cleanup errored #2")
|
||||
}
|
||||
|
||||
fmt.Println("\r\n\r\n\r\n=========")
|
||||
}
|
||||
func TestGetFolder(t *testing.T) {
|
||||
time.Sleep(6 * time.Second)
|
||||
fmt.Println("========== testing normal path ============")
|
||||
doTest(t, "http://127.0.0.1:8001/")
|
||||
|
||||
time.Sleep(10 * time.Second)
|
||||
fancyPath := "/fancy-path/"
|
||||
fmt.Println("========== testing at " + fancyPath + " path ============")
|
||||
doTest(t, "http://127.0.0.1:8001"+fancyPath)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user