예제 #1
0
    def test_sql_sms_pillow(self, mock_do_publish):
        mock_do_publish.return_value = True
        consumer = get_test_kafka_consumer(topics.SMS)

        # get the seq id before the change is published
        kafka_seq = get_topic_offset(topics.SMS)

        # create an sms
        sms_and_dict = create_fake_sms(self.domain)
        self.sms = sms_and_dict.sms
        sms_json = self._to_json(sms_and_dict.sms_dict, self.sms)

        # test serialization
        self.assertEqual(self.sms.to_json(), sms_json)

        # publish the change and confirm it gets to kafka
        self.sms.publish_change()
        message = next(consumer)
        change_meta = change_meta_from_kafka_message(message.value)
        self.assertEqual(self.sms.couch_id, change_meta.document_id)
        self.assertEqual(self.domain, change_meta.domain)

        # send to elasticsearch
        sms_pillow = get_sql_sms_pillow('SqlSMSPillow')
        sms_pillow.process_changes(since=kafka_seq, forever=False)
        self.elasticsearch.indices.refresh(SMS_INDEX_INFO.index)

        # confirm change made it to elasticserach
        results = SMSES().run()
        self.assertEqual(1, results.total)
        sms_doc = results.hits[0]
        self.assertEqual(sms_doc, sms_json)
예제 #2
0
    def test_sms_null_date_modified(self):
        sms, _ = create_fake_sms(self.domain, randomize=False)
        # set date to None to simulate legacy data
        SMS.objects.filter(id=sms.id).update(date_modified=None)
        sms = SMS.objects.get(id=sms.id)
        self.assertIsNone(sms.date_modified)

        response = self._auth_get_resource(self.list_endpoint)
        self.assertEqual(response.status_code, 200, response.content)
        data = json.loads(response.content)['objects']
        self.assertEqual(1, len(data))
        result = data[0]
        self.assertEqual(_serialized_messaging_event(sms), result)
 def _create_sms_messages(self, count, randomize, domain=None):
     domain = domain or self.domain.name
     for i in range(count):
         create_fake_sms(domain, randomize=randomize)
예제 #4
0
 def handle(self, domain, num_messages, **kwargs):
     for i in range(num_messages):
         create_fake_sms(domain, randomize=True)
     print(f'successfully created {num_messages} messages in {domain}')
예제 #5
0
def _create_sms_messages(domain, count, randomize):
    results = []
    for i in range(count):
        sms, _ = create_fake_sms(domain, randomize=randomize)
        results.append(sms)
    return results