Example #1
0
    def test_forgot(self):
        email = users['userA']['email']
        passwd = users['userA']['password']
        self.create_account(email, passwd)
        self.logout()

        # test forgot form
        resp = self.client.get(self.url_for('auth.forgot'))
        self.assertTrue(b'<legend>Reset your password</legend>' in resp.data)

        # test bad submission
        data = dict(email='*****@*****.**')
        resp = self.client.post(self.url_for('auth.forgot'), data=data)
        self.assertTrue(b'not registered' in resp.data)

        # test good submission
        with mail.record_messages() as outbox:
            data = dict(email=email)
            resp = self.client.post(self.url_for('auth.forgot'), data=data)
            self.assertTrue(b'Success' in resp.data)
            self.assertEqual(len(outbox), 1)
            self.assertEqual(outbox[0].subject, 'Password Reset Request')

        # get reset url
        m = re.search('/auth/reset-password.*$', outbox[0].body)
        reset_url = m.group(0)

        # test that key works
        resp = self.client.get(reset_url)
        self.assertTrue(b'Choose a new password' in resp.data)
Example #2
0
    def test_forgot(self):
        email = users['userA']['email']
        passwd = users['userA']['password']
        self.create_account(email, passwd)
        self.logout()

        # test forgot form
        resp = self.client.get(self.url_for('auth.forgot'))
        self.assertTrue('<legend>Reset your password</legend>' in resp.data)

        # test bad submission
        data = dict(email='*****@*****.**')
        resp = self.client.post(self.url_for('auth.forgot'), data=data)
        self.assertTrue('not registered' in resp.data)

        # test good submission
        with mail.record_messages() as outbox:
            data = dict(email=email)
            resp = self.client.post(self.url_for('auth.forgot'), data=data)
            self.assertTrue('Success' in resp.data)
            self.assertEqual(len(outbox), 1)
            self.assertEqual(outbox[0].subject, 'Password Reset Request')

        # get reset url
        m = re.search('/auth/reset-password.*$', outbox[0].body)
        reset_url = m.group(0)

        # test that key works
        resp = self.client.get(reset_url)
        print resp.data
        self.assertTrue('Choose a new password' in resp.data)
Example #3
0
    def test_email_verification_request(self):
        email = users['userA']['email']
        passwd = users['userA']['password']
        self.create_account(email, passwd)

        # check user
        with self.app.app_context():
            u = User.query.filter(User.email == email).first()
            self.assertEqual(u.is_verified, False)

        # test form
        resp = self.client.get(self.url_for('auth.email_verification_request'))
        self.assertTrue(b'<legend>Send verification request</legend>' \
                            in resp.data)

        # test submission
        with mail.record_messages() as outbox:
            url = self.url_for('auth.email_verification_request')
            resp = self.client.post(url)
            self.assertTrue(b'Success' in resp.data)
            self.assertEqual(len(outbox), 1)
            self.assertEqual(outbox[0].subject,
                             'Flaskapp Account: Please Confirm Email')

        # get reset url
        m = re.search('/auth/verify-email.*$', outbox[0].body)
        verify_url = m.group(0)

        # test bad request
        resp = self.client.get(self.url_for('auth.verify_email'))
        self.assertTrue(b'Error' in resp.data)
        self.assertEqual(resp.status_code, 400)

        # test bad key
        u = self.url_for('auth.verify_email', key='badkey')
        resp = self.client.get(u)
        self.assertTrue(b'Error' in resp.data)

        # test good key, bad email
        verify_url2 = re.sub('email=.*?&|$', '', verify_url) \
            + 'email=bademail'
        resp = self.client.get(verify_url2)
        self.assertTrue(b'Error' in resp.data)

        # test good request
        resp = self.client.get(verify_url)
        self.assertTrue(b'Your email has been verified' in resp.data)

        # check user
        with self.app.app_context():
            u = User.query.filter(User.email == email).first()
            self.assertEqual(u.is_verified, True)
