From db1cf22ca3a86027828aba30417e79363a380350 Mon Sep 17 00:00:00 2001 From: Zara Gebru Date: Tue, 6 Dec 2016 18:13:54 +0100 Subject: [#801] add signup resource + tests --- service/pixelated/resources/root_resource.py | 3 +++ service/pixelated/resources/signup_resource.py | 25 +++++++++++++++++ service/test/integration/test_signup.py | 31 ++++++++++++++++++++++ .../test/unit/resources/test_signup_resource.py | 23 ++++++++++++++++ 4 files changed, 82 insertions(+) create mode 100644 service/pixelated/resources/signup_resource.py create mode 100644 service/test/integration/test_signup.py create mode 100644 service/test/unit/resources/test_signup_resource.py diff --git a/service/pixelated/resources/root_resource.py b/service/pixelated/resources/root_resource.py index 5cc93dbe..45a64203 100644 --- a/service/pixelated/resources/root_resource.py +++ b/service/pixelated/resources/root_resource.py @@ -16,6 +16,8 @@ import json import os import pkg_resources + +from pixelated.resources.signup_resource import SignupResource from pixelated.resources.users import UsersResource import pixelated @@ -112,6 +114,7 @@ class RootResource(BaseResource): self.putChildPublic(LoginResource.BASE_URL, LoginResource(self._services_factory, provider, disclaimer_banner=disclaimer_banner, authenticator=authenticator)) self.putChildPublic(LogoutResource.BASE_URL, LogoutResource(self._services_factory)) + self.putChildPublic('signup', SignupResource(self._services_factory)) self._inbox_resource.initialize() self._mode = MODE_RUNNING diff --git a/service/pixelated/resources/signup_resource.py b/service/pixelated/resources/signup_resource.py new file mode 100644 index 00000000..e8f53f2d --- /dev/null +++ b/service/pixelated/resources/signup_resource.py @@ -0,0 +1,25 @@ +# +# Copyright (c) 2016 ThoughtWorks, Inc. +# +# Pixelated is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# Pixelated is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with Pixelated. If not, see . + +from twisted.logger import Logger + +from pixelated.resources import BaseResource + +log = Logger() + + +class SignupResource(BaseResource): + pass diff --git a/service/test/integration/test_signup.py b/service/test/integration/test_signup.py new file mode 100644 index 00000000..63740c8c --- /dev/null +++ b/service/test/integration/test_signup.py @@ -0,0 +1,31 @@ +# +# Copyright (c) 2016 ThoughtWorks, Inc. +# +# Pixelated is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# Pixelated is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with Pixelated. If not, see . + +from twisted.internet import defer + +from test.support.integration.soledad_test_base import MultiUserSoledadTestBase + + +class SignupTest(MultiUserSoledadTestBase): + + @defer.inlineCallbacks + def test_signup(self): + response, first_request = yield self.app_test_client.get('/signup', as_json=False) + response, signup_request = yield self.app_test_client.signup(session=first_request.getSession()) + yield response + + self.assertEqual(302, signup_request.responseCode) + diff --git a/service/test/unit/resources/test_signup_resource.py b/service/test/unit/resources/test_signup_resource.py new file mode 100644 index 00000000..3f472357 --- /dev/null +++ b/service/test/unit/resources/test_signup_resource.py @@ -0,0 +1,23 @@ +from mock import MagicMock +from mockito import mock +from twisted.trial import unittest +from twisted.web.resource import getChildForRequest +from twisted.web.test.requesthelper import DummyRequest + +from pixelated.application import get_static_folder +from pixelated.resources.root_resource import RootResource +from pixelated.resources.signup_resource import SignupResource + + +class TestSignupResource(unittest.TestCase): + + def setUp(self): + self.public_root_resource = RootResource(mock(), get_static_folder(), public=True) + + def test_get_resource_for_request(self): + request = DummyRequest(['signup']) + request.addCookie = MagicMock(return_value='stubbed') + self.public_root_resource.initialize(provider=mock(), authenticator=mock()) + resource = getChildForRequest(self.public_root_resource, request) + + self.assertIsInstance(resource, SignupResource) -- cgit v1.2.3