74 lines
2.1 KiB
Rust
74 lines
2.1 KiB
Rust
use rocksdb::WriteBatch;
|
|
|
|
use rpki::storage::{RocksStore, VerifiedKey};
|
|
|
|
#[test]
|
|
fn storage_delete_rrdp_state_works() {
|
|
let temp = tempfile::tempdir().expect("tempdir");
|
|
let store = RocksStore::open(temp.path()).expect("open rocksdb");
|
|
|
|
store
|
|
.put_rrdp_state("https://example.net/rrdp/notification.xml", b"state")
|
|
.expect("put state");
|
|
assert_eq!(
|
|
store
|
|
.get_rrdp_state("https://example.net/rrdp/notification.xml")
|
|
.unwrap()
|
|
.unwrap(),
|
|
b"state"
|
|
);
|
|
|
|
store
|
|
.delete_rrdp_state("https://example.net/rrdp/notification.xml")
|
|
.expect("delete state");
|
|
assert!(
|
|
store
|
|
.get_rrdp_state("https://example.net/rrdp/notification.xml")
|
|
.unwrap()
|
|
.is_none()
|
|
);
|
|
}
|
|
|
|
#[test]
|
|
fn storage_raw_iter_prefix_filters_by_prefix() {
|
|
let temp = tempfile::tempdir().expect("tempdir");
|
|
let store = RocksStore::open(temp.path()).expect("open rocksdb");
|
|
|
|
store
|
|
.put_raw("rsync://example.net/repo/a/1.cer", b"1")
|
|
.unwrap();
|
|
store
|
|
.put_raw("rsync://example.net/repo/a/2.cer", b"2")
|
|
.unwrap();
|
|
store
|
|
.put_raw("rsync://example.net/repo/b/1.cer", b"3")
|
|
.unwrap();
|
|
|
|
let prefix = b"rsync://example.net/repo/a/";
|
|
let items = store
|
|
.raw_iter_prefix(prefix)
|
|
.expect("iter")
|
|
.map(|(k, v)| (String::from_utf8_lossy(&k).to_string(), v.to_vec()))
|
|
.collect::<Vec<_>>();
|
|
|
|
assert_eq!(items.len(), 2);
|
|
for (k, _v) in &items {
|
|
assert!(k.starts_with("rsync://example.net/repo/a/"));
|
|
}
|
|
}
|
|
|
|
#[test]
|
|
fn storage_verified_key_format_is_stable() {
|
|
let k = VerifiedKey::from_manifest_rsync_uri("rsync://example.net/repo/manifest.mft");
|
|
assert_eq!(k.as_str(), "verified:rsync://example.net/repo/manifest.mft");
|
|
}
|
|
|
|
#[test]
|
|
fn storage_write_batch_accepts_empty_batch() {
|
|
let temp = tempfile::tempdir().expect("tempdir");
|
|
let store = RocksStore::open(temp.path()).expect("open rocksdb");
|
|
store
|
|
.write_batch(WriteBatch::default())
|
|
.expect("write batch");
|
|
}
|