Skip to content

Commit 288485f

Browse files
committed
feat: add more keychain persistence test utils
1 parent 0ad6089 commit 288485f

File tree

1 file changed

+69
-0
lines changed

1 file changed

+69
-0
lines changed

wallet/src/persist_test_utils.rs

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -233,3 +233,72 @@ where
233233
assert_eq!(changeset_read.descriptor.unwrap(), descriptor);
234234
assert_eq!(changeset_read.change_descriptor.unwrap(), change_descriptor);
235235
}
236+
237+
pub fn persist_keychains_reversed<Db, CreateDb>(filename: &str, create_db: CreateDb)
238+
where
239+
CreateDb: Fn(&Path) -> anyhow::Result<Db>,
240+
Db: WalletPersister,
241+
Db::Error: Debug,
242+
{
243+
// create db
244+
let temp_dir = tempfile::tempdir().expect("must create tempdir");
245+
let file_path = temp_dir.path().join(filename);
246+
let mut db = create_db(&file_path).expect("db should get created");
247+
248+
// initialize db
249+
let changeset =
250+
WalletPersister::initialize(&mut db).expect("should initialize and load empty changeset");
251+
assert_eq!(changeset, ChangeSet::default());
252+
253+
let descriptor: Descriptor<DescriptorPublicKey> = DESCRIPTORS[1].parse().unwrap();
254+
let change_descriptor: Descriptor<DescriptorPublicKey> = DESCRIPTORS[0].parse().unwrap();
255+
256+
let changeset = ChangeSet {
257+
descriptor: Some(descriptor.clone()),
258+
change_descriptor: Some(change_descriptor.clone()),
259+
..ChangeSet::default()
260+
};
261+
262+
WalletPersister::persist(&mut db, &changeset).expect("should persist descriptors");
263+
264+
let changeset_read =
265+
WalletPersister::initialize(&mut db).expect("should read persisted changeset");
266+
267+
assert_eq!(changeset_read.descriptor.unwrap(), descriptor);
268+
assert_eq!(changeset_read.change_descriptor.unwrap(), change_descriptor);
269+
}
270+
271+
272+
pub fn persist_single_keychain<Db, CreateDb>(filename: &str, create_db: CreateDb)
273+
where
274+
CreateDb: Fn(&Path) -> anyhow::Result<Db>,
275+
Db: WalletPersister,
276+
Db::Error: Debug,
277+
{
278+
// create db
279+
let temp_dir = tempfile::tempdir().expect("must create tempdir");
280+
let file_path = temp_dir.path().join(filename);
281+
let mut db = create_db(&file_path).expect("db should get created");
282+
283+
// initialize db
284+
let changeset =
285+
WalletPersister::initialize(&mut db).expect("should initialize and load empty changeset");
286+
assert_eq!(changeset, ChangeSet::default());
287+
288+
let descriptor: Descriptor<DescriptorPublicKey> = DESCRIPTORS[1].parse().unwrap();
289+
290+
let changeset = ChangeSet {
291+
descriptor: Some(descriptor.clone()),
292+
..ChangeSet::default()
293+
};
294+
295+
WalletPersister::persist(&mut db, &changeset).expect("should persist descriptors");
296+
297+
let changeset_read =
298+
WalletPersister::initialize(&mut db).expect("should read persisted changeset");
299+
300+
assert_eq!(changeset_read.descriptor.unwrap(), descriptor);
301+
assert_eq!(changeset_read.change_descriptor, None);
302+
}
303+
304+

0 commit comments

Comments
 (0)