Пример #1
0
    def test_generate(self):
        session = Client().session()
        association = Association(name='crazy train')
        session.add(association)
        session.flush()

        invite = AssociationInvite.generate(association.association_id,
                                            '*****@*****.**')
Пример #2
0
    def test_invite_a_user_who_has_been_invited_to_that_association(self, user):
        session = Client().session()

        watercooler = Association(name='watercooler')
        session.add(watercooler)
        session.flush()
        session.add(UserAssociation(user_id=user.user_id,
                                    association_id=watercooler.association_id))
        session.flush()

        AssociationInvite.generate(watercooler.association_id, '*****@*****.**')

        response = self.app.post(
            '/association/{0}/invite_user'.format(watercooler.association_id),
            data={'email': '*****@*****.**'})
        eq_(response.status_code, 200, response.data)
        body = json.loads(response.data)
        eq_(body, {'status': 'error', 'error': 'already invited'})
Пример #3
0
    def test_invite__user_has_been_invited_to_another_association(self, user):
        session = Client().session()

        watercooler = Association(name='watercooler')
        pdxpython = Association(name='pdxpython')
        session.add(watercooler)
        session.add(pdxpython)
        session.flush()
        session.add(UserAssociation(user_id=user.user_id,
                                    association_id=watercooler.association_id))
        session.flush()

        AssociationInvite.generate(pdxpython.association_id, '*****@*****.**')

        response = self.app.post(
            '/association/{0}/invite_user'.format(watercooler.association_id),
            data={'email': '*****@*****.**'})
        eq_(response.status_code, 200, response.data)
        body = json.loads(response.data)
        eq_(body, {'status': 'ok', 'action': 'invited'})
Пример #4
0
 def test_accept_invite_prompts_for_login(self):
     session = Client().session()
     association = Association(name="tower of power")
     session.add(association)
     session.flush()
     invite = AssociationInvite.generate(association.association_id,
                                         '*****@*****.**')
     session.flush()
     response = self.app.get('/accept_invitation/{0}/'.format(invite.token))
     eq_(response.status_code, 200)
     assert 'Please create an account' in response.data,\
         "Response didn't prompt for login"
Пример #5
0
 def test_accept_invite_while_unverified_verifies_email(self, user):
     user.email = '*****@*****.**'
     user.email_verified_at = None
     session = Client().session()
     association = Association(name="tower of power")
     session.add(association)
     session.flush()
     invite = AssociationInvite.generate(association.association_id,
                                         '*****@*****.**')
     session.flush()
     response = self.app.get('/accept_invitation/{0}/'.format(invite.token))
     eq_(response.status_code, 302, response.data)
     del(user)
     user = session.query(User).one()
     assert user.email_verified_at, "Email wasn't verified"
Пример #6
0
 def test_accept_invite_while_logged_in(self, user):
     user.email = '*****@*****.**'
     session = Client().session()
     association = Association(name="tower of power")
     session.add(association)
     session.flush()
     invite = AssociationInvite.generate(association.association_id,
                                         '*****@*****.**')
     session.flush()
     response = self.app.get('/accept_invitation/{0}/'.format(invite.token))
     eq_(response.status_code, 302, response.data)
     eq_(response.headers['Location'],
         'http://localhost/association/{0}'.format(association.association_id))
     user_association = session.query(UserAssociation).\
         filter(UserAssociation.user_id == user.user_id).\
         one()
     eq_(user_association.association_id, association.association_id)
     invites = session.query(AssociationInvite).all()
     eq_(invites, [])
Пример #7
0
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'}