Ejemplo n.º 1
0
    def test_email_already_confirmed_redirect(self, db, testapp):
        with mail.record_messages() as outbox:
            res = testapp.get(url_for('auth.register'))
            form = res.forms['registerForm']
            form['username'] = '******'
            form['email'] = '*****@*****.**'
            form['password'] = '******'
            form['confirm'] = 'secret'
            form.submit()

            body_html = outbox[0].html

        groups = re.search('<a href=\"http://localhost(.*)\">', body_html)
        confirmation_url = groups[1]

        user = User.get_by_id(1)

        login_user(user)
        user.email_confirmed = True
        # FIXME: .get() has a different context. No logged in user
        response = testapp.get(confirmation_url)
        flashed_messages = get_flashed_messages()

        assert 'You have already verified your email address.' in flashed_messages
        assert response.status_code == 302
        assert urlparse(response.location).path == url_for('public.home')
Ejemplo n.º 2
0
    def test_deliver_password_reset_email(self, token):
        """ Deliver a password reset email. """
        with mail.record_messages() as outbox:
            user = User.find_by_identity('*****@*****.**')
            deliver_password_reset_email(user.id, token)

            assert len(outbox) == 1
            assert token in outbox[0].body
Ejemplo n.º 3
0
    def test_deliver_contact_form_email(self):
        """ Deliver contact email."""
        form = {
            'email': '*****@*****.**',
            'message': 'Test message from application.'
        }

        with mail.record_messages() as outbox:
            deliver_contact_email(form.get('email'), form.get('message'))

            assert len(outbox) == 1
            assert form.get('email') in outbox[0].body
Ejemplo n.º 4
0
    def test_deliver_support_email(self):
        """ Deliver a contact email. """
        form = {
          'email': '*****@*****.**',
          'message': 'Test message from Parsavvy.'
        }

        with mail.record_messages() as outbox:
            # deliver_contact_email(form.get('email'), form.get('message'))
            send_contact_us_email(form.get('email'), form.get('message'))

            assert len(outbox) == 1
            assert form.get('email') in outbox[0].body
Ejemplo n.º 5
0
    def test_confirm_email_sent(self, db, testapp):
        # Goes to registration page
        with mail.record_messages() as outbox:

            res = testapp.get(url_for('auth.register'))

            form = res.forms['registerForm']
            form['username'] = '******'
            form['email'] = '*****@*****.**'
            form['password'] = '******'
            form['confirm'] = 'secret'

            res = form.submit()

            assert len(outbox) == 1
            assert 'Confirm Your Email Address' in outbox[0].subject
Ejemplo n.º 6
0
 def test_contact(self):
     # User fills in form and clicks 'Send Message'
     data = {
         'full_name': 'Troubled User',
         'email': '*****@*****.**',
         'subject': 'Help me!',
         'message': 'I have the blue screen of death! Call the doctor!',
     }
     with mail.record_messages() as outbox:
         # Application sends email to admin
         response = self.client.post('/mail/', data=json.dumps(data),
                                     content_type='application/json',
                                     environ_base=self.ENVIRON_BASE)
         assert len(outbox) == 1
         subject = '[%s] Message from %s: %s' % (current_app.config['APP_NAME'], data.get('full_name'), data.get('subject'))
         assert outbox[0].subject == subject
         self.assert_200(response)
Ejemplo n.º 7
0
    def test_password_reset(self):
        # User enters email for account that DNE
        data = {'email': '*****@*****.**'}
        response = self.client.post('/users/password/reset/',
                                    data=json.dumps(data),
                                    content_type='application/json',
                                    environ_base=self.ENVIRON_BASE)
        assert 'Sorry, no user found for that email address.' in response.data
        self.assert_200(response)

        # User enters email and clicks 'Send instructions'
        data = {'email': '*****@*****.**'}
        user = User.query.filter_by(email=data.get('email')).first()
        assert user is not None
        assert user.activation_key is None
        with mail.record_messages() as outbox:
            # Application sends password reset email
            response = self.client.post('/users/password/reset/',
                                        data=json.dumps(data),
                                        content_type='application/json',
                                        environ_base=self.ENVIRON_BASE)
            assert len(outbox) == 1
            assert outbox[0].subject == "Recover your password"
        user = User.query.filter_by(email=data.get('email')).first()
        assert user.activation_key is not None

        # User enters new password
        data = {
            'password': '******',
            'password_again': 'new password',
        }
        user = User.query.filter_by(activation_key=user.activation_key) \
                         .filter_by(email=user.email).first()
        assert user is not None
        rv = self.client.put('/users/password/%s/%s/' %
                             (user.email, user.activation_key),
                             data=json.dumps(data),
                             content_type='application/json',
                             environ_base=self.ENVIRON_BASE)
        self.assert_200(rv)
        assert 'success' in rv.data
        user = User.query.filter_by(email='*****@*****.**').first()
        assert user is not None
        assert user.activation_key is None
        assert user.check_password(data.get('password')) is True
