2121from ietf .group .factories import RoleFactory
2222from ietf .meeting .factories import MeetingFactory , SessionFactory
2323from ietf .meeting .test_data import make_meeting_test_data
24- from ietf .person .factories import PersonFactory
24+ from ietf .person .factories import PersonFactory , EmailFactory
2525from ietf .person .models import PersonalApiKey
26+ from ietf .stats .models import MeetingRegistration
2627from ietf .utils .mail import outbox , get_payload_text
2728from 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