more tests

This commit is contained in:
Pierre Dubouilh
2019-02-09 15:54:23 +01:00
parent feb2639e2d
commit b28eb89490
+53 -35
View File
@@ -29,10 +29,10 @@ func get(t *testing.T, url string) string {
return trimSpaces(string(body)) return trimSpaces(string(body))
} }
func postDummyFile(t *testing.T, url string, path string) string { func postDummyFile(t *testing.T, path string, payload string) string {
// Generated by curl-to-Go: https://mholt.github.io/curl-to-go // 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\n12 하") 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", url, body) req, err := http.NewRequest("POST", "http://127.0.0.1:8001/post", body)
dieMaybe(t, err) dieMaybe(t, err)
req.Header.Set("Content-Type", "multipart/form-data; boundary=----WebKitFormBoundarycCRIderiXxJWEUcU") req.Header.Set("Content-Type", "multipart/form-data; boundary=----WebKitFormBoundarycCRIderiXxJWEUcU")
req.Header.Set("Gossa-Path", path) req.Header.Set("Gossa-Path", path)
@@ -77,7 +77,7 @@ func testDefaults(t *testing.T, url string) string {
t.Fatal("error 中文 folder") t.Fatal("error 中文 folder")
} }
if !strings.Contains(bodyStr, `<tr> <td><i ondblclick="return rm(event)" onclick="return rename(event)" class="btn icon icon-types icon-blank"></i></td> <td class="file-size"><code>211.0B</code></td> <td class="arrow"><i class="arrow-icon"></i></td> <td class="display-name"><a class="list-links" onclick="return onClickLink(event)" href="custom_mime_type.types">custom_mime_type.types</a></td> </tr>`) { if !strings.Contains(bodyStr, `<tr> <td class="iconRow"><i ondblclick="return rm(event)" onclick="return rename(event)" class="btn icon icon-types icon-blank"></i></td> <td class="file-size"><code>211.0B</code></td> <td class="arrow"><div class="arrow-icon"></div></td> <td class="display-name"><a class="list-links" onclick="return onClickLink(event)" href="custom_mime_type.types">custom_mime_type.types</a></td> </tr>`) {
t.Fatal("error row custom_mime_type") t.Fatal("error row custom_mime_type")
} }
@@ -85,6 +85,9 @@ func testDefaults(t *testing.T, url string) string {
} }
func TestGetFolder(t *testing.T) { func TestGetFolder(t *testing.T) {
payload := ""
path := ""
// ~~~~~~~~~~~~~~~~~ // ~~~~~~~~~~~~~~~~~
fmt.Println("\r\n~~~~~~~~~~ test fetching default path") fmt.Println("\r\n~~~~~~~~~~ test fetching default path")
testDefaults(t, "http://127.0.0.1:8001/") testDefaults(t, "http://127.0.0.1:8001/")
@@ -98,90 +101,105 @@ func TestGetFolder(t *testing.T) {
fmt.Println("\r\n~~~~~~~~~~ test fetching a regular file") 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, "http://127.0.0.1:8001/subdir_with%20space/file_with%20space.html")
if !strings.Contains(bodyStr, `<b>spacious!!</b>`) { if !strings.Contains(bodyStr, `<b>spacious!!</b>`) {
t.Fatal("error reaching a file") 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, "http://127.0.0.1:8001/../../../../../../../../../../etc/passwd") bodyStr = get(t, "http://127.0.0.1:8001/../../../../../../../../../../etc/passwd")
if !strings.Contains(bodyStr, `error`) { if !strings.Contains(bodyStr, `error`) {
t.Fatal("error reaching invalid file") t.Fatal("fetching a invalid file didnt errored")
} }
// ~~~~~~~~~~~~~~~~~ // ~~~~~~~~~~~~~~~~~
fmt.Println("\r\n~~~~~~~~~~ test mkdir rpc") fmt.Println("\r\n~~~~~~~~~~ test mkdir rpc")
bodyStr = postJSON(t, "http://127.0.0.1:8001/rpc", `{"call":"mkdirp","args":["/AAA"]}`) bodyStr = postJSON(t, "http://127.0.0.1:8001/rpc", `{"call":"mkdirp","args":["/AAA"]}`)
if !strings.Contains(bodyStr, `ok`) { if !strings.Contains(bodyStr, `ok`) {
t.Fatal("error returned value") t.Fatal("mkdir rpc errored")
} }
bodyStr = testDefaults(t, "http://127.0.0.1:8001/") bodyStr = testDefaults(t, "http://127.0.0.1:8001/")
if !strings.Contains(bodyStr, `<tr> <td><i ondblclick="return rm(event)" onclick="return rename(event)" class="btn icon icon-folder icon-blank"></i></td> <td class="file-size"><code></code></td> <td class="arrow"><i class="arrow-icon"></i></td> <td class="display-name"><a class="list-links" onclick="return onClickLink(event)" href="AAA">AAA/</a></td> </tr>`) { if !strings.Contains(bodyStr, `<tr> <td class="iconRow"><i ondblclick="return rm(event)" onclick="return rename(event)" class="btn icon icon-folder icon-blank"></i></td> <td class="file-size"><code></code></td> <td class="arrow"><div class="arrow-icon"></div></td> <td class="display-name"><a class="list-links" onclick="return onClickLink(event)" href="AAA">AAA/</a></td> </tr>`) {
t.Fatal("error new folder 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, "http://127.0.0.1:8001/rpc", `{"call":"mkdirp","args":["../BBB"]}`) bodyStr = postJSON(t, "http://127.0.0.1:8001/rpc", `{"call":"mkdirp","args":["../BBB"]}`)
if !strings.Contains(bodyStr, `error`) { if !strings.Contains(bodyStr, `error`) {
t.Fatal("error not returned") 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, "http://127.0.0.1:8001/rpc", `{"call":"mkdirp","args":["/../BBB"]}`)
if !strings.Contains(bodyStr, `error`) { if !strings.Contains(bodyStr, `error`) {
t.Fatal("error not returned") t.Fatal("invalid mkdir rpc didnt errored #1")
}
// ~~~~~~~~~~~~~~~~~
fmt.Println("\r\n~~~~~~~~~~ test post file")
path = "%E1%84%92%E1%85%A1%20%E1%84%92%E1%85%A1" // "하 하" encoded
payload = "12 하"
bodyStr = postDummyFile(t, "%2F"+path, payload)
if !strings.Contains(bodyStr, `ok`) {
t.Fatal("post file errored")
}
bodyStr = get(t, "http://127.0.0.1:8001/"+path)
if !strings.Contains(bodyStr, payload) {
t.Fatal("post file errored reaching new file")
}
bodyStr = testDefaults(t, "http://127.0.0.1:8001/")
if !strings.Contains(bodyStr, `<tr> <td class="iconRow"><i ondblclick="return rm(event)" onclick="return rename(event)" class="btn icon icon-하 하 icon-blank"></i></td> <td class="file-size"><code>9.0B</code></td> <td class="arrow"><div class="arrow-icon"></div></td> <td class="display-name"><a class="list-links" onclick="return onClickLink(event)" href="%E1%84%92%E1%85%A1%20%E1%84%92%E1%85%A1">하 하</a></td> </tr>`) {
t.Fatal("post file errored checking new file row")
}
// ~~~~~~~~~~~~~~~~~
fmt.Println("\r\n~~~~~~~~~~ test post file incorrect path")
bodyStr = postDummyFile(t, "%2E%2E%2F"+path, payload)
if !strings.Contains(bodyStr, `err`) {
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, "http://127.0.0.1:8001/rpc", `{"call":"mv","args":["/AAA", "/hols/AAA"]}`) bodyStr = postJSON(t, "http://127.0.0.1:8001/rpc", `{"call":"mv","args":["/AAA", "/hols/AAA"]}`)
if !strings.Contains(bodyStr, `ok`) { if !strings.Contains(bodyStr, `ok`) {
t.Fatal("error returned value") t.Fatal("mv rpc errored")
} }
bodyStr = testDefaults(t, "http://127.0.0.1:8001/") bodyStr = testDefaults(t, "http://127.0.0.1:8001/")
if strings.Contains(bodyStr, `<tr> <td><i ondblclick="return rm(event)" onclick="return rename(event)" class="btn icon icon-folder icon-blank"></i></td> <td class="file-size"><code></code></td> <td class="arrow"><i class="arrow-icon"></i></td> <td class="display-name"><a class="list-links" onclick="return onClickLink(event)" href="AAA">AAA/</a></td> </tr>`) { if strings.Contains(bodyStr, `<tr> <td><i ondblclick="return rm(event)" onclick="return rename(event)" class="btn icon icon-folder icon-blank"></i></td> <td class="file-size"><code></code></td> <td class="arrow"><i class="arrow-icon"></i></td> <td class="display-name"><a class="list-links" onclick="return onClickLink(event)" href="AAA">AAA/</a></td> </tr>`) {
t.Fatal("error folder moved") t.Fatal("mv rpc folder not moved")
} }
// ~~~~~~~~~~~~~~~~~ // ~~~~~~~~~~~~~~~~~
fmt.Println("\r\n~~~~~~~~~~ test post file") fmt.Println("\r\n~~~~~~~~~~ test upload in new folder")
bodyStr = postDummyFile(t, "http://127.0.0.1:8001/post", "%2F%E1%84%92%E1%85%A1%20%E1%84%92%E1%85%A1") payload = "abcdef1234"
if !strings.Contains(bodyStr, `ok`) { bodyStr = postDummyFile(t, "%2Fhols%2FAAA%2Fabcdef", payload)
t.Fatal("error returned value") if strings.Contains(bodyStr, `err`) {
t.Fatal("upload in new folder errored")
} }
bodyStr = get(t, "http://127.0.0.1:8001/%E1%84%92%E1%85%A1%20%E1%84%92%E1%85%A1") bodyStr = get(t, "http://127.0.0.1:8001/hols/AAA/abcdef")
if !strings.Contains(bodyStr, "12 하") { if !strings.Contains(bodyStr, payload) {
t.Fatal("error reaching new file") t.Fatal("upload in new folder error reaching new file")
}
bodyStr = testDefaults(t, "http://127.0.0.1:8001/")
if !strings.Contains(bodyStr, `<tr> <td><i ondblclick="return rm(event)" onclick="return rename(event)" class="btn icon icon-하 하 icon-blank"></i></td> <td class="file-size"><code>9.0B</code></td> <td class="arrow"><i class="arrow-icon"></i></td> <td class="display-name"><a class="list-links" onclick="return onClickLink(event)" href="%E1%84%92%E1%85%A1%20%E1%84%92%E1%85%A1">하 하</a></td> </tr>`) {
t.Fatal("error checking new file row")
}
// ~~~~~~~~~~~~~~~~~
fmt.Println("\r\n~~~~~~~~~~ test post file incorrect ")
bodyStr = postDummyFile(t, "http://127.0.0.1:8001/post", "%2E%2E%2Fwow")
if !strings.Contains(bodyStr, `err`) {
t.Fatal("error not returned")
} }
// ~~~~~~~~~~~~~~~~~ // ~~~~~~~~~~~~~~~~~
fmt.Println("\r\n~~~~~~~~~~ test rm rpc & cleanup") 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, "http://127.0.0.1:8001/rpc", `{"call":"rm","args":["/hols/AAA"]}`)
if !strings.Contains(bodyStr, `ok`) { if !strings.Contains(bodyStr, `ok`) {
t.Fatal("error returned value") t.Fatal("cleanup errored #0")
} }
bodyStr = get(t, "http://127.0.0.1:8001/hols/AAA") bodyStr = get(t, "http://127.0.0.1:8001/hols/AAA")
if !strings.Contains(bodyStr, `error`) { if !strings.Contains(bodyStr, `error`) {
t.Fatal("error not returned") t.Fatal("cleanup errored #1")
} }
bodyStr = postJSON(t, "http://127.0.0.1:8001/rpc", `{"call":"rm","args":["/하 하"]}`) bodyStr = postJSON(t, "http://127.0.0.1:8001/rpc", `{"call":"rm","args":["/하 하"]}`)
if !strings.Contains(bodyStr, `ok`) { if !strings.Contains(bodyStr, `ok`) {
t.Fatal("error returned value") t.Fatal("cleanup errored #2")
} }
} }