def test_change_flags(db, default_account, message, folder, mock_imapclient): mock_imapclient.add_folder_data(folder.name, {}) mock_imapclient.add_flags = mock.Mock() mock_imapclient.remove_flags = mock.Mock() add_fake_imapuid(db.session, default_account.id, message, folder, 22) with writable_connection_pool(default_account.id).get() as crispin_client: mark_unread(crispin_client, default_account.id, message.id, {'unread': False}) mock_imapclient.add_flags.assert_called_with([22], ['\\Seen'], silent=True) mark_unread(crispin_client, default_account.id, message.id, {'unread': True}) mock_imapclient.remove_flags.assert_called_with([22], ['\\Seen'], silent=True) mark_starred(crispin_client, default_account.id, message.id, {'starred': True}) mock_imapclient.add_flags.assert_called_with([22], ['\\Flagged'], silent=True) mark_starred(crispin_client, default_account.id, message.id, {'starred': False}) mock_imapclient.remove_flags.assert_called_with([22], ['\\Flagged'], silent=True)
def test_generic_drafts_flag_constrained_by_folder(db, generic_account, folder_role): msg_uid = 22 thread = add_fake_thread(db.session, generic_account.namespace.id) message = add_fake_message(db.session, generic_account.namespace.id, thread) folder = add_fake_folder(db.session, generic_account) add_fake_imapuid(db.session, generic_account.id, message, folder, msg_uid) new_flags = {msg_uid: Flags(('\\Draft', ), None)} update_metadata(generic_account.id, folder.id, folder_role, new_flags, db.session) assert message.is_draft == (folder_role == 'drafts')
def test_generic_drafts_flag_constrained_by_folder(db, generic_account, folder_role): msg_uid = 22 thread = add_fake_thread(db.session, generic_account.namespace.id) message = add_fake_message(db.session, generic_account.namespace.id, thread) folder = add_fake_folder(db.session, generic_account) add_fake_imapuid(db.session, generic_account.id, message, folder, msg_uid) new_flags = {msg_uid: Flags(('\\Draft',), None)} update_metadata(generic_account.id, folder.id, folder_role, new_flags, db.session) assert message.is_draft == (folder_role == 'drafts')
def test_change_labels(db, default_account, message, folder, mock_imapclient): mock_imapclient.add_folder_data(folder.name, {}) mock_imapclient.add_gmail_labels = mock.Mock() mock_imapclient.remove_gmail_labels = mock.Mock() add_fake_imapuid(db.session, default_account.id, message, folder, 22) with writable_connection_pool(default_account.id).get() as crispin_client: change_labels(crispin_client, default_account.id, [message.id], {'removed_labels': ['\\Inbox'], 'added_labels': [u'motörhead', u'μετάνοια']}) mock_imapclient.add_gmail_labels.assert_called_with( [22], ['mot&APY-rhead', '&A7wDtQPEA6wDvQO,A7kDsQ-'], silent=True) mock_imapclient.remove_gmail_labels.assert_called_with([22], ['\\Inbox'], silent=True)
def folder_and_message_maps(db, default_account): folder_map, message_map = {}, {} for name in ('all', 'trash', 'spam'): # Create a folder display_name = name.capitalize() if name != 'all' else 'All Mail' folder = add_fake_folder(db.session, default_account, display_name, name) thread = add_fake_thread(db.session, default_account.namespace.id) # Create a message in the folder message = add_fake_message(db.session, default_account.namespace.id, thread) add_fake_imapuid(db.session, default_account.id, message, folder, 13) update_message_metadata(db.session, default_account, message, False) db.session.commit() folder_map[name] = folder message_map[name] = message return folder_map, message_map
def test_change_labels(db, default_account, message, folder, mock_imapclient): mock_imapclient.add_folder_data(folder.name, {}) mock_imapclient.add_gmail_labels = mock.Mock() mock_imapclient.remove_gmail_labels = mock.Mock() add_fake_imapuid(db.session, default_account.id, message, folder, 22) with writable_connection_pool(default_account.id).get() as crispin_client: change_labels( crispin_client, default_account.id, [message.id], { 'removed_labels': ['\\Inbox'], 'added_labels': [u'motörhead', u'μετάνοια'] }) mock_imapclient.add_gmail_labels.assert_called_with( [22], ['mot&APY-rhead', '&A7wDtQPEA6wDvQO,A7kDsQ-'], silent=True) mock_imapclient.remove_gmail_labels.assert_called_with([22], ['\\Inbox'], silent=True)
def add_completely_fake_account(db, email='*****@*****.**'): from inbox.models.backends.gmail import GmailAuthCredentials fake_account = add_fake_gmail_account(db.session, email_address=email) calendar = add_fake_calendar(db.session, fake_account.namespace.id) for i in random_range(1, 10): add_fake_event(db.session, fake_account.namespace.id, calendar=calendar, title='%s' % i) # Add fake Threads, Messages and ImapUids. folder = add_fake_folder(db.session, fake_account) for i in random_range(1, 4): th = add_fake_thread(db.session, fake_account.namespace.id) for j in random_range(1, 3): msg = add_fake_msg_with_calendar_part(db.session, fake_account, 'fake part', thread=th) db.session.add(msg) db.session.flush() for k in random_range(1, 2): add_fake_imapuid(db.session, fake_account.id, msg, folder, int('%s%s' % (msg.id, k))) # Add fake contacts for i in random_range(1, 5): add_fake_contact(db.session, fake_account.namespace.id, uid=str(i)) auth_creds = GmailAuthCredentials() auth_creds.gmailaccount = fake_account auth_creds.scopes = "email" auth_creds.g_id_token = "test" auth_creds.client_id = "test" auth_creds.client_secret = "test" auth_creds.refresh_token = "test" auth_creds.is_valid = True db.session.add(auth_creds) db.session.commit() return fake_account
def test_deleting_from_a_message_with_multiple_uids(db, default_account, message, thread): """Check that deleting a imapuid from a message with multiple uids doesn't mark the message for deletion.""" inbox_folder = Folder.find_or_create(db.session, default_account, 'inbox', 'inbox') sent_folder = Folder.find_or_create(db.session, default_account, 'sent', 'sent') add_fake_imapuid(db.session, default_account.id, message, sent_folder, 1337) add_fake_imapuid(db.session, default_account.id, message, inbox_folder, 2222) assert len(message.imapuids) == 2 remove_deleted_uids(default_account.id, inbox_folder.id, [2222]) db.session.expire_all() assert message.deleted_at is None, \ "The associated message should not have been marked for deletion." assert len(message.imapuids) == 1, \ "The message should have only one imapuid."
def different_imap_messages(db, generic_account, different_sorted_imap_threads, different_imap_folder): thread1, thread2, thread3 = different_sorted_imap_threads message1 = add_fake_message(db.session, generic_account.namespace.id, thread=thread1, from_addr=[{'name': '', 'email': '*****@*****.**'}], to_addr=[{'name': 'Ben Bitdiddle', 'email': '*****@*****.**'}], received_date=datetime. datetime(2015, 7, 9, 23, 50, 7), subject='LOL') add_fake_imapuid(db.session, generic_account.id, message1, different_imap_folder, 5000) message2 = add_fake_message(db.session, generic_account.namespace.id, thread=thread2, from_addr=[{'name': '', 'email': '*****@*****.**'}], to_addr=[{'name': 'Ben Bitdiddle', 'email': '*****@*****.**'}], received_date=datetime. datetime(2014, 7, 9, 23, 50, 7), subject='ROTFLMO') add_fake_imapuid(db.session, generic_account.id, message2, different_imap_folder, 5001) message3 = add_fake_message(db.session, generic_account.namespace.id, thread=thread3, from_addr=[{'name': '', 'email': '*****@*****.**'}], to_addr=[{'name': 'Ben Bitdiddle', 'email': '*****@*****.**'}], received_date=datetime. datetime(2013, 7, 9, 23, 50, 7), subject='ROFLCOPTER') add_fake_imapuid(db.session, generic_account.id, message3, different_imap_folder, 5002) return [message1, message2, message3]
def sorted_gmail_messages(db, default_account, sorted_gmail_threads, folder): thread1, thread2, thread3 = sorted_gmail_threads message1 = add_fake_message(db.session, default_account.namespace.id, thread=thread1, g_msgid=1, from_addr=[{'name': 'Ben Bitdiddle', 'email': '*****@*****.**'}], to_addr=[{'name': 'Barrack Obama', 'email': '*****@*****.**'}], received_date=datetime. datetime(2015, 7, 9, 23, 50, 7), subject='YOO!') add_fake_imapuid(db.session, default_account.id, message1, folder, 3000) message2 = add_fake_message(db.session, default_account.namespace.id, thread=thread2, g_msgid=2, from_addr=[{'name': 'Ben Bitdiddle', 'email': '*****@*****.**'}], to_addr=[{'name': 'Barrack Obama', 'email': '*****@*****.**'}], received_date=datetime. datetime(2014, 7, 9, 23, 50, 7), subject='Hey!') add_fake_imapuid(db.session, default_account.id, message2, folder, 3001) message3 = add_fake_message(db.session, default_account.namespace.id, thread=thread3, g_msgid=3, from_addr=[{'name': 'Ben Bitdiddle', 'email': '*****@*****.**'}], to_addr=[{'name': 'Barrack Obama', 'email': '*****@*****.**'}], received_date=datetime. datetime(2013, 7, 9, 23, 50, 7), subject='Sup?') add_fake_imapuid(db.session, default_account.id, message3, folder, 3002) return [message1, message2, message3]
def sorted_imap_messages(db, generic_account, sorted_imap_threads, imap_folder): thread1, thread2, thread3 = sorted_imap_threads message1 = add_fake_message(db.session, generic_account.namespace.id, thread=thread1, from_addr=[{'name': '', 'email': '*****@*****.**'}], to_addr=[{'name': 'Ben Bitdiddle', 'email': '*****@*****.**'}], received_date=datetime. datetime(2015, 7, 9, 23, 50, 7), subject='YOO!') add_fake_imapuid(db.session, generic_account.id, message1, imap_folder, 2000) message2 = add_fake_message(db.session, generic_account.namespace.id, thread=thread2, from_addr=[{'name': '', 'email': '*****@*****.**'}], to_addr=[{'name': 'Ben Bitdiddle', 'email': '*****@*****.**'}], received_date=datetime. datetime(2014, 7, 9, 23, 50, 7), subject='Hey!') add_fake_imapuid(db.session, generic_account.id, message2, imap_folder, 2001) message3 = add_fake_message(db.session, generic_account.namespace.id, thread=thread3, from_addr=[{'name': '', 'email': '*****@*****.**'}], to_addr=[{'name': 'Ben Bitdiddle', 'email': '*****@*****.**'}], received_date=datetime. datetime(2013, 7, 9, 23, 50, 7), subject='Sup?') add_fake_imapuid(db.session, generic_account.id, message3, imap_folder, 2002) return [message1, message2, message3]