purge: skip broadcasts of deleted authors, purge outbox log, guards, 410 inbox test
This commit is contained in:
@@ -90,6 +90,7 @@ impl ObjectStorage for Storage {
|
||||
|
||||
struct Fixture {
|
||||
handler: Arc<AccountPurgeHandler>,
|
||||
purger: Arc<Purger>,
|
||||
log: Log,
|
||||
store: Arc<InMemoryStore>,
|
||||
user: UserId,
|
||||
@@ -103,21 +104,23 @@ async fn fixture(notify_fails: bool, tombstoned: bool) -> Fixture {
|
||||
store.mark_deleted(alice.id(), &[]).await.unwrap();
|
||||
}
|
||||
let log: Log = Arc::default();
|
||||
let purger = Arc::new(Purger {
|
||||
log: log.clone(),
|
||||
purged: Mutex::new(false),
|
||||
keys: vec!["avatars/a.webp".into(), "banners/a.webp".into()],
|
||||
});
|
||||
let handler = Arc::new(AccountPurgeHandler::new(
|
||||
store.clone(),
|
||||
Arc::new(Notifier {
|
||||
log: log.clone(),
|
||||
fail: notify_fails,
|
||||
}),
|
||||
Arc::new(Purger {
|
||||
log: log.clone(),
|
||||
purged: Mutex::new(false),
|
||||
keys: vec!["avatars/a.webp".into(), "banners/a.webp".into()],
|
||||
}),
|
||||
purger.clone(),
|
||||
Arc::new(Storage { log: log.clone() }),
|
||||
));
|
||||
Fixture {
|
||||
handler,
|
||||
purger,
|
||||
log,
|
||||
store,
|
||||
user: alice.id().clone(),
|
||||
@@ -251,3 +254,25 @@ async fn a_redelivered_event_is_skipped_by_the_ledger() {
|
||||
let purges = entries(&f.log).iter().filter(|e| *e == "purge").count();
|
||||
assert_eq!(purges, 1);
|
||||
}
|
||||
|
||||
/// The rows were committed but the worker died before deleting the image
|
||||
/// objects: the redelivery finds the account purged, still sees the image
|
||||
/// references, deletes the objects and clears the references.
|
||||
#[tokio::test]
|
||||
async fn a_rerun_after_a_crash_following_the_commit_deletes_the_images() {
|
||||
let f = fixture(false, true).await;
|
||||
*f.purger.purged.lock().unwrap() = true;
|
||||
|
||||
f.handler.handle(&deleted(&f.user)).await.unwrap();
|
||||
|
||||
assert_eq!(
|
||||
entries(&f.log),
|
||||
[
|
||||
"purge",
|
||||
"delete avatars/a.webp",
|
||||
"delete banners/a.webp",
|
||||
"forget"
|
||||
],
|
||||
"no second federation notice, images removed and forgotten"
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user