def create_account(self, email_address, response): # This method assumes that the existence of an account for the # provider and email_address has been checked by the caller; # callers may have different methods of performing the check # (redwood auth versus get_account()) namespace = Namespace() account = GenericAccount(namespace=namespace) # The server endpoints can ONLY be set at account creation and # CANNOT be subsequently changed in order to prevent MITM attacks. account.provider = self.provider_name if self.provider_name == 'custom': account.imap_endpoint = (response['imap_server_host'], response['imap_server_port']) account.smtp_endpoint = (response['smtp_server_host'], response['smtp_server_port']) # Shim for back-compatability with legacy auth # The old API does NOT send these but authentication now uses them # so set them (included here, set in update_account()). for username in ['imap_username', 'smtp_username']: if username not in response: response[username] = email_address for password in ['imap_password', 'smtp_password']: if password not in response: response[password] = response['password'] return self.update_account(account, response)
def create_account(self, db_session, email_address, response): try: account = db_session.query(GenericAccount).filter_by( email_address=email_address).one() except sqlalchemy.orm.exc.NoResultFound: namespace = Namespace() account = GenericAccount(namespace=namespace) account.email_address = response['email'] account.password = response['password'] account.date = datetime.datetime.utcnow() provider_name = self.provider_name account.provider = provider_name if provider_name == 'custom': account.imap_endpoint = (response['imap_server_host'], response['imap_server_port']) account.smtp_endpoint = (response['smtp_server_host'], response['smtp_server_port']) # Hack to ensure that account syncs get restarted if they were stopped # because of e.g. invalid credentials and the user re-auths. # TODO(emfree): remove after status overhaul. if account.sync_state != 'running': account.sync_state = None return account
def make_imap_account(db_session, email_address): import platform from inbox.models.backends.generic import GenericAccount from inbox.models import Namespace account = GenericAccount(email_address=email_address, sync_host=platform.node(), provider='custom') account.password = '******' account.namespace = Namespace() db_session.add(account) db_session.commit() return account
def add_fake_yahoo_account(db_session, email_address='*****@*****.**'): import platform from inbox.models.backends.generic import GenericAccount from inbox.models import Namespace account = GenericAccount(email_address=email_address, sync_host=platform.node(), provider='yahoo') account.imap_password = '******' account.smtp_password = '******' account.namespace = Namespace() db_session.add(account) db_session.commit() return account
def generic_account(db): import platform from inbox.models.backends.generic import GenericAccount from inbox.models import Namespace ns = Namespace() account = GenericAccount(email_address="*****@*****.**", sync_host=platform.node(), provider="custom") account.namespace = ns account.create_emailed_events_calendar() account.password = "******" db.session.add(account) db.session.commit() return account
def test_gracefully_handle_new_namespace(db, api_client): new_namespace = Namespace() new_account = GenericAccount() new_account.password = '******' new_namespace.account = new_account db.session.add(new_namespace) db.session.add(new_account) db.session.commit() cursor = get_cursor(api_client, int(time.time()), new_namespace) url = url_concat('/n/{}/delta/streaming'.format(new_namespace.public_id), {'timeout': .1, 'cursor': cursor}) r = api_client.get_raw(url) assert r.status_code == 200
def add_account_with_different_namespace_id(db_session, email_address='*****@*****.**'): import platform from inbox.models.backends.generic import GenericAccount from inbox.models import Namespace account = GenericAccount(id=11, email_address=email_address, sync_host=platform.node(), provider='yahoo') account.imap_password = '******' account.smtp_password = '******' account.namespace = Namespace() db_session.add(account) db_session.commit() assert account.namespace.id != account.id return account
def create_account(self, email_address, response): # This method assumes that the existence of an account for the # provider and email_address has been checked by the caller; # callers may have different methods of performing the check # (redwood auth versus get_account()) namespace = Namespace() account = GenericAccount(namespace=namespace) return self.update_account(account, response)
def create_account(db_session, email_address, response): provider_name = provider_from_address(email_address) if provider_name == "unknown": raise NotSupportedError('Inbox does not support the email provider.') try: account = db_session.query(GenericAccount).filter_by( email_address=email_address).one() except sqlalchemy.orm.exc.NoResultFound: namespace = Namespace() account = GenericAccount(namespace=namespace) account.email_address = response['email'] account.password = response['password'] account.date = datetime.datetime.utcnow() account.provider = provider_name return account
def add_fake_imap_account(db_session, provider, email_address, password): from inbox.models import Namespace from inbox.models.backends.generic import GenericAccount namespace = Namespace() account = GenericAccount(namespace=namespace, provider=provider, email_address=email_address, password=password) db_session.add(account) db_session.commit() return account
def create_account(self, account_data): namespace = Namespace() account = GenericAccount(namespace=namespace) account.provider = "custom" account.create_emailed_events_calendar() account.sync_should_run = False return self.update_account(account, account_data)
def create_account(self, db_session, email_address, response): try: account = db_session.query(GenericAccount).filter_by(email_address=email_address).one() except sqlalchemy.orm.exc.NoResultFound: namespace = Namespace() account = GenericAccount(namespace=namespace) account.email_address = response["email"] if response.get("name"): account.name = response["name"] account.password = response["password"] account.date = datetime.datetime.utcnow() provider_name = self.provider_name account.provider = provider_name if provider_name == "custom": account.imap_endpoint = (response["imap_server_host"], response["imap_server_port"]) account.smtp_endpoint = (response["smtp_server_host"], response["smtp_server_port"]) # Ensure account has sync enabled after authing. account.enable_sync() return account
def create_account(self, db_session, email_address, response): try: account = db_session.query(GenericAccount).filter_by( email_address=email_address).one() except sqlalchemy.orm.exc.NoResultFound: namespace = Namespace() account = GenericAccount(namespace=namespace) account.email_address = response['email'] account.password = response['password'] account.date = datetime.datetime.utcnow() provider_name = self.provider_name account.provider = provider_name if provider_name == 'custom': account.imap_endpoint = (response['imap_server_host'], response['imap_server_port']) account.smtp_endpoint = (response['smtp_server_host'], response['smtp_server_port']) # Ensure account has sync enabled after authing. account.enable_sync() return account
def add_generic_imap_account(db_session, email_address='*****@*****.**'): import platform from inbox.models.backends.generic import GenericAccount from inbox.models import Namespace account = GenericAccount(email_address=email_address, sync_host=platform.node(), provider='custom') account.imap_endpoint = ('imap.custom.com', 993) account.smtp_endpoint = ('smtp.custom.com', 587) account.imap_password = '******' account.smtp_password = '******' account.namespace = Namespace() db_session.add(account) db_session.commit() return account
def create_account(self, email_address, response): # This method assumes that the existence of an account for the # provider and email_address has been checked by the caller; # callers may have different methods of performing the check # (redwood auth versus get_account()) namespace = Namespace() account = GenericAccount(namespace=namespace) # Verification for legacy auth account creation attempts. for username in ['imap_username', 'smtp_username']: if username not in response: response[username] = email_address for password in ['imap_password', 'smtp_password']: if password not in response: response[password] = response['password'] return self.update_account(account, response)
def generic_account(db): import platform from inbox.models.backends.generic import GenericAccount from inbox.models import Namespace ns = Namespace() account = GenericAccount(email_address='*****@*****.**', sync_host=platform.node(), provider='custom') account.namespace = ns account.create_emailed_events_calendar() account.password = '******' db.session.add(account) db.session.commit() return account
def create_account(self, db_session, email_address, response): try: account = db_session.query(GenericAccount).filter_by( email_address=email_address).one() except sqlalchemy.orm.exc.NoResultFound: namespace = Namespace() account = GenericAccount(namespace=namespace) account.email_address = response['email'] account.password = response['password'] account.date = datetime.datetime.utcnow() provider_name = self.provider_name account.provider = provider_name if provider_name == 'custom': account.imap_endpoint = (response['imap_server_host'], response['imap_server_port']) account.smtp_endpoint = (response['smtp_server_host'], response['smtp_server_port']) return account