def test_exception_but_spammy(self): # Fails because the token doesn't exist in ActivityToken.objects assert not add_email_to_activity_log_wrapper(self.email_text, 10.0) assert not add_email_to_activity_log_wrapper(self.email_text, 10) assert not add_email_to_activity_log_wrapper(self.email_text, '10') assert not add_email_to_activity_log_wrapper(self.email_text, 11.0) # But no bounce. assert len(mail.outbox) == 0 # but should be bounced if below the threshaold assert not add_email_to_activity_log_wrapper(self.email_text, 9.9)
def process_email(message, spam_rating, **kwargs): """Parse emails and save activity log entry.""" # Some emails (gmail, at least) come with Message-ID instead of MessageId. msg_id = message.get('MessageId') if not msg_id: custom_headers = message.get('CustomHeaders', []) for header in custom_headers: if header.get('Name', '').lower() == 'message-id': msg_id = header.get('Value') if not msg_id: log.warning('No MessageId in message, aborting.', extra={'message_obj': message}) return _, created = ActivityLogEmails.objects.get_or_create(messageid=msg_id) if not created: log.warning( 'Already processed email [%s], skipping', msg_id, extra={'message_obj': message}, ) return res = add_email_to_activity_log_wrapper(message, spam_rating) if not res: log.error('Failed to process email [%s].', msg_id, extra={'message_obj': message})
def _test_exception_in_parser_but_can_send_email(self, message): assert not add_email_to_activity_log_wrapper(message) assert len(mail.outbox) == 1 assert mail.outbox[0].body == ( self.bounce_reply % 'Invalid or malformed json message object.') assert mail.outbox[0].subject == 'Re: your email to us' assert mail.outbox[0].to == ['*****@*****.**']
def _test_exception_in_parser_but_can_send_email(self, message): assert not add_email_to_activity_log_wrapper(message, 0) assert len(mail.outbox) == 1 assert mail.outbox[0].body == ( self.bounce_reply % 'Invalid or malformed json message object.') assert mail.outbox[0].subject == 'Re: your email to us' assert mail.outbox[0].to == ['*****@*****.**']
def test_exception_in_add_email_to_activity_log(self): # Fails because the token doesn't exist in ActivityToken.objects assert not add_email_to_activity_log_wrapper(self.email_text) assert len(mail.outbox) == 1 out = mail.outbox[0] assert out.body == ( self.bounce_reply % 'UUID found in email address TO: header but is not a valid token ' '(5a0b8a83d501412589cc5d562334b46b).') assert out.subject == 'Re: This is the subject of a test message.' assert out.to == ['*****@*****.**']
def test_exception_because_invalid_token(self): # Fails because the token doesn't exist in ActivityToken.objects assert not add_email_to_activity_log_wrapper(self.email_text, 0) assert len(mail.outbox) == 1 out = mail.outbox[0] assert out.body == ( self.bounce_reply % 'UUID found in email address TO: header but is not a valid token ' '(5a0b8a83d501412589cc5d562334b46b).') assert out.subject == 'Re: This is the subject of a test message.' assert out.to == ['*****@*****.**']
def test_exception_to_notifications_alias(self): email_text = copy.deepcopy(self.email_text) email_text['To'] = [{ 'EmailAddress': 'notifications@%s' % settings.INBOUND_EMAIL_DOMAIN, 'FriendlyName': 'not a valid activity mail reply'}] assert not add_email_to_activity_log_wrapper(email_text) assert len(mail.outbox) == 1 out = mail.outbox[0] assert ('This email address is not meant to receive emails ' 'directly.') in out.body assert out.subject == 'Re: This is the subject of a test message.' assert out.to == ['*****@*****.**']
def test_exception_to_notifications_alias(self): email_text = copy.deepcopy(self.email_text) email_text['To'] = [{ 'EmailAddress': 'notifications@%s' % settings.INBOUND_EMAIL_DOMAIN, 'FriendlyName': 'not a valid activity mail reply'}] assert not add_email_to_activity_log_wrapper(email_text) assert len(mail.outbox) == 1 out = mail.outbox[0] assert ('This email address is not meant to receive emails ' 'directly.') in out.body assert out.subject == 'Re: This is the subject of a test message.' assert out.to == ['*****@*****.**']
def test_exception_because_invalid_email(self): # Fails because the token doesn't exist in ActivityToken.objects email_text = copy.deepcopy(self.email_text) email_text['To'] = [{ 'EmailAddress': '*****@*****.**', 'FriendlyName': 'not a valid activity mail reply'}] assert not add_email_to_activity_log_wrapper(email_text) assert len(mail.outbox) == 1 out = mail.outbox[0] assert out.body == ( self.bounce_reply % 'TO: address does not contain activity email uuid (' '[email protected]).') assert out.subject == 'Re: This is the subject of a test message.' assert out.to == ['*****@*****.**']
def test_exception_because_invalid_email(self): # Fails because the token doesn't exist in ActivityToken.objects email_text = copy.deepcopy(self.email_text) email_text['To'] = [{ 'EmailAddress': '*****@*****.**', 'FriendlyName': 'not a valid activity mail reply'}] assert not add_email_to_activity_log_wrapper(email_text) assert len(mail.outbox) == 1 out = mail.outbox[0] assert out.body == ( self.bounce_reply % 'TO: address does not contain activity email uuid (' '[email protected]).') assert out.subject == 'Re: This is the subject of a test message.' assert out.to == ['*****@*****.**']
def process_email(message, **kwargs): """Parse emails and save activity log entry.""" msg_id = message.get('MessageId', None) if not msg_id: log.error('No MessageId in message, aborting.') return cache_key = 'process_email:%s' % msg_id if cache.get(cache_key): log.error('Already processed [%s] in the last 60s, skipping' % msg_id) return cache.set(cache_key, 'yes', 60) res = add_email_to_activity_log_wrapper(message) if not res: log.error('Failed to save email.')
def process_email(message, **kwargs): """Parse emails and save activity log entry.""" msg_id = message.get('MessageId', None) if not msg_id: log.error('No MessageId in message, aborting.') return cache_key = 'process_email:%s' % msg_id if cache.get(cache_key): log.error('Already processed [%s] in the last 60s, skipping' % msg_id) return cache.set(cache_key, 'yes', 60) res = add_email_to_activity_log_wrapper(message) if not res: log.error('Failed to save email.')
def test_no_note_logged(self, log_mock): # First set everything up so it's working addon = addon_factory() user = user_factory() self.grant_permission(user, '*:*') ActivityLogToken.objects.create( user=user, version=addon.latest_version, uuid='5a0b8a83d501412589cc5d562334b46b') # Make log_mock return false for some reason. log_mock.return_value = False # No exceptions thrown, but no log means something went wrong. assert not add_email_to_activity_log_wrapper(self.email_text) assert len(mail.outbox) == 1 out = mail.outbox[0] assert out.body == (self.bounce_reply % 'Undefined Error.') assert out.subject == 'Re: This is the subject of a test message.' assert out.to == ['*****@*****.**']
def test_no_note_logged(self, log_mock): # First set everything up so it's working addon = addon_factory() version = addon.find_latest_version(channel=amo.RELEASE_CHANNEL_LISTED) user = user_factory() self.grant_permission(user, '*:*') ActivityLogToken.objects.create( user=user, version=version, uuid='5a0b8a83d501412589cc5d562334b46b') # Make log_mock return false for some reason. log_mock.return_value = False # No exceptions thrown, but no log means something went wrong. assert not add_email_to_activity_log_wrapper(self.email_text) assert len(mail.outbox) == 1 out = mail.outbox[0] assert out.body == ( self.bounce_reply % 'Undefined Error.') assert out.subject == 'Re: This is the subject of a test message.' assert out.to == ['*****@*****.**']
def process_email(message, **kwargs): """Parse emails and save activity log entry.""" # Some emails (gmail, at least) come with Message-ID instead of MessageId. msg_id = message.get('MessageId') if not msg_id: custom_headers = message.get('CustomHeaders', []) for header in custom_headers: if header.get('Name') == 'Message-ID': msg_id = header.get('Value') if not msg_id: log.error('No MessageId in message, aborting.') log.error(message) return _, created = ActivityLogEmails.objects.get_or_create(messageid=msg_id) if not created: log.error('Already processed [%s], skipping' % msg_id) log.error(message) return res = add_email_to_activity_log_wrapper(message) if not res: log.error('Failed to save email.')
def process_email(message, **kwargs): """Parse emails and save activity log entry.""" # Some emails (gmail, at least) come with Message-ID instead of MessageId. msg_id = message.get('MessageId') if not msg_id: custom_headers = message.get('CustomHeaders', []) for header in custom_headers: if header.get('Name') == 'Message-ID': msg_id = header.get('Value') if not msg_id: log.error('No MessageId in message, aborting.') log.error(message) return _, created = ActivityLogEmails.objects.get_or_create(messageid=msg_id) if not created: log.error('Already processed [%s], skipping' % msg_id) log.error(message) return res = add_email_to_activity_log_wrapper(message) if not res: log.error('Failed to save email.')
def process_email(message, **kwargs): """Parse emails and save activity log entry.""" # Some emails (gmail, at least) come with Message-ID instead of MessageId. msg_id = message.get('MessageId') if not msg_id: custom_headers = message.get('CustomHeaders', []) for header in custom_headers: if header.get('Name') == 'Message-ID': msg_id = header.get('Value') if not msg_id: log.error('No MessageId in message, aborting.') log.error(message) return cache_key = 'process_email:%s' % msg_id if cache.get(cache_key): log.error('Already processed [%s] in the last 60s, skipping' % msg_id) log.error(message) return cache.set(cache_key, 'yes', 60) res = add_email_to_activity_log_wrapper(message) if not res: log.error('Failed to save email.')
def process_email(message, **kwargs): """Parse emails and save activity log entry.""" res = add_email_to_activity_log_wrapper(message) if not res: log.error('Failed to save email.')
def test_exception_parser_because_malformed_message(self): assert not add_email_to_activity_log_wrapper("blah de blah") # No From or Reply means no bounce, alas. assert len(mail.outbox) == 0
def test_exception_but_bouncing_waffle_off(self): # Fails because the token doesn't exist in ActivityToken.objects assert not add_email_to_activity_log_wrapper(self.email_text) # But no bounce. assert len(mail.outbox) == 0
def test_exception_but_bouncing_waffle_off(self): # Fails because the token doesn't exist in ActivityToken.objects assert not add_email_to_activity_log_wrapper(self.email_text, 0) # But no bounce. assert len(mail.outbox) == 0
def test_exception_parser_because_malformed_message(self): assert not add_email_to_activity_log_wrapper('blah de blah', 0) # No From or Reply means no bounce, alas. assert len(mail.outbox) == 0