コード例 #1
0
def test_verify_account(db, patched_gmail_client):
    handler = GmailAuthHandler('gmail')
    handler.connect_account = lambda account: None

    # Create an account with sync_email=True
    account = handler.create_account(settings['email'], settings)
    db.session.add(account)
    db.session.commit()
    assert account.sync_email == True
    # Verify an exception is raised if there is an email settings error.
    with pytest.raises(ImapSupportDisabledError):
        handler.verify_account(account)

    # Create an account with sync_email=True
    updated_settings = copy.deepcopy(settings)
    updated_settings['email'] = '*****@*****.**'
    updated_settings['sync_email'] = False
    account = handler.create_account(updated_settings['email'], updated_settings)
    db.session.add(account)
    db.session.commit()
    assert account.sync_email == False
    # Verify an exception is NOT raised if there is an email settings error.
    account = handler.verify_account(account)
コード例 #2
0
def test_verify_account(db, patched_gmail_client):
    handler = GmailAuthHandler('gmail')
    handler.connect_account = lambda account: None

    # Create an account with sync_email=True
    account = handler.create_account(settings['email'], settings)
    db.session.add(account)
    db.session.commit()
    assert account.sync_email is True
    # Verify an exception is raised if there is an email settings error.
    with pytest.raises(ImapSupportDisabledError):
        handler.verify_account(account)

    # Create an account with sync_email=True
    updated_settings = copy.deepcopy(settings)
    updated_settings['email'] = '*****@*****.**'
    updated_settings['sync_email'] = False
    account = handler.create_account(updated_settings['email'], updated_settings)
    db.session.add(account)
    db.session.commit()
    assert account.sync_email is False
    # Verify an exception is NOT raised if there is an email settings error.
    account = handler.verify_account(account)
コード例 #3
0
def test_successful_reauth_resets_sync_state(monkeypatch, db):
    monkeypatch.setattr('inbox.auth.gmail.GmailCrispinClient', mock.Mock())
    handler = GmailAuthHandler('gmail')
    handler.connect_account = lambda account: mock.Mock()

    account = handler.create_account(settings['email'], settings)
    assert handler.verify_account(account) is True
    # Brand new accounts have `sync_state`=None.
    assert account.sync_state is None
    db.session.add(account)
    db.session.commit()

    # Pretend account sync starts, and subsequently the password changes,
    # causing the account to be in `sync_state`='invalid'.
    account.mark_invalid()
    db.session.commit()
    assert account.sync_state == 'invalid'

    # Verify the `sync_state` is reset to 'running' on a successful "re-auth".
    account = handler.update_account(account, settings)
    assert handler.verify_account(account) is True
    assert account.sync_state == 'running'
    db.session.add(account)
    db.session.commit()
コード例 #4
0
def test_successful_reauth_resets_sync_state(monkeypatch, db):
    monkeypatch.setattr('inbox.auth.gmail.GmailCrispinClient', mock.Mock())
    handler = GmailAuthHandler('gmail')
    handler.connect_account = lambda account: mock.Mock()

    account = handler.create_account(settings['email'], settings)
    assert handler.verify_account(account) is True
    # Brand new accounts have `sync_state`=None.
    assert account.sync_state is None
    db.session.add(account)
    db.session.commit()

    # Pretend account sync starts, and subsequently the password changes,
    # causing the account to be in `sync_state`='invalid'.
    account.mark_invalid()
    db.session.commit()
    assert account.sync_state == 'invalid'

    # Verify the `sync_state` is reset to 'running' on a successful "re-auth".
    account = handler.update_account(account, settings)
    assert handler.verify_account(account) is True
    assert account.sync_state == 'running'
    db.session.add(account)
    db.session.commit()
コード例 #5
0
ファイル: auth_api.py プロジェクト: deepframe/sync-engine
def new_gmail_account():
    logger = get_logger()
  
    authcode = request.values.get('authcode')
    redirecturi = request.values.get('redirecturi')
    reauth = True
    auth_handler = GmailAuthHandler(provider_name='gmail')
    auth_handler.OAUTH_REDIRECT_URI = redirecturi

    auth_info = auth_handler._get_authenticated_user(authcode)
    auth_info['contacts'] = True
    auth_info['events'] = True
    auth_info['provider'] = 'gmail'

    email_address = auth_info['email']
    account_exists = False

    # Check for email in allowed emails list
    emails_filter_enabled = config.get('EMAILS_FILTER_ENABLED')
    allowed_emails = config.get('ALLOWED_EMAILS')
    if emails_filter_enabled and allowed_emails and email_address not in allowed_emails:
        return jsonify({"code": "email_not_allowed", "message": "Email not allowed", "profile": auth_info})

    with session_scope(0) as db_session:
        account = db_session.query(Account).filter_by(email_address=email_address).first()
        if account is not None and not reauth:
            api_id = account.namespace.public_id
            return jsonify({"code": "account_exist", "message": "Account already exist", "api_id": api_id})
        elif account is not None and reauth:
            account_exists = True
            account = auth_handler.update_account(account, auth_info)
        else:
            account = auth_handler.create_account(email_address, auth_info)
    
        try:
            if auth_handler.verify_account(account):
                db_session.add(account)
                db_session.commit()
        except NotSupportedError as e:
            return default_json_error(e)

        api_id = account.namespace.public_id

    if account_exists:
        return jsonify({"code": "account_updated", "message": "Account already exist and Updated", "api_id": api_id})

    return jsonify({"code": "account_created", "message": "new account created", "api_id": api_id})