def test_conflicting_username(self): # add dummy user new_user = dict( username="******", email="*****@*****.**", password="******", confirm_password="******", submit="Sign Up", ) test_post_request(self, "/register", new_user, models.User, 2) self.login() # test changing current_user's username with already registered user's username current_user = dict(username="******", email="*****@*****.**", submit="submit") self.assertRaises( AssertionError, test_post_request, self, "/account", current_user, models.User, 1, )
def test_update_question(self): # test valid data update_question = dict( question="moon is ...?", mark=8, difficulty="Easy", cognitive_level="Application", imp=None, submit="submit", option1="Planet", option2="Satellite", option3="meteor", option4="star", ) test_post_request( self, "/course/1/unit/1/question/mcq/update/2", update_question, models.Question, 2, ) # test invalid data response, _ = test_post_request( self, "/course/1/unit/1/question/mcq/update/100", update_question) self.assertIn(b"Question:100 Does not exist", response.data)
def test_delete_course(self): BaseUser.setUp(self) self.login() # adding new course new_course = dict(course="maths") _, course = test_post_request(self, "/course/new", new_course, models.Course, 1) # Checking repr method self.assertEqual(str(course), "Course(maths)") # adding another course new_course = dict(course="science") _, course = test_post_request(self, "/course/new", new_course, models.Course, 2) # cheking repr method self.assertEqual(str(course), "Course(science)") # Delete course delete_list = [1, 2] self.client.post( "/course/delete/", data=json.dumps(delete_list), headers={"Content-Type": "application/json"}, ) c1 = self.db.session.query(models.Course).get(1) c2 = self.db.session.query(models.Course).get(2) self.assertIsNone(c1) self.assertIsNone(c2)
def test_delete_unit(self): # Add new unit to course maths new_unit = dict(chapter_no=1, name="Permutations") _, res = test_post_request(self, "/course/1/unit/new", new_unit, models.Unit, 1) # Test repr method self.assertEqual(str(res), "Unit((1, 'Permutations'))") # Add second unit new_unit = dict(chapter_no=2, name="Combition") _, res = test_post_request(self, "/course/1/unit/new", new_unit, models.Unit, 2) # Test repr method self.assertEqual(str(res), "Unit((2, 'Combition'))") # Delete Unit delete_list = [2] self.client.post( "/course/1/unit/delete/", data=json.dumps(delete_list), headers={"Content-Type": "application/json"}, ) c1 = self.db.session.query(models.Unit).get(1) c2 = self.db.session.query(models.Unit).get(2) self.assertEqual(str(c1), "Unit((1, 'Permutations'))") self.assertIsNone(c2)
def test_update_question(self): # test valid data update_question = dict( question="moon is ...?", mark=8, difficulty=10, imp=None, submit="submit", option1="Planet", option2="Satellite", option3="meteor", option4="star", ) test_post_request( self, "/course/1/question/mcq/update/2", update_question, models.MCQQuestion, 2, ) # test invalid data response, _ = test_post_request(self, "/course/1/question/mcq/update/8", update_question) self.assertIn(b"Question:8 Does not exist", response.data)
def setUp(self): BaseUnit.setUp(self) new_question = dict( question="Is it okay?", mark=8, difficulty="Easy", cognitive_level="Comprehension", imp=None, submit="submit", ) test_post_request(self, "/course/1/unit/1/question/sub/new/", new_question, models.Question, 1) new_question = dict( question="Is it question?", mark=7, difficulty="Hard", cognitive_level="Application", imp=True, submit="submit", ) test_post_request(self, "/course/1/unit/1/question/sub/new/", new_question, models.Question, 2) new_question = dict( question="What is it?", mark=2, difficulty="Medium", cognitive_level="Knowledge", imp=None, submit="submit", ) test_post_request(self, "/course/1/unit/1/question/sub/new/", new_question, models.Question, 3) new_question = dict( question="What was that?", mark=6, difficulty="Medium", cognitive_level="Application", imp=None, submit="submit", ) test_post_request(self, "/course/1/unit/1/question/sub/new/", new_question, models.Question, 4) new_question = dict( question="How are you?", mark=2, difficulty="Easy", cognitive_level="Knowledge", imp=True, submit="submit", ) test_post_request(self, "/course/1/unit/1/question/sub/new/", new_question, models.Question, 5)
def login(self): """[User login] """ user = dict( email="*****@*****.**", password="******", remember=True, submit="Login", ) test_post_request(self, "/login", user)
def test_add_sub_question(self): # Test valid data new_question = dict(question="Is it okay?", mark=8, difficulty=10, imp=True, submit="submit") _, question = test_post_request(self, "/course/1/question/sub/new/", new_question, models.Question, 1) # Testing if repr method is working self.assertEqual(str(question), "Question(Is it okay?, 8, 10, True)") # Test invalid data new_question = dict( question="Isn't it okay?", mark=None, difficulty="1", imp=False, submit="submit", ) self.assertRaises( AttributeError, test_post_request, self, "/course/1/question/sub/new/", new_question, models.Question, 2, )
def setUp(self): """Setup for user Arguments: BaseDatabase {[type]} -- [description] """ super().setUp() self.client = self.app.test_client() new_user = dict( username="******", email="*****@*****.**", password="******", confirm_password="******", submit="Sign Up", ) test_post_request(self, "/register", new_user, models.User, 1)
def test_mark_distribution_form(self): self.test_paper_generate_request() data = { "Unit:01": "30", "Knowledge": "10", "Comprehension": "10", "Application": "10", "Easy": "10", "Medium": "10", "Hard": "10", "Que.1.A": "5", "Que.2.A": "5", "Que.2.B": "5", "Que.3.A": "5", "Que.3.B": "5", "Que.3.C": "5", "sub": 15, "mcq": 15, } response, _ = test_post_request(self, "/course/1/papers/generate/form/", data) self.assertIn(b"<title>Mark Distribution</title>", response.data) response = self.client.post( "/course/1/papers/confirm/template/", data=json.dumps(dict(status="OK")), headers={"Content-Type": "application/json"}, ) self.assertIn( (b"You should be redirected automatically to target URL: " b"<a href=/course/1/papers/generate/ >"), response.data, )
def test_generate_and_confirm_paper(self): self.test_paper_generate_request() self.test_mark_distribution_form() data = { "name": "paper1", "term": "winter", "exam_date": "2020-10-15", "time_limit": "2", } test_post_request(self, "/course/1/papers/generate/", data, Paper, 1) # testing gerenated paper with self.mail.record_messages() as outbox: data = {"generate": "YES", "examiner_email": "*****@*****.**"} test_post_request(self, "papers/confirm/1", data=data) self.assertEqual(1, len(outbox)) self.assertEqual("Paper for paper1", outbox[0].subject)
def test_update_question(self): # test valid data update_question = dict( question="How many prime numbers between 1 to 100?", mark=5, difficulty=20, imp=True, submit="submit", ) test_post_request(self, "/course/1/question/sub/update/2", update_question, models.Question, 2) # test invalid data response, _ = test_post_request(self, "/course/1/question/sub/update/8", update_question) self.assertIn(b"Question:8 Does not exist", response.data)
def test_profile(self): self.login() image_file = os.path.join(TEST_PATH, "users", "profile1.png") with open(image_file, "rb") as image: data = dict( username="******", email="*****@*****.**", picture=image, submit="submit", ) test_post_request(self, "/account", data, models.User, 1) with self.client.get("/static/profile_pics/1.png") as response: self.assertGreater(len(response.data), 1) remove_profile = os.path.join(APP_PATH, "static", "profile_pics", "1.png") os.remove(remove_profile)
def setUp(self): BaseCourse.setUp(self) new_question = dict(question="Is it okay?", mark=8, difficulty=10, imp=None, submit="submit") test_post_request(self, "/course/1/question/sub/new/", new_question, models.Question, 1) new_question = dict(question="Is it question?", mark=7, difficulty=50, imp=True, submit="submit") test_post_request(self, "/course/1/question/sub/new/", new_question, models.Question, 2) new_question = dict(question="What is it?", mark=2, difficulty=70, imp=None, submit="submit") test_post_request(self, "/course/1/question/sub/new/", new_question, models.Question, 3) new_question = dict(question="What was that?", mark=6, difficulty=20, imp=None, submit="submit") test_post_request(self, "/course/1/question/sub/new/", new_question, models.Question, 4) new_question = dict(question="How are you?", mark=2, difficulty=40, imp=True, submit="submit") test_post_request(self, "/course/1/question/sub/new/", new_question, models.Question, 5)
def test_update_question(self): # test valid data update_question = dict( question="How many prime numbers between 1 to 100?", mark=5, difficulty="Easy", cognitive_level="Knowledge", imp=True, submit="submit", ) test_post_request( self, "/course/1/unit/1/question/sub/update/2", update_question, models.Question, 2, ) # test invalid data response, _ = test_post_request( self, "/course/1/unit/1/question/sub/update/20", update_question) self.assertIn(b"Question:20 Does not exist", response.data)
def test_forgot_password(self): # test valid user with self.mail.record_messages() as outbox: # test with valid token data = dict(email="*****@*****.**") response, _ = test_post_request(self, "/reset_password", data) self.assertIn( b"An email has been sent with instructions to reset your password.", response.data, ) self.assertEqual(1, len(outbox)) self.assertEqual("Password Reset Request", outbox[0].subject) self.assertEqual("*****@*****.**", outbox[0].recipients[0]) regex = r"/reset_password/([^/]+) \)" link = re.search(regex, outbox[0].body) self.assertIsNotNone(link) token = link.group(1) new_password = dict(password="******", confirm_password="******") response, _ = test_post_request(self, "/reset_password/" + token, new_password) self.assertIn( b"Your password has been updated! You are now able to log in", response.data, ) user = dict( email="*****@*****.**", password="******", remember=True, submit="Login", ) test_post_request(self, "/login", user) response = self.client.get("/home") soup = BeautifulSoup(response.data, "lxml") title = soup.find(("h1", {"class": "header"})) self.assertEqual(title.contents[0], "Recent") self.logout() # test invalid token response, _ = test_post_request(self, "/reset_password/fakeToken", new_password) self.assertIn(b"<title>SetNow : Reset Password</title>", response.data) # FIXME: add flash in frontend: enable this test once fixed # self.assertIn(b"That is an invalid or expired token", response.data) # test unregistered email data = dict(email="doesn'*****@*****.**") response, _ = test_post_request(self, "/reset_password", data) self.assertIn( b"There is no account with that email. You must register first.", response.data, )
def test_contact_us(self): with self.mail.record_messages() as outbox: data = dict( name="Tester", email="*****@*****.**", mobile="123456789", subject="Test01", message="This is test mail", ) response, _ = test_post_request(self, "/contact-us", data) self.assertIn(b"Get in touch", response.data) self.assertEqual(2, len(outbox)) self.assertEqual("[SetNow Support] Re: Test01", outbox[1].subject) self.assertEqual("Test01", outbox[0].subject) self.assertEqual("*****@*****.**", outbox[1].sender) self.assertEqual("*****@*****.**", outbox[1].recipients[0]) self.assertIn("This is test mail", outbox[0].html)
def test_add_mcq_question(self): # test valid data new_mcq = dict( question="Rate it", mark=8, difficulty="Easy", cognitive_level="Application", imp=None, option1="10", option2="9", option3="8", option4="7", ) _, mcq = test_post_request(self, "/course/1/unit/1/question/mcq/new/", new_mcq, Question, 1) # test repr method self.assertEqual( str(mcq), "Question(Rate it, 8, Easy, Application, mcq, False)", ) # test invalid data new_mcq = dict( question=None, mark=8, difficulty="Easy", cognitive_level="Application", imp=True, submit="submit", option1="A", option2="B", option3="C", option4="D", ) self.assertRaises( AttributeError, test_post_request, self, "/course/1/unit/1/question/mcq/new/", new_mcq, Question, 2, )
def test_mark_distribution_form(self): questions = [1, 2, 3] data = { "Unit:01": "30", "Knowledge": "10", "Comprehension": "10", "Application": "10", "Easy": "10", "Medium": "10", "Hard": "10", "Que.1.A": "5", "Que.2.A": "5", "Que.2.B": "5", "Que.3.A": "5", "Que.3.B": "5", "Que.3.C": "5", } token = json_url.dumps(dict(questions=questions, total_marks=30)) response, _ = test_post_request( self, f"/course/1/papers/generate/form/{token}", data)
def test_add_sub_question(self): # Test valid data new_question = dict( question="Is it okay?", mark=8, difficulty="Easy", cognitive_level="Application", imp=True, submit="submit", ) _, question = test_post_request(self, "/course/1/unit/1/question/sub/new/", new_question, Question, 1) # Testing if repr method is working self.assertEqual( str(question), "Question(Is it okay?, 8, Easy, Application, sub, True)", ) # Test invalid data new_question = dict( question="Isn't it okay?", mark=None, imp=False, difficulty="Easy", cognitive_level="Application", submit="submit", ) self.assertRaises( AttributeError, test_post_request, self, "/course/1/unit/1/question/sub/new/", new_question, Question, 2, )
def test_add_mcq_question(self): # test valid data new_mcq = dict( question="Rate it", mark=8, difficulty=10, imp=None, option1="10", option2="9", option3="8", option4="7", ) _, mcq = test_post_request(self, "/course/1/question/mcq/new/", new_mcq, models.MCQQuestion, 1) # test repr method self.assertEqual(str(mcq), "MCQQuestion(Rate it, 8, 10, False, 10, 9, 8, 7)") # test invalid data new_mcq = dict( question=None, mark=8, difficulty=10, imp=True, submit="submit", option1="A", option2="B", option3="C", option4="D", ) self.assertRaises( AttributeError, test_post_request, self, "/course/1/question/mcq/new/", new_mcq, models.MCQQuestion, 2, )
def test_paper_generate_request(self): data = dict(questions=[1, 2, 3], total_marks=10) response, _ = test_post_request(self, "/course/1/papers/generate/request", data)
def setUp(self): BaseUnit.setUp(self) new_question = dict( question="Is it okay?", mark=8, difficulty="Easy", cognitive_level="Knowledge", imp=None, is_asked=True, submit="submit", option1="A", option2="B", option3="C", option4="D", ) test_post_request( self, "/course/1/unit/1/question/mcq/new/", new_question, models.Question, 1, ) new_question = dict( question="Is it question?", mark=7, difficulty="Medium", cognitive_level="Application", imp=True, is_asked=False, submit="submit", option1="A", option2="B", option3="C", option4="D", ) test_post_request( self, "/course/1/unit/1/question/mcq/new/", new_question, models.Question, 2, ) new_question = dict( question="What is it?", mark=2, difficulty="Hard", cognitive_level="Application", imp=None, is_asked=True, submit="submit", option1="A", option2="B", option3="C", option4="D", ) test_post_request( self, "/course/1/unit/1/question/mcq/new/", new_question, models.Question, 3, ) new_question = dict( question="What was that?", mark=6, difficulty="Easy", cognitive_level="Knowledge", imp=None, is_asked=False, submit="submit", option1="A", option2="B", option3="C", option4="D", ) test_post_request( self, "/course/1/unit/1/question/mcq/new/", new_question, models.Question, 4, ) new_question = dict( question="How are you?", mark=2, difficulty="Easy", cognitive_level="Knowledge", imp=True, is_asked=True, submit="submit", option1="A", option2="B", option3="C", option4="D", ) test_post_request( self, "/course/1/unit/1/question/mcq/new/", new_question, models.Question, 5, )
def setUp(self): super().setUp() new_question = dict( question="Is it okay?", mark=8, difficulty="Easy", cognitive_level="Comprehension", imp=None, is_asked=True, submit="submit", ) test_post_request(self, "/course/1/unit/1/question/sub/new/", new_question) new_question = dict( question="Is it question?", mark=7, difficulty="Hard", cognitive_level="Application", imp=True, is_asked=False, submit="submit", ) test_post_request(self, "/course/1/unit/1/question/sub/new/", new_question) new_question = dict( question="What is it?", mark=2, difficulty="Medium", cognitive_level="Knowledge", imp=None, is_asked=True, submit="submit", ) test_post_request(self, "/course/1/unit/1/question/sub/new/", new_question) new_question = dict( question="What was that?", mark=6, difficulty="Medium", cognitive_level="Application", imp=None, is_asked=False, submit="submit", ) test_post_request(self, "/course/1/unit/1/question/sub/new/", new_question) new_question = dict( question="How are you?", mark=2, difficulty="Easy", cognitive_level="Knowledge", imp=True, is_asked=True, submit="submit", ) test_post_request(self, "/course/1/unit/1/question/sub/new/", new_question) new_question = dict( question="is SEN easy?", mark=5, difficulty="Easy", cognitive_level="Application", imp=None, is_asked=False, submit="submit", ) test_post_request(self, "/course/1/unit/1/question/sub/new/", new_question) new_question = dict( question="is IT easy?", mark=5, difficulty="Medium", cognitive_level="Comprehension", imp=None, is_asked=False, submit="submit", ) test_post_request(self, "/course/1/unit/1/question/sub/new/", new_question) new_question = dict( question="is engineering easy?", mark=5, difficulty="Hard", cognitive_level="Knowledge", imp=None, is_asked=False, submit="submit", ) test_post_request(self, "/course/1/unit/1/question/sub/new/", new_question) new_question = dict( question="Comprehension sub hard", mark=5, difficulty="Hard", cognitive_level="Comprehension", imp=None, is_asked=False, submit="submit", ) test_post_request(self, "/course/1/unit/1/question/sub/new/", new_question) new_question = dict( question="this is one more really?", mark=5, difficulty="Hard", cognitive_level="Application", imp=None, is_asked=False, submit="submit", ) test_post_request( self, "/course/1/unit/1/question/sub/new/", new_question, ) new_question = dict( question="Application med sub.", mark=5, difficulty="Medium", cognitive_level="Application", imp=None, is_asked=False, submit="submit", ) test_post_request( self, "/course/1/unit/1/question/sub/new/", new_question, ) new_question = dict( question="Knowledge med sub.", mark=5, difficulty="Medium", cognitive_level="Knowledge", imp=None, is_asked=False, submit="submit", ) test_post_request( self, "/course/1/unit/1/question/sub/new/", new_question, ) new_question = dict( question="Comprehension sub easy", mark=5, difficulty="Easy", cognitive_level="Comprehension", imp=None, is_asked=False, submit="submit", ) test_post_request( self, "/course/1/unit/1/question/sub/new/", new_question, ) new_question = dict( question="Knowledge sub easy", mark=5, difficulty="Easy", cognitive_level="Knowledge", imp=None, is_asked=False, submit="submit", ) test_post_request( self, "/course/1/unit/1/question/sub/new/", new_question, )
def setUp(self): super().setUp() new_unit = dict(chapter_no=1, name="Permutations") test_post_request(self, "/course/1/unit/new", new_unit, models.Unit, 1)
def setUp(self): """Set up a blank temp database before each test""" super().setUp() self.login() new_course = dict(course="maths") test_post_request(self, "/course/new", new_course, models.Course, 1)
def test_update_account(self): self.login() update_user = dict(username="******", email="*****@*****.**", submit="submit") test_post_request(self, "/account", update_user, models.User, 1)
def setUp(self): super().setUp() new_question = dict( question="Is it okay?", mark=8, difficulty="Easy", cognitive_level="Knowledge", imp=None, is_asked=True, submit="submit", option1="A", option2="B", option3="C", option4="D", ) test_post_request( self, "/course/1/unit/1/question/mcq/new/", new_question, ) new_question = dict( question="Is it question?", mark=7, difficulty="Medium", cognitive_level="Application", imp=True, is_asked=False, submit="submit", option1="A", option2="B", option3="C", option4="D", ) test_post_request( self, "/course/1/unit/1/question/mcq/new/", new_question, ) new_question = dict( question="What is it?", mark=2, difficulty="Hard", cognitive_level="Application", imp=None, is_asked=True, submit="submit", option1="A", option2="B", option3="C", option4="D", ) test_post_request( self, "/course/1/unit/1/question/mcq/new/", new_question, ) new_question = dict( question="What was that?", mark=6, difficulty="Easy", cognitive_level="Knowledge", imp=None, is_asked=False, submit="submit", option1="A", option2="B", option3="C", option4="D", ) test_post_request( self, "/course/1/unit/1/question/mcq/new/", new_question, ) new_question = dict( question="How are you?", mark=2, difficulty="Easy", cognitive_level="Knowledge", imp=True, is_asked=True, submit="submit", option1="A", option2="B", option3="C", option4="D", ) test_post_request( self, "/course/1/unit/1/question/mcq/new/", new_question, ) new_question = dict( question="is Project complete?", mark=5, difficulty="Easy", cognitive_level="Application", imp=None, is_asked=False, submit="submit", option1="A", option2="B", option3="C", option4="D", ) test_post_request( self, "/course/1/unit/1/question/mcq/new/", new_question, ) new_question = dict( question="is engineering complete?", mark=5, difficulty="Medium", cognitive_level="Comprehension", imp=None, is_asked=False, submit="submit", option1="A", option2="B", option3="C", option4="D", ) test_post_request( self, "/course/1/unit/1/question/mcq/new/", new_question, ) new_question = dict( question="did you get degree?", mark=5, difficulty="Hard", cognitive_level="Application", imp=None, is_asked=False, submit="submit", option1="A", option2="B", option3="C", option4="D", ) test_post_request( self, "/course/1/unit/1/question/mcq/new/", new_question, ) new_question = dict( question="Comprehension mcq hard", mark=5, difficulty="Hard", cognitive_level="Comprehension", imp=None, is_asked=False, submit="submit", option1="A", option2="B", option3="C", option4="D", ) test_post_request( self, "/course/1/unit/1/question/mcq/new/", new_question, ) new_question = dict( question="Knowledge mcq hard", mark=5, difficulty="Hard", cognitive_level="Comprehension", imp=None, is_asked=False, submit="submit", option1="A", option2="B", option3="C", option4="D", ) test_post_request( self, "/course/1/unit/1/question/mcq/new/", new_question, ) new_question = dict( question="Knowledge mcq med", mark=5, difficulty="Medium", cognitive_level="Knowledge", imp=None, is_asked=False, submit="submit", option1="A", option2="B", option3="C", option4="D", ) test_post_request( self, "/course/1/unit/1/question/mcq/new/", new_question, ) new_question = dict( question="Application mcq med", mark=5, difficulty="Medium", cognitive_level="Application", imp=None, is_asked=False, submit="submit", option1="A", option2="B", option3="C", option4="D", ) test_post_request( self, "/course/1/unit/1/question/mcq/new/", new_question, ) new_question = dict( question="Comprehension mcq easy", mark=5, difficulty="Easy", cognitive_level="Comprehension", imp=None, is_asked=False, submit="submit", option1="A", option2="B", option3="C", option4="D", ) test_post_request( self, "/course/1/unit/1/question/mcq/new/", new_question, ) new_question = dict( question="Knowledge mcq easy", mark=5, difficulty="Easy", cognitive_level="Knowledge", imp=None, is_asked=False, submit="submit", option1="A", option2="B", option3="C", option4="D", ) test_post_request( self, "/course/1/unit/1/question/mcq/new/", new_question, )