def test_gmail_message_deduplication(db, default_account, all_mail_folder, trash_folder, mock_imapclient): uid = 22 uid_values = uid_data.example() mock_imapclient.list_folders = lambda: [(('\\All', '\\HasNoChildren',), '/', u'[Gmail]/All Mail'), (('\\Trash', '\\HasNoChildren',), '/', u'[Gmail]/Trash')] mock_imapclient.idle = lambda: None mock_imapclient.add_folder_data(all_mail_folder.name, {uid: uid_values}) mock_imapclient.add_folder_data(trash_folder.name, {uid: uid_values}) all_folder_sync_engine = GmailFolderSyncEngine( default_account.id, default_account.namespace.id, all_mail_folder.name, default_account.email_address, 'gmail', BoundedSemaphore(1)) all_folder_sync_engine.initial_sync() trash_folder_sync_engine = GmailFolderSyncEngine( default_account.id, default_account.namespace.id, trash_folder.name, default_account.email_address, 'gmail', BoundedSemaphore(1)) trash_folder_sync_engine.initial_sync() # Check that we have two uids, but just one message. assert [(uid,)] == db.session.query(ImapUid.msg_uid).filter( ImapUid.folder_id == all_mail_folder.id).all() assert [(uid,)] == db.session.query(ImapUid.msg_uid).filter( ImapUid.folder_id == trash_folder.id).all() assert db.session.query(Message).filter( Message.namespace_id == default_account.namespace.id, Message.g_msgid == uid_values['X-GM-MSGID']).count() == 1
def test_gmail_message_deduplication(db, default_account, all_mail_folder, trash_folder, mock_imapclient): uid = 22 uid_values = uid_data.example() mock_imapclient.list_folders = lambda: [ (( "\\All", "\\HasNoChildren", ), "/", u"[Gmail]/All Mail"), (( "\\Trash", "\\HasNoChildren", ), "/", u"[Gmail]/Trash"), ] mock_imapclient.idle = lambda: None mock_imapclient.add_folder_data(all_mail_folder.name, {uid: uid_values}) mock_imapclient.add_folder_data(trash_folder.name, {uid: uid_values}) mock_imapclient.idle_check = raise_imap_error all_folder_sync_engine = GmailFolderSyncEngine( default_account.id, default_account.namespace.id, all_mail_folder.name, default_account.email_address, "gmail", BoundedSemaphore(1), ) all_folder_sync_engine.initial_sync() trash_folder_sync_engine = GmailFolderSyncEngine( default_account.id, default_account.namespace.id, trash_folder.name, default_account.email_address, "gmail", BoundedSemaphore(1), ) trash_folder_sync_engine.initial_sync() # Check that we have two uids, but just one message. assert [(uid, )] == db.session.query( ImapUid.msg_uid).filter(ImapUid.folder_id == all_mail_folder.id).all() assert [(uid, )] == db.session.query( ImapUid.msg_uid).filter(ImapUid.folder_id == trash_folder.id).all() assert (db.session.query(Message).filter( Message.namespace_id == default_account.namespace.id, Message.g_msgid == uid_values["X-GM-MSGID"], ).count() == 1)
def test_gmail_initial_sync(db, default_account, all_mail_folder, mock_imapclient): uid_dict = uids.example() mock_imapclient.add_folder_data(all_mail_folder.name, uid_dict) mock_imapclient.list_folders = lambda: [(('\\All', '\\HasNoChildren',), '/', u'[Gmail]/All Mail')] mock_imapclient.idle = lambda: None folder_sync_engine = GmailFolderSyncEngine(default_account.id, default_account.namespace.id, all_mail_folder.name, default_account.email_address, 'gmail', BoundedSemaphore(1)) folder_sync_engine.initial_sync() saved_uids = db.session.query(ImapUid).filter( ImapUid.folder_id == all_mail_folder.id) assert {u.msg_uid for u in saved_uids} == set(uid_dict)
def test_gmail_initial_sync(db, default_account, all_mail_folder, mock_imapclient): uid_dict = uids.example() mock_imapclient.add_folder_data(all_mail_folder.name, uid_dict) mock_imapclient.list_folders = lambda: [(( "\\All", "\\HasNoChildren", ), "/", u"[Gmail]/All Mail")] mock_imapclient.idle = lambda: None mock_imapclient.idle_check = raise_imap_error folder_sync_engine = GmailFolderSyncEngine( default_account.id, default_account.namespace.id, all_mail_folder.name, default_account.email_address, "gmail", BoundedSemaphore(1), ) folder_sync_engine.initial_sync() saved_uids = db.session.query(ImapUid).filter( ImapUid.folder_id == all_mail_folder.id) assert {u.msg_uid for u in saved_uids} == set(uid_dict)