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))
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)
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))
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))
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) == '密码或用户名已被他人所占用')
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))
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'))
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')