Skip to content

Commit 6e30b36

Browse files
committed
Expanded the test case for api_new_meeting_registration() to test both the existing and new account case, and that additional table fields are set appropriately.
- Legacy-Id: 17958
1 parent 8547432 commit 6e30b36

1 file changed

Lines changed: 22 additions & 5 deletions

File tree

ietf/api/tests.py

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,9 @@
2121
from ietf.group.factories import RoleFactory
2222
from ietf.meeting.factories import MeetingFactory, SessionFactory
2323
from ietf.meeting.test_data import make_meeting_test_data
24-
from ietf.person.factories import PersonFactory
24+
from ietf.person.factories import PersonFactory, EmailFactory
2525
from ietf.person.models import PersonalApiKey
26+
from ietf.stats.models import MeetingRegistration
2627
from ietf.utils.mail import outbox, get_payload_text
2728
from ietf.utils.test_utils import TestCase, login_testing_unauthorized
2829

@@ -214,10 +215,10 @@ def test_api_new_meeting_registration(self):
214215
url = urlreverse('ietf.api.views.api_new_meeting_registration')
215216
r = self.client.post(url, reg)
216217
self.assertContains(r, 'Invalid apikey', status_code=400)
217-
person = PersonFactory(user__is_staff=True)
218-
# Make sure 'person' has an acceptable role
219-
RoleFactory(name_id='robot', person=person, email=person.email(), group__acronym='secretariat')
220-
key = PersonalApiKey.objects.create(person=person, endpoint=url)
218+
oidcp = PersonFactory(user__is_staff=True)
219+
# Make sure 'oidcp' has an acceptable role
220+
RoleFactory(name_id='robot', person=oidcp, email=oidcp.email(), group__acronym='secretariat')
221+
key = PersonalApiKey.objects.create(person=oidcp, endpoint=url)
221222
reg['apikey'] = key.hash()
222223
#
223224
# Test valid POST
@@ -231,6 +232,22 @@ def test_api_new_meeting_registration(self):
231232
self.assertIn(reg['email'], body)
232233
self.assertIn('account creation request', body)
233234
#
235+
# Check record
236+
obj = MeetingRegistration.objects.get(email=reg['email'], meeting__number=reg['meeting'])
237+
for key in [ 'affiliation', 'country_code', 'first_name', 'last_name', 'person', 'reg_type', 'ticket_type', ]:
238+
self.assertEqual(getattr(obj, key), reg.get(key), "Bad data for field '%s'" % key)
239+
#
240+
# Test with existing user
241+
person = PersonFactory()
242+
reg['email'] = person.email().address
243+
reg['first_name'] = person.first_name()
244+
reg['last_name'] = person.last_name()
245+
#
246+
r = self.client.post(url, reg)
247+
self.assertContains(r, "Accepted, New registration", status_code=202)
248+
#
249+
# There should be no new outgoing mail
250+
self.assertEqual(len(outbox), 1)
234251
# Test incomplete POST
235252
drop_fields = ['affiliation', 'first_name', 'reg_type']
236253
for field in drop_fields:

0 commit comments

Comments
 (0)