Files
kebab/crates/kebab-app/tests/cursor.rs
th-kim0823 ebbc3a46ae feat(app): cursor encode/decode for paginated search (fb-34)
Opaque base64(JSON{offset, corpus_revision}). Mismatch or
malformed input returns ErrorV1 with code = stale_cursor.
base64 promoted to workspace dep.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-09 17:49:23 +09:00

25 lines
746 B
Rust

//! p9-fb-34: cursor encode/decode round-trip + corpus_revision mismatch.
use kebab_app::cursor;
#[test]
fn cursor_roundtrip_preserves_offset() {
let encoded = cursor::encode(5, "rev-abc");
let offset = cursor::decode(&encoded, "rev-abc").unwrap();
assert_eq!(offset, 5);
}
#[test]
fn cursor_decode_rejects_mismatched_revision() {
let encoded = cursor::encode(7, "rev-old");
let err = cursor::decode(&encoded, "rev-new").unwrap_err();
assert_eq!(err.code, "stale_cursor");
assert!(err.message.contains("rev-old") || err.message.contains("rev-new"));
}
#[test]
fn cursor_decode_rejects_garbage_input() {
let err = cursor::decode("not-base64!!!", "any").unwrap_err();
assert_eq!(err.code, "stale_cursor");
}