summaryrefslogtreecommitdiff
path: root/service/pixelated/resources/logout_resource.py
diff options
context:
space:
mode:
authorFolker Bernitt <fbernitt@thoughtworks.com>2016-03-04 10:22:14 +0100
committerFolker Bernitt <fbernitt@thoughtworks.com>2016-03-04 10:22:35 +0100
commit9284db24513ff33c2c9c0cdc34c12fca91e42f36 (patch)
treec07500c4ff1cb569f31af250acbf06b43e282a98 /service/pixelated/resources/logout_resource.py
parent59532a50c8b0233b2a596b996cbe799b745c4fac (diff)
Fix: Logout calls session expire
- Deferred was not handled as required - Test did not assert call to expire
Diffstat (limited to 'service/pixelated/resources/logout_resource.py')
-rw-r--r--service/pixelated/resources/logout_resource.py19
1 files changed, 16 insertions, 3 deletions
diff --git a/service/pixelated/resources/logout_resource.py b/service/pixelated/resources/logout_resource.py
index 344ad2e9..01092b05 100644
--- a/service/pixelated/resources/logout_resource.py
+++ b/service/pixelated/resources/logout_resource.py
@@ -1,5 +1,8 @@
+from twisted.web.server import NOT_DONE_YET
+
from pixelated.resources import BaseResource
from twisted.web import util
+from twisted.internet import defer
from pixelated.resources.login_resource import LoginResource
@@ -8,9 +11,19 @@ class LogoutResource(BaseResource):
BASE_URL = "logout"
isLeaf = True
- def render_POST(self, request):
+ @defer.inlineCallbacks
+ def _execute_logout(self, request):
session = self.get_session(request)
- self._services_factory.log_out_user(session.user_uuid)
+ yield self._services_factory.log_out_user(session.user_uuid)
session.expire()
- return util.redirectTo("/%s" % LoginResource.BASE_URL, request)
+ def render_POST(self, request):
+ def _redirect_to_login(_):
+ content = util.redirectTo("/%s" % LoginResource.BASE_URL, request)
+ request.write(content)
+ request.finish()
+
+ d = self._execute_logout(request)
+ d.addCallback(_redirect_to_login)
+
+ return NOT_DONE_YET