def test_rating_get(self): client = self.app.test_client() client.set_app(self.app) do_login(client, "*****@*****.**", "operator") rest_id = get_my_restaurant_id(client) self.assertIsNotNone(rest_id) rate = get_restaurant_rating(client, rest_id) self.assertIsNotNone(rate) self.assertEqual(0, rate) do_logout(client) do_login(client, "*****@*****.**", "operator") rest_id = get_my_restaurant_id(client) self.assertIsNotNone(rest_id) # assuming test_can_rate_once is done before # wait the necessary time max 10 seconds for i in range(10): sleep(1) rate = get_restaurant_rating(client, rest_id) self.assertIsNotNone(rate) if int(rate) == 4: break self.assertEqual(4, int(rate))
def test_mark_unmark_conflicting_data(self): client = self.app.test_client() client.set_app(self.app) endpoints = [ "/positives/mark", "/positives/unmark", "/positives/contacts" ] do_login(client, "*****@*****.**", "health") form = { "email": "*****@*****.**", "telephone": "3939675681", "ssn": "ANNASSN4791DFGYU" } for e in endpoints: reply = client.t_post(e, form) self.assertEqual(reply.status_code, 200, msg="endpoint: " + e + "\n" + reply.get_data(as_text=True)) self.assertIn("User not found", reply.get_data(as_text=True), msg=reply.get_data(as_text=True)) do_logout(client)
def test_mark_unmark_wrong_mail(self): client = self.app.test_client() client.set_app(self.app) endpoints = [ "/positives/mark", "/positives/unmark", "/positives/contacts" ] do_login(client, "*****@*****.**", "health") form = { "email": "*****@*****.**", "telephone": "", "ssn": "" } for e in endpoints: reply = client.t_post(e, form) self.assertEqual(reply.status_code, 200, msg="endpoint: " + e + "\n" + reply.get_data(as_text=True)) self.assertIn("User not found", reply.get_data(as_text=True), msg=reply.get_data(as_text=True)) do_logout(client)
def test_get_todays_list_not_found(self): client = self.app.test_client() client.set_app(self.app) do_login(client, "*****@*****.**", "operator") reply = client.t_get("/restaurants/42/reservations/today") self.assertEqual(reply.status_code, 404) do_logout(client)
def test_restaurants_map(self): client = self.app.test_client() client.set_app(self.app) do_login(client, "*****@*****.**", "anna") reply = client.t_get("/restaurants_map") do_logout(client) self.assertEqual(reply.status_code, 200, msg=reply.get_data(as_text=True))
def test_restaurants_map_notcustomer(self): client = self.app.test_client() client.set_app(self.app) do_login(client, "*****@*****.**", "admin") reply = client.t_get("/restaurants_map") self.assertEqual(reply.status_code, 401, msg=reply.get_data(as_text=True)) do_logout(client)
def test_get_todays_list_401_operator(self): client = self.app.test_client() client.set_app(self.app) do_login(client, "*****@*****.**", "operator3") reply = client.t_get("/restaurants/1/reservations/today") self.assertEqual(reply.status_code, 401, msg=reply.get_data(as_text=True)) do_logout(client)
def test_entrance_401(self): client = self.app.test_client() client.set_app(self.app) do_login(client, "*****@*****.**", "anna") reply = client.t_get("/reservations/1/entrance") self.assertEqual(reply.status_code, 401, msg=reply.get_data(as_text=True)) do_logout(client)
def test_positives_list(self): client = self.app.test_client() client.set_app(self.app) do_login(client, "*****@*****.**", "health") reply = client.t_get("/positives") self.assertIn("Vecchio Alice", reply.get_data(as_text=True), msg=reply.get_data(as_text=True)) do_logout(client)
def test_unmark_with_id_404(self): client = self.app.test_client() client.set_app(self.app) do_login(client, "*****@*****.**", "health") reply = client.t_get(f"/positives/99999/unmark") self.assertEqual(reply.status_code, 404, msg=reply.get_data(as_text=True)) do_logout(client)
def test_contacts_not_positive_user_by_id(self): client = self.app.test_client() client.set_app(self.app) do_login(client, "*****@*****.**", "health") reply = client.t_get("/positives/3/contacts") self.assertEqual(reply.status_code, 404, msg=reply.get_data(as_text=True)) do_logout(client)
def test_get_list(self): client = self.app.test_client() client.set_app(self.app) do_login(client, "*****@*****.**", "anna") reply = client.t_get("/reservations") self.assertEqual(reply.status_code, 200, msg=reply.get_data(as_text=True)) self.assertIn("For 2 people", reply.get_data(as_text=True), msg=reply.get_data(as_text=True)) do_logout(client)
def test_contacts_by_ssn(self): client = self.app.test_client() client.set_app(self.app) do_login(client, "*****@*****.**", "health") form = {"email": "", "telephone": "", "ssn": "TESTALICESSN1234"} reply = client.t_post("/positives/contacts", form) self.assertEqual(reply.status_code, 302, msg=reply.get_data(as_text=True)) do_logout(client)
def test_get_empty_list(self): client = self.app.test_client() client.set_app(self.app) do_login(client, "*****@*****.**", "gianni") reply = client.t_get("/reservations") self.assertEqual(reply.status_code, 200, msg=reply.get_data(as_text=True)) self.assertIn("No reservations were found", reply.get_data(as_text=True), msg=reply.get_data(as_text=True)) do_logout(client)
def test_contacts_need_ha(self): client = self.app.test_client() client.set_app(self.app) do_login(client, "*****@*****.**", "gianni") reply = client.t_get(f"/positives/7/contacts") self.assertEqual(reply.status_code, 401) do_logout(client) do_login(client, "*****@*****.**", "health") reply = client.t_get(f"/positives/13/contacts") self.assertEqual(reply.status_code, 200) do_logout(client)
def test_notifications_need_CO_login(self): client = self.app.test_client() client.set_app(self.app) do_login(client, "*****@*****.**", "admin") reply = client.t_get("/notifications") self.assertEqual(reply.status_code, 404) do_logout(client) do_login(client, "*****@*****.**", "health") reply = client.t_get("/notifications") self.assertEqual(reply.status_code, 404) do_logout(client)
def test_overview_range(self): client = self.app.test_client() client.set_app(self.app) do_login(client, "*****@*****.**", "operator") data = {"from_h": "00", "from_m": "00", "to_h": "23", "to_m": "59"} today_not = datetime.datetime.today() + timedelta(days=1) reply = client.t_get( f"/restaurants/3/overview/{today_not.year}/{today_not.month}/{today_not.day}", query_string=data) reply_data = reply.get_data(as_text=True) self.assertIn("Number of people: 1", reply_data) do_logout(client)
def test_mark_with_id(self): client = self.app.test_client() client.set_app(self.app) do_login(client, "*****@*****.**", "health") reply = client.t_get(f"/positives/1/mark") self.assertEqual(reply.status_code, 302, msg=reply.get_data(as_text=True)) self.assertEqual(reply.location, "http://localhost/positives", msg=reply.location) do_logout(client)
def test_contacts_not_positive_user(self): client = self.app.test_client() client.set_app(self.app) do_login(client, "*****@*****.**", "health") form = {"email": "*****@*****.**", "telephone": "", "ssn": ""} reply = client.t_post("/positives/contacts", form) self.assertEqual(reply.status_code, 200, msg=reply.get_data(as_text=True)) self.assertIn("The user is not positive", reply.get_data(as_text=True), msg=reply.get_data(as_text=True)) do_logout(client)
def test_register_entrance(self): client = self.app.test_client() client.set_app(self.app) do_login(client, "*****@*****.**", "operator") reply = client.t_get("/reservations/2/entrance") self.assertEqual(reply.status_code, 302, msg=reply.get_data(as_text=True)) reply = client.t_get("/reservations/2") self.assertEqual(reply.status_code, 200, msg=reply.get_data(as_text=True)) self.assertIn("Entrance registered!", reply.get_data(as_text=True), msg=reply.get_data(as_text=True)) do_logout(client)
def test_HA_access(self): client = self.app.test_client() client.set_app(self.app) endpoints = [ "/positives", "/positives/mark", "/positives/unmark", "/positives/contacts" ] do_login(client, "*****@*****.**", "health") for e in endpoints: reply = client.t_get(e) self.assertEqual(reply.status_code, 200, msg="endpoint: " + e + "\n" + reply.get_data(as_text=True)) do_logout(client)
def test_bad_form_search(self): client = self.app.test_client() client.set_app(self.app) do_login(client, "*****@*****.**", "anna") reply = client.t_get("/restaurants/search") self.assertEqual(reply.status_code, 200) form = { "name": "", "menu": "", "cuisine_type": "", "open_day": "", "opening_time": "" } reply = client.t_post("/restaurants/search", data=form) do_logout(client) self.assertEqual(reply.status_code, 400)
def test_unmark_with_not_positive_id(self): client = self.app.test_client() client.set_app(self.app) do_login(client, "*****@*****.**", "health") form = {"email": "*****@*****.**", "telephone": "", "ssn": ""} client.t_post( "/positives/mark", form) # now we're sure that there is at least one positive user match = get_positives_id(client)[0] client.t_get(f"/positives/{match}/unmark") # now the user is unmarked reply = client.t_get(f"/positives/{match}/unmark") self.assertEqual(reply.status_code, 400, msg=reply.get_data(as_text=True)) do_logout(client)
def test_not_found(self): client = self.app.test_client() client.set_app(self.app) users = [ "*****@*****.**", "*****@*****.**", "*****@*****.**" ] passw = ["admin", "health", "operator"] endpoints = ["/reservations"] for i in range(len(users)): do_login(client, users[i], passw[i]) for e in endpoints: reply = client.t_get(e) self.assertEqual(reply.status_code, 404, msg="endpoint: " + e + "\n" + reply.get_data(as_text=True)) do_logout(client)
def test_goood_form_bad_time_search(self): client = self.app.test_client() client.set_app(self.app) do_login(client, "*****@*****.**", "anna") reply = client.t_get("/restaurants/search") self.assertEqual(reply.status_code, 200) form = { "name": "t", "menu": "italian", "cuisine_type": "", "open_day": "2", "opening_time": "5" } reply = client.t_post("/restaurants/search", data=form) do_logout(client) reply_data = reply.get_data(as_text=True) self.assertEqual(reply.status_code, 404, msg=reply_data)
def test_mark_unmark_telephone(self): client = self.app.test_client() client.set_app(self.app) endpoints = ["/positives/mark", "/positives/unmark"] do_login(client, "*****@*****.**", "health") form = {"email": "", "telephone": "46966711", "ssn": ""} for e in endpoints: reply = client.t_post(e, form) self.assertEqual(reply.status_code, 302, msg="endpoint: " + e + "\n" + reply.get_data(as_text=True)) self.assertEqual(reply.location, "http://localhost/positives", msg=reply.location) do_logout(client)
def test_good_form_search(self): client = self.app.test_client() client.set_app(self.app) do_login(client, "*****@*****.**", "anna") reply = client.t_get("/restaurants/search") self.assertEqual(reply.status_code, 200) form = { "name": "Rest", "menu": "", "cuisine_type": "", "open_day": "0", "opening_time": "Not Specified" } reply = client.t_post("/restaurants/search", data=form) do_logout(client) reply_data = reply.get_data(as_text=True) self.assertEqual(reply.status_code, 200, msg=reply_data) self.assertIn("Rest 4", reply_data, msg=reply_data)
def test_mark_unmark_bad_form(self): client = self.app.test_client() client.set_app(self.app) endpoints = [ "/positives/mark", "positives/unmark", "/positives/contacts" ] do_login(client, "*****@*****.**", "health") form = {"email": "", "telephone": "", "ssn": ""} for f in ["email", "telephone", "ssn"]: bad_form = form bad_form[f] = None for e in endpoints: reply = client.t_post(e, bad_form) self.assertEqual(reply.status_code, 400, msg="form: " + str(bad_form) + "\nendpoint: " + e + "\n" + reply.get_data(as_text=True)) self.assertIn("Bad Form", reply.get_data(as_text=True), msg="endpoint: " + e + "\n" + reply.get_data(as_text=True)) bad_form = form bad_form["dateofbirth"] = "01/01/1969" for e in endpoints: reply = client.t_post(e, bad_form) self.assertEqual(reply.status_code, 400, msg="form: " + str(bad_form) + "\nendpoint: " + e + "\n" + reply.get_data(as_text=True)) self.assertIn("Bad Form", reply.get_data(as_text=True), msg="endpoint: " + e + "\n" + reply.get_data(as_text=True)) do_logout(client)
def test_user_notifications(self): client = self.app.test_client() client.set_app(self.app) do_login(client, "*****@*****.**", "alice") reply = client.t_get("/notifications") reply_data = reply.get_data(as_text=True) self.assertIn("t have notifications", reply_data) do_logout(client) do_login(client, "*****@*****.**", "health") form = {"email": "*****@*****.**", "telephone": "", "ssn": ""} reply = client.t_post("/positives/mark", form) do_logout(client) do_login(client, "*****@*****.**", "giulia") reply = client.t_get("/notifications") reply_data = reply.get_data(as_text=True) self.assertIn( "You have had contact with a Covid-19 positive in the last 14 days", reply_data) do_logout(client) do_login(client, "*****@*****.**", "health") form = {"email": "*****@*****.**", "telephone": "", "ssn": ""} reply = client.t_post("/positives/unmark", form)
def test_login_logout(self): with self.app.test_client() as client: client.set_app(self.app) reply = do_login(client, "*****@*****.**", "admin") self.assertEqual(reply.status_code, 302) reply = client.t_get('/') self.assertTrue("logout" in reply.get_data(as_text=True), msg = reply.get_data(as_text=True)) self.assertFalse("login" in reply.get_data(as_text=True)) reply = do_logout(client) reply = client.t_get('/') self.assertTrue("login" in reply.get_data(as_text=True)) self.assertFalse("logout" in reply.get_data(as_text=True))
def logout(): do_logout() return redirect(url_for('index'))