コード例 #1
0
ファイル: test_mail.py プロジェクト: ErinCall/radlibs
 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"
コード例 #2
0
ファイル: association.py プロジェクト: ErinCall/radlibs
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'}