diff --git a/go/vumitools/middleware.py b/go/vumitools/middleware.py index 309350955..48499aa12 100644 --- a/go/vumitools/middleware.py +++ b/go/vumitools/middleware.py @@ -39,45 +39,6 @@ def handle_outbound(self, message, endpoint): return message -class OptOutMiddleware(BaseMiddleware): - - @inlineCallbacks - def setup_middleware(self): - self.vumi_api = yield VumiApi.from_config_async(self.config) - - self.case_sensitive = self.config.get('case_sensitive', False) - keywords = self.config.get('optout_keywords', []) - self.optout_keywords = set([self.casing(word) for word in keywords]) - - def casing(self, word): - if not self.case_sensitive: - return word.lower() - return word - - @inlineCallbacks - def handle_inbound(self, message, endpoint): - optout_disabled = False - msg_mdh = MessageMetadataHelper(self.vumi_api, message) - if msg_mdh.tag is not None: - tagpool_metadata = yield msg_mdh.get_tagpool_metadata() - optout_disabled = tagpool_metadata.get( - 'disable_global_opt_out', False) - keyword = (message['content'] or '').strip() - helper_metadata = message['helper_metadata'] - optout_metadata = helper_metadata.setdefault( - 'optout', {'optout': False}) - - if (not optout_disabled - and self.casing(keyword) in self.optout_keywords): - optout_metadata['optout'] = True - optout_metadata['optout_keyword'] = self.casing(keyword) - returnValue(message) - - @staticmethod - def is_optout_message(message): - return message['helper_metadata'].get('optout', {}).get('optout') - - class TimeMetric(Metric): """ A time-based metric that fires both sums and averages. diff --git a/go/vumitools/tests/test_middleware.py b/go/vumitools/tests/test_middleware.py index 0db4f717e..96cfefa09 100644 --- a/go/vumitools/tests/test_middleware.py +++ b/go/vumitools/tests/test_middleware.py @@ -13,7 +13,7 @@ from go.vumitools.app_worker import GoWorkerMixin, GoWorkerConfigMixin from go.vumitools.middleware import ( - NormalizeMsisdnMiddleware, OptOutMiddleware, MetricsMiddleware, + NormalizeMsisdnMiddleware, MetricsMiddleware, ConversationStoringMiddleware, RouterStoringMiddleware) from go.vumitools.tests.helpers import VumiApiHelper, GoMessageHelper @@ -94,89 +94,6 @@ def test_outbound_normalization(self): self.assertEqual(msg['to_addr'], '+256123456789') -class TestOptOutMiddleware(VumiTestCase): - - @inlineCallbacks - def setUp(self): - self.mw_helper = self.add_helper(MiddlewareHelper(OptOutMiddleware)) - yield self.mw_helper.setup_vumi_api() - self.config = { - 'optout_keywords': ['STOP', 'HALT', 'QUIT'] - } - - @inlineCallbacks - def get_middleware(self, extra_config={}, extra_tagpool_metadata={}): - config = self.config.copy() - config.update(extra_config) - mw = yield self.mw_helper.create_middleware(config) - tagpool_metadata = { - "transport_type": "other", - "msg_options": {"transport_name": "other_transport"}, - } - tagpool_metadata.update(extra_tagpool_metadata) - yield self.mw_helper.setup_tagpool( - "pool", ["tag1"], metadata=tagpool_metadata) - returnValue(mw) - - @inlineCallbacks - def send_keyword(self, mw, word, expected_response): - msg = self.mw_helper.make_inbound( - word, to_addr='to@domain.org', from_addr='from@domain.org') - TaggingMiddleware.add_tag_to_msg(msg, ("pool", "tag1")) - yield mw.handle_inbound(msg, 'dummy_endpoint') - expected_response = dict(expected_response, - tag={'tag': ['pool', 'tag1']}) - # MessageMetadataHelper can add 'go' metadata and we want to ignore it. - if 'go' in msg['helper_metadata']: - expected_response['go'] = msg['helper_metadata']['go'] - self.assertEqual(msg['helper_metadata'], expected_response) - - @inlineCallbacks - def test_optout_flag(self): - mw = yield self.get_middleware() - for keyword in self.config['optout_keywords']: - yield self.send_keyword(mw, keyword, { - 'optout': { - 'optout': True, - 'optout_keyword': keyword.lower(), - } - }) - - @inlineCallbacks - def test_non_optout_keywords(self): - mw = yield self.get_middleware() - for keyword in ['THESE', 'DO', 'NOT', 'OPT', 'OUT']: - yield self.send_keyword(mw, keyword, { - 'optout': {'optout': False}, - }) - - @inlineCallbacks - def test_disabled_by_tagpool(self): - mw = yield self.get_middleware(extra_tagpool_metadata={ - "disable_global_opt_out": True, - }) - yield self.send_keyword(mw, 'STOP', { - 'optout': {'optout': False}, - }) - - @inlineCallbacks - def test_case_sensitivity(self): - mw = yield self.get_middleware({'case_sensitive': True}) - - yield self.send_keyword(mw, 'STOP', { - 'optout': { - 'optout': True, - 'optout_keyword': 'STOP', - } - }) - - yield self.send_keyword(mw, 'stop', { - 'optout': { - 'optout': False, - } - }) - - class TestMetricsMiddleware(VumiTestCase): def setUp(self):