def test_no_exception_raised_when_sender_auth_succeeds_on_route(self): class RouteImpl(Route): def route(self, route=r'bcoe@.*', sender_auth=GmailSPFAuth): self.called = True route = RouteImpl() route._initialize(peer_ip='209.85.213.46') route._route(message_data=self.valid_dkim_eml) self.assertTrue(route.called)
def process_message(self, peer, mailfrom, rcpttos, message_data): for RouteClass in self.routes: try: route = RouteClass() route._initialize(peer_ip=peer[0]) route._route(message_data) except RoutingException, re: self.logger.warn( re ) except Exception, e: self.logger.error( e )
def test_no_exception_raised_when_sender_auth_succeeds_on_route(self): class RouteImpl(Route): def route(self, route=r'ben@.*', sender_auth=GmailSPFAuth): self.called = True route = RouteImpl() route._initialize(peer_ip='209.85.213.46') route._route( message_data=self.valid_dkim_eml ) self.assertTrue(route.called)
def test_route_decorator_can_be_used_rather_than_kwarg_to_specify_sender_auth( self): class RouteImpl(Route): @route('bcoe@.*', sender_auth=GmailSPFAuth) def route(self): self.called = True route = RouteImpl() route._initialize(peer_ip='209.85.213.46') route._route(message_data=self.invalid_dkim_eml) self.assertTrue(route.called)
def test_if_list_of_sender_authentication_approaches_is_provided_route_called_if_any_pass(self): class RouteImpl(Route): def route(self, route=r'bcoe@.*', sender_auth=[DKIMAuth, GmailSPFAuth]): self.called = True route = RouteImpl() route._initialize(peer_ip='209.85.213.46') route._route( message_data=self.invalid_dkim_eml ) self.assertTrue(route.called)
def test_route_decorator_can_be_used_rather_than_kwarg_to_specify_sender_auth(self): class RouteImpl(Route): @route('bcoe@.*', sender_auth=GmailSPFAuth) def route(self): self.called = True route = RouteImpl() route._initialize(peer_ip='209.85.213.46') route._route( message_data=self.invalid_dkim_eml ) self.assertTrue(route.called)
def test_named_groups_stored_as_instance_variables_on_route(self): class RouteImpl(Route): def route(self, route=r'(?P<user>[^-]*)-(?P<folder>.*)@.*'): self.called = True message = 'To: Benjamin <*****@*****.**>\nFrom: [email protected]' route = RouteImpl() route._initialize() route._route(message_data=message) self.assertEqual(route.user, 'bencoe') self.assertEqual(route.folder, 'awesome-folder') self.assertEqual(route.called, True)
def test_a_routing_exception_should_be_raised_if_the_route_is_not_found( self): class RouteImpl(Route): pass message = 'To: Benjamin <*****@*****.**>, [email protected], Eric <*****@*****.**>\nFrom: Ben Coe <*****@*****.**>' route = RouteImpl() route._initialize() try: route._route(message_data=message) self.assertTrue(False) except RoutingException, re: self.assertTrue('*****@*****.**' in str(re)) self.assertTrue(True)
def test_exception_raised_when_sender_auth_fails_on_route(self): class RouteImpl(Route): def route(self, route=r'bcoe@.*', sender_auth=DKIMAuth): self.called = True route = RouteImpl() route._initialize() route.called = False try: route._route(message_data=self.invalid_dkim_eml) self.assertTrue(False) except SenderAuthException: self.assertTrue(True) self.assertFalse(route.called)
def test_a_routing_exception_should_be_raised_if_the_route_is_not_found(self): class RouteImpl(Route): pass message = 'To: Benjamin <*****@*****.**>, [email protected], Eric <*****@*****.**>\nFrom: Ben Coe <*****@*****.**>' route = RouteImpl() route._initialize() try: route._route( message_data=message ) self.assertTrue(False) except RoutingException, re: self.assertTrue('*****@*****.**' in str(re)) self.assertTrue(True)
def test_calling_route_with_a_matching_regex_results_in_the_appropriate_route_being_invoked( self): class RouteImpl(Route): def route1(self, route=r'*****@*****.**'): self.bar = 'bar' def route2(self, route=r'*****@*****.**'): self.bar = 'foo' message = 'To: Benjamin <*****@*****.**>, [email protected], Eric <*****@*****.**>\nFrom: Ben Coe <*****@*****.**>' route = RouteImpl() route._initialize() route._route(message_data=message) self.assertEqual('bar', route.bar)
def test_exception_raised_when_sender_auth_fails_on_route(self): class RouteImpl(Route): def route(self, route=r'bcoe@.*', sender_auth=DKIMAuth): self.called = True route = RouteImpl() route._initialize() route.called = False try: route._route( message_data=self.invalid_dkim_eml ) self.assertTrue(False) except SenderAuthException: self.assertTrue(True) self.assertFalse(route.called)
def test_instance_variables_populated_based_on_email_message(self): class RouteImpl(Route): def route(self, route=r'*****@*****.**'): self.called = True message = 'To: a <*****@*****.**>, [email protected]\nFrom: [email protected]\nCC: d <*****@*****.**>, [email protected]\nBCC: [email protected]' route = RouteImpl() route._initialize() route._route(message_data=message) self.assertTrue(route.message) self.assertEqual(route.tos[0].email, '*****@*****.**') self.assertEqual(route.tos[1].email, '*****@*****.**') self.assertEqual(route.mailfrom.email, '*****@*****.**') self.assertEqual(route.ccs[0].email, '*****@*****.**') self.assertEqual(route.ccs[1].email, '*****@*****.**') self.assertEqual(route.bccs[0].email, '*****@*****.**')
def test_if_list_of_sender_authentication_approaches_is_provided_exception_raised_if_all_fail(self): class RouteImpl(Route): def route(self, route=r'bcoe@.*', sender_auth=[DKIMAuth, GmailSPFAuth]): self.called = True route = RouteImpl() route._initialize() route.called = False try: route._route( message_data=self.invalid_dkim_eml ) self.assertTrue(False) except SenderAuthException: self.assertTrue(True) self.assertFalse(route.called)
def test_calling_route_with_a_matching_regex_results_in_the_appropriate_route_being_invoked(self): class RouteImpl(Route): def route1(self, route=r'*****@*****.**'): self.bar = 'bar' def route2(self, route=r'*****@*****.**'): self.bar = 'foo' message = 'To: Benjamin <*****@*****.**>, [email protected], Eric <*****@*****.**>\nFrom: Ben Coe <*****@*****.**>' route = RouteImpl() route._initialize() route._route( message_data=message ) self.assertEqual('bar', route.bar)