Пример #1
0
 def test_detail_post(self):
     post = Post()
     post.title = 'this is a test'
     post.text = 'test ' * 20
     db.session.add(post)
     db.session.commit()
     response = self.client.post('/post/1/detail')
     self.assertEqual(response.status_code, 302)
     user = User()
     user.username = '******'
     user.password = '******'
     db.session.add(user)
     db.session.commit()
     self.client.post('/login',
                      data={
                          'username': '******',
                          'password': '******'
                      })
     response = self.client.post('/post/1/detail',
                                 data={'comment': ''},
                                 follow_redirects=True)
     self.assertEqual(response.status_code, 403)
     self.assertTrue('评论不能为空' == response.get_data(as_text=True))
     response = self.client.post('/post/1/detail',
                                 data={'comment': 'comment for test'},
                                 follow_redirects=True)
     self.assertEqual(response.status_code, 200)
     self.assertTrue('comment for test' in response.get_data(as_text=True))
Пример #2
0
 def test_post_error(self):
     user = User()
     user.username = '******'
     user.email = '*****@*****.**'
     user.password = '******'
     db.session.add(user)
     db.session.commit()
     response = self.client.post('/login',
                                 data={
                                     'username': '******',
                                     'password': '******'
                                 },
                                 follow_redirects=True)
     self.assertEqual(response.status_code, 404)
Пример #3
0
 def test_login_post_email(self):
     user = User()
     user.username = '******'
     user.password = '******'
     user.email = '*****@*****.**'
     db.session.add(user)
     db.session.commit()
     response = self.client.post('/login',
                                 data={
                                     'username': '******',
                                     'password': '******'
                                 },
                                 follow_redirects=True)
     self.assertEqual(response.status_code, 200)
     self.assertTrue('BUGLAN的个人小站' in response.get_data(as_text=True))
Пример #4
0
 def test_logout_get(self):
     response = self.client.get('/logout')
     self.assertEqual(response.status_code, 302)
     self.assertTrue('BUGLAN的个人小站' not in response.get_data(as_text=True))
     user = User()
     user.username = '******'
     user.password = '******'
     db.session.add(user)
     db.session.commit()
     self.client.post('/login',
                      data={
                          'username': '******',
                          'password': '******'
                      })
     response = self.client.get('/logout', follow_redirects=True)
     self.assertEqual(response.status_code, 200)
     self.assertTrue('BUGLAN的个人小站' in response.get_data(as_text=True))
Пример #5
0
 def test_register_post_error(self):
     response = self.client.post('/register',
                                 data={
                                     'username': '******',
                                     'email': '*****@*****.**',
                                     'password1': '12345',
                                     'password2': '123456'
                                 })
     self.assertEqual(response.status_code, 403)
     user = User()
     user.username = '******'
     db.session.add(user)
     db.session.commit()
     response = self.client.post('/register',
                                 data={
                                     'username': '******',
                                     'email': '*****@*****.**',
                                     'password1': '123456',
                                     'password2': '123456'
                                 })
     self.assertEqual(response.status_code, 400)
     self.assertTrue(response.get_data(as_text=True) == '密码或用户名已被他人所占用')
Пример #6
0
 def test_my_posts_with_login(self):
     user = User()
     user.username = '******'
     user.password = '******'
     user.email = '*****@*****.**'
     db.session.add(user)
     db.session.commit()
     post = Post()
     post.title = 'this is a test'
     post.text = 'test test' * 20
     post.users = user
     db.session.add(post)
     db.session.commit()
     self.client.post('/login',
                      data={
                          'username': '******',
                          'password': '******'
                      },
                      follow_redirects=True)
     response = self.client.get('/my_posts')
     self.assertEqual(response.status_code, 200)
     self.assertTrue('this is a test' in response.get_data(as_text=True))
Пример #7
0
def authorized():
    resp = github.authorized_response()
    if resp is None or resp.get('access_token') is None:
        return 'Access denied: reason=%s error=%s resp=%s' % (
            request.args['error'], request.args['error_description'], resp)
    session['github_token'] = (resp['access_token'], '')
    me = github.get('user')
    user = User.query.filter_by(username=me.data.get('login')).first()
    if not user:
        from random import randint
        user = User(username=me.data.get('login'),
                    password=str(randint(100000, 10000000)),
                    publish_date=datetime.datetime.now())
        # 这里的password下次使用随机的密码
        # 邮箱貌似获取不了
        db.session.add(user)
        db.session.commit()
        login_user(user)
        logger.info('GITHUB 用户"{}"注册并登录成功'.format(current_user.username))
    else:
        login_user(user)
        logger.info('GITHUB 用户"{}"登陆成功'.format(current_user.username))
    return redirect(url_for('main.index'))
Пример #8
0
def register():
    if request.method == 'POST':
        user = User()
        if not register_filter(
                request.form.get('username'), request.form.get('email'),
                request.form.get('password1'), request.form.get('password2')):
            abort(403)
        try:
            user.username = request.form.get('username')
            user.email = request.form.get('email')
            user.password = request.form.get('password1')
            user.publish_date = datetime.datetime.now()
            user.modified_date = datetime.datetime.now()
            db.session.add(user)
            db.session.commit()
        except sqlalchemy.exc.IntegrityError:
            logger.error("注册失败-> 密码或用户名已被他人所占用")
            return '密码或用户名已被他人所占用', 400
        else:
            login_user(user)
            logger.info('用户 "{}" 注册成功'.format(user.username))
            return redirect(url_for('main.index'))
    return render_template('blog/register.html')