Exemplo n.º 1
0
    def test_create_and_delete_question(self):
        """
        测试向特定课程提问和删除问题
        """
        u = User(email='*****@*****.**',
                 username='******',
                 password=b64encode('muxi304'),
                 role_id=2)
        db.session.add(u)
        db.session.commit()
        token = u.generate_auth_token()

        res = self.client.post(url_for('api.new_course'),
                               headers=self.get_token_headers(token),
                               data=json.dumps({
                                   'name': 'test course',
                                   'teacher': 'test teacher',
                                   'category_id': 1,
                                   'type_id': 1,
                               }))

        res1 = self.client.post(
            url_for('api.new_question', id=1),
            headers=self.get_token_headers(token),
            data=json.dumps({'question_content': 'this is a test question'}))
        self.assertTrue(res1.status_code == 201)

        res2 = self.client.delete(url_for('api.delete_question', id=1),
                                  headers=self.get_token_headers(token),
                                  data=json.dumps({}))
        self.assertTrue(res2.status_code == 201)
Exemplo n.º 2
0
    def test_admin_token(self):
        """
        测试管理员token
        """
        u = User(
            email = '*****@*****.**',
            username = '******',
            password = b64encode('muxi304'),
            role_id = 2
        )
        db.session.add(u)
        db.session.commit()

        user_token_json = self.client.get(
            url_for('api.get_token'),
            headers = self.get_api_headers(
                '*****@*****.**', 'muxi304'
            )
        )
        user_token = eval(user_token_json.data).get('token')
        u = User.query.filter_by(email='*****@*****.**').first()
        expect_token = u.generate_auth_token()
        self.assertTrue(str(user_token) == str(expect_token))

        res = self.client.get(
            url_for('api.get_comments'),
            headers = self.get_token_headers(user_token)
        )
        self.assertTrue(res.status_code == 200)
Exemplo n.º 3
0
    def test_write_course_comment(self):
        """
        测试编写课程评论
        """
        u = User(
            email = '*****@*****.**',
            username = '******',
            password = b64encode('muxi304'),
            role_id = 2
        )
        db.session.add(u)
        db.session.commit()
        token = u.generate_auth_token()

        res = self.client.post(url_for('api.new_course'),
            headers = self.get_token_headers(token),
            data = json.dumps({
                'name': 'test course',
                'teacher': 'test teacher',
                'category_id': 1,
                'type_id': 1,
            })
        )

        res = self.client.post(url_for('api.new_comment', id=1),
            headers = self.get_token_headers(token),
            data = json.dumps({
                'body': 'this is a test comment',
                'tags': ''
            })
        )
        self.assertTrue(res.status_code == 201)
Exemplo n.º 4
0
    def test_tip_page(self):
        """
        测试首页: 管理员创建tip, 用户阅读tip
        """
        u = User(
            email = '*****@*****.**',
            username = '******',
            password = b64encode('muxi304'),
            role_id = 2
        )
        db.session.add(u)
        db.session.commit()
        admin_token = u.generate_auth_token()

        res = self.client.post(url_for('api.new_tip'),
            headers = self.get_token_headers(admin_token),
            data = json.dumps({
                'title': 'test tips',
                'img_url': 'http://substack.net/images/rov.png',
                'body': 'this is a test tip body, enen',
                'author': 'test app'
            })
        )
        self.assertTrue(res.status_code == 201)

        res = self.client.get(url_for('api.get_tip_id', id=1),
            content_type = 'application/json'
        )
        self.assertTrue(res.status_code == 200)
Exemplo n.º 5
0
    def test_write_course_comment(self):
        """
        测试编写课程评论
        """
        u = User(email='*****@*****.**',
                 username='******',
                 password=b64encode('muxi304'),
                 role_id=2)
        db.session.add(u)
        db.session.commit()
        token = u.generate_auth_token()

        res = self.client.post(url_for('api.new_course'),
                               headers=self.get_token_headers(token),
                               data=json.dumps({
                                   'name': 'test course',
                                   'teacher': 'test teacher',
                                   'category_id': 1,
                                   'type_id': 1,
                               }))

        res = self.client.post(url_for('api.new_comment', id=1),
                               headers=self.get_token_headers(token),
                               data=json.dumps({
                                   'body': 'this is a test comment',
                                   'tags': ''
                               }))
        self.assertTrue(res.status_code == 201)
