コード例 #1
0
def test_headers_presence(default_namespace, db):
    data = {'subject': 'test draft', 'to': [{'email': '*****@*****.**'}]}
    draft = create_draft(data, default_namespace, db.session, False)

    assert draft.inbox_uid is not None
    assert draft.message_id_header is not None

    old_uid = draft.inbox_uid

    update_draft(db.session, default_namespace.account, draft,
                 body="updated body", blocks=[])

    assert draft.inbox_uid is not None
    assert draft.message_id_header is not None
    assert draft.inbox_uid != old_uid
コード例 #2
0
ファイル: ns_api.py プロジェクト: askagirl/sync-engine
def draft_update_api(public_id):
    data = request.get_json(force=True)
    original_draft = get_draft(public_id, data.get('version'), g.namespace.id,
                               g.db_session)

    # TODO(emfree): what if you try to update a draft on a *thread* that's been
    # deleted?

    data = request.get_json(force=True)

    to = get_recipients(data.get('to'), 'to')
    cc = get_recipients(data.get('cc'), 'cc')
    bcc = get_recipients(data.get('bcc'), 'bcc')
    from_addr = get_recipients(data.get('from_addr'), 'from_addr')
    reply_to = get_recipients(data.get('reply_to'), 'reply_to')

    if from_addr and len(from_addr) > 1:
        raise InputError("from_addr field can have at most one item")
    if reply_to and len(reply_to) > 1:
        raise InputError("reply_to field can have at most one item")

    subject = data.get('subject')
    body = data.get('body')
    files = get_attachments(data.get('file_ids'), g.namespace.id, g.db_session)

    draft = update_draft(g.db_session, g.namespace.account, original_draft,
                         to, subject, body, files, cc, bcc, from_addr,
                         reply_to)
    return g.encoder.jsonify(draft)
コード例 #3
0
def draft_update_api(public_id):
    data = request.get_json(force=True)
    original_draft = get_draft(public_id, data.get('version'), g.namespace.id,
                               g.db_session)

    # TODO(emfree): what if you try to update a draft on a *thread* that's been
    # deleted?

    data = request.get_json(force=True)

    to = get_recipients(data.get('to'), 'to')
    cc = get_recipients(data.get('cc'), 'cc')
    bcc = get_recipients(data.get('bcc'), 'bcc')
    from_addr = get_recipients(data.get('from_addr'), 'from_addr')
    reply_to = get_recipients(data.get('reply_to'), 'reply_to')

    if from_addr and len(from_addr) > 1:
        raise InputError("from_addr field can have at most one item")
    if reply_to and len(reply_to) > 1:
        raise InputError("reply_to field can have at most one item")

    subject = data.get('subject')
    body = data.get('body')
    tags = get_tags(data.get('tags'), g.namespace.id, g.db_session)
    files = get_attachments(data.get('file_ids'), g.namespace.id, g.db_session)

    draft = update_draft(g.db_session, g.namespace.account, original_draft,
                         to, subject, body, files, cc, bcc, from_addr,
                         reply_to, tags)
    return g.encoder.jsonify(draft)
コード例 #4
0
def draft_update_api(public_id):
    data = request.get_json(force=True)
    original_draft = get_draft(public_id, data.get('version'), g.namespace.id,
                               g.db_session)

    # TODO(emfree): what if you try to update a draft on a *thread* that's been
    # deleted?

    data = request.get_json(force=True)

    to = get_recipients(data.get('to'), 'to')
    cc = get_recipients(data.get('cc'), 'cc')
    bcc = get_recipients(data.get('bcc'), 'bcc')
    subject = data.get('subject')
    body = data.get('body')
    tags = get_tags(data.get('tags'), g.namespace.id, g.db_session)
    files = get_attachments(data.get('file_ids'), g.namespace.id, g.db_session)

    try:
        draft = update_draft(g.db_session, g.namespace.account, original_draft,
                             to, subject, body, files, cc, bcc, tags)
    except ActionError as e:
        return err(e.error, str(e))

    return g.encoder.jsonify(draft)
コード例 #5
0
def test_headers_presence(default_namespace, db):
    data = {"subject": "test draft", "to": [{"email": "*****@*****.**"}]}
    draft = create_message_from_json(data, default_namespace, db.session, False)

    assert draft.nylas_uid is not None
    assert draft.message_id_header is not None

    old_uid = draft.nylas_uid

    update_draft(
        db.session, default_namespace.account, draft, body="updated body", blocks=[]
    )

    assert draft.nylas_uid is not None
    assert draft.message_id_header is not None
    assert draft.nylas_uid != old_uid
