From 9b5d5a797c9f407183d1b9a6a2aea552a06c5ea1 Mon Sep 17 00:00:00 2001 From: Roald de Vries Date: Tue, 29 Nov 2016 17:47:07 +0100 Subject: make login resource part of the public root resource --- service/pixelated/resources/root_resource.py | 7 +++++-- service/test/unit/resources/test_root_resource.py | 17 +++++++++++++---- 2 files changed, 18 insertions(+), 6 deletions(-) (limited to 'service') diff --git a/service/pixelated/resources/root_resource.py b/service/pixelated/resources/root_resource.py index 0788ffb1..24d097f9 100644 --- a/service/pixelated/resources/root_resource.py +++ b/service/pixelated/resources/root_resource.py @@ -46,6 +46,10 @@ class PublicRootResource(BaseResource): def __init__(self, services_factory): BaseResource.__init__(self, services_factory) + def initialize(self, provider=None, disclaimer_banner=None, authenticator=None): + self.putChild(LoginResource.BASE_URL, + LoginResource(self._services_factory, provider, disclaimer_banner=disclaimer_banner, authenticator=authenticator)) + class RootResource(PublicRootResource): @@ -94,6 +98,7 @@ class RootResource(PublicRootResource): return csrf_input and csrf_input == xsrf_token def initialize(self, provider=None, disclaimer_banner=None, authenticator=None): + PublicRootResource.initialize(self, provider, disclaimer_banner, authenticator) self.putChild('sandbox', SandboxResource(self._static_folder)) self.putChild('keys', KeysResource(self._services_factory)) self.putChild(AttachmentsResource.BASE_URL, AttachmentsResource(self._services_factory)) @@ -105,8 +110,6 @@ class RootResource(PublicRootResource): self.putChild('feedback', FeedbackResource(self._services_factory)) self.putChild('user-settings', UserSettingsResource(self._services_factory)) self.putChild('users', UsersResource(self._services_factory)) - self.putChild(LoginResource.BASE_URL, - LoginResource(self._services_factory, provider, disclaimer_banner=disclaimer_banner, authenticator=authenticator)) self.putChild(LogoutResource.BASE_URL, LogoutResource(self._services_factory)) self._inbox_resource.initialize() diff --git a/service/test/unit/resources/test_root_resource.py b/service/test/unit/resources/test_root_resource.py index 8d658d7e..06eaf1ad 100644 --- a/service/test/unit/resources/test_root_resource.py +++ b/service/test/unit/resources/test_root_resource.py @@ -19,7 +19,17 @@ from pixelated.resources.root_resource import InboxResource, PublicRootResource, class TestPublicRootResource(unittest.TestCase): - pass + + def setUp(self): + self.public_root_resource = PublicRootResource(mock()) + self.web = DummySite(self.public_root_resource) + + def test_login_url_should_delegate_to_login_resource(self): + self.public_root_resource.initialize(provider=mock(), authenticator=mock()) + request = DummyRequest(['login']) + request.addCookie = lambda key, value: 'stubbed' + child_resource = getChildForRequest(self.public_root_resource, request) + self.assertIsInstance(child_resource, LoginResource) class TestRootResource(unittest.TestCase): @@ -35,9 +45,8 @@ class TestRootResource(unittest.TestCase): when(self.services_factory).services(ANY()).thenReturn(self.services) self.mail_service.account_email = self.MAIL_ADDRESS - root_resource = RootResource(self.services_factory) - self.web = DummySite(root_resource) - self.root_resource = root_resource + self.root_resource = RootResource(self.services_factory) + self.web = DummySite(self.root_resource) def test_root_url_should_delegate_to_inbox(self): request = DummyRequest(['']) -- cgit v1.2.3