Example #1
0
def test_data_deduplication(s3_db, raw_message):
    from inbox.models import Namespace

    default_namespace = s3_db.session.query(Namespace).get(1)
    thread = add_fake_thread(s3_db.session, default_namespace.id)
    msg = new_message_from_synced(s3_db, default_namespace.account, raw_message)
    msg.thread = thread
    s3_db.session.add(msg)
    s3_db.session.commit()

    account = add_fake_account(s3_db.session)
    thread = add_fake_thread(s3_db.session, account.namespace.id)
    duplicate_msg = new_message_from_synced(s3_db, account, raw_message)
    duplicate_msg.thread = thread
    s3_db.session.add(duplicate_msg)
    s3_db.session.commit()

    assert len(msg.parts) == len(duplicate_msg.parts)

    for i in range(len(msg.parts)):
        msg_block = msg.parts[i].block
        duplicate_msg_block = duplicate_msg.parts[i].block

        assert msg_block.namespace_id == msg.namespace_id
        assert duplicate_msg_block.namespace_id == duplicate_msg.namespace_id

        assert msg_block.size == duplicate_msg_block.size
        assert msg_block.data_sha256 == duplicate_msg_block.data_sha256
        assert msg_block.data == duplicate_msg_block.data
def test_data_deduplication(db, default_namespace, raw_message):
    thread = add_fake_thread(db.session, default_namespace.id)
    msg = new_message_from_synced(db, default_namespace.account, raw_message)
    msg.thread = thread
    db.session.add(msg)
    db.session.commit()

    account = add_fake_account(db.session)
    thread = add_fake_thread(db.session, account.namespace.id)
    duplicate_msg = new_message_from_synced(db, account, raw_message)
    duplicate_msg.thread = thread
    db.session.add(duplicate_msg)
    db.session.commit()

    assert len(msg.parts) == len(duplicate_msg.parts)

    for i in range(len(msg.parts)):
        msg_block = msg.parts[i].block
        duplicate_msg_block = duplicate_msg.parts[i].block

        assert msg_block.namespace_id == msg.namespace_id
        assert duplicate_msg_block.namespace_id == duplicate_msg.namespace_id

        assert msg_block.size == duplicate_msg_block.size
        assert msg_block.data_sha256 == duplicate_msg_block.data_sha256
        assert msg_block.data == duplicate_msg_block.data
def stub_message_from_raw(db, raw_message):
    namespace_id = default_namespace(db).id
    new_msg = new_message_from_synced(db, default_namespace(db).account,
                                      raw_message)
    fake_thread = add_fake_thread(db.session, namespace_id)
    new_msg.thread = fake_thread
    db.session.add_all([new_msg, fake_thread])
    db.session.commit()
    return new_msg
def test_message_from_synced(db, default_account, default_namespace,
                             raw_message):
    m = new_message_from_synced(db, default_account, raw_message)
    assert m.namespace_id == default_namespace.id
    assert sorted(m.to_addr) == [[u'', u'*****@*****.**'],
                                 [u'', u'*****@*****.**'],
                                 [u'', u'*****@*****.**']]
    assert len(m.parts) == 4
    assert 'Attached Message Part' in [part.block.filename for part in m.parts]
    assert all(part.block.namespace_id == m.namespace_id for part in m.parts)
def test_rfc822_format(db, api_client, default_namespace, raw_message):
    """ Test the API response to retreive raw message contents """
    namespace_id = default_namespace.id
    new_msg = new_message_from_synced(db, default_namespace.account, raw_message)
    fake_thread = add_fake_thread(db.session, namespace_id)
    new_msg.thread = fake_thread
    db.session.add_all([new_msg, fake_thread])
    db.session.commit()

    full_path = api_client.full_path('/messages/{}'.format(new_msg.public_id))

    results = api_client.client.get(full_path,
                                    headers={'Accept': 'message/rfc822'})

    assert results.data == raw_message