test(server/search): add tests for searching
This commit is contained in:
parent
826d472a96
commit
bd2e831a5d
4 changed files with 78 additions and 7 deletions
|
@ -440,13 +440,13 @@ func (h *FileHandlers) Move(c *gin.Context) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
newPathBase := filepath.Base(newPath)
|
newPathDir := filepath.Dir(newPath)
|
||||||
err = h.deps.FileIndex().AddPath(newPathBase)
|
err = h.deps.FileIndex().AddPath(newPathDir)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.JSON(q.ErrResp(c, 500, err))
|
c.JSON(q.ErrResp(c, 500, err))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
err = h.deps.FileIndex().MovePath(oldPath, newPathBase)
|
err = h.deps.FileIndex().MovePath(oldPath, newPathDir)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.JSON(q.ErrResp(c, 500, err))
|
c.JSON(q.ErrResp(c, 500, err))
|
||||||
return
|
return
|
||||||
|
|
|
@ -10,7 +10,7 @@ import (
|
||||||
q "github.com/ihexxa/quickshare/src/handlers"
|
q "github.com/ihexxa/quickshare/src/handlers"
|
||||||
)
|
)
|
||||||
|
|
||||||
func xTestConcurrency(t *testing.T) {
|
func TestConcurrency(t *testing.T) {
|
||||||
addr := "http://127.0.0.1:8686"
|
addr := "http://127.0.0.1:8686"
|
||||||
rootPath := "tmpTestData"
|
rootPath := "tmpTestData"
|
||||||
config := `{
|
config := `{
|
||||||
|
|
|
@ -16,7 +16,7 @@ import (
|
||||||
"github.com/ihexxa/quickshare/src/handlers/fileshdr"
|
"github.com/ihexxa/quickshare/src/handlers/fileshdr"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestFileHandlers(t *testing.T) {
|
func xTestFileHandlers(t *testing.T) {
|
||||||
addr := "http://127.0.0.1:8686"
|
addr := "http://127.0.0.1:8686"
|
||||||
rootPath := "tmpTestData"
|
rootPath := "tmpTestData"
|
||||||
config := `{
|
config := `{
|
||||||
|
@ -860,6 +860,18 @@ func TestFileHandlers(t *testing.T) {
|
||||||
"qs/files/search/keyword": true,
|
"qs/files/search/keyword": true,
|
||||||
"qs/files/search/path/keyword": true,
|
"qs/files/search/path/keyword": true,
|
||||||
}
|
}
|
||||||
|
toDelete := map[string]bool{
|
||||||
|
"qs/files/search/keyword": true,
|
||||||
|
}
|
||||||
|
afterDeleted := map[string]bool{
|
||||||
|
"qs/files/search/path/keyword": true,
|
||||||
|
}
|
||||||
|
toMove := map[string]string{
|
||||||
|
"qs/files/search/path/keyword": "qs/files/search/newPath/keyword",
|
||||||
|
}
|
||||||
|
afterMoved := map[string]bool{
|
||||||
|
"qs/files/search/newPath/keyword": true,
|
||||||
|
}
|
||||||
|
|
||||||
for filePath, content := range files {
|
for filePath, content := range files {
|
||||||
assertUploadOK(t, filePath, content, addr, token)
|
assertUploadOK(t, filePath, content, addr, token)
|
||||||
|
@ -877,7 +889,11 @@ func TestFileHandlers(t *testing.T) {
|
||||||
t.Fatal(resp.StatusCode)
|
t.Fatal(resp.StatusCode)
|
||||||
}
|
}
|
||||||
|
|
||||||
exist := func(expectedPaths map[string]bool, searchItemsResp []string) bool {
|
isMatch := func(expectedPaths map[string]bool, searchItemsResp []string) bool {
|
||||||
|
if len(expectedPaths) != len(searchItemsResp) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
results := map[string]bool{}
|
results := map[string]bool{}
|
||||||
for _, result := range searchItemsResp {
|
for _, result := range searchItemsResp {
|
||||||
results[result] = true
|
results[result] = true
|
||||||
|
@ -890,10 +906,58 @@ func TestFileHandlers(t *testing.T) {
|
||||||
}
|
}
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
if !exist(expected, searchItemsResp.Results) {
|
if !isMatch(expected, searchItemsResp.Results) {
|
||||||
fmt.Printf("expected(%+v) got(%+v)", expected, searchItemsResp.Results)
|
fmt.Printf("expected(%+v) got(%+v)", expected, searchItemsResp.Results)
|
||||||
t.Fatal("search result not match")
|
t.Fatal("search result not match")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// delete paths
|
||||||
|
for pathname := range toDelete {
|
||||||
|
resp, _, errs := cl.Delete(pathname)
|
||||||
|
if len(errs) > 0 {
|
||||||
|
t.Fatal(errs)
|
||||||
|
} else if resp.StatusCode != 200 {
|
||||||
|
t.Fatal(resp.StatusCode)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
resp, searchItemsResp, errs = cl.SearchItems("keyword")
|
||||||
|
if len(errs) > 0 {
|
||||||
|
t.Fatal(errs)
|
||||||
|
} else if resp.StatusCode != 200 {
|
||||||
|
t.Fatal(resp.StatusCode)
|
||||||
|
}
|
||||||
|
if !isMatch(afterDeleted, searchItemsResp.Results) {
|
||||||
|
fmt.Printf("expected(%+v) got(%+v)", afterDeleted, searchItemsResp.Results)
|
||||||
|
t.Fatal("search result not match")
|
||||||
|
}
|
||||||
|
|
||||||
|
// move paths
|
||||||
|
for oldPath, newPath := range toMove {
|
||||||
|
newPathDir := filepath.Dir(newPath)
|
||||||
|
resp, _, errs := cl.Mkdir(newPathDir)
|
||||||
|
if len(errs) > 0 {
|
||||||
|
t.Fatal(errs)
|
||||||
|
} else if resp.StatusCode != 200 {
|
||||||
|
t.Fatal(resp.StatusCode)
|
||||||
|
}
|
||||||
|
|
||||||
|
resp, _, errs = cl.Move(oldPath, newPath)
|
||||||
|
if len(errs) > 0 {
|
||||||
|
t.Fatal(errs)
|
||||||
|
} else if resp.StatusCode != 200 {
|
||||||
|
t.Fatal(resp.StatusCode)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
resp, searchItemsResp, errs = cl.SearchItems("keyword")
|
||||||
|
if len(errs) > 0 {
|
||||||
|
t.Fatal(errs)
|
||||||
|
} else if resp.StatusCode != 200 {
|
||||||
|
t.Fatal(resp.StatusCode)
|
||||||
|
}
|
||||||
|
if !isMatch(afterMoved, searchItemsResp.Results) {
|
||||||
|
fmt.Printf("expected(%+v) got(%+v)", afterMoved, searchItemsResp.Results)
|
||||||
|
t.Fatal("search result not match")
|
||||||
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
resp, _, errs = usersCl.Logout(token)
|
resp, _, errs = usersCl.Logout(token)
|
||||||
|
|
|
@ -409,6 +409,7 @@ func TestPermissions(t *testing.T) {
|
||||||
// DelUploading
|
// DelUploading
|
||||||
|
|
||||||
// GenerateHash
|
// GenerateHash
|
||||||
|
// Search
|
||||||
|
|
||||||
cl := client.NewSingleUserClient(addr)
|
cl := client.NewSingleUserClient(addr)
|
||||||
token := &http.Cookie{}
|
token := &http.Cookie{}
|
||||||
|
@ -493,6 +494,8 @@ func TestPermissions(t *testing.T) {
|
||||||
assertResp(t, resp, errs, expectedCodes["Delete"], fmt.Sprintf("%s-%s", desc, "Delete"))
|
assertResp(t, resp, errs, expectedCodes["Delete"], fmt.Sprintf("%s-%s", desc, "Delete"))
|
||||||
resp, _, errs = filesCl.Delete(targetPathFile)
|
resp, _, errs = filesCl.Delete(targetPathFile)
|
||||||
assertResp(t, resp, errs, expectedCodes["DeleteTarget"], fmt.Sprintf("%s-%s", desc, "DeleteTarget"))
|
assertResp(t, resp, errs, expectedCodes["DeleteTarget"], fmt.Sprintf("%s-%s", desc, "DeleteTarget"))
|
||||||
|
resp, _, errs = filesCl.SearchItems(targetPathFile)
|
||||||
|
assertResp(t, resp, errs, expectedCodes["SearchTarget"], fmt.Sprintf("%s-%s", desc, "SearchTarget"))
|
||||||
|
|
||||||
if requireAuth {
|
if requireAuth {
|
||||||
resp, _, errs := cl.Logout(token)
|
resp, _, errs := cl.Logout(token)
|
||||||
|
@ -521,6 +524,7 @@ func TestPermissions(t *testing.T) {
|
||||||
"DownloadTarget": 200,
|
"DownloadTarget": 200,
|
||||||
"Delete": 200,
|
"Delete": 200,
|
||||||
"DeleteTarget": 200,
|
"DeleteTarget": 200,
|
||||||
|
"SearchTarget": 200,
|
||||||
})
|
})
|
||||||
testFileOpPermission("user file operations", "user", "1234", true, "user2/files", "", map[string]int{
|
testFileOpPermission("user file operations", "user", "1234", true, "user2/files", "", map[string]int{
|
||||||
"ListHome": 200,
|
"ListHome": 200,
|
||||||
|
@ -543,6 +547,7 @@ func TestPermissions(t *testing.T) {
|
||||||
"DownloadTarget": 403,
|
"DownloadTarget": 403,
|
||||||
"Delete": 200,
|
"Delete": 200,
|
||||||
"DeleteTarget": 403,
|
"DeleteTarget": 403,
|
||||||
|
"SearchTarget": 200,
|
||||||
})
|
})
|
||||||
testFileOpPermission("visitor file operations", "visitor", "", false, "user2/files", "", map[string]int{
|
testFileOpPermission("visitor file operations", "visitor", "", false, "user2/files", "", map[string]int{
|
||||||
"ListHome": 403,
|
"ListHome": 403,
|
||||||
|
@ -565,6 +570,7 @@ func TestPermissions(t *testing.T) {
|
||||||
"DownloadTarget": 403,
|
"DownloadTarget": 403,
|
||||||
"Delete": 403,
|
"Delete": 403,
|
||||||
"DeleteTarget": 403,
|
"DeleteTarget": 403,
|
||||||
|
"SearchTarget": 403,
|
||||||
})
|
})
|
||||||
|
|
||||||
// sharing permission tests
|
// sharing permission tests
|
||||||
|
@ -614,6 +620,7 @@ func TestPermissions(t *testing.T) {
|
||||||
"DownloadTargetFile": 200,
|
"DownloadTargetFile": 200,
|
||||||
"Delete": 200,
|
"Delete": 200,
|
||||||
"DeleteTarget": 403,
|
"DeleteTarget": 403,
|
||||||
|
"SearchTarget": 200,
|
||||||
})
|
})
|
||||||
|
|
||||||
testShareOpPermission := func(user string, pwd string, requireAuth bool, targetPath string, expectedCodes map[string]int) {
|
testShareOpPermission := func(user string, pwd string, requireAuth bool, targetPath string, expectedCodes map[string]int) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue