Esempio n. 1
0
def register():
    if current_user.is_authenticated:
        return redirect(url_for('base'))

    form = RegisterForm()
    if form.validate_on_submit():
        email = form.email.data.lower()
        username = form.username.data
        user = User(email=email, username=username)
        user.set_password(form.password.data)
        user.judge_is_admin()
        user.save()
        token = generate_token(user=user, operation='confirm')
        send_confirm_email(user=user, token=token)
        flash('确认邮件已发送,请检查您的收件箱', 'info')
        return redirect(url_for('user.login'))
    return render_template('user/register.html', form=form)
Esempio n. 2
0
    def test_reset_password_token(self):
        user = User(email='*****@*****.**', username='******')
        user.set_password('123')
        user.save()

        res = self.client.get(url_for('user.reset_password', token=False),
                              follow_redirects=True)
        data = res.get_data(as_text=True)

        token = generate_token(user, 'reset-password')
        res1 = self.client.post(url_for('user.reset_password', token=token),
                                data=dict(email=user.email,
                                          password='******',
                                          password2='12345678'),
                                follow_redirects=True)
        data1 = res1.get_data(as_text=True)

        token = generate_token(user, 'reset')
        res2 = self.client.post(url_for('user.reset_password', token=token),
                                data=dict(email=user.email,
                                          password='******',
                                          password2='1234567a'),
                                follow_redirects=True)
        data2 = res2.get_data(as_text=True)

        token = generate_token(user, 'reset-password')
        res3 = self.client.post(url_for('user.reset_password', token=token),
                                data=dict(email='*****@*****.**',
                                          password='******',
                                          password2='12345678'),
                                follow_redirects=True)
        data3 = res3.get_data(as_text=True)

        user.delete()
        self.assertEqual(res.status_code, 200)
        self.assertIn('重置密码', data)
        self.assertEqual(res1.status_code, 200)
        self.assertIn('重置密码成功', data1)
        self.assertEqual(res2.status_code, 200)
        self.assertIn('无效或者过期的链接', data2)
        self.assertEqual(res3.status_code, 200)
        self.assertIn('邮箱不存在', data3)
Esempio n. 3
0
    def test_upgrade(self):
        self.user.is_admin = 3
        self.user.save()
        self.login()
        user = User(email='*****@*****.**', username='******')
        user.set_password('123456789a')
        user.save()

        res = self.client.get(url_for('admin.upgrade', user_id=user.id))
        data = res.get_data(as_text=True)
        res1 = self.client.post(url_for('admin.upgrade', user_id=user.id),
                                data=dict(is_admin=2),
                                follow_redirects=True)
        data1 = res1.get_data(as_text=True)
        user.delete()

        self.assertEqual(res.status_code, 200)
        self.assertIn('升级或降级管理员', data)
        self.assertEqual(res1.status_code, 200)
        self.assertIn('修改管理成功', data1)
Esempio n. 4
0
    def test_useless_operation(self):
        self.user.confirmed = False
        self.user.save()
        self.login()
        user = User(email='*****@*****.**', username='******')
        user.set_password('123')
        user.save()

        token = generate_token(user, 'confirm')
        res = self.client.get(url_for('user.confirm', token=token),
                              follow_redirects=True)
        data = res.get_data(as_text=True)

        token = generate_token(user,
                               'change_email',
                               new_email='*****@*****.**')
        res1 = self.client.get(url_for('user.change_email', token=token),
                               follow_redirects=True)
        data1 = res1.get_data(as_text=True)

        res2 = self.client.get(url_for('user.change_email', token=False),
                               follow_redirects=True)
        data2 = res2.get_data(as_text=True)

        token = generate_token(self.user, 'confirmconfirm')
        res3 = self.client.get(url_for('user.confirm', token=token),
                               follow_redirects=True)
        data3 = res3.get_data(as_text=True)

        user.delete()
        self.assertEqual(res.status_code, 200)
        self.assertIn('无效或者过期的链接', data)
        self.assertEqual(res1.status_code, 200)
        self.assertIn('无效或者过期的链接', data1)
        self.assertEqual(res2.status_code, 200)
        self.assertIn('无效或者过期的链接', data2)
        self.assertEqual(res3.status_code, 200)
        self.assertIn('无效或者过期的链接', data3)
Esempio n. 5
0
class BaseTestCase(unittest.TestCase):

    def setUp(self):
        app = create_app('testing')
        self.context = app.test_request_context()
        self.context.push()
        self.client = app.test_client()
        self.user = User(email='*****@*****.**', username='******')
        self.user.set_password('123')
        self.user.save()

    def tearDown(self):
        self.user.delete()
        self.context.pop()

    def login(self):
        email = self.user.email
        password = '******'
        res = self.client.post(url_for('user.login'), data=dict(email=email, 
            password=password), follow_redirects=True)
        return res

    def logout(self):
        return self.client.get(url_for('user.logout'), follow_redirects=True)