diff --git a/src/gossa_test.go b/src/gossa_test.go index 80652a6..884cd1f 100644 --- a/src/gossa_test.go +++ b/src/gossa_test.go @@ -29,10 +29,10 @@ func get(t *testing.T, url string) string { 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 - 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 하") - req, err := http.NewRequest("POST", url, body) + 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) dieMaybe(t, err) req.Header.Set("Content-Type", "multipart/form-data; boundary=----WebKitFormBoundarycCRIderiXxJWEUcU") req.Header.Set("Gossa-Path", path) @@ -77,7 +77,7 @@ func testDefaults(t *testing.T, url string) string { t.Fatal("error 中文 folder") } - if !strings.Contains(bodyStr, ` 211.0B custom_mime_type.types `) { + if !strings.Contains(bodyStr, ` 211.0B
custom_mime_type.types `) { t.Fatal("error row custom_mime_type") } @@ -85,6 +85,9 @@ func testDefaults(t *testing.T, url string) string { } func TestGetFolder(t *testing.T) { + payload := "" + path := "" + // ~~~~~~~~~~~~~~~~~ fmt.Println("\r\n~~~~~~~~~~ test fetching default path") 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") bodyStr := get(t, "http://127.0.0.1:8001/subdir_with%20space/file_with%20space.html") if !strings.Contains(bodyStr, `spacious!!`) { - t.Fatal("error reaching a file") + 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") 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") bodyStr = postJSON(t, "http://127.0.0.1:8001/rpc", `{"call":"mkdirp","args":["/AAA"]}`) if !strings.Contains(bodyStr, `ok`) { - t.Fatal("error returned value") + t.Fatal("mkdir rpc errored") } bodyStr = testDefaults(t, "http://127.0.0.1:8001/") - if !strings.Contains(bodyStr, ` AAA/ `) { - t.Fatal("error new folder created") + if !strings.Contains(bodyStr, `
AAA/ `) { + 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"]}`) 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"]}`) 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, ` 9.0B
하 하 `) { + 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") bodyStr = postJSON(t, "http://127.0.0.1:8001/rpc", `{"call":"mv","args":["/AAA", "/hols/AAA"]}`) if !strings.Contains(bodyStr, `ok`) { - t.Fatal("error returned value") + t.Fatal("mv rpc errored") } bodyStr = testDefaults(t, "http://127.0.0.1:8001/") if strings.Contains(bodyStr, ` AAA/ `) { - t.Fatal("error folder moved") + t.Fatal("mv rpc folder not moved") } // ~~~~~~~~~~~~~~~~~ - fmt.Println("\r\n~~~~~~~~~~ test post file") - bodyStr = postDummyFile(t, "http://127.0.0.1:8001/post", "%2F%E1%84%92%E1%85%A1%20%E1%84%92%E1%85%A1") - if !strings.Contains(bodyStr, `ok`) { - t.Fatal("error returned value") + fmt.Println("\r\n~~~~~~~~~~ test upload in new folder") + payload = "abcdef1234" + bodyStr = postDummyFile(t, "%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/%E1%84%92%E1%85%A1%20%E1%84%92%E1%85%A1") - if !strings.Contains(bodyStr, "12 하") { - t.Fatal("error reaching new file") - } - - bodyStr = testDefaults(t, "http://127.0.0.1:8001/") - if !strings.Contains(bodyStr, ` 9.0B 하 하 `) { - 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") + bodyStr = get(t, "http://127.0.0.1:8001/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"]}`) 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") 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":["/하 하"]}`) if !strings.Contains(bodyStr, `ok`) { - t.Fatal("error returned value") + t.Fatal("cleanup errored #2") } }