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_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_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_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)
Beispiel #12
0
    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")