Skip to content
Snippets Groups Projects

Remailer support

Merged Julian requested to merge remailer into master

Files

+ 73
2
@@ -60,14 +60,18 @@ class MockConnection:
@@ -60,14 +60,18 @@ class MockConnection:
pass
pass
class UffdAPIMock:
class UffdAPIMock:
def __init__(self, aliases=None):
def __init__(self, aliases=None, remailer_map=None):
self.aliases = aliases or {}
self.aliases = aliases or {}
 
self.remailer_map = remailer_map or {}
def get_aliases(self, mail_address):
def get_aliases(self, mail_address):
return self.aliases.get(mail_address, [])
return self.aliases.get(mail_address, [])
 
def resolve_remailer(self, orig_address):
 
return self.remailer_map.get(orig_address, None)
 
class TestSocketmapsRequestHandler(unittest.TestCase):
class TestSocketmapsRequestHandler(unittest.TestCase):
def test_handle(self):
def test_handle_virtual(self):
api = UffdAPIMock(aliases={
api = UffdAPIMock(aliases={
'test@example.com': ['test-dest@example.com'],
'test@example.com': ['test-dest@example.com'],
'space test@example.com': ['space test dest@example.com'],
'space test@example.com': ['space test dest@example.com'],
@@ -136,3 +140,70 @@ class TestSocketmapsRequestHandler(unittest.TestCase):
@@ -136,3 +140,70 @@ class TestSocketmapsRequestHandler(unittest.TestCase):
conn = MockConnection(request, 4096)
conn = MockConnection(request, 4096)
RequestHandler(conn, '', None).handle()
RequestHandler(conn, '', None).handle()
self.assertIn(b'PERM ', conn.sent)
self.assertIn(b'PERM ', conn.sent)
 
 
def test_handle_remailer(self):
 
api = UffdAPIMock(remailer_map={
 
'v1-23-testuser@remailer.example.com': 'testuser@example.com',
 
'v1-23-testadmin@remailer.example.com': 'testadmin@example.com',
 
# Artifical entry to test if map is queried (see _with_remailer_domain case)
 
'foobar@test.example.com': 'DOESNOTEXIT',
 
})
 
RequestHandler = make_requesthandler(api)
 
 
request = b'54:remailer_canonical v1-23-testuser@remailer.example.com,'
 
response = b'23:OK testuser@example.com,'
 
conn = MockConnection(request, 4096)
 
RequestHandler(conn, '', None).handle()
 
self.assertEqual(conn.sent, response)
 
 
request = b'56:remailer_canonical v1-42-not-a-user@remailer.example.com,'
 
response = b'9:NOTFOUND ,'
 
conn = MockConnection(request, 4096)
 
RequestHandler(conn, '', None).handle()
 
self.assertEqual(conn.sent, response)
 
 
request = b'35:remailer_canonical test@example.com,'
 
response = b'9:NOTFOUND ,'
 
conn = MockConnection(request, 4096)
 
RequestHandler(conn, '', None).handle()
 
self.assertEqual(conn.sent, response)
 
 
# See _with_remailer_domain case
 
request = b'42:remailer_canonical foobar@test.example.com,'
 
response = b'14:OK DOESNOTEXIT,'
 
conn = MockConnection(request, 4096)
 
RequestHandler(conn, '', None).handle()
 
self.assertEqual(conn.sent, response)
 
 
def test_handle_remailer_with_remailer_domain(self):
 
api = UffdAPIMock(remailer_map={
 
'v1-23-testuser@remailer.example.com': 'testuser@example.com',
 
'v1-23-testadmin@remailer.example.com': 'testadmin@example.com',
 
# Artifical entry to test if map is queried
 
'foobar@test.example.com': 'DOESNOTEXIT',
 
})
 
RequestHandler = make_requesthandler(api, remailer_domain='remailer.example.com')
 
 
request = b'54:remailer_canonical v1-23-testuser@remailer.example.com,'
 
response = b'23:OK testuser@example.com,'
 
conn = MockConnection(request, 4096)
 
RequestHandler(conn, '', None).handle()
 
self.assertEqual(conn.sent, response)
 
 
request = b'56:remailer_canonical v1-42-not-a-user@remailer.example.com,'
 
response = b'9:NOTFOUND ,'
 
conn = MockConnection(request, 4096)
 
RequestHandler(conn, '', None).handle()
 
self.assertEqual(conn.sent, response)
 
 
request = b'35:remailer_canonical test@example.com,'
 
response = b'9:NOTFOUND ,'
 
conn = MockConnection(request, 4096)
 
RequestHandler(conn, '', None).handle()
 
self.assertEqual(conn.sent, response)
 
 
request = b'42:remailer_canonical foobar@test.example.com,'
 
response = b'9:NOTFOUND ,'
 
conn = MockConnection(request, 4096)
 
RequestHandler(conn, '', None).handle()
 
self.assertEqual(conn.sent, response)
Loading