def test_accept_request_on_update_when_coaching_logged_in_user(self): renesmee = self.make_user('*****@*****.**') jacob = self.make_user('*****@*****.**') CoachRequest.get_or_insert_for(jacob, renesmee) coaches_json = [self.make_user_json(jacob, True)] coaches.update_coaches_and_requests(renesmee, coaches_json) self.assertTrue(renesmee.is_visible_to(jacob)) requests_for_renesmee = CoachRequest.get_for_student(renesmee).fetch(1000) self.assertEqual(0, len(requests_for_renesmee))
def test_accept_request_on_update_when_coaching_logged_in_user(self): renesmee = self.make_user('*****@*****.**') jacob = self.make_user('*****@*****.**') CoachRequest.get_or_insert_for(jacob, renesmee) coaches_json = [self.make_user_json(jacob, True)] coaches.update_coaches_and_requests(renesmee, coaches_json) self.assertTrue(renesmee.is_visible_to(jacob)) requests_for_renesmee = CoachRequest.get_for_student(renesmee).fetch( 1000) self.assertEqual(0, len(requests_for_renesmee))
def test_clear_request_on_update_requests_with_no_email(self): bella = self.make_user('*****@*****.**') edward = self.make_user('*****@*****.**') CoachRequest.get_or_insert_for(edward, bella) coaches.update_requests(bella, []) requests_for_bella = CoachRequest.get_for_student(bella).fetch(1000) self.assertEqual(0, len(requests_for_bella)) requests_by_edward = CoachRequest.get_for_coach(edward).fetch(1000) self.assertEqual(0, len(requests_by_edward))
def test_ignore_nonexistent_requester_email_on_update_requests(self): renesmee = self.make_user('*****@*****.**') jacob = self.make_user('*****@*****.**') CoachRequest.get_or_insert_for(jacob, renesmee) coaches_json = [{ 'email': '*****@*****.**', 'isCoachingLoggedInUser': False, }] coaches.update_requests(renesmee, coaches_json) requests_for_renesmee = CoachRequest.get_for_student(renesmee).fetch(1000) self.assertEqual(0, len(requests_for_renesmee))
def test_ignore_nonexistent_requester_email_on_update_requests(self): renesmee = self.make_user('*****@*****.**') jacob = self.make_user('*****@*****.**') CoachRequest.get_or_insert_for(jacob, renesmee) coaches_json = [{ 'email': '*****@*****.**', 'isCoachingLoggedInUser': False, }] coaches.update_requests(renesmee, coaches_json) requests_for_renesmee = CoachRequest.get_for_student(renesmee).fetch( 1000) self.assertEqual(0, len(requests_for_renesmee))
def test_noop_on_update_requests_with_email(self): bella = self.make_user('*****@*****.**') jacob = self.make_user('*****@*****.**') CoachRequest.get_or_insert_for(jacob, bella) coaches.update_requests(bella, [jacob.key_email]) requests_for_bella = CoachRequest.get_for_student(bella).fetch(1000) self.assertEqual(1, len(requests_for_bella)) requests_by_jacob = CoachRequest.get_for_coach(jacob).fetch(1000) self.assertEqual(1, len(requests_by_jacob))
def test_noop_on_update_when_not_coaching_logged_in_user(self): # Bella + Edward's daughter, # (Spoiler Alert!) who Jacob falls in love with in Book 4 renesmee = self.make_user('*****@*****.**') jacob = self.make_user('*****@*****.**') CoachRequest.get_or_insert_for(jacob, renesmee) requests_for_renesmee = CoachRequest.get_for_student(renesmee).fetch(1000) self.assertEqual(1, len(requests_for_renesmee)) coaches_json = [self.make_user_json(jacob, False)] coaches.update_coaches_and_requests(renesmee, coaches_json) self.assertFalse(renesmee.is_visible_to(jacob)) requests_for_renesmee = CoachRequest.get_for_student(renesmee).fetch(1000) self.assertEqual(1, len(requests_for_renesmee))
def test_noop_on_update_when_not_coaching_logged_in_user(self): # Bella + Edward's daughter, # (Spoiler Alert!) who Jacob falls in love with in Book 4 renesmee = self.make_user('*****@*****.**') jacob = self.make_user('*****@*****.**') CoachRequest.get_or_insert_for(jacob, renesmee) requests_for_renesmee = CoachRequest.get_for_student(renesmee).fetch( 1000) self.assertEqual(1, len(requests_for_renesmee)) coaches_json = [self.make_user_json(jacob, False)] coaches.update_coaches_and_requests(renesmee, coaches_json) self.assertFalse(renesmee.is_visible_to(jacob)) requests_for_renesmee = CoachRequest.get_for_student(renesmee).fetch( 1000) self.assertEqual(1, len(requests_for_renesmee))
def test_requesting_by_username_doesnt_leak_email(self): bella = self.make_user('*****@*****.**') self.assertTrue(bella.claim_username('bella')) jacob = self.make_user('*****@*****.**') # Request is made using username. CoachRequest.get_or_insert_for(jacob, bella, 'bella') requests_for_bella = CoachRequest.get_for_student(bella).fetch(1000) self.assertEqual(1, len(requests_for_bella)) self.assertEqual(bella.username, requests_for_bella[0].student_requested_identifier) requests_by_jacob = CoachRequest.get_for_coach(jacob).fetch(1000) self.assertEqual(1, len(requests_by_jacob)) self.assertEqual(bella.username, requests_by_jacob[0].student_requested_identifier)
def post(self): user_data = UserData.current() user_data_student = self.request_student_user_data() if user_data_student: if not user_data_student.is_coached_by(user_data): coach_request = CoachRequest.get_or_insert_for(user_data, user_data_student) if coach_request: if not self.is_ajax_request(): self.redirect("/students") return if self.is_ajax_request(): self.response.set_status(404) else: self.redirect("/students?invalid_student=1")