예제 #1
0
    def test_problem_list(self):

        '''
            test problem list is good
        :return: None
        '''

        response = self.client.get(url_for('problem.problem_list'))
        self.assertTrue(response.status_code == 200)
        self.assertTrue(b'Problem List' in response.data)
        self.assertFalse(b'thisisatest' in response.data)
        u = User(username='******', password='******', email='*****@*****.**', confirmed=True)
        db.session.add(u)
        db.session.commit()
        p = Problem(title='thisisatest')
        db.session.add(p)
        db.session.commit()
        response = self.client.get(url_for('problem.problem_list'))
        self.assertFalse(b'thisisatest' in response.data)
        response = self.client.post(url_for('auth.login'), data={
            'username': '******',
            'password': '******'
        }, follow_redirects=True)
        response = self.client.get(url_for('problem.problem_list'))
        self.assertTrue(response.status_code == 200)
        self.assertTrue(b'Problem List' in response.data)
        self.assertFalse(b'thisisatest' in response.data)
        p.visible = True
        db.session.add(p)
        db.session.commit()
        response = self.client.get(url_for('problem.problem_list'))
        self.assertTrue(response.status_code == 200)
        self.assertTrue(b'Problem List' in response.data)
        self.assertTrue(b'thisisatest' in response.data)
        p.visible = False
        db.session.add(p)
        db.session.commit()
        u.role_id = Role.query.filter_by(permission=0xff).first().id
        db.session.add(u)
        db.session.commit()
        response = self.client.get(url_for('problem.problem_list'))
        self.assertTrue(response.status_code == 200)
        self.assertTrue(b'Problem List' in response.data)
        self.assertTrue(b'thisisatest' in response.data)
예제 #2
0
    def test_problem_detail(self):

        '''
            test problem_detail is good
        :return: None
        '''

        p = Problem(title='test')
        db.session.add(p)
        db.session.commit()
        response = self.client.get(url_for('problem.problem_detail', problem_id=p.id))
        self.assertTrue(response.status_code == 404)
        p.visible = True
        db.session.add(p)
        db.session.commit()
        response = self.client.get(url_for('problem.problem_detail', problem_id=p.id))
        self.assertTrue(response.status_code == 200)
예제 #3
0
    def test_problem_submit(self):

        '''
            test problem submit is good
        :return: None
        '''

        p = Problem(title='test')
        db.session.add(p)
        db.session.commit()
        response = self.client.post(url_for('problem.submit', problem_id=2), data={
            'problem_id': '2',
            'language': '1',
            'code': 'helloworldsdfsdf'
        })
        self.assertTrue(response.status_code == 302)
        u = User(username='******', password='******', email='*****@*****.**', nickname='hahahaha', confirmed=True)
        db.session.add(u)
        db.session.commit()
        response = self.client.post(url_for('auth.login'), data={
            'username': '******',
            'password': '******',
            'remember_me': 0
        }, follow_redirects=True)
        response = self.client.post(url_for('problem.submit', problem_id=2), data={
            'problem_id': '2',
            'language': '1',
            'code': 'helloworldsdfsdf'
        })
        self.assertTrue(b'No such problem!' in response.data)
        response = self.client.post(url_for('problem.submit', problem_id=p.id), data={
            'problem_id': p.id,
            'language': '1',
            'code': 'helloworldsdfsdf'
        }, follow_redirects=True)
        self.assertTrue(b'No such problem!' in response.data)
        p.visible = True
        db.session.add(p)
        db.session.commit()
        response = self.client.post(url_for('problem.submit', problem_id=p.id), data={
            'problem_id': '1',
            'language': '1',
            'code': 'helloworldsdfsdf'
        })
        self.assertTrue(response.status_code == 302)
        p.visible = False
        db.session.add(p)
        db.session.commit()
        u.role_id = Role.query.filter_by(permission=0xff).first().id
        db.session.add(u)
        db.session.commit()
        response = self.client.post(url_for('problem.submit', problem_id=p.id), data={
            'problem_id': '1',
            'language': '1',
            'code': 'helloworldsdfsdf'
        })
        self.assertTrue(response.status_code == 302)
        response = self.client.post(url_for('problem.submit', problem_id=p.id), data={
            'problem_id': '1',
            'language': '1',
            'code': 'hellow'
        })
        self.assertTrue(b'代码长度必须在10到65535个字符之间' in response.data)
        response = self.client.get(url_for('problem.submit', problem_id=p.id))
        self.assertTrue(response.status_code == 200)