Ejemplo n.º 8
0
    def test_password_reset(self):
        # User enters email for account that DNE
        data = {'email': '*****@*****.**'}
        response = self.client.post('/users/password/reset/',
                                    data=json.dumps(data),
                                    content_type='application/json',
                                    environ_base=self.ENVIRON_BASE)
        assert 'Sorry, no user found for that email address.' in response.data
        self.assert_200(response)

        # User enters email and clicks 'Send instructions'
        data = {'email': '*****@*****.**'}
        user = User.query.filter_by(email=data.get('email')).first()
        assert user is not None
        assert user.activation_key is None
        with mail.record_messages() as outbox:
            # Application sends password reset email
            response = self.client.post('/users/password/reset/',
                                        data=json.dumps(data),
                                        content_type='application/json',
                                        environ_base=self.ENVIRON_BASE)
            assert len(outbox) == 1
            assert outbox[0].subject == "Recover your password"
        user = User.query.filter_by(email=data.get('email')).first()
        assert user.activation_key is not None

        # User enters new password
        data = {
            'password': '******',
            'password_again': 'new password',
        }
        user = User.query.filter_by(activation_key=user.activation_key) \
                         .filter_by(email=user.email).first()
        assert user is not None
        rv = self.client.put(
            '/users/password/%s/%s/' % (user.email, user.activation_key),
            data=json.dumps(data), content_type='application/json',
            environ_base=self.ENVIRON_BASE)
        self.assert_200(rv)
        assert 'success' in rv.data
        user = User.query.filter_by(email='*****@*****.**').first()
        assert user is not None
        assert user.activation_key is None
        assert user.check_password(data.get('password')) is True
Ejemplo n.º 9
0
    def test_email_confirmation_no_user_redirect(self, db, testapp):

        with mail.record_messages() as outbox:
            res = testapp.get(url_for('auth.register'))
            form = res.forms['registerForm']
            form['username'] = '******'
            form['email'] = '*****@*****.**'
            form['password'] = '******'
            form['confirm'] = 'secret'
            form.submit()

            body_html = outbox[0].html

        groups = re.search('<a href=\"http://localhost(.*)\">', body_html)
        confirmation_url = groups[1] + 'wrong'

        response = testapp.get(confirmation_url)

        assert response.status_code == 302
        assert urlparse(response.location).path == url_for('public.home')
Ejemplo n.º 10
0
    def test_email_confirmation(self, db, testapp):
        with mail.record_messages() as outbox:
            res = testapp.get(url_for('auth.register'))

            form = res.forms['registerForm']
            form['username'] = '******'
            form['email'] = '*****@*****.**'
            form['password'] = '******'
            form['confirm'] = 'secret'

            form.submit()

            body_html = outbox[0].html

        groups = re.search('<a href=\"http://localhost(.*)\">', body_html)
        confirmation_url = groups[1]

        testapp.get(confirmation_url)

        assert User.get_by_id(1).email_confirmed is True
Ejemplo n.º 11
0
 def test_contact(self):
     # User fills in form and clicks 'Send Message'
     data = {
         'full_name': 'Troubled User',
         'email': '*****@*****.**',
         'subject': 'Help me!',
         'message': 'I have the blue screen of death! Call the doctor!',
     }
     with mail.record_messages() as outbox:
         # Application sends email to admin
         response = self.client.post('/mail/',
                                     data=json.dumps(data),
                                     content_type='application/json',
                                     environ_base=self.ENVIRON_BASE)
         assert len(outbox) == 1
         subject = '[%s] Message from %s: %s' % (
             current_app.config['APP_NAME'], data.get('full_name'),
             data.get('subject'))
         assert outbox[0].subject == subject
         self.assert_200(response)