Exemple #1
0
    def test_auth_reset_password(self):
        user = User.query.first()

        url = '/reset_password/'
        response = self.client.get(url)
        form = self.get_context_variable('form')
        self.assert_200(response)
        self.assert_template_used('reset_password.html')
        self.assertEqual(type(form), EmailForm)

        response = self.client.post(
            url,
            data={
                'email': user.email
            },
            follow_redirects=True
        )
        self.assert_template_used('account_not_activated.html')

        user.email_confirmed = True
        db.session.add(user)

        with mail.record_messages() as outbox:
            response = self.client.post(
                url,
                data={
                    'email': user.email
                },
                follow_redirects=True
            )
            self.assertEqual(len(outbox), 1)
            email = str(outbox[0])
            link = re.search(r'/reset_confirm/(.+)/">', email)
            url = '/reset_confirm/' + link.group(1) + '/'

            response = self.client.get(url)
            form = self.get_context_variable('form')
            self.assert_template_used('new_password.html')
            self.assertEqual(type(form), PasswordForm)

            response = self.client.post(
                url,
                data={
                    'password': '******'
                },
                follow_redirects=True
            )
            self.assert_template_used('login.html')
            msg = 'Password changed successfully. Please '
            msg += 'login with your new password.'
            self.assertIn(msg, response.data)

            self.login(user.email, 'NewPassword')
            self.assert_template_used('index.html')

            self.client.get('/logout/')
Exemple #2
0
    def test_home_adopt_puppy(self):
        puppy = Puppy.query.first()
        user = User.query.first()

        url = '/puppy/' + str(puppy.id) + '/adopt/'
        response = self.client.get(url)

        self.assert_redirects(response, '/signup/?next=' + url)

        with app.app_context():
            response = self.login(user.email, 'password', url)
            self.assert_template_used('account_not_activated.html')

            url2 = '/activate/bad-token/'
            response = self.client.get(url2)
            self.assert_404(response)

            url2 = '/activate/' + self.get_context_variable('token') + '/'
            with mail.record_messages() as outbox:
                response = self.client.get(url2)
                self.assert_redirects(response, '/')

                response = self.client.get('/')
                self.assertIn('Account activation email sent.', response.data)

                self.assertEqual(len(outbox), 1)
                email = str(outbox[0])
                link = re.search(r'/confirm/(.+)/\?next', email)

                url2 = '/confirm/' + link.group(1) + '/'
                response = self.client.get(url2)
                self.assert_redirects(response, '/login/')

                response = self.client.get('/login/')
                self.assertIn(
                    'Thanks! Your account has been activated.', response.data)

            self.client.get(url)
            self.assert_template_used('adopt.html')

            revised_puppy = Puppy.query.first()
            self.assertEqual(revised_puppy.adopter[0], user)
            self.assertEqual(self.get_context_variable('puppy'), revised_puppy)

            self.client.get('/logout/')
Exemple #3
0
    def test_auth_send_email_confirmation(self):
        user = User(email=test_email, password='******')
        db.session.add(user)

        response = self.client.get('/confirm/bad-token/')
        self.assert_404(response)

        with mail.record_messages() as outbox:
            views.auth.send_email_confirmation(user)
            self.assertEqual(len(outbox), 1)
            email = str(outbox[0])
            link = re.search(r'/confirm/(.+)/\?next', email)
            url = '/confirm/' + link.group(1) + '/'
            response = self.client.get(url)
            self.assert_redirects(response, '/login/')
            response = self.client.get('/login/')
            self.assertIn(
                'Thanks! Your account has been activated.', response.data)