def test_should_add_rapid_pro_contact(self): requests.get = MagicMock() requests.post = MagicMock(return_value=MagicMock(status_code=200, json=MagicMock( return_value=CONTACT))) ContactService.add_or_update_rapid_pro_contact(CONTACT) self.assertTrue(requests.post.called) self.assertFalse(requests.get.called)
def test_should_add_rapid_pro_contact_called(self, rapid_pro_contact): rapid_pro_contact.return_value = self.generate_build_rapid_pro_contact(CONTACT) requests.get = MagicMock(return_value=MagicMock(status_code=200, json=MagicMock( return_value={'results': []} ))) requests.post = MagicMock(return_value=MagicMock(status_code=200, json=MagicMock( return_value=CONTACT))) ContactService.add_or_update_rapid_pro_contact(CONTACT) self.assertTrue(requests.post.called)
def test_should_add_rapid_pro_contact(self, rapid_pro_contact): first_name = "Jack" last_name = "Bob" phone = '+8618192235667' outcomes = ["YI105 - PCR 1 KEEP CHILDREN AND MOTHERS"] districts = ["Kampala"] ips = ["KAMPALA DHO, WAKISO DHO"] types = ["END_USER", "IMPLEMENTING_PARTNER"] contact = self.generate_eums_contact(districts, first_name, ips, last_name, outcomes, phone, types) rapid_pro_contact.return_value = self.generate_build_rapid_pro_contact(contact) requests.get = MagicMock(return_value=MagicMock(status_code=200, json=MagicMock( return_value={'results': []} ))) requests.post = MagicMock(return_value=MagicMock(status_code=200, json=MagicMock( return_value=self.generate_add_or_update_rapid_pro_contact_response(contact)))) response = ContactService.add_or_update_rapid_pro_contact(contact) self.assertEqual(response.status_code, HTTP_200_OK) self.assertEqual(len(response.json().get('groups')), 1) self.assertEqual(response.json().get('groups')[0], 'EUMS') fields = response.json().get("fields") self.assertEqual(fields.get('firstname'), first_name) self.assertEqual(fields.get('lastname'), last_name) self.assertEqual(fields.get('outcomes'), ','.join(outcomes)) self.assertEqual(fields.get('districts'), ','.join(districts)) self.assertEqual(fields.get('ips'), ','.join(ips)) self.assertEqual(fields.get('types'), ','.join(["End-user", "IP"])) requests.post.assert_called_once_with(settings.RAPIDPRO_URLS.get('CONTACTS'), data=json.dumps(ContactService.build_rapid_pro_contact(contact)), headers=HEADER, verify=settings.RAPIDPRO_SSL_VERIFY)
def test_should_update_rapid_pro_contact_when_phone_not_modified(self, rapid_pro_contact): rapid_pro_contact.return_value = self.generate_build_rapid_pro_contact(CONTACT) requests.get = MagicMock(return_value=MagicMock(status_code=200, json=MagicMock( return_value=self.generate_add_or_update_rapid_pro_contact_response(CONTACT)))) new_contact = copy.deepcopy(CONTACT) new_contact.update({ 'prePhone': CONTACT['phone'], 'phone': CONTACT['phone'] }) requests.post = MagicMock(return_value=MagicMock(status_code=200, json=MagicMock( return_value=new_contact))) ContactService.add_or_update_rapid_pro_contact(new_contact) self.assertTrue(requests.post.called)
def test_should_add_rapid_pro_contact(self): first_name = "Jack" last_name = "Bob" phone = '+8618192235667' outcomes = ["YI105 - PCR 1 KEEP CHILDREN AND MOTHERS"] districts = ["Kampala"] ips = ["KAMPALA DHO, WAKISO DHO"] types = ["END_USER", "IMPLEMENTING_PARTNER"] contact = self.generate_eums_contact(districts, first_name, ips, last_name, outcomes, phone, types) requests.post = MagicMock(return_value=MagicMock(status_code=200, json=MagicMock( return_value=self.generate_add_or_update_rapid_pro_contact_response(contact)))) response = ContactService.add_or_update_rapid_pro_contact(contact) self.assertEqual(response.status_code, HTTP_200_OK) self.assertEqual(len(response.json().get('groups')), 1) self.assertEqual(response.json().get('groups')[0], 'EUMS') fields = response.json().get("fields") self.assertEqual(fields.get('firstname'), first_name) self.assertEqual(fields.get('lastname'), last_name) self.assertEqual(fields.get('outcomes'), ','.join(outcomes)) self.assertEqual(fields.get('districts'), ','.join(districts)) self.assertEqual(fields.get('ips'), ','.join(ips)) self.assertEqual(fields.get('types'), ','.join(["End-user", "IP"])) requests.post.assert_called_once_with(settings.RAPIDPRO_URLS.get('CONTACTS'), data=json.dumps(ContactService.build_rapid_pro_contact(contact)), headers=HEADER, verify=settings.RAPIDPRO_SSL_VERIFY)
def test_should_update_rapid_pro_contact_when_phone_not_modified(self): requests.get = MagicMock(return_value=MagicMock(status_code=200, json=MagicMock( return_value=self.generate_add_or_update_rapid_pro_contact_response(CONTACT)))) new_contact = copy.deepcopy(CONTACT) new_contact.update({ 'prePhone': CONTACT['phone'], 'phone': CONTACT['phone'] }) requests.post = MagicMock(return_value=MagicMock(status_code=200, json=MagicMock( return_value=new_contact))) ContactService.add_or_update_rapid_pro_contact(new_contact) self.assertTrue(requests.post.called) self.assertFalse(requests.get.called)
def test_should_update_rapid_pro_contact_when_phone_modified(self): requests.get = MagicMock(return_value=MagicMock(status_code=200, json=MagicMock( return_value=self.generate_get_rapid_pro_contact_response(CONTACT)))) new_contact = copy.deepcopy(CONTACT) new_phone = '+8618694029575' new_contact.update({ 'prePhone': CONTACT['phone'], 'phone': new_phone }) requests.post = MagicMock(return_value=MagicMock(status_code=200, json=MagicMock( return_value=self.generate_add_or_update_rapid_pro_contact_response(CONTACT)))) logger.info(new_contact) ContactService.add_or_update_rapid_pro_contact(new_contact) self.assertTrue(requests.post.called)
def test_should_not_add_contact_when_rapid_pro_off(self): requests.post = MagicMock() ContactService.add_or_update_rapid_pro_contact(CONTACT) self.assertFalse(requests.post.called)
def test_should_not_add_contact_when_rapid_pro_off(self): requests.post = MagicMock() ContactService.add_or_update_rapid_pro_contact(CONTACT) self.assertFalse(requests.post.called)
def execute_one_time_sync(): contacts = ContactService.get_all() for contact in contacts: ContactService.add_or_update_rapid_pro_contact(contact)