示例#1
0
    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)
示例#2
0
    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)
示例#3
0
    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)
示例#4
0
    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)
示例#5
0
    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)
示例#6
0
    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)
示例#7
0
    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)
示例#8
0
 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)
示例#9
0
 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)
示例#10
0
def execute_one_time_sync():
    contacts = ContactService.get_all()
    for contact in contacts:
        ContactService.add_or_update_rapid_pro_contact(contact)