def setUp(self): self.source_contact = self.create_contact(data={ 'first_name': 'John', 'last_name': 'Smith' }) self.dest_contact = self.create_contact(data={ 'first_name': 'John', 'last_name': 'Smith' }) self.backend = self.create_backend(data={'name': 'mockbackend'}) self.unreg_conn = self.create_connection({'backend': self.backend}) self.source_conn = self.create_connection({ 'contact': self.source_contact, 'backend': self.backend, 'identity': '5678' }) self.dest_conn = self.create_connection({ 'contact': self.dest_contact, 'backend': self.backend, 'identity': '1234' }) self.router = MockRouter() self.app = BroadcastApp(router=self.router) self.rule = self.create_forwarding_rule(data={'keyword': 'abc'}) self.rule.source.contacts.add(self.source_contact)
def setUp(self): self.source_contact = self.create_contact() self.dest_contact = self.create_contact() self.backend = self.create_backend(name='mockbackend') self.unreg_conn = self.create_connection(backend=self.backend) self.source_conn = self.create_connection(contact=self.source_contact, backend=self.backend, identity='5678') self.dest_conn = self.create_connection(contact=self.dest_contact, backend=self.backend, identity='1234') self.router = MockRouter() self.app = BroadcastApp(router=self.router) self.rule = self.create_forwarding_rule(keyword='abc') self.rule.source.contacts.add(self.source_contact)
class BroadcastForwardingTest(BroadcastCreateDataTest): def setUp(self): self.source_contact = self.create_contact() self.dest_contact = self.create_contact() self.backend = self.create_backend(name='mockbackend') self.unreg_conn = self.create_connection(backend=self.backend) self.source_conn = self.create_connection(contact=self.source_contact, backend=self.backend, identity='5678') self.dest_conn = self.create_connection(contact=self.dest_contact, backend=self.backend, identity='1234') self.router = MockRouter() self.app = BroadcastApp(router=self.router) self.rule = self.create_forwarding_rule(keyword='abc') self.rule.source.contacts.add(self.source_contact) def _send(self, conn, text): msg = IncomingMessage(conn, text) self.app.handle(msg) return msg def test_non_matching_rule(self): """ tests that no response comes for non-matching keywords """ msg = self._send(self.source_conn, 'non-matching-keyword') self.assertEqual(len(msg.responses), 0) def test_unregistered(self): """ tests the response from an unregistered user """ msg = self._send(self.unreg_conn, 'abc') self.assertEqual(len(msg.responses), 1) self.assertEqual(msg.responses[0].text, self.app.not_registered) def test_wrong_group(self): """ tests the response from a user in non-source group """ msg = self._send(self.dest_conn, 'abc') self.assertEqual(len(msg.responses), 1) self.assertEqual(msg.responses[0].text, self.app.not_registered) def test_creates_broadcast(self): """ tests the response from a user in non-source group """ msg = self._send(self.source_conn, 'abc my-message') now = datetime.datetime.now() self.assertEqual(len(msg.responses), 1) self.assertEqual(Broadcast.objects.count(), 1) bc = Broadcast.objects.get() self.assertDateEqual(bc.date_created, now) self.assertDateEqual(bc.date, now) self.assertEqual(bc.schedule_frequency, 'one-time') expected_msg = 'From {name} ({number}): {msg} my-message'\ .format(name=self.source_contact.name, number=self.source_conn.identity, msg=self.rule.message) self.assertEqual(bc.body, expected_msg) self.assertEqual(list(bc.groups.all()), [self.rule.dest]) self.assertEqual(msg.responses[0].text, self.app.thank_you) def test_unicode_broadcast_body(self): """ Make sure unicode strings can be broadcasted """ text = u'abc ' + self.random_unicode_string(2) msg = self._send(self.source_conn, text) self.assertEqual(len(msg.responses), 1) self.assertEqual(Broadcast.objects.count(), 1) def test_rule_tracking(self): """Test the broadcast is correctly associated with the rule via FK.""" msg = self._send(self.source_conn, 'abc my-message') self.assertEqual(Broadcast.objects.count(), 1) bc = Broadcast.objects.get() self.assertEqual(bc.forward, self.rule)
class BroadcastForwardingTest(BroadcastCreateDataTest): def setUp(self): self.source_contact = self.create_contact(data={ 'first_name': 'John', 'last_name': 'Smith' }) self.dest_contact = self.create_contact(data={ 'first_name': 'John', 'last_name': 'Smith' }) self.backend = self.create_backend(data={'name': 'mockbackend'}) self.unreg_conn = self.create_connection({'backend': self.backend}) self.source_conn = self.create_connection({ 'contact': self.source_contact, 'backend': self.backend, 'identity': '5678' }) self.dest_conn = self.create_connection({ 'contact': self.dest_contact, 'backend': self.backend, 'identity': '1234' }) self.router = MockRouter() self.app = BroadcastApp(router=self.router) self.rule = self.create_forwarding_rule(data={'keyword': 'abc'}) self.rule.source.contacts.add(self.source_contact) def _send(self, conn, text): msg = IncomingMessage(conn, text) self.app.handle(msg) return msg def test_non_matching_rule(self): """ tests that no response comes for non-matching keywords """ msg = self._send(self.source_conn, 'non-matching-keyword') self.assertEqual(len(msg.responses), 0) def test_unregistered(self): """ tests the response from an unregistered user """ msg = self._send(self.unreg_conn, 'abc') self.assertEqual(len(msg.responses), 1) self.assertEqual(msg.responses[0].text, self.app.not_registered) def test_wrong_group(self): """ tests the response from a user in non-source group """ msg = self._send(self.dest_conn, 'abc') self.assertEqual(len(msg.responses), 1) self.assertEqual(msg.responses[0].text, self.app.not_registered) def test_creates_broadcast(self): """ tests the response from a user in non-source group """ msg = self._send(self.source_conn, 'abc my-message') now = datetime.datetime.now() self.assertEqual(len(msg.responses), 1) self.assertEqual(Broadcast.objects.count(), 1) bc = Broadcast.objects.get() self.assertDateEqual(bc.date_created, now) self.assertDateEqual(bc.date, now) self.assertEqual(bc.schedule_frequency, 'one-time') expected_msg = 'From {name} ({number}): {msg} my-message'\ .format(name=self.source_contact.name, number=self.source_conn.identity, msg=self.rule.message) self.assertEqual(bc.body, expected_msg) self.assertEqual(list(bc.groups.all()), [self.rule.dest]) self.assertEqual(msg.responses[0].text, self.app.thank_you) def test_unicode_broadcast_body(self): """ Make sure unicode strings can be broadcasted """ text = u'abc ' + self.random_unicode_string(2) msg = self._send(self.source_conn, text) self.assertEqual(len(msg.responses), 1) self.assertEqual(Broadcast.objects.count(), 1) def test_rule_tracking(self): """Test the broadcast is correctly associated with the rule via FK.""" msg = self._send(self.source_conn, 'abc my-message') self.assertEqual(Broadcast.objects.count(), 1) bc = Broadcast.objects.get() self.assertEqual(bc.forward, self.rule)