コード例 #6
0
def test_draft_updates(db, default_account, mock_imapclient):
    # Set up folder list
    mock_imapclient._data['Drafts'] = {}
    mock_imapclient._data['Trash'] = {}
    mock_imapclient.list_folders = lambda: [
        (('\\HasNoChildren', '\\Drafts'), '/', 'Drafts'),
        (('\\HasNoChildren', '\\Trash'), '/', 'Trash')
    ]

    pool = writable_connection_pool(default_account.id)

    draft = create_message_from_json({'subject': 'Test draft'},
                                     default_account.namespace, db.session,
                                     True)

    draft.is_draft = True
    draft.version = 0
    remote_save_draft(default_account, draft, db.session)
    with pool.get() as conn:
        conn.select_folder('Drafts', lambda *args: True)
        assert len(conn.all_uids()) == 1

    # Check that draft is not resaved if already synced.
    remote_update_draft(default_account, draft, db.session)
    with pool.get() as conn:
        conn.select_folder('Drafts', lambda *args: True)
        assert len(conn.all_uids()) == 1

    # Check that an older version is deleted
    draft.version = 4
    update_draft(db.session,
                 default_account,
                 draft,
                 from_addr=draft.from_addr,
                 subject='New subject',
                 blocks=[])
    remote_update_draft(default_account, draft, db.session)
    with pool.get() as conn:
        conn.select_folder('Drafts', lambda *args: True)
        all_uids = conn.all_uids()
        assert len(all_uids) == 1
        data = conn.uids(all_uids)[0]
        parsed = mime.from_string(data.body)
        expected_message_id = '<{}-{}@mailer.nylas.com>'.format(
            draft.public_id, draft.version)
        assert parsed.headers.get('Message-Id') == expected_message_id
コード例 #7
0
def test_headers_presence(default_namespace, db):
    data = {'subject': 'test draft', 'to': [{'email': '*****@*****.**'}]}
    draft = create_draft(data, default_namespace, db.session, False)

    assert draft.inbox_uid is not None
    assert draft.message_id_header is not None

    old_uid = draft.inbox_uid

    update_draft(db.session,
                 default_namespace.account,
                 draft,
                 body="updated body",
                 blocks=[])

    assert draft.inbox_uid is not None
    assert draft.message_id_header is not None
    assert draft.inbox_uid != old_uid
コード例 #8
0
ファイル: test_actions.py プロジェクト: yodiyo/sync-engine
def test_draft_updates(db, default_account, mock_imapclient):
    # Set up folder list
    mock_imapclient._data['Drafts'] = {}
    mock_imapclient._data['Trash'] = {}
    mock_imapclient.list_folders = lambda: [
        (('\\HasNoChildren', '\\Drafts'), '/', 'Drafts'),
        (('\\HasNoChildren', '\\Trash'), '/', 'Trash')
    ]

    pool = writable_connection_pool(default_account.id)

    draft = create_message_from_json({'subject': 'Test draft'},
                                     default_account.namespace,
                                     db.session,
                                     True)

    draft.is_draft = True
    draft.version = 0
    remote_save_draft(default_account, draft, db.session)
    with pool.get() as conn:
        conn.select_folder('Drafts', lambda *args: True)
        assert len(conn.all_uids()) == 1

    # Check that draft is not resaved if already synced.
    remote_update_draft(default_account, draft, db.session)
    with pool.get() as conn:
        conn.select_folder('Drafts', lambda *args: True)
        assert len(conn.all_uids()) == 1

    # Check that an older version is deleted
    draft.version = 4
    update_draft(db.session, default_account, draft,
                 from_addr=draft.from_addr, subject='New subject', blocks=[])
    remote_update_draft(default_account, draft, db.session)
    with pool.get() as conn:
        conn.select_folder('Drafts', lambda *args: True)
        all_uids = conn.all_uids()
        assert len(all_uids) == 1
        data = conn.uids(all_uids)[0]
        parsed = mime.from_string(data.body)
        expected_message_id = '<{}-{}@mailer.nylas.com>'.format(
            draft.public_id, draft.version)
        assert parsed.headers.get('Message-Id') == expected_message_id