本文整理汇总了Python中inbox.mailsync.backends.imap.generic.FolderSyncEngine.initial_sync方法的典型用法代码示例。如果您正苦于以下问题:Python FolderSyncEngine.initial_sync方法的具体用法?Python FolderSyncEngine.initial_sync怎么用?Python FolderSyncEngine.initial_sync使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类inbox.mailsync.backends.imap.generic.FolderSyncEngine
的用法示例。
在下文中一共展示了FolderSyncEngine.initial_sync方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: test_condstore_flags_refresh
# 需要导入模块: from inbox.mailsync.backends.imap.generic import FolderSyncEngine [as 别名]
# 或者: from inbox.mailsync.backends.imap.generic.FolderSyncEngine import initial_sync [as 别名]
def test_condstore_flags_refresh(db, default_account, all_mail_folder,
mock_imapclient, monkeypatch):
monkeypatch.setattr(
'inbox.mailsync.backends.imap.generic.CONDSTORE_FLAGS_REFRESH_BATCH_SIZE',
10)
uid_dict = uids.example()
mock_imapclient.add_folder_data(all_mail_folder.name, uid_dict)
mock_imapclient.capabilities = lambda: ['CONDSTORE']
folder_sync_engine = FolderSyncEngine(default_account.id,
default_account.namespace.id,
all_mail_folder.name,
default_account.email_address,
'gmail',
BoundedSemaphore(1))
folder_sync_engine.initial_sync()
# Change the labels provided by the mock IMAP server
for k, v in mock_imapclient._data[all_mail_folder.name].items():
v['X-GM-LABELS'] = ('newlabel',)
v['MODSEQ'] = (k,)
folder_sync_engine.highestmodseq = 0
folder_sync_engine.poll_impl()
imapuids = db.session.query(ImapUid). \
filter_by(folder_id=all_mail_folder.id).all()
for imapuid in imapuids:
assert 'newlabel' in [l.name for l in imapuid.labels]
assert folder_sync_engine.highestmodseq == mock_imapclient.folder_status(
all_mail_folder.name, ['HIGHESTMODSEQ'])['HIGHESTMODSEQ']
示例2: test_generic_flags_refresh_expunges_transient_uids
# 需要导入模块: from inbox.mailsync.backends.imap.generic import FolderSyncEngine [as 别名]
# 或者: from inbox.mailsync.backends.imap.generic.FolderSyncEngine import initial_sync [as 别名]
def test_generic_flags_refresh_expunges_transient_uids(
db, generic_account, inbox_folder, mock_imapclient, monkeypatch):
# Check that we delete UIDs which are synced but quickly deleted, so never
# show up in flags refresh.
uid_dict = uids.example()
mock_imapclient.add_folder_data(inbox_folder.name, uid_dict)
inbox_folder.imapfolderinfo = ImapFolderInfo(account=generic_account,
uidvalidity=1,
uidnext=1)
db.session.commit()
folder_sync_engine = FolderSyncEngine(generic_account.id,
generic_account.namespace.id,
inbox_folder.name,
generic_account.email_address,
'custom',
BoundedSemaphore(1))
folder_sync_engine.initial_sync()
folder_sync_engine.poll_impl()
msg = db.session.query(Message).filter_by(
namespace_id=generic_account.namespace.id).first()
transient_uid = ImapUid(folder=inbox_folder, account=generic_account,
message=msg, msg_uid=max(uid_dict) + 1)
db.session.add(transient_uid)
db.session.commit()
folder_sync_engine.last_slow_refresh = None
folder_sync_engine.poll_impl()
with pytest.raises(ObjectDeletedError):
transient_uid.id
示例3: test_imap_message_deduplication
# 需要导入模块: from inbox.mailsync.backends.imap.generic import FolderSyncEngine [as 别名]
# 或者: from inbox.mailsync.backends.imap.generic.FolderSyncEngine import initial_sync [as 别名]
def test_imap_message_deduplication(db, generic_account, inbox_folder,
generic_trash_folder, mock_imapclient):
uid = 22
uid_values = uid_data.example()
mock_imapclient.list_folders = lambda: [(('\\All', '\\HasNoChildren',),
'/', u'/Inbox'),
(('\\Trash', '\\HasNoChildren',),
'/', u'/Trash')]
mock_imapclient.idle = lambda: None
mock_imapclient.add_folder_data(inbox_folder.name, {uid: uid_values})
mock_imapclient.add_folder_data(generic_trash_folder.name,
{uid: uid_values})
folder_sync_engine = FolderSyncEngine(
generic_account.id,
generic_account.namespace.id,
inbox_folder.name,
generic_account.email_address,
'custom',
BoundedSemaphore(1),
mock.Mock())
folder_sync_engine.initial_sync()
trash_folder_sync_engine = FolderSyncEngine(
generic_account.id,
generic_account.namespace.id,
generic_trash_folder.name,
generic_account.email_address,
'custom',
BoundedSemaphore(1),
mock.Mock())
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 == inbox_folder.id).all()
assert [(uid,)] == db.session.query(ImapUid.msg_uid).filter(
ImapUid.folder_id == generic_trash_folder.id).all()
# used to uniquely ID messages
body_sha = sha256(uid_values['BODY[]']).hexdigest()
assert db.session.query(Message).filter(
Message.namespace_id == generic_account.namespace.id,
Message.data_sha256 == body_sha).count() == 1
示例4: test_initial_sync
# 需要导入模块: from inbox.mailsync.backends.imap.generic import FolderSyncEngine [as 别名]
# 或者: from inbox.mailsync.backends.imap.generic.FolderSyncEngine import initial_sync [as 别名]
def test_initial_sync(db, generic_account, inbox_folder, mock_imapclient):
# We should really be using hypothesis.given() to generate lots of
# different uid sets, but it's not trivial to ensure that no state is
# carried over between runs. This will have to suffice for now as a way to
# at least establish coverage.
uid_dict = uids.example()
mock_imapclient.add_folder_data(inbox_folder.name, uid_dict)
folder_sync_engine = FolderSyncEngine(generic_account.id,
generic_account.namespace.id,
inbox_folder.name,
generic_account.email_address,
'custom',
BoundedSemaphore(1))
folder_sync_engine.initial_sync()
saved_uids = db.session.query(ImapUid).filter(
ImapUid.folder_id == inbox_folder.id)
assert {u.msg_uid for u in saved_uids} == set(uid_dict)
saved_message_hashes = {u.message.data_sha256 for u in saved_uids}
assert saved_message_hashes == {sha256(v['BODY[]']).hexdigest() for v in
uid_dict.values()}
示例5: test_handle_uidinvalid
# 需要导入模块: from inbox.mailsync.backends.imap.generic import FolderSyncEngine [as 别名]
# 或者: from inbox.mailsync.backends.imap.generic.FolderSyncEngine import initial_sync [as 别名]
def test_handle_uidinvalid(db, generic_account, inbox_folder, mock_imapclient):
uid_dict = uids.example()
mock_imapclient.add_folder_data(inbox_folder.name, uid_dict)
inbox_folder.imapfolderinfo = ImapFolderInfo(account=generic_account,
uidvalidity=1,
uidnext=1)
db.session.commit()
folder_sync_engine = FolderSyncEngine(generic_account.id,
generic_account.namespace.id,
inbox_folder.name,
generic_account.email_address,
'custom',
BoundedSemaphore(1))
folder_sync_engine.initial_sync()
mock_imapclient.uidvalidity = 2
with pytest.raises(UidInvalid):
folder_sync_engine.poll_impl()
new_state = folder_sync_engine.resync_uids()
assert new_state == 'initial'
assert db.session.query(ImapUid).filter(
ImapUid.folder_id == inbox_folder.id).all() == []