Skip to content

Commit 145beb6

Browse files
client/file-backend: Test delete_broken_items
1 parent b27750b commit 145beb6

1 file changed

Lines changed: 59 additions & 0 deletions

File tree

client/src/file/mod.rs

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -805,6 +805,65 @@ mod tests {
805805
Ok(())
806806
}
807807

808+
#[tokio::test]
809+
async fn delete_broken_items() -> Result<(), Error> {
810+
let data_dir = tempdir()?;
811+
let v0_dir = data_dir.path().join("keyrings");
812+
let v1_dir = v0_dir.join("v1");
813+
fs::create_dir_all(&v1_dir).await?;
814+
815+
let fixture_path = PathBuf::from(env!("CARGO_MANIFEST_DIR"))
816+
.join("fixtures")
817+
.join("default.keyring");
818+
let keyring_path = v1_dir.join("default.keyring");
819+
fs::copy(&fixture_path, &keyring_path).await?;
820+
821+
let keyring = Keyring::load(&keyring_path, Secret::blob("test")).await?;
822+
keyring
823+
.create_item(
824+
"test 3",
825+
&HashMap::from([("attr3", "value3")]),
826+
"password3",
827+
false,
828+
)
829+
.await?;
830+
drop(keyring);
831+
832+
let keyring = unsafe {
833+
Keyring::load_unchecked(&keyring_path, Secret::blob("wrong_password")).await?
834+
};
835+
keyring
836+
.create_item(
837+
"test",
838+
&HashMap::from([("attr", "value")]),
839+
"password",
840+
false,
841+
)
842+
.await?;
843+
drop(keyring);
844+
845+
assert!(Keyring::load(&keyring_path, Secret::blob("wrong_password"))
846+
.await
847+
.is_err());
848+
849+
let keyring = Keyring::load(&keyring_path, Secret::blob("test")).await?;
850+
keyring
851+
.create_item(
852+
"test 2",
853+
&HashMap::from([("attr2", "value2")]),
854+
"password2",
855+
false,
856+
)
857+
.await?;
858+
859+
assert_eq!(keyring.delete_broken_items().await?, 1);
860+
assert_eq!(keyring.delete_broken_items().await?, 0);
861+
862+
fs::remove_file(keyring_path).await?;
863+
864+
Ok(())
865+
}
866+
808867
#[tokio::test]
809868
async fn change_secret() -> Result<(), Error> {
810869
let data_dir = tempdir()?;

0 commit comments

Comments
 (0)