diff options
author | Andrew Morgan <1342360+anoadragon453@users.noreply.github.com> | 2021-09-01 10:13:01 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-09-01 09:13:01 +0000 |
commit | 3693ea61f5f56f4a49cce7e2b3ecd304f014d8cc (patch) | |
tree | 4434bf1ba7dbb969323252e560ba0003879518e8 /tests | |
parent | Move the sessions delta to the latest schema version. (#10725) (diff) | |
download | synapse-3693ea61f5f56f4a49cce7e2b3ecd304f014d8cc.tar.xz |
Fix iteration in _remove_deleted_email_pushers background job. (#10734)
Diffstat (limited to 'tests')
-rw-r--r-- | tests/push/test_email.py | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/tests/push/test_email.py b/tests/push/test_email.py index eea07485a0..c4ba13a6b2 100644 --- a/tests/push/test_email.py +++ b/tests/push/test_email.py @@ -344,6 +344,50 @@ class EmailPusherTests(HomeserverTestCase): pushers = list(pushers) self.assertEqual(len(pushers), 0) + def test_remove_unlinked_pushers_background_job(self): + """Checks that all existing pushers associated with unlinked email addresses are removed + upon running the remove_deleted_email_pushers background update. + """ + # disassociate the user's email address manually (without deleting the pusher). + # This resembles the old behaviour, which the background update below is intended + # to clean up. + self.get_success( + self.hs.get_datastore().user_delete_threepid( + self.user_id, "email", "a@example.com" + ) + ) + + # Run the "remove_deleted_email_pushers" background job + self.get_success( + self.hs.get_datastore().db_pool.simple_insert( + table="background_updates", + values={ + "update_name": "remove_deleted_email_pushers", + "progress_json": "{}", + "depends_on": None, + }, + ) + ) + + # ... and tell the DataStore that it hasn't finished all updates yet + self.hs.get_datastore().db_pool.updates._all_done = False + + # Now let's actually drive the updates to completion + while not self.get_success( + self.hs.get_datastore().db_pool.updates.has_completed_background_updates() + ): + self.get_success( + self.hs.get_datastore().db_pool.updates.do_next_background_update(100), + by=0.1, + ) + + # Check that all pushers with unlinked addresses were deleted + pushers = self.get_success( + self.hs.get_datastore().get_pushers_by({"user_name": self.user_id}) + ) + pushers = list(pushers) + self.assertEqual(len(pushers), 0) + def _check_for_mail(self): """Check that the user receives an email notification""" |