mirror of
https://github.com/truewhile/MeBox.git
synced 2026-10-09 06:46:37 +08:00
refactor: split scanner cloud tests
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
package service
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"net/http"
|
||||
"net/http/httptest"
|
||||
"testing"
|
||||
)
|
||||
|
||||
type openListTestEntry struct {
|
||||
Name string
|
||||
Size int64
|
||||
IsDir bool
|
||||
}
|
||||
|
||||
func newOpenListAPIServer(t *testing.T, list func(path string, page, perPage int) ([]openListTestEntry, int)) *httptest.Server {
|
||||
t.Helper()
|
||||
return httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||
if r.URL.Path != "/api/fs/list" {
|
||||
t.Fatalf("unexpected openlist api request %s", r.URL.Path)
|
||||
}
|
||||
var in struct {
|
||||
Path string `json:"path"`
|
||||
Page int `json:"page"`
|
||||
PerPage int `json:"per_page"`
|
||||
}
|
||||
if err := json.NewDecoder(r.Body).Decode(&in); err != nil {
|
||||
t.Fatalf("decode openlist list request: %v", err)
|
||||
}
|
||||
if in.Path == "" {
|
||||
in.Path = "/"
|
||||
}
|
||||
if in.Page <= 0 {
|
||||
in.Page = 1
|
||||
}
|
||||
if in.PerPage <= 0 {
|
||||
in.PerPage = 500
|
||||
}
|
||||
entries, total := list(in.Path, in.Page, in.PerPage)
|
||||
content := make([]map[string]any, 0, len(entries))
|
||||
for _, entry := range entries {
|
||||
content = append(content, map[string]any{
|
||||
"name": entry.Name,
|
||||
"size": entry.Size,
|
||||
"is_dir": entry.IsDir,
|
||||
})
|
||||
}
|
||||
w.Header().Set("Content-Type", "application/json")
|
||||
_ = json.NewEncoder(w).Encode(map[string]any{
|
||||
"code": 200,
|
||||
"message": "success",
|
||||
"data": map[string]any{
|
||||
"content": content,
|
||||
"total": total,
|
||||
},
|
||||
})
|
||||
}))
|
||||
}
|
||||
Reference in New Issue
Block a user