示例#1
0
def add_fake_account(db_session, email_address='*****@*****.**'):
    from inbox.models import Account, Namespace
    namespace = Namespace()
    account = Account(email_address=email_address, namespace=namespace)
    db_session.add(account)
    db_session.commit()
    return account
def test_stealing_limited_by_host(db, config):
    host = platform.node()
    config['DATABASE_HOSTS'][0]['SHARDS'][0]['SYNC_HOSTS'] = [host]
    config['DATABASE_HOSTS'][0]['SHARDS'][1]['SYNC_HOSTS'] = ['otherhost']
    purge_other_accounts()
    ss = SyncService(cpu_id=0, total_cpus=1)
    for key in (0, 1):
        with session_scope_by_shard_id(key) as db_session:
            acc = Account()
            acc.namespace = Namespace()
            db_session.add(acc)
            db_session.commit()

    ss.accounts_to_start()
    with session_scope_by_shard_id(0) as db_session:
        acc = db_session.query(Account).first()
        assert acc.sync_host == host
    with session_scope_by_shard_id(1) as db_session:
        acc = db_session.query(Account).first()
        assert acc.sync_host is None
示例#3
0
def test_accounts_started_on_all_shards(db, default_account, config):
    config['SYNC_STEAL_ACCOUNTS'] = True
    purge_other_accounts(default_account)
    default_account.sync_host = None
    db.session.commit()
    ss = SyncService(cpu_id=0, total_cpus=1)
    ss.host = 'localhost'
    account_ids = {default_account.id}
    for key in (0, 1):
        with session_scope_by_shard_id(key) as db_session:
            acc = Account()
            acc.namespace = Namespace()
            db_session.add(acc)
            db_session.commit()
            account_ids.add(acc.id)

    assert len(account_ids) == 3
    assert set(ss.accounts_to_start()) == account_ids
    for id_ in account_ids:
        with session_scope(id_) as db_session:
            acc = db_session.query(Account).get(id_)
            assert acc.sync_host == 'localhost'
示例#4
0
def test_canonicalization(db):
    from inbox.models import Namespace, Account
    ns = Namespace()
    account = Account(namespace=ns,
                      email_address='*****@*****.**')
    db.session.add(account)
    db.session.commit()
    assert account.email_address == '*****@*****.**'

    assert db.session.query(Account). \
        filter_by(email_address='*****@*****.**').count() == 1

    assert db.session.query(Account). \
        filter_by(email_address='*****@*****.**').count() == 1

    # Check that nothing bad happens if you pass something that can't actually
    # be parsed as an email address.
    assert db.session.query(Account). \
        filter_by(email_address='foo').count() == 0
    # Flanker will parse hostnames too, don't break on that.
    assert db.session.query(Account). \
        filter_by(email_address='http://example.com').count() == 0