def change_primary_email(self): previous_primary_email = self.request.user.primary_email try: new_primary_email = (self.request.db.query(Email).filter( Email.user_id == self.request.user.id, Email.id == self.request.POST["primary_email_id"], Email.verified.is_(True), ).one()) except NoResultFound: self.request.session.flash("Email address not found", queue="error") return self.default_response self.request.db.query(Email).filter( Email.user_id == self.request.user.id, Email.primary.is_(True)).update(values={"primary": False}) new_primary_email.primary = True self.request.session.flash( f"Email address {new_primary_email.email} set as primary", queue="success") send_primary_email_change_email( self.request, (self.request.user, previous_primary_email)) return self.default_response
def change_primary_email(self): previous_primary_email = self.request.user.primary_email try: new_primary_email = ( self.request.db.query(Email) .filter( Email.user_id == self.request.user.id, Email.id == self.request.POST["primary_email_id"], Email.verified.is_(True), ) .one() ) except NoResultFound: self.request.session.flash("Email address not found", queue="error") return self.default_response self.request.db.query(Email).filter( Email.user_id == self.request.user.id, Email.primary.is_(True) ).update(values={"primary": False}) new_primary_email.primary = True self.request.session.flash( f"Email address {new_primary_email.email} set as primary", queue="success" ) if previous_primary_email is not None: send_primary_email_change_email( self.request, (self.request.user, previous_primary_email) ) return self.default_response
def change_primary_email(self): previous_primary_email = self.request.user.email try: new_primary_email = self.request.db.query(Email).filter( Email.user_id == self.request.user.id, Email.id == self.request.POST['primary_email_id'], Email.verified.is_(True), ).one() except NoResultFound: self.request.session.flash('Email address not found', queue='error') return self.default_response self.request.db.query(Email).filter( Email.user_id == self.request.user.id, Email.primary.is_(True), ).update(values={'primary': False}) new_primary_email.primary = True self.request.session.flash( f'Email address {new_primary_email.email} set as primary', queue='success', ) send_primary_email_change_email(self.request, self.request.user, previous_primary_email) return self.default_response
def change_primary_email(self): previous_primary_email = self.request.user.email try: new_primary_email = self.request.db.query(Email).filter( Email.user_id == self.request.user.id, Email.id == self.request.POST['primary_email_id'], Email.verified.is_(True), ).one() except NoResultFound: self.request.session.flash( 'Email address not found.', queue='error' ) return self.default_response self.request.db.query(Email).filter( Email.user_id == self.request.user.id, Email.primary.is_(True), ).update(values={'primary': False}) new_primary_email.primary = True self.request.session.flash( f'Email address {new_primary_email.email} set as primary.', queue='success', ) send_primary_email_change_email( self.request, self.request.user, previous_primary_email ) return self.default_response
def test_primary_email_change_email( self, pyramid_request, pyramid_config, monkeypatch ): stub_user = pretend.stub( email="*****@*****.**", username="******", name="" ) subject_renderer = pyramid_config.testing_add_renderer( "email/primary-email-change/subject.txt" ) subject_renderer.string_response = "Email Subject" body_renderer = pyramid_config.testing_add_renderer( "email/primary-email-change/body.txt" ) body_renderer.string_response = "Email Body" html_renderer = pyramid_config.testing_add_renderer( "email/primary-email-change/body.html" ) html_renderer.string_response = "Email HTML Body" send_email = pretend.stub( delay=pretend.call_recorder(lambda *args, **kwargs: None) ) pyramid_request.task = pretend.call_recorder(lambda *args, **kwargs: send_email) monkeypatch.setattr(email, "send_email", send_email) result = email.send_primary_email_change_email( pyramid_request, (stub_user, pretend.stub(email="*****@*****.**", verified=True)), ) assert result == { "username": stub_user.username, "old_email": "*****@*****.**", "new_email": stub_user.email, } subject_renderer.assert_() body_renderer.assert_(username=stub_user.username) html_renderer.assert_(username=stub_user.username) assert pyramid_request.task.calls == [pretend.call(send_email)] assert send_email.delay.calls == [ pretend.call( "username <*****@*****.**>", attr.asdict( EmailMessage( subject="Email Subject", body_text="Email Body", body_html=( "<html>\n<head></head>\n" "<body><p>Email HTML Body</p></body>\n</html>\n" ), ) ), ) ]
def change_primary_email(self): previous_primary_email = self.request.user.primary_email try: new_primary_email = ( self.request.db.query(Email) .filter( Email.user_id == self.request.user.id, Email.id == self.request.POST["primary_email_id"], Email.verified.is_(True), ) .one() ) except NoResultFound: self.request.session.flash("Email address not found", queue="error") return self.default_response self.request.db.query(Email).filter( Email.user_id == self.request.user.id, Email.primary.is_(True) ).update(values={"primary": False}) new_primary_email.primary = True self.user_service.record_event( self.request.user.id, tag="account:email:primary:change", ip_address=self.request.remote_addr, additional={ "old_primary": previous_primary_email.email if previous_primary_email else None, "new_primary": new_primary_email.email, }, ) self.request.session.flash( f"Email address {new_primary_email.email} set as primary", queue="success" ) if previous_primary_email is not None: send_primary_email_change_email( self.request, (self.request.user, previous_primary_email) ) return self.default_response
def test_primary_email_change_email(self, pyramid_request, pyramid_config, monkeypatch): stub_user = pretend.stub(email="*****@*****.**", username="******", name="") subject_renderer = pyramid_config.testing_add_renderer( "email/primary-email-change/subject.txt") subject_renderer.string_response = "Email Subject" body_renderer = pyramid_config.testing_add_renderer( "email/primary-email-change/body.txt") body_renderer.string_response = "Email Body" html_renderer = pyramid_config.testing_add_renderer( "email/primary-email-change/body.html") html_renderer.string_response = "Email HTML Body" send_email = pretend.stub( delay=pretend.call_recorder(lambda *args, **kwargs: None)) pyramid_request.task = pretend.call_recorder( lambda *args, **kwargs: send_email) monkeypatch.setattr(email, "send_email", send_email) result = email.send_primary_email_change_email( pyramid_request, (stub_user, pretend.stub(email="*****@*****.**", verified=True)), ) assert result == { "username": stub_user.username, "old_email": "*****@*****.**", "new_email": stub_user.email, } subject_renderer.assert_() body_renderer.assert_(username=stub_user.username) html_renderer.assert_(username=stub_user.username) assert pyramid_request.task.calls == [pretend.call(send_email)] assert send_email.delay.calls == [ pretend.call( "username <*****@*****.**>", attr.asdict( EmailMessage( subject="Email Subject", body_text="Email Body", body_html=( "<html>\n<head></head>\n" "<body><p>Email HTML Body</p></body>\n</html>\n"), )), ) ]
def test_primary_email_change_email( self, pyramid_request, pyramid_config, monkeypatch): stub_user = pretend.stub( email='*****@*****.**', username='******', name="", ) subject_renderer = pyramid_config.testing_add_renderer( 'email/primary-email-change.subject.txt' ) subject_renderer.string_response = 'Email Subject' body_renderer = pyramid_config.testing_add_renderer( 'email/primary-email-change.body.txt' ) body_renderer.string_response = 'Email Body' send_email = pretend.stub( delay=pretend.call_recorder(lambda *args, **kwargs: None) ) pyramid_request.task = pretend.call_recorder( lambda *args, **kwargs: send_email ) monkeypatch.setattr(email, 'send_email', send_email) result = email.send_primary_email_change_email( pyramid_request, stub_user, "*****@*****.**", ) assert result == { 'username': stub_user.username, 'old_email': "*****@*****.**", 'new_email': stub_user.email } subject_renderer.assert_() body_renderer.assert_(username=stub_user.username) assert pyramid_request.task.calls == [ pretend.call(send_email), ] assert send_email.delay.calls == [ pretend.call( 'Email Subject', 'Email Body', recipient='username <*****@*****.**>', ), ]
def test_primary_email_change_email( self, pyramid_request, pyramid_config, monkeypatch): stub_user = pretend.stub( email='new_email', username='******', ) subject_renderer = pyramid_config.testing_add_renderer( 'email/primary-email-change.subject.txt' ) subject_renderer.string_response = 'Email Subject' body_renderer = pyramid_config.testing_add_renderer( 'email/primary-email-change.body.txt' ) body_renderer.string_response = 'Email Body' send_email = pretend.stub( delay=pretend.call_recorder(lambda *args, **kwargs: None) ) pyramid_request.task = pretend.call_recorder( lambda *args, **kwargs: send_email ) monkeypatch.setattr(email, 'send_email', send_email) result = email.send_primary_email_change_email( pyramid_request, stub_user, "old_email" ) assert result == { 'username': stub_user.username, 'old_email': "old_email", 'new_email': stub_user.email } subject_renderer.assert_() body_renderer.assert_(username=stub_user.username) assert pyramid_request.task.calls == [ pretend.call(send_email), ] assert send_email.delay.calls == [ pretend.call( 'Email Body', 'Email Subject', recipients=['old_email'], ), ]
def test_primary_email_change_email_unverified( self, pyramid_request, pyramid_config, monkeypatch ): stub_user = pretend.stub( email="*****@*****.**", username="******", name="" ) subject_renderer = pyramid_config.testing_add_renderer( "email/primary-email-change/subject.txt" ) subject_renderer.string_response = "Email Subject" body_renderer = pyramid_config.testing_add_renderer( "email/primary-email-change/body.txt" ) body_renderer.string_response = "Email Body" html_renderer = pyramid_config.testing_add_renderer( "email/primary-email-change/body.html" ) html_renderer.string_response = "Email HTML Body" send_email = pretend.stub( delay=pretend.call_recorder(lambda *args, **kwargs: None) ) pyramid_request.task = pretend.call_recorder(lambda *args, **kwargs: send_email) monkeypatch.setattr(email, "send_email", send_email) result = email.send_primary_email_change_email( pyramid_request, (stub_user, pretend.stub(email="*****@*****.**", verified=False)), ) assert result == { "username": stub_user.username, "old_email": "*****@*****.**", "new_email": stub_user.email, } subject_renderer.assert_() body_renderer.assert_(username=stub_user.username) html_renderer.assert_(username=stub_user.username) assert pyramid_request.task.calls == [] assert send_email.delay.calls == []
def test_primary_email_change_email_unverified(self, pyramid_request, pyramid_config, monkeypatch): stub_user = pretend.stub(email="*****@*****.**", username="******", name="") subject_renderer = pyramid_config.testing_add_renderer( "email/primary-email-change/subject.txt") subject_renderer.string_response = "Email Subject" body_renderer = pyramid_config.testing_add_renderer( "email/primary-email-change/body.txt") body_renderer.string_response = "Email Body" html_renderer = pyramid_config.testing_add_renderer( "email/primary-email-change/body.html") html_renderer.string_response = "Email HTML Body" send_email = pretend.stub( delay=pretend.call_recorder(lambda *args, **kwargs: None)) pyramid_request.task = pretend.call_recorder( lambda *args, **kwargs: send_email) monkeypatch.setattr(email, "send_email", send_email) result = email.send_primary_email_change_email( pyramid_request, (stub_user, pretend.stub(email="*****@*****.**", verified=False)), ) assert result == { "username": stub_user.username, "old_email": "*****@*****.**", "new_email": stub_user.email, } subject_renderer.assert_() body_renderer.assert_(username=stub_user.username) html_renderer.assert_(username=stub_user.username) assert pyramid_request.task.calls == [] assert send_email.delay.calls == []
def test_primary_email_change_email(self, pyramid_request, pyramid_config, monkeypatch): stub_user = pretend.stub(email="*****@*****.**", username="******", name="") subject_renderer = pyramid_config.testing_add_renderer( "email/primary-email-change.subject.txt") subject_renderer.string_response = "Email Subject" body_renderer = pyramid_config.testing_add_renderer( "email/primary-email-change.body.txt") body_renderer.string_response = "Email Body" send_email = pretend.stub( delay=pretend.call_recorder(lambda *args, **kwargs: None)) pyramid_request.task = pretend.call_recorder( lambda *args, **kwargs: send_email) monkeypatch.setattr(email, "send_email", send_email) result = email.send_primary_email_change_email( pyramid_request, stub_user, "*****@*****.**") assert result == { "username": stub_user.username, "old_email": "*****@*****.**", "new_email": stub_user.email, } subject_renderer.assert_() body_renderer.assert_(username=stub_user.username) assert pyramid_request.task.calls == [pretend.call(send_email)] assert send_email.delay.calls == [ pretend.call( "Email Subject", "Email Body", recipient="username <*****@*****.**>", ) ]