Merge pull request #1783 from Silvertree2010/fix/h5009-page-move-silently-turns-a-negat

Reject negative or fractional index in page.move
This commit is contained in:
BFlat authored and GitHub committed 2026-11-07 09:21:59 +08:00
commit 57496ae937
2 files changed
+15 -1

No files matched your search

+1 -1
View File
@@ -129,7 +129,7 @@ pub fn specs() -> Vec<CommandSpec> {
}),
spec!("page.move", "Move page", "{id?, index}", true, |s, p| {
let id = id(p, "id").unwrap_or(s.page()?);
let k = req_num("page.move", p, "index")?.max(0.0) as usize;
let k = req_index("page.move", p, "index")?;
let doc = s.doc_mut()?;
if !doc.pages.contains(&id) {
return Err(bad("page.move", format!("{id} is not a page")));
@@ -398,6 +398,20 @@ fn page_select_and_doc_switch_refuse_negative_or_fractional_indexes() {
}
}
#[test]
fn page_move_refuses_negative_or_fractional_indexes() {
let mut s = Session::new();
ex(&mut s, "page.add", json!({}));
let p3 = id(&ex(&mut s, "page.add", json!({})));
let before = pages(&mut s);
for bad_index in [json!(-1), json!(1.5)] {
assert!(s.execute("page.move", &json!({"id": p3, "index": bad_index})).is_err(), "page.move index {bad_index} must fail");
assert_eq!(pages(&mut s), before, "page.move index {bad_index} leaves the order alone");
}
ex(&mut s, "page.move", json!({"id": p3, "index": 0}));
assert_eq!(pages(&mut s)[0]["id"], json!(p3), "a valid index still moves the page");
}
#[test]
fn assets_panel_lists_files_and_drops_by_the_documented_rules() {
let mut s = Session::new();