tests & bump ui

This commit is contained in:
Pierre Dubouilh
2019-09-12 21:23:07 +02:00
parent beac60f3d8
commit d913176daa
2 changed files with 64 additions and 82 deletions
+63 -81
View File
@@ -55,39 +55,37 @@ func postJSON(t *testing.T, url string, what string) string {
} }
func fetchAndTestDefault(t *testing.T, url string) string { func fetchAndTestDefault(t *testing.T, url string) string {
bodyStr := get(t, url) body0 := get(t, url)
if !strings.Contains(bodyStr, `<title>/</title>`) { if !strings.Contains(body0, `<title>/</title>`) {
t.Fatal("error title") t.Fatal("error title")
} }
if !strings.Contains(bodyStr, `<h1>./</h1>`) { if !strings.Contains(body0, `<h1>./</h1>`) {
t.Fatal("error header") t.Fatal("error header")
} }
if !strings.Contains(bodyStr, `href="hols">hols/</a>`) { if !strings.Contains(body0, `href="hols">hols/</a>`) {
t.Fatal("error hols folder") t.Fatal("error hols folder")
} }
if !strings.Contains(bodyStr, `href="curimit@gmail.com%20%2840%25%29">curimit@gmail.com (40%)/</a>`) { if !strings.Contains(body0, `href="curimit@gmail.com%20%2840%25%29">curimit@gmail.com (40%)/</a>`) {
t.Fatal("error curimit@gmail.com (40%) folder") t.Fatal("error curimit@gmail.com (40%) folder")
} }
if !strings.Contains(bodyStr, `href="%E4%B8%AD%E6%96%87">中文/</a>`) { if !strings.Contains(body0, `href="%E4%B8%AD%E6%96%87">中文/</a>`) {
t.Fatal("error 中文 folder") t.Fatal("error 中文 folder")
} }
if !strings.Contains(bodyStr, `href="custom_mime_type.types">custom_mime_type.types</a>`) { if !strings.Contains(body0, `href="custom_mime_type.types">custom_mime_type.types</a>`) {
t.Fatal("error row custom_mime_type") t.Fatal("error row custom_mime_type")
} }
return bodyStr return body0
} }
func doTest(t *testing.T, url string, testExtra bool) { func doTest(t *testing.T, url string, testExtra bool) {
payload := "" var payload, path, body0, body1, body2 string
path := ""
bodyStr := ""
// ~~~~~~~~~~~~~~~~~ // ~~~~~~~~~~~~~~~~~
fmt.Println("\r\n~~~~~~~~~~ test fetching default path") fmt.Println("\r\n~~~~~~~~~~ test fetching default path")
@@ -100,40 +98,42 @@ func doTest(t *testing.T, url string, testExtra bool) {
// ~~~~~~~~~~~~~~~~~ // ~~~~~~~~~~~~~~~~~
fmt.Println("\r\n~~~~~~~~~~ test fetching regular files") fmt.Println("\r\n~~~~~~~~~~ test fetching regular files")
bodyStr = get(t, url+"subdir_with%20space/file_with%20space.html") body0 = get(t, url+"subdir_with%20space/file_with%20space.html")
bodyStr2 := get(t, url+"fancy-path/a") body1 = get(t, url+"fancy-path/a")
if !strings.Contains(bodyStr, `<b>spacious!!</b>`) || !strings.Contains(bodyStr2, `fancy!`) { if body0 != `<b>spacious!!</b> ` || body1 != `fancy! ` {
t.Fatal("fetching a regular file errored") t.Fatal("fetching a regular file errored")
} }
// ~~~~~~~~~~~~~~~~~ // ~~~~~~~~~~~~~~~~~
fmt.Println("\r\n~~~~~~~~~~ test fetching a invalid file") fmt.Println("\r\n~~~~~~~~~~ test fetching a invalid file")
bodyStr = get(t, url+"../../../../../../../../../../etc/passwd") path = "../../../../../../../../../../etc/passwd"
if !strings.Contains(bodyStr, `error`) { if !testExtra && get(t, url+path) != `error` {
t.Fatal("fetching a invalid file didnt errored") t.Fatal("fetching a invalid file didnt errored")
} else if testExtra {
fetchAndTestDefault(t, url+path) // extra path will just redirect to root dir
} }
// ~~~~~~~~~~~~~~~~~ // ~~~~~~~~~~~~~~~~~
fmt.Println("\r\n~~~~~~~~~~ test mkdir rpc") fmt.Println("\r\n~~~~~~~~~~ test mkdir rpc")
bodyStr = postJSON(t, url+"rpc", `{"call":"mkdirp","args":["/AAA"]}`) body0 = postJSON(t, url+"rpc", `{"call":"mkdirp","args":["/AAA"]}`)
if bodyStr != `ok` { if body0 != `ok` {
t.Fatal("mkdir rpc errored") t.Fatal("mkdir rpc errored")
} }
bodyStr = fetchAndTestDefault(t, url) body0 = fetchAndTestDefault(t, url)
if !strings.Contains(bodyStr, `href="AAA">AAA/</a>`) { if !strings.Contains(body0, `href="AAA">AAA/</a>`) {
t.Fatal("mkdir rpc folder not created") t.Fatal("mkdir rpc folder not created")
} }
// ~~~~~~~~~~~~~~~~~ // ~~~~~~~~~~~~~~~~~
fmt.Println("\r\n~~~~~~~~~~ test invalid mkdir rpc") fmt.Println("\r\n~~~~~~~~~~ test invalid mkdir rpc")
bodyStr = postJSON(t, url+"rpc", `{"call":"mkdirp","args":["../BBB"]}`) body0 = postJSON(t, url+"rpc", `{"call":"mkdirp","args":["../BBB"]}`)
if !strings.Contains(bodyStr, `error`) { if body0 != `error` {
t.Fatal("invalid mkdir rpc didnt errored #0") t.Fatal("invalid mkdir rpc didnt errored #0")
} }
bodyStr = postJSON(t, url+"rpc", `{"call":"mkdirp","args":["/../BBB"]}`) body0 = postJSON(t, url+"rpc", `{"call":"mkdirp","args":["/../BBB"]}`)
if !strings.Contains(bodyStr, `error`) { if body0 != `error` {
t.Fatal("invalid mkdir rpc didnt errored #1") t.Fatal("invalid mkdir rpc didnt errored #1")
} }
@@ -141,70 +141,56 @@ func doTest(t *testing.T, url string, testExtra bool) {
fmt.Println("\r\n~~~~~~~~~~ test post file") fmt.Println("\r\n~~~~~~~~~~ test post file")
path = "%2F%E1%84%92%E1%85%A1%20%E1%84%92%E1%85%A1" // "하 하" encoded path = "%2F%E1%84%92%E1%85%A1%20%E1%84%92%E1%85%A1" // "하 하" encoded
payload = "123 하" payload = "123 하"
bodyStr = postDummyFile(t, url, path, payload) body0 = postDummyFile(t, url, path, payload)
if bodyStr != `ok` { body1 = get(t, url+path)
body2 = fetchAndTestDefault(t, url)
if body0 != `ok` || body1 != payload || !strings.Contains(body2, `href="%E1%84%92%E1%85%A1%20%E1%84%92%E1%85%A1">하 하</a>`) {
t.Fatal("post file errored") t.Fatal("post file errored")
} }
bodyStr = get(t, url+path)
if !strings.Contains(bodyStr, payload) {
t.Fatal("post file errored reaching new file")
}
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") fmt.Println("\r\n~~~~~~~~~~ test post file incorrect path")
bodyStr = postDummyFile(t, url, "%2E%2E"+path, payload) body0 = postDummyFile(t, url, "%2E%2E"+path, payload)
if !strings.Contains(bodyStr, `err`) { if !strings.Contains(body0, `err`) {
t.Fatal("post file incorrect path didnt errored") t.Fatal("post file incorrect path didnt errored")
} }
// ~~~~~~~~~~~~~~~~~ // ~~~~~~~~~~~~~~~~~
fmt.Println("\r\n~~~~~~~~~~ test mv rpc") fmt.Println("\r\n~~~~~~~~~~ test mv rpc")
bodyStr = postJSON(t, url+"rpc", `{"call":"mv","args":["/AAA", "/hols/AAA"]}`) body0 = postJSON(t, url+"rpc", `{"call":"mv","args":["/AAA", "/hols/AAA"]}`)
if bodyStr != `ok` { body1 = fetchAndTestDefault(t, url)
if body0 != `ok` || strings.Contains(body1, `href="AAA">AAA/</a></td> </tr>`) {
t.Fatal("mv rpc errored") t.Fatal("mv rpc errored")
} }
bodyStr = fetchAndTestDefault(t, url)
if strings.Contains(bodyStr, `href="AAA">AAA/</a></td> </tr>`) {
t.Fatal("mv rpc folder not moved")
}
// ~~~~~~~~~~~~~~~~~ // ~~~~~~~~~~~~~~~~~
// Test where auth header unset, otherwise it'd be apended to the first arg // Test where auth header unset, otherwise it'd be apended to the first arg
fmt.Println("\r\n~~~~~~~~~~ test history rpc") fmt.Println("\r\n~~~~~~~~~~ test history rpc")
bodyStr = postJSON(t, url+"rpc", `{"call":"historySet","args":["a", "123"]}`) body0 = postJSON(t, url+"rpc", `{"call":"historySet","args":["a", "123", "skipHash"]}`)
if bodyStr != `ok` { body1 = postJSON(t, url+"rpc", `{"call":"historyGet","args":["a"]}`)
t.Fatal("mv rpc errored") if body0 != `ok` || body1 != `123` {
t.Fatal("error history get/set unhashed")
} }
bodyStr = postJSON(t, url+"rpc", `{"call":"historyGet","args":["a"]}`) body0 = postJSON(t, url+"rpc", `{"call":"historySet","args":["b", "a", "hash"]}`)
if bodyStr != `123` { body1 = postJSON(t, url+"rpc", `{"call":"historyGet","args":["b"]}`)
t.Fatal("error historyGet") if body0 != `ok` || body1 != `ca978112ca1bbdcafac231b39a23dc4da786eff8147c4e72b9807785afee48bb` {
t.Fatal("error history get/set hashed")
} }
// ~~~~~~~~~~~~~~~~~ // ~~~~~~~~~~~~~~~~~
fmt.Println("\r\n~~~~~~~~~~ test upload in new folder") fmt.Println("\r\n~~~~~~~~~~ test upload in new folder")
payload = "abcdef1234" payload = "test"
bodyStr = postDummyFile(t, url, "%2Fhols%2FAAA%2Fabcdef", payload) body0 = postDummyFile(t, url, "%2Fhols%2FAAA%2Fabcdef", payload)
if strings.Contains(bodyStr, `err`) { body1 = get(t, url+"hols/AAA/abcdef")
if body0 != `ok` || body1 != payload {
t.Fatal("upload in new folder errored") t.Fatal("upload in new folder errored")
} }
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 symlink, should succeed: ", testExtra) fmt.Println("\r\n~~~~~~~~~~ test symlink, should succeed: ", testExtra)
bodyStr = get(t, url+"/support/readme.md") body0 = get(t, url+"/support/readme.md")
hasReadme := strings.Contains(bodyStr, `the master branch is automatically built and pushed`) hasReadme := strings.Contains(body0, `the master branch is automatically built and pushed`)
if !testExtra && hasReadme { if !testExtra && hasReadme {
t.Fatal("error symlink reached where illegal") t.Fatal("error symlink reached where illegal")
} else if testExtra && !hasReadme { } else if testExtra && !hasReadme {
@@ -213,20 +199,20 @@ func doTest(t *testing.T, url string, testExtra bool) {
if testExtra { if testExtra {
fmt.Println("\r\n~~~~~~~~~~ test symlink mkdir & cleanup") fmt.Println("\r\n~~~~~~~~~~ test symlink mkdir & cleanup")
bodyStr = postJSON(t, url+"rpc", `{"call":"mkdirp","args":["/support/testfolder"]}`) body0 = postJSON(t, url+"rpc", `{"call":"mkdirp","args":["/support/testfolder"]}`)
if bodyStr != `ok` { if body0 != `ok` {
t.Fatal("error symlink mkdir") t.Fatal("error symlink mkdir")
} }
bodyStr = postJSON(t, url+"rpc", `{"call":"rm","args":["/support/testfolder"]}`) body0 = postJSON(t, url+"rpc", `{"call":"rm","args":["/support/testfolder"]}`)
if bodyStr != `ok` { if body0 != `ok` {
t.Fatal("error symlink rm") t.Fatal("error symlink rm")
} }
} }
fmt.Println("\r\n~~~~~~~~~~ test hidden file, should succeed: ", testExtra) fmt.Println("\r\n~~~~~~~~~~ test hidden file, should succeed: ", testExtra)
bodyStr = get(t, url+"/.testhidden") body0 = get(t, url+"/.testhidden")
hasHidden := strings.Contains(bodyStr, `test`) hasHidden := strings.Contains(body0, `test`)
if !testExtra && hasHidden { if !testExtra && hasHidden {
t.Fatal("error hidden file reached where illegal") t.Fatal("error hidden file reached where illegal")
} else if testExtra && !hasHidden { } else if testExtra && !hasHidden {
@@ -235,31 +221,27 @@ func doTest(t *testing.T, url string, testExtra bool) {
// //
fmt.Println("\r\n~~~~~~~~~~ test upload in new folder") fmt.Println("\r\n~~~~~~~~~~ test upload in new folder")
payload = "abcdef1234" payload = "test"
bodyStr = postDummyFile(t, url, "%2Fhols%2FAAA%2Fabcdef", payload) body0 = postDummyFile(t, url, "%2Fhols%2FAAA%2Fabcdef", payload)
if strings.Contains(bodyStr, `err`) { body1 = get(t, url+"hols/AAA/abcdef")
if body0 != `ok` || body1 != payload {
t.Fatal("upload in new folder errored") t.Fatal("upload in new folder errored")
} }
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") fmt.Println("\r\n~~~~~~~~~~ test rm rpc & cleanup")
bodyStr = postJSON(t, url+"rpc", `{"call":"rm","args":["/hols/AAA"]}`) body0 = postJSON(t, url+"rpc", `{"call":"rm","args":["/hols/AAA"]}`)
if bodyStr != `ok` { if body0 != `ok` {
t.Fatal("cleanup errored #0") t.Fatal("cleanup errored #0")
} }
bodyStr = get(t, url+"hols/AAA") body0 = get(t, url+"hols/AAA")
if !strings.Contains(bodyStr, `error`) { if !strings.Contains(body0, `error`) {
t.Fatal("cleanup errored #1") t.Fatal("cleanup errored #1")
} }
bodyStr = postJSON(t, url+"rpc", `{"call":"rm","args":["/하 하"]}`) body0 = postJSON(t, url+"rpc", `{"call":"rm","args":["/하 하"]}`)
if bodyStr != `ok` { if body0 != `ok` {
t.Fatal("cleanup errored #2") t.Fatal("cleanup errored #2")
} }
} }