Example #4
0
    def test_reset_password(self):
        email = users['userA']['email']
        passwd = users['userA']['password']
        self.create_account(email, passwd)
        self.logout()

        # get reset url
        with mail.record_messages() as outbox:
            data = dict(email=email)
            resp = self.client.post(self.url_for('auth.forgot'), data=data)
            self.assertTrue(b'Success' in resp.data)
            self.assertEqual(len(outbox), 1)
            self.assertEqual(outbox[0].subject, 'Password Reset Request')

            m = re.search('/auth/reset-password.*$', outbox[0].body)
            reset_url = m.group(0)

        # test bad request
        resp = self.client.get(self.url_for('auth.reset_password'))
        self.assertTrue(b'Error' in resp.data)
        self.assertEqual(resp.status_code, 400)

        # test bad key
        u = self.url_for('auth.reset_password', key='badkey')
        resp = self.client.get(u)
        self.assertTrue(b'Error' in resp.data)

        # test good key, bad email
        u = re.sub('email=.*?&|$', '', reset_url) + 'email=bademail'
        resp = self.client.get(u)
        self.assertTrue(b'Error' in resp.data)

        # test good request
        resp = self.client.get(reset_url)        
        self.assertEqual(resp.status_code, 200)

        # test submission
        data = dict(password='******', password_confirm='newpasswd')
        resp = self.client.post(reset_url, data=data)
        self.assertEqual(resp.status_code, 200)
        self.assertTrue(b'Success' in resp.data)

        # check that user is logged in
        resp = self.client.get('/')
        self.assertTrue(email in resp.data.decode('utf-8'))

        # check that new password works
        self.logout()
        self.login(email, data['password'])
        resp = self.client.get('/')
        self.assertTrue(email in resp.data.decode('utf-8'))
Example #5
0
    def test_email_verification_request(self):
        email = users['userA']['email']
        passwd = users['userA']['password']
        self.create_account(email, passwd)

        # check user
        with self.app.app_context():
            u = User.query.filter(User.email == email).first()
            self.assertEqual(u.is_verified, False)

        # test form
        resp = self.client.get(self.url_for('auth.email_verification_request'))
        self.assertTrue('<legend>Send verification request</legend>' \
                            in resp.data)

        # test submission
        with mail.record_messages() as outbox:
            url = self.url_for('auth.email_verification_request')
            resp = self.client.post(url)
            self.assertTrue('Success' in resp.data)
            self.assertEqual(len(outbox), 1)
            self.assertEqual(outbox[0].subject,
                             'Flaskapp Account: Please Confirm Email')

        # get reset url
        m = re.search('/auth/verify-email.*$', outbox[0].body)
        verify_url = m.group(0)

        # test bad request
        resp = self.client.get(self.url_for('auth.verify_email'))
        self.assertTrue('Error' in resp.data)
        self.assertEqual(resp.status_code, 400)

        # test bad key
        u = self.url_for('auth.verify_email', key='badkey')
        resp = self.client.get(u)
        self.assertTrue('Error' in resp.data)

        # test good key, bad email
        verify_url2 = re.sub('email=.*?&', 'email=bademail&', verify_url)
        resp = self.client.get(verify_url2)
        self.assertTrue('Error' in resp.data)

        # test good request
        resp = self.client.get(verify_url)
        self.assertTrue('Your email has been verified' in resp.data)

        # check user
        with self.app.app_context():
            u = User.query.filter(User.email == email).first()
            self.assertEqual(u.is_verified, True)
Example #6
0
    def test_reset_password(self):
        email = users['userA']['email']
        passwd = users['userA']['password']
        self.create_account(email, passwd)
        self.logout()

        # get reset url
        with mail.record_messages() as outbox:
            data = dict(email=email)
            resp = self.client.post(self.url_for('auth.forgot'), data=data)
            self.assertTrue('Success' in resp.data)
            self.assertEqual(len(outbox), 1)
            self.assertEqual(outbox[0].subject, 'Password Reset Request')

            m = re.search('/auth/reset-password.*$', outbox[0].body)
            reset_url = m.group(0)

        # test bad request
        resp = self.client.get(self.url_for('auth.reset_password'))
        self.assertTrue('Error' in resp.data)
        self.assertEqual(resp.status_code, 400)

        # test bad key
        u = self.url_for('auth.reset_password', key='badkey')
        resp = self.client.get(u)
        self.assertTrue('Error' in resp.data)

        # test good key, bad email
        u = re.sub('email=.*?&|$', '', reset_url) + '&email=bademail'
        resp = self.client.get(u)
        self.assertTrue('Error' in resp.data)

        # test good request
        resp = self.client.get(reset_url)        
        self.assertEqual(resp.status_code, 200)

        # test submission
        data = dict(password='******', password_confirm='newpasswd')
        resp = self.client.post(reset_url, data=data)
        self.assertEqual(resp.status_code, 200)
        self.assertTrue('Success' in resp.data)

        # check that user is logged in
        resp = self.client.get('/')
        self.assertTrue(email in resp.data)

        # check that new password works
        self.logout()
        self.login(email, data['password'])
        resp = self.client.get('/')
        self.assertTrue(email in resp.data)