summaryrefslogtreecommitdiff
path: root/server/src/leap/soledad/server/session.py
diff options
context:
space:
mode:
authordrebs <drebs@leap.se>2016-12-19 09:43:03 -0200
committerKali Kaneko <kali@leap.se>2017-02-09 17:41:37 +0100
commit6043f7966b64d6922987bca9137a524fb06a3379 (patch)
tree70f5416685405c084fbc5e4451565c460cb2203e /server/src/leap/soledad/server/session.py
parent994eaa79b274c3c37af42cb343c41b5dec6e8d19 (diff)
[refactor] separate url mapper, avoid hanging tests
Because the wsgi resource has its own threadpool, tests might get confused when shutting down and the reactor may get clogged waiting for the threadpool to be stopped. By refactoring the URLMapper to its own module, server tests can avoid loading the resource module, where the wsgi threadpool resides, so the threapool will not be started.
Diffstat (limited to 'server/src/leap/soledad/server/session.py')
-rw-r--r--server/src/leap/soledad/server/session.py17
1 files changed, 15 insertions, 2 deletions
diff --git a/server/src/leap/soledad/server/session.py b/server/src/leap/soledad/server/session.py
index 75440089..1ef5b6a6 100644
--- a/server/src/leap/soledad/server/session.py
+++ b/server/src/leap/soledad/server/session.py
@@ -30,10 +30,9 @@ from twisted.web.server import Session
from zope.interface import Interface
from zope.interface import Attribute
-from leap.soledad.server.auth import URLMapper
from leap.soledad.server.auth import portal
from leap.soledad.server.auth import credentialFactory
-from leap.soledad.server.auth import UnauthorizedResource
+from leap.soledad.server.urlmapper import URLMapper
from leap.soledad.server.resource import SoledadResource
@@ -59,6 +58,20 @@ def _sessionData(request):
@implementer(IResource)
+class UnauthorizedResource(object):
+ isLeaf = True
+
+ def render(self, request):
+ request.setResponseCode(401)
+ if request.method == b'HEAD':
+ return b''
+ return b'Unauthorized'
+
+ def getChildWithDefault(self, path, request):
+ return self
+
+
+@implementer(IResource)
class SoledadSession(HTTPAuthSessionWrapper):
def __init__(self):