|
37 | 37 | from ietf.nomcom.factories import NomComFactory, nomcom_kwargs_for_year |
38 | 38 | from ietf.person.factories import PersonFactory, random_faker, EmailFactory, PersonalApiKeyFactory |
39 | 39 | from ietf.person.models import Email, User |
40 | | -from ietf.stats.models import MeetingRegistration |
41 | 40 | from ietf.utils.mail import empty_outbox, outbox, get_payload_text |
42 | 41 | from ietf.utils.models import DumpInfo |
43 | 42 | from ietf.utils.test_utils import TestCase, login_testing_unauthorized, reload_db_objects |
@@ -705,131 +704,6 @@ def test_api_v2_person_export_view(self): |
705 | 704 | self.assertEqual(data['ascii'], robot.ascii) |
706 | 705 | self.assertEqual(data['user']['email'], robot.user.email) |
707 | 706 |
|
708 | | - def test_api_new_meeting_registration(self): |
709 | | - meeting = MeetingFactory(type_id='ietf') |
710 | | - reg = { |
711 | | - 'apikey': 'invalid', |
712 | | - 'affiliation': "Alguma Corporação", |
713 | | - 'country_code': 'PT', |
714 | | - 'email': 'foo@example.pt', |
715 | | - 'first_name': 'Foo', |
716 | | - 'last_name': 'Bar', |
717 | | - 'meeting': meeting.number, |
718 | | - 'reg_type': 'hackathon', |
719 | | - 'ticket_type': '', |
720 | | - 'checkedin': 'False', |
721 | | - 'is_nomcom_volunteer': 'False', |
722 | | - } |
723 | | - url = urlreverse('ietf.api.views.api_new_meeting_registration') |
724 | | - r = self.client.post(url, reg) |
725 | | - self.assertContains(r, 'Invalid apikey', status_code=403) |
726 | | - oidcp = PersonFactory(user__is_staff=True) |
727 | | - # Make sure 'oidcp' has an acceptable role |
728 | | - RoleFactory(name_id='robot', person=oidcp, email=oidcp.email(), group__acronym='secretariat') |
729 | | - key = PersonalApiKeyFactory(person=oidcp, endpoint=url) |
730 | | - reg['apikey'] = key.hash() |
731 | | - # |
732 | | - # Test valid POST |
733 | | - # FIXME: sometimes, there seems to be something in the outbox? |
734 | | - old_len = len(outbox) |
735 | | - r = self.client.post(url, reg) |
736 | | - self.assertContains(r, "Accepted, New registration, Email sent", status_code=202) |
737 | | - # |
738 | | - # Check outgoing mail |
739 | | - self.assertEqual(len(outbox), old_len + 1) |
740 | | - body = get_payload_text(outbox[-1]) |
741 | | - self.assertIn(reg['email'], outbox[-1]['To'] ) |
742 | | - self.assertIn(reg['email'], body) |
743 | | - self.assertIn('account creation request', body) |
744 | | - # |
745 | | - # Check record |
746 | | - obj = MeetingRegistration.objects.get(email=reg['email'], meeting__number=reg['meeting']) |
747 | | - for key in ['affiliation', 'country_code', 'first_name', 'last_name', 'person', 'reg_type', 'ticket_type', 'checkedin']: |
748 | | - self.assertEqual(getattr(obj, key), False if key=='checkedin' else reg.get(key) , "Bad data for field '%s'" % key) |
749 | | - # |
750 | | - # Test with existing user |
751 | | - person = PersonFactory() |
752 | | - reg['email'] = person.email().address |
753 | | - reg['first_name'] = person.first_name() |
754 | | - reg['last_name'] = person.last_name() |
755 | | - # |
756 | | - r = self.client.post(url, reg) |
757 | | - self.assertContains(r, "Accepted, New registration", status_code=202) |
758 | | - # |
759 | | - # There should be no new outgoing mail |
760 | | - self.assertEqual(len(outbox), old_len + 1) |
761 | | - # |
762 | | - # Test multiple reg types |
763 | | - reg['reg_type'] = 'remote' |
764 | | - reg['ticket_type'] = 'full_week_pass' |
765 | | - r = self.client.post(url, reg) |
766 | | - self.assertContains(r, "Accepted, New registration", status_code=202) |
767 | | - objs = MeetingRegistration.objects.filter(email=reg['email'], meeting__number=reg['meeting']) |
768 | | - self.assertEqual(len(objs), 2) |
769 | | - self.assertEqual(objs.filter(reg_type='hackathon').count(), 1) |
770 | | - self.assertEqual(objs.filter(reg_type='remote', ticket_type='full_week_pass').count(), 1) |
771 | | - self.assertEqual(len(outbox), old_len + 1) |
772 | | - # |
773 | | - # Test incomplete POST |
774 | | - drop_fields = ['affiliation', 'first_name', 'reg_type'] |
775 | | - for field in drop_fields: |
776 | | - del reg[field] |
777 | | - r = self.client.post(url, reg) |
778 | | - self.assertContains(r, 'Missing parameters:', status_code=400) |
779 | | - err, fields = r.content.decode().split(':', 1) |
780 | | - missing_fields = [f.strip() for f in fields.split(',')] |
781 | | - self.assertEqual(set(missing_fields), set(drop_fields)) |
782 | | - |
783 | | - def test_api_new_meeting_registration_nomcom_volunteer(self): |
784 | | - '''Test that Volunteer is created if is_nomcom_volunteer=True |
785 | | - is submitted to API |
786 | | - ''' |
787 | | - meeting = MeetingFactory(type_id='ietf') |
788 | | - reg = { |
789 | | - 'apikey': 'invalid', |
790 | | - 'affiliation': "Alguma Corporação", |
791 | | - 'country_code': 'PT', |
792 | | - 'meeting': meeting.number, |
793 | | - 'reg_type': 'onsite', |
794 | | - 'ticket_type': '', |
795 | | - 'checkedin': 'False', |
796 | | - 'is_nomcom_volunteer': 'False', |
797 | | - } |
798 | | - person = PersonFactory() |
799 | | - reg['email'] = person.email().address |
800 | | - reg['first_name'] = person.first_name() |
801 | | - reg['last_name'] = person.last_name() |
802 | | - now = datetime.datetime.now() |
803 | | - if now.month > 10: |
804 | | - year = now.year + 1 |
805 | | - else: |
806 | | - year = now.year |
807 | | - # create appropriate group and nomcom objects |
808 | | - nomcom = NomComFactory.create(is_accepting_volunteers=True, **nomcom_kwargs_for_year(year)) |
809 | | - url = urlreverse('ietf.api.views.api_new_meeting_registration') |
810 | | - oidcp = PersonFactory(user__is_staff=True) |
811 | | - # Make sure 'oidcp' has an acceptable role |
812 | | - RoleFactory(name_id='robot', person=oidcp, email=oidcp.email(), group__acronym='secretariat') |
813 | | - key = PersonalApiKeyFactory(person=oidcp, endpoint=url) |
814 | | - reg['apikey'] = key.hash() |
815 | | - |
816 | | - # first test is_nomcom_volunteer False |
817 | | - r = self.client.post(url, reg) |
818 | | - self.assertContains(r, "Accepted, New registration", status_code=202) |
819 | | - # assert no Volunteers exists |
820 | | - self.assertEqual(Volunteer.objects.count(), 0) |
821 | | - |
822 | | - # test is_nomcom_volunteer True |
823 | | - reg['is_nomcom_volunteer'] = 'True' |
824 | | - r = self.client.post(url, reg) |
825 | | - self.assertContains(r, "Accepted, Updated registration", status_code=202) |
826 | | - # assert Volunteer exists |
827 | | - self.assertEqual(Volunteer.objects.count(), 1) |
828 | | - volunteer = Volunteer.objects.last() |
829 | | - self.assertEqual(volunteer.person, person) |
830 | | - self.assertEqual(volunteer.nomcom, nomcom) |
831 | | - self.assertEqual(volunteer.origin, 'registration') |
832 | | - |
833 | 707 | @override_settings(APP_API_TOKENS={"ietf.api.views.api_new_meeting_registration_v2": ["valid-token"]}) |
834 | 708 | def test_api_new_meeting_registration_v2(self): |
835 | 709 | meeting = MeetingFactory(type_id='ietf') |
|
0 commit comments