def test_send_verification_mail(self, os, smtplib): os.environ = {'SENDGRID_PASSWORD': '******', 'SENDGRID_USERNAME': '******'} app.config['SERVER_NAME'] = 'localhost:5000' smtp = Mock() smtplib.SMTP.return_value = smtp user = User(email="*****@*****.**") with app.test_request_context('/'): g.user = user send_invitation_mail('*****@*****.**', '*****@*****.**', 'codescouts', 'http://radlibs.info/accept_invitation/asdf') smtp.sendmail.assert_called_once() from_address, to_addresses, message = smtp.sendmail.mock_calls[0][1] eq_(from_address, '*****@*****.**') eq_(to_addresses, ['*****@*****.**']) assert 'http://radlibs.info/accept_invitation/asdf' in message,\ "Didn't see acceptance url" assert '<a href="http://radlibs.info/accept_invitation/asdf">' in message,\ "Didn't see acceptance link"
def invite_user(association_id): if not g.user: return error_response('login required') session = Client().session() email = request.form['email'] if not re.search(r'@.*\.', email): return error_response("invalid email address '{0}'".format(email)) try: association = association_for_logged_in_user(association_id) except NoResultFound: return error_response('no such association') try: user = session.query(User).\ filter(User.email == email).\ one() except NoResultFound: invite = AssociationInvite.generate(association_id, email) try: session.flush() except IntegrityError: return error_response('already invited') send_invitation_mail( email, g.user.email, association.name, url_for('accept_invitation', token=invite.token, _external=True)) return {'status': 'ok', 'action': 'invited'} user_association = UserAssociation( user_id=user.user_id, association_id=association_id) session.add(user_association) try: session.flush() except IntegrityError: return error_response('already in association') return {'status': 'ok', 'action': 'added'}