def test_optout_filtering(self): group = yield self.user_api.contact_store.new_group(u'test-group') user_account = yield self.user_helper.get_user_account() optout_store = OptOutStore.from_user_account(user_account) contact_store = ContactStore.from_user_account(user_account) # Create two random contacts yield self.user_api.contact_store.new_contact(msisdn=u'+27761234567', groups=[group.key]) yield self.user_api.contact_store.new_contact(msisdn=u'+27760000000', groups=[group.key]) conv = yield self.user_helper.create_conversation( u'dummy', delivery_class=u'sms', groups=[group]) # Opt out the first contact yield optout_store.new_opt_out(u'msisdn', u'+27761234567', {'message_id': u'the-message-id'}) contact_keys = yield contact_store.get_contacts_for_conversation(conv) all_addrs = [] for contacts in contact_store.contacts.load_all_bunches(contact_keys): for contact in (yield contacts): all_addrs.append(contact.addr_for(conv.delivery_class)) self.assertEqual(set(all_addrs), set(['+27760000000', '+27761234567'])) optedin_addrs = [] for contacts in (yield conv.get_opted_in_contact_bunches( conv.delivery_class)): for contact in (yield contacts): optedin_addrs.append(contact.addr_for(conv.delivery_class)) self.assertEqual(optedin_addrs, ['+27760000000'])
def setUp(self): super(TestOptOutResource, self).setUp() self.vumi_helper = yield self.add_helper(VumiApiHelper()) self.msg_helper = self.add_helper(GoMessageHelper()) self.user_helper = yield self.vumi_helper.make_user(u'user') user_account = yield self.user_helper.get_user_account() user_account.can_manage_optouts = True yield user_account.save() self.app_worker.user_api = self.user_helper.user_api self.contact_store = self.user_helper.user_api.contact_store self.optout_store = OptOutStore.from_user_account(user_account) yield self.create_resource({}) self.contact1 = yield self.new_contact( name=u'A', surname=u'Person', msisdn=u'+27123456789') self.contact2 = yield self.new_contact( name=u'B', surname=u'Person', msisdn=u'+27000000000')
def test_optout_filtering(self): group = yield self.user_api.contact_store.new_group(u'test-group') user_account = yield self.user_helper.get_user_account() optout_store = OptOutStore.from_user_account(user_account) contact_store = ContactStore.from_user_account(user_account) # Create two random contacts yield self.user_api.contact_store.new_contact( msisdn=u'+27761234567', groups=[group.key]) yield self.user_api.contact_store.new_contact( msisdn=u'+27760000000', groups=[group.key]) conv = yield self.user_helper.create_conversation( u'dummy', delivery_class=u'sms', groups=[group]) # Opt out the first contact yield optout_store.new_opt_out(u'msisdn', u'+27761234567', { 'message_id': u'the-message-id' }) contact_keys = yield contact_store.get_contacts_for_conversation(conv) all_addrs = [] for contacts in contact_store.contacts.load_all_bunches(contact_keys): for contact in (yield contacts): all_addrs.append(contact.addr_for(conv.delivery_class)) self.assertEqual(set(all_addrs), set(['+27760000000', '+27761234567'])) optedin_addrs = [] for contacts in (yield conv.get_opted_in_contact_bunches( conv.delivery_class)): for contact in (yield contacts): optedin_addrs.append(contact.addr_for(conv.delivery_class)) self.assertEqual(optedin_addrs, ['+27760000000'])
def setUp(self): self.vumi_helper = yield self.add_helper( VumiApiHelper(is_sync=self.is_sync)) self.user_helper = yield self.vumi_helper.make_user(u'user') user_account = yield self.user_helper.get_user_account() self.optout_store = OptOutStore.from_user_account(user_account) self.conv_store = ConversationStore.from_user_account(user_account) self.contact_store = ContactStore.from_user_account(user_account)
def setUp(self): self.vumi_helper = yield self.add_helper( VumiApiHelper(is_sync=self.is_sync)) self.user_helper = yield self.vumi_helper.make_user(u'user') user_account = yield self.user_helper.get_user_account() self.optout_store = OptOutStore.from_user_account(user_account) self.conv_store = ConversationStore.from_user_account(user_account) self.contact_store = ContactStore.from_user_account(user_account)
def contact_has_opted_out(self, contact): # FIXME: opt-outs are currently had coded to only work for msisdns if not contact.msisdn: return user_account = yield self.get_user_account() opt_out_store = OptOutStore.from_user_account(user_account) opt_out = yield opt_out_store.get_opt_out('msisdn', contact.msisdn) returnValue(opt_out)
def test_check_for_opted_out_contact(self): contact1 = yield self.store.new_contact( name=u'J Random', surname=u'Person', msisdn=u'27831234567') contact2 = yield self.store.new_contact( name=u'J Random', surname=u'Person', msisdn=u'27830000000') # Opt out the first contact user_account = yield self.user_helper.get_user_account() optout_store = OptOutStore.from_user_account(user_account) yield optout_store.new_opt_out(u'msisdn', contact1.msisdn, { 'message_id': u'the-message-id' }) self.assertTrue((yield self.store.contact_has_opted_out(contact1))) self.assertFalse((yield self.store.contact_has_opted_out(contact2)))
def test_get_opted_in_contact_bunches(self): contact_store = self.user_helper.user_api.contact_store user_account = yield self.user_helper.get_user_account() opt_out_store = OptOutStore.from_user_account(user_account) @inlineCallbacks def get_contacts(): bunches = yield self.conv.get_opted_in_contact_bunches( self.conv.delivery_class) contacts = [] for bunch in bunches: contacts.extend((yield bunch)) returnValue([c.msisdn for c in contacts]) self.assertEqual( [], (yield get_contacts())) group = yield contact_store.new_group(u'a group') self.conv.add_group(group) yield self.conv.save() contact1 = yield contact_store.new_contact(msisdn=u'+27000000001') contact1.add_to_group(group) yield contact1.save() contact2 = yield contact_store.new_contact(msisdn=u'+27000000002') contact2.add_to_group(group) yield contact2.save() yield group.save() self.assertEqual( set(['+27000000001', '+27000000002']), set((yield get_contacts()))) yield opt_out_store.new_opt_out(u'msisdn', contact2.msisdn, { 'message_id': u'some-message-id', }) self.assertEqual( ['+27000000001'], (yield get_contacts()))
def test_get_opted_in_contact_bunches(self): contact_store = self.user_helper.user_api.contact_store user_account = yield self.user_helper.get_user_account() opt_out_store = OptOutStore.from_user_account(user_account) @inlineCallbacks def get_contacts(): bunches = yield self.conv.get_opted_in_contact_bunches( self.conv.delivery_class) contacts = [] for bunch in bunches: contacts.extend((yield bunch)) returnValue([c.msisdn for c in contacts]) self.assertEqual([], (yield get_contacts())) group = yield contact_store.new_group(u'a group') self.conv.add_group(group) yield self.conv.save() contact1 = yield contact_store.new_contact(msisdn=u'+27000000001') contact1.add_to_group(group) yield contact1.save() contact2 = yield contact_store.new_contact(msisdn=u'+27000000002') contact2.add_to_group(group) yield contact2.save() yield group.save() self.assertEqual(set(['+27000000001', '+27000000002']), set((yield get_contacts()))) yield opt_out_store.new_opt_out(u'msisdn', contact2.msisdn, { 'message_id': u'some-message-id', }) self.assertEqual(['+27000000001'], (yield get_contacts()))
def setUp(self): super(TestOptOutResource, self).setUp() self.vumi_helper = yield self.add_helper(VumiApiHelper()) self.msg_helper = self.add_helper(GoMessageHelper()) self.user_helper = yield self.vumi_helper.make_user(u'user') user_account = yield self.user_helper.get_user_account() user_account.can_manage_optouts = True yield user_account.save() self.app_worker.user_api = self.user_helper.user_api self.contact_store = self.user_helper.user_api.contact_store self.optout_store = OptOutStore.from_user_account(user_account) yield self.create_resource({}) self.contact1 = yield self.new_contact(name=u'A', surname=u'Person', msisdn=u'+27123456789') self.contact2 = yield self.new_contact(name=u'B', surname=u'Person', msisdn=u'+27000000000')