Exemplo n.º 6
0
    def test_tip_page(self):
        """
        测试首页: 管理员创建tip, 用户阅读tip
        """
        u = User(email='*****@*****.**',
                 username='******',
                 password=b64encode('muxi304'),
                 role_id=2)
        db.session.add(u)
        db.session.commit()
        admin_token = u.generate_auth_token()

        res = self.client.post(url_for('api.new_tip'),
                               headers=self.get_token_headers(admin_token),
                               data=json.dumps({
                                   'title': 'test tips',
                                   'img_url':
                                   'http://substack.net/images/rov.png',
                                   'body': 'this is a test tip body, enen',
                                   'author': 'test app'
                               }))
        self.assertTrue(res.status_code == 201)

        res = self.client.get(url_for('api.get_tip_id', id=1),
                              content_type='application/json')
        self.assertTrue(res.status_code == 200)
Exemplo n.º 7
0
    def test_like_comment(self):
        """
        测试给相应的评论点赞
        """
        u = User(
            email = '*****@*****.**',
            username = '******',
            password = b64encode('muxi304'),
            role_id = 2
        )
        db.session.add(u)
        db.session.commit()
        admin_token = u.generate_auth_token()

        res = self.client.post(url_for('api.new_course'),
            headers = self.get_token_headers(admin_token),
            data = json.dumps({
                'name': 'test course',
                'teacher': 'test teacher',
                'category_id': 1,
                'type_id': 1,
            })
        )

        res = self.client.post(url_for('api.new_comment', id=1),
            headers = self.get_token_headers(admin_token),
            data = json.dumps({
                'body': 'this is a test comment',
                'tags': ''
            })
        )

        res = self.client.post(url_for('api.new_comments_id_like', id=1),
            headers = self.get_token_headers(admin_token)
        )
        likes = Comments.query.get_or_404(1).likes
        self.assertTrue(likes == 1)

        res = self.client.post(url_for('api.new_comments_id_like', id=1),
            headers = self.get_token_headers(admin_token)
        )
        self.assertTrue(res.status_code == 403)

        res = self.client.delete(url_for('api.new_comments_id_like', id=1),
            headers = self.get_token_headers(admin_token)
        )
        likes = Comments.query.get_or_404(1).likes
        self.assertTrue(likes == 0)

        res = self.client.delete(url_for('api.new_comments_id_like', id=1),
            headers = self.get_token_headers(admin_token)
        )
        self.assertTrue(res.status_code == 403)
Exemplo n.º 8
0
    def test_normal_token(self):
        """
        测试普通用户token
        """
        u = User(email='*****@*****.**',
                 password=b64encode('muxi304'),
                 role_id=3)
        db.session.add(u)
        db.session.commit()
        token = u.generate_auth_token()

        res = self.client.get(url_for('api.get_comments'),
                              headers=self.get_token_headers(token))
        self.assertTrue(res.status_code == 403)
Exemplo n.º 9
0
    def test_create_course(self):
        """
        测试管理员创建课程
        """
        u = User(email='*****@*****.**',
                 username='******',
                 password=b64encode('muxi304'),
                 role_id=2)
        db.session.add(u)
        db.session.commit()
        token = u.generate_auth_token()

        res = self.client.post(url_for('api.new_course'),
                               headers=self.get_token_headers(token),
                               data=json.dumps({
                                   'name': 'test course',
                                   'teacher': 'test teacher',
                                   'category_id': 1,
                                   'type_id': 1,
                               }))
        self.assertTrue(res.status_code == 201)

        # test get course
        res = self.client.get(url_for("api.get_courses"))
        self.assertTrue(res.status_code == 200)

        res = self.client.get(url_for("api.get_courses", gg_cat=1,
                                      sort='view'))
        self.assertTrue(res.status_code == 200)

        # test get course by id
        res = self.client.get(url_for("api.get_course_id", id=5))
        self.assertTrue(res.status_code == 404)

        res = self.client.get(url_for("api.get_course_id", id=1))
        self.assertTrue(res.status_code == 200)

        # test admin update a course
        res = self.client.put(url_for("api.put_course", id=1),
                              headers=self.get_token_headers(token),
                              data=json.dumps({
                                  "name": "new test course name",
                                  "available": False
                              }))
        self.assertTrue(res.status_code == 200)
        updated_course = Courses.query.get_or_404(1)
        self.assertTrue(updated_course.name == "new test course name")
        self.assertTrue(updated_course.available == False)
