def BOUNCED_SOFT(message): if mailinglist.find_subscriptions(message.bounce.final_recipient): force_to_bounce_state(message) msg = bounce.mail_to_you_is_bouncing(message) relay.deliver(msg) bounce.archive_bounce(message) return handlers.admin.START
def test_soft_bounce_tells_them(): setup() # get them into a posting state admin_tests.test_existing_user_posts_message() assert_in_state('app.handlers.admin', list_addr, sender, 'POSTING') clear_queue() assert mailinglist.find_subscriptions(sender, list_addr) # force them to soft bounce msg = create_bounce(list_addr, sender) msg.bounce.primary_status = (3, bounce.PRIMARY_STATUS_CODES[u'3']) assert msg.bounce.is_soft() Router.deliver(msg) assert_in_state('app.handlers.admin', list_addr, sender, 'BOUNCING') assert_in_state('app.handlers.bounce', list_addr, sender, 'BOUNCING') assert not delivered('unbounce'), "We shouldn't be sending on bounde." assert_equal(len(queue(queue_dir=settings.BOUNCE_ARCHIVE).keys()), 1) assert not mailinglist.find_subscriptions(sender, list_addr) # make sure that any attempts to post return a "you're bouncing dude" message client.say(list_addr, 'So anyway as I was saying.') assert not delivered('unbounce') assert_in_state('app.handlers.admin', list_addr, sender, 'BOUNCING') # now have them try to unbounce msg = client.say('*****@*****.**', "Please put me back on, I'll be good.", 'unbounce-confirm') # handle the bounce confirmation client.say(msg['from'], "Confirmed to unbounce.", 'noreply') # alright they should be in the unbounce state for the global bounce handler assert_in_state('app.handlers.bounce', list_addr, sender, 'UNBOUNCED') # and they need to be back to POSTING for regular operations assert_in_state('app.handlers.admin', list_addr, sender, 'POSTING') assert mailinglist.find_subscriptions(sender, list_addr) # and make sure that only the original bounce is in the bounce archive assert_equal(len(queue(queue_dir=settings.BOUNCE_ARCHIVE).keys()), 1)
def test_soft_bounce_tells_them(): setup() # get them into a posting state admin_tests.test_existing_user_posts_message() assert_in_state('app.handlers.admin', list_addr, sender, 'POSTING') clear_queue() assert mailinglist.find_subscriptions(sender, list_addr) # force them to soft bounce msg = create_bounce(list_addr, sender) msg.bounce.primary_status = (3, bounce.PRIMARY_STATUS_CODES[u'3']) assert msg.bounce.is_soft() Router.deliver(msg) assert_in_state('app.handlers.admin', list_addr, sender, 'BOUNCING') assert_in_state('app.handlers.bounce', list_addr, sender, 'BOUNCING') assert delivered('unbounce'), "Looks like unbounce didn't go out." assert_equal(len(queue(queue_dir=settings.BOUNCE_ARCHIVE).keys()), 1) assert not mailinglist.find_subscriptions(sender, list_addr) # make sure that any attempts to post return a "you're bouncing dude" message unbounce = client.say(list_addr, 'So anyway as I was saying.', 'unbounce') assert_in_state('app.handlers.admin', list_addr, sender, 'BOUNCING') # now have them try to unbounce msg = client.say(unbounce['from'], "Please put me back on, I'll be good.", 'unbounce-confirm') # handle the bounce confirmation client.say(msg['from'], "Confirmed to unbounce.", 'noreply') # alright they should be in the unbounce state for the global bounce handler assert_in_state('app.handlers.bounce', list_addr, sender, 'UNBOUNCED') # and they need to be back to POSTING for regular operations assert_in_state('app.handlers.admin', list_addr, sender, 'POSTING') assert mailinglist.find_subscriptions(sender, list_addr) # and make sure that only the original bounce is in the bounce archive assert_equal(len(queue(queue_dir=settings.BOUNCE_ARCHIVE).keys()), 1)
def test_hard_bounce_disables_user(): # get them into a posting state admin_tests.test_existing_user_posts_message() assert_in_state('app.handlers.admin', list_addr, sender, 'POSTING') clear_queue() assert mailinglist.find_subscriptions(sender, list_addr) # force them to HARD bounce msg = create_bounce(list_addr, sender) Router.deliver(msg) assert_in_state('app.handlers.admin', list_addr, sender, 'BOUNCING') assert_in_state('app.handlers.bounce', list_addr, sender, 'BOUNCING') assert not delivered('unbounce'), "A HARD bounce should be silent." assert_equal(len(queue(queue_dir=settings.BOUNCE_ARCHIVE).keys()), 1) assert not mailinglist.find_subscriptions(sender, list_addr) # make sure that any attempts to post return a "you're bouncing dude" message unbounce = client.say(list_addr, 'So anyway as I was saying.', 'unbounce') assert_in_state('app.handlers.admin', list_addr, sender, 'BOUNCING') # now have them try to unbounce msg = client.say(unbounce['from'], "Please put me back on, I'll be good.", 'unbounce-confirm') # handle the bounce confirmation client.say(msg['from'], "Confirmed to unbounce.", 'noreply') # alright they should be in the unbounce state for the global bounce handler assert_in_state('app.handlers.bounce', list_addr, sender, 'UNBOUNCED') # and they need to be back to POSTING for regular operations assert_in_state('app.handlers.admin', list_addr, sender, 'POSTING') assert mailinglist.find_subscriptions(sender, list_addr) # and make sure that only the original bounce is in the bounce archive assert_equal(len(queue(queue_dir=settings.BOUNCE_ARCHIVE).keys()), 1)
def BOUNCED_HARD(message): if mailinglist.find_subscriptions(message.bounce.final_recipient): force_to_bounce_state(message) bounce.archive_bounce(message) return handlers.admin.START
def BOUNCED_SOFT(message): if mailinglist.find_subscriptions(message.bounce.final_recipient): force_to_bounce_state(message) bounce.archive_bounce(message) return handlers.admin.START