def test_user_cannot_view_other_users_payments(self): other_user = generate_user(username="******") attend_user_to_event(self.event, other_user) payment_relation = pay_for_event(self.event, other_user) response = self.client.get(self.id_url(payment_relation.id), **self.headers) self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND) self.assertEqual(response.json().get("detail"), "Ikke funnet.")
def test_dump_data_contains_companies(self): self.event = generate_company_event() attend_user_to_event(user=self.user, event=self.event) response = self.client.get(self.id_url(self.user.id), **self.headers) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual( response.json().get("attendees")[0].get("companies"), [{ "name": "onlinecorp" }], )
def test_user_can_unregister_before_deadline(self): self.event.attendance_event.unattend_deadline = timezone.now( ) + timezone.timedelta(days=2) self.event.event_start = timezone.now() + timezone.timedelta(days=3) self.event.attendance_event.save() self.event.save() attend_user_to_event(self.event, self.user) response = self.client.delete(self.get_unregister_url(self.event.id), **self.headers) self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT) self.assertFalse(self.event.attendance_event.is_attendee(self.user))
def test_user_can_re_register_for_an_event_after_unregistering(self, _): attend_user_to_event(self.event, self.user) self.event.attendance_event.unattend_deadline = timezone.now( ) + timezone.timedelta(days=2) self.event.attendance_event.guest_attendance = True self.event.event_start = timezone.now() + timezone.timedelta(days=3) self.event.attendance_event.save() self.event.save() self.client.delete(self.get_unregister_url(self.event.id), **self.headers) response = self.client.post(self.get_register_url(self.event.id), self.recaptcha_arg, **self.headers) self.assertEqual(response.status_code, status.HTTP_201_CREATED)
def test_user_cannot_unregister_after_deadline_has_passed(self): self.event.attendance_event.unattend_deadline = timezone.now( ) - timezone.timedelta(days=2) self.event.attendance_event.save() attend_user_to_event(self.event, self.user) response = self.client.delete(self.get_unregister_url(self.event.id), **self.headers) self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) self.assertTrue(self.event.attendance_event.is_attendee(self.user)) self.assertEqual( response.json().get("detail"), "Avmeldingsfristen har gått ut, det er ikke lenger mulig å melde seg av arrangementet.", )
def test_user_cannot_register_twice(self, _): attendance = self.event.attendance_event initial_attendees = len(attendance.attendees.all()) attend_user_to_event(attendance.event, self.user) response = self.client.post(self.get_register_url(self.event.id), self.recaptcha_arg, **self.headers) self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) self.assertEqual( response.json().get("detail"), "Du er allerede meldt på dette arrangementet.", ) self.assertEqual(len(attendance.attendees.all()), initial_attendees + 1)
def test_user_cannot_register_twice(self, _): attendance = self.event.attendance_event initial_attendees = len(attendance.attendees.all()) attend_user_to_event(attendance.event, self.user) response = self.client.post( self.get_register_url(self.event.id), self.recaptcha_arg, **self.headers ) self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) self.assertEqual( response.json().get("detail"), StatusCode.ALREADY_SIGNED_UP.message, ) self.assertEqual(len(attendance.attendees.all()), initial_attendees + 1)
def test_dump_data_contains_attendees(self): self.event = generate_event() self.attendee1 = attend_user_to_event(user=self.user, event=self.event) response = self.client.get(self.id_url(self.user.id), **self.headers) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(len(response.json().get("attendees")), 1)
def test_user_cannot_unregister_after_event_has_started(self): self.event.attendance_event.unattend_deadline = timezone.now( ) + timezone.timedelta(days=2) self.event.event_start = timezone.now() - timezone.timedelta(hours=1) self.event.attendance_event.save() self.event.save() attend_user_to_event(self.event, self.user) response = self.client.delete(self.get_unregister_url(self.event.id), **self.headers) self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) self.assertTrue(self.event.attendance_event.is_attendee(self.user)) self.assertEqual( response.json().get("detail"), "Du kan ikke melde deg av et arrangement som allerede har startet.", )
def test_non_admin_cannot_administrate_their_own_attendee(self): self.user.groups.remove(self.committee) attendee = attend_user_to_event(self.event, self.user) attendee.paid = False attendee.save() response = self.client.patch( self.get_administrate_url(self.attendee1.id), {"paid": True}, **self.headers) self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
def test_admin_can_administrate_their_own_attendee(self): attendee = attend_user_to_event(self.event, self.user) attendee.paid = False attendee.save() response = self.client.patch( self.get_administrate_url(self.attendee1.id), {"paid": True}, **self.headers) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(response.json().get("paid"), True)
def test_user_can_change_own_attendee(self): attendee = attend_user_to_event(self.event, self.user) attendee.show_as_attending_event = False attendee.save() response = self.client.patch( self.get_change_url(attendee.id), {"show_as_attending_event": True}, **self.headers, ) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(response.json().get("show_as_attending_event"), True)
def test_event_with_group_restriction(self): response = self.client.get(self.get_detail_url(self.event.id), **self.headers) self.assertEqual(response.status_code, status.HTTP_200_OK) restricted_to_group: Group = G(Group) G(GroupRestriction, event=self.event, groups=[restricted_to_group]) response = self.client.get(self.get_detail_url(self.event.id), **self.headers) self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND) attendee = attend_user_to_event(self.event, self.user) self.assertIn(attendee, self.event.attendance_event.attendees.all()) response = self.client.get(self.get_detail_url(self.event.id), **self.headers) self.assertEqual(response.status_code, status.HTTP_200_OK)
def setUp(self): self.committee = G(Group, name='arrKom') self.user = generate_user(username='******') self.token = self.generate_access_token(self.user) self.headers = { **self.generate_headers(), **self.bare_headers, } self.url = reverse('payment_relations-list') self.id_url = lambda _id: self.url + str(_id) + '/' date_next_year = timezone.now() + timezone.timedelta(days=366) self.mock_card = { 'number': '4242424242424242', 'exp_month': 12, 'exp_year': date_next_year.year, 'cvc': '123' } self.mock_3d_secure_card = { 'number': '4000000000003220', 'exp_month': 12, 'exp_year': date_next_year.year, 'cvc': '123', } stripe.api_key = settings.STRIPE_PUBLIC_KEYS['arrkom'] self.payment_method = stripe.PaymentMethod.create(type='card', card=self.mock_card) self.secure_payment_method = stripe.PaymentMethod.create( type='card', card=self.mock_3d_secure_card) self.event = generate_event(organizer=self.committee) self.event.event_end = timezone.now() + timezone.timedelta(days=3) self.event.event_start = timezone.now() + timezone.timedelta(days=2) self.event.attendance_event.registration_end = timezone.now( ) + timezone.timedelta(days=1) self.event.attendance_event.unattend_deadline = timezone.now( ) + timezone.timedelta(days=1) self.event.save() self.event.attendance_event.save() self.payment = generate_event_payment(self.event) self.attendee = attend_user_to_event(self.event, self.user)
def setUp(self): self.committee = G(Group, name="Arrkom") self.user = generate_user(username="******") self.token = self.generate_access_token(self.user) self.headers = {**self.generate_headers(), **self.bare_headers} self.url = reverse("payment_relations-list") self.id_url = lambda _id: self.url + str(_id) + "/" date_next_year = timezone.now() + timezone.timedelta(days=366) self.mock_card = { "number": "4242424242424242", "exp_month": 12, "exp_year": date_next_year.year, "cvc": "123", } self.mock_3d_secure_card = { "number": "4000000000003220", "exp_month": 12, "exp_year": date_next_year.year, "cvc": "123", } stripe.api_key = settings.STRIPE_PUBLIC_KEYS["arrkom"] self.payment_method = stripe.PaymentMethod.create(type="card", card=self.mock_card) self.secure_payment_method = stripe.PaymentMethod.create( type="card", card=self.mock_3d_secure_card) self.event = generate_event(organizer=self.committee) self.event.event_end = timezone.now() + timezone.timedelta(days=3) self.event.event_start = timezone.now() + timezone.timedelta(days=2) self.event.attendance_event.registration_end = ( timezone.now() + timezone.timedelta(days=1)) self.event.attendance_event.unattend_deadline = ( timezone.now() + timezone.timedelta(days=1)) self.event.save() self.event.attendance_event.save() self.payment = generate_event_payment(self.event) self.attendee = attend_user_to_event(self.event, self.user)
def generate_attendee(event, username, rfid): user = G(OnlineUser, username=username, rfid=rfid) return attend_user_to_event(event, user)