diff options
| -rw-r--r-- | service/pixelated/resources/root_resource.py | 7 | ||||
| -rw-r--r-- | service/test/unit/resources/test_root_resource.py | 13 | 
2 files changed, 20 insertions, 0 deletions
diff --git a/service/pixelated/resources/root_resource.py b/service/pixelated/resources/root_resource.py index 24d097f9..035d5f18 100644 --- a/service/pixelated/resources/root_resource.py +++ b/service/pixelated/resources/root_resource.py @@ -35,6 +35,7 @@ from pixelated.resources.keys_resource import KeysResource  from pixelated.resources.inbox_resource import InboxResource, MODE_STARTUP, MODE_RUNNING  from twisted.web.resource import NoResource  from twisted.web.static import File +from twisted.web.util import Redirect  from twisted.logger import Logger @@ -45,11 +46,17 @@ class PublicRootResource(BaseResource):      def __init__(self, services_factory):          BaseResource.__init__(self, services_factory) +        self._redirect_to_inbox_resource = Redirect('login')      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)) +    def getChildWithDefault(self, path, request): +        if path == '': +            return self._redirect_to_inbox_resource +        return BaseResource.getChildWithDefault(self, path, request) +  class RootResource(PublicRootResource): diff --git a/service/test/unit/resources/test_root_resource.py b/service/test/unit/resources/test_root_resource.py index 443a00e6..1543f650 100644 --- a/service/test/unit/resources/test_root_resource.py +++ b/service/test/unit/resources/test_root_resource.py @@ -31,6 +31,19 @@ class TestPublicRootResource(unittest.TestCase):          child_resource = getChildForRequest(self.public_root_resource, request)          self.assertIsInstance(child_resource, LoginResource) +    def test_root_url_should_redirect_to_login_resource(self): +        self.public_root_resource.initialize(provider=mock(), authenticator=mock()) +        request = DummyRequest(['']) +        request.addCookie = lambda key, value: 'stubbed' +        d = self.web.get(request) + +        def assert_redirect(request): +            self.assertEqual(302, request.responseCode) +            self.assertEqual(["login"], request.responseHeaders.getRawHeaders('location', [None])) + +        d.addCallback(assert_redirect) +        return d +  class TestRootResource(unittest.TestCase):      MAIL_ADDRESS = 'test_user@pixelated-project.org'  | 