Exemplo n.º 10
0
    def test_like_comment(self):
        """
        测试给相应的评论点赞
        """
        u = User(email='*****@*****.**',
                 username='******',
                 password=b64encode('muxi304'),
                 role_id=2)
        db.session.add(u)
        db.session.commit()
        admin_token = u.generate_auth_token()

        res = self.client.post(url_for('api.new_course'),
                               headers=self.get_token_headers(admin_token),
                               data=json.dumps({
                                   'name': 'test course',
                                   'teacher': 'test teacher',
                                   'category_id': 1,
                                   'type_id': 1,
                               }))

        res = self.client.post(url_for('api.new_comment', id=1),
                               headers=self.get_token_headers(admin_token),
                               data=json.dumps({
                                   'body': 'this is a test comment',
                                   'tags': ''
                               }))

        res = self.client.post(url_for('api.new_comments_id_like', id=1),
                               headers=self.get_token_headers(admin_token))
        likes = Comments.query.get_or_404(1).likes
        self.assertTrue(likes == 1)

        res = self.client.post(url_for('api.new_comments_id_like', id=1),
                               headers=self.get_token_headers(admin_token))
        self.assertTrue(res.status_code == 403)

        res = self.client.delete(url_for('api.new_comments_id_like', id=1),
                                 headers=self.get_token_headers(admin_token))
        likes = Comments.query.get_or_404(1).likes
        self.assertTrue(likes == 0)

        res = self.client.delete(url_for('api.new_comments_id_like', id=1),
                                 headers=self.get_token_headers(admin_token))
        self.assertTrue(res.status_code == 403)
Exemplo n.º 11
0
    def test_like_tip(self):
        """
        测试给相应tip点赞
        """
        u = User(
            email = '*****@*****.**',
            username = '******',
            password = b64encode('muxi304'),
            role_id = 2
        )
        db.session.add(u)
        db.session.commit()
        admin_token = u.generate_auth_token()

        res = self.client.post(url_for('api.new_tip'),
            headers = self.get_token_headers(admin_token),
            data = json.dumps({
                'title': 'test tips',
                'img_url': 'http://substack.net/images/rov.png',
                'body': 'this is a test tip body, enen',
                'author': 'test app'
            })
        )

        res = self.client.post(url_for('api.new_tips_id_like', id=1),
            headers = self.get_token_headers(admin_token)
        )
        likes = Tips.query.get_or_404(1).likes
        self.assertTrue(likes == 1)

        res = self.client.post(url_for('api.new_tips_id_like', id=1),
            headers = self.get_token_headers(admin_token)
        )
        self.assertTrue(res.status_code == 403)

        res = self.client.delete(url_for('api.new_tips_id_like', id=1),
            headers = self.get_token_headers(admin_token)
        )
        likes = Tips.query.get_or_404(1).likes
        self.assertTrue(likes == 0)

        res = self.client.delete(url_for('api.new_tips_id_like', id=1),
            headers = self.get_token_headers(admin_token)
        )
        self.assertTrue(res.status_code == 403)
Exemplo n.º 12
0
    def test_normal_token(self):
        """
        测试普通用户token
        """
        u = User(
            email = '*****@*****.**',
            password = b64encode('muxi304'),
            role_id = 3
        )
        db.session.add(u)
        db.session.commit()
        token = u.generate_auth_token()

        res = self.client.get(
            url_for('api.get_comments'),
            headers = self.get_token_headers(token)
        )
        self.assertTrue(res.status_code == 403)
Exemplo n.º 13
0
    def test_admin_token(self):
        """
        测试管理员token
        """
        u = User(email='*****@*****.**',
                 username='******',
                 password=b64encode('muxi304'),
                 role_id=2)
        db.session.add(u)
        db.session.commit()

        user_token_json = self.client.get(url_for('api.get_token'),
                                          headers=self.get_api_headers(
                                              '*****@*****.**', 'muxi304'))
        user_token = eval(user_token_json.data).get('token')
        u = User.query.filter_by(email='*****@*****.**').first()
        expect_token = u.generate_auth_token()
        self.assertTrue(str(user_token) == str(expect_token))

        res = self.client.get(url_for('api.get_comments'),
                              headers=self.get_token_headers(user_token))
        self.assertTrue(res.status_code == 200)
