Finish shortcut dispatch and verify file operation safeguards
This commit is contained in:
1 parent
e028614dba
commit
0ce509a0fe
6 files changed
+53
-6
No files matched your search
@@ -71,3 +71,17 @@ func TestExportRejectsMissingAssetsAndSymlinks(t *testing.T) {
|
||||
t.Fatalf("应拒绝符号链接:%d", response.StatusCode)
|
||||
}
|
||||
}
|
||||
|
||||
func TestReadTokenMayExportButCannotWrite(t *testing.T) {
|
||||
f := newFixture(t)
|
||||
f.write("文章.md", "原文")
|
||||
token := decode[struct{ Token string }](t, f.do(f.admin, "POST", "/api/v1/tokens", `{"name":"只读导出","scope":"read"}`, nil))
|
||||
headers := map[string]string{"Authorization": "Bearer " + token.Token}
|
||||
guest := newClient()
|
||||
if code := f.status(guest, "POST", "/api/v1/export", `{"paths":["文章.md"]}`, headers); code != 200 {
|
||||
t.Fatalf("只读导出被拒绝:%d", code)
|
||||
}
|
||||
if code := f.status(guest, "POST", "/api/v1/move", `{"from":"文章.md","to":"其他.md"}`, headers); code != 403 {
|
||||
t.Fatalf("只读令牌获得写权限:%d", code)
|
||||
}
|
||||
}
|
||||
@@ -63,6 +63,9 @@ func (v *Vault) Export(ctx context.Context, paths []string) (result *os.File, na
|
||||
}
|
||||
var linkError error
|
||||
transformMarkdownLines(content, importRef, func(line []byte) []byte {
|
||||
if linkError != nil {
|
||||
return line
|
||||
}
|
||||
return transformOutsideCode(line, func(text []byte) []byte {
|
||||
for _, span := range importLinkSpans(text) {
|
||||
target := string(text[span.start:span.end])
|
||||
|
||||
Reference in new issue
Block a user