Exemplo n.º 14
0
    def test_like_tip(self):
        """
        测试给相应tip点赞
        """
        u = User(email='*****@*****.**',
                 username='******',
                 password=b64encode('muxi304'),
                 role_id=2)
        db.session.add(u)
        db.session.commit()
        admin_token = u.generate_auth_token()

        res = self.client.post(url_for('api.new_tip'),
                               headers=self.get_token_headers(admin_token),
                               data=json.dumps({
                                   'title': 'test tips',
                                   'img_url':
                                   'http://substack.net/images/rov.png',
                                   'body': 'this is a test tip body, enen',
                                   'author': 'test app'
                               }))

        res = self.client.post(url_for('api.new_tips_id_like', id=1),
                               headers=self.get_token_headers(admin_token))
        likes = Tips.query.get_or_404(1).likes
        self.assertTrue(likes == 1)

        res = self.client.post(url_for('api.new_tips_id_like', id=1),
                               headers=self.get_token_headers(admin_token))
        self.assertTrue(res.status_code == 403)

        res = self.client.delete(url_for('api.new_tips_id_like', id=1),
                                 headers=self.get_token_headers(admin_token))
        likes = Tips.query.get_or_404(1).likes
        self.assertTrue(likes == 0)

        res = self.client.delete(url_for('api.new_tips_id_like', id=1),
                                 headers=self.get_token_headers(admin_token))
        self.assertTrue(res.status_code == 403)
Exemplo n.º 15
0
    def test_write_course_comment(self):
        """
        测试编写课程评论,以及课程平均成绩的计算
        """
        u = User(email='*****@*****.**',
                 username='******',
                 password=b64encode('muxi304'),
                 role_id=2)
        db.session.add(u)
        db.session.commit()
        token = u.generate_auth_token()

        res = self.client.post(url_for('api.new_course'),
                               headers=self.get_token_headers(token),
                               data=json.dumps({
                                   'name': 'test course',
                                   'teacher': 'test teacher',
                                   'category_id': 1,
                                   'type_id': 1,
                               }))

        res = self.client.get(url_for('api.get_course_id', id=1))
        average_final_score = json.loads(res.data).get("average_final_score")
        average_usual_score = json.loads(res.data).get("average_usual_score")
        self.assertTrue(average_usual_score == None)
        self.assertTrue(average_final_score == None)

        res = self.client.post(url_for('api.new_comment', id=1),
                               headers=self.get_token_headers(token),
                               data=json.dumps({
                                   'body': 'this is a test comment',
                                   'tags': 'tag1 tag2',
                                   'final_score': 80,
                                   'usual_score': 70
                               }))
        print(res.data)
        self.assertTrue(res.status_code == 201)

        # test admin to get all comments
        res = self.client.get(url_for("api.get_comments"),
                              headers=self.get_token_headers(token))
        self.assertTrue(res.status_code == 200)

        # test login user to get comment by id
        res = self.client.get(url_for("api.get_id_comment", id=1),
                              headers=self.get_token_headers(token))
        self.assertTrue(res.status_code == 200)

        # test get all the comment of a course
        res = self.client.get(url_for("api.get_courses_id_comments", id=1),
                              headers=self.get_token_headers(token))
        self.assertTrue(res.status_code == 200)

        # test get hot comments
        res = self.client.get(url_for("api.get_hot_comments", id=1))
        self.assertTrue(res.status_code == 200)

        res = self.client.post(url_for('api.new_comment', id=1),
                               headers=self.get_token_headers(token),
                               data=json.dumps({
                                   'body': 'this is another test comment',
                                   'tags': 'tag1 tag2 tag3',
                                   'final_score': 90,
                                   'usual_score': 60
                               }))
        self.assertTrue(res.status_code == 201)

        res = self.client.get(url_for('api.get_course_id', id=1))
        average_final_score = json.loads(res.data).get("average_final_score")
        average_usual_score = json.loads(res.data).get("average_usual_score")
        self.assertTrue(average_usual_score == 65)
        self.assertTrue(average_final_score == 85)

        # test admin  to delete a comment
        res = self.client.delete(url_for("api.delete_comment", id=1),
                                 headers=self.get_token_headers(token))
        self.assertTrue(res.status_code == 200)