summaryrefslogtreecommitdiff
path: root/service/test
diff options
context:
space:
mode:
authorRoald de Vries <rdevries@thoughtworks.com>2016-12-08 16:59:09 +0100
committerRoald de Vries <rdevries@thoughtworks.com>2016-12-08 16:59:09 +0100
commitfafac3b4128a0993b0de1c6e8ca3062bf1ccc14e (patch)
tree3b9a446e4c82bb8ba94c1cd0adec57c0042dae28 /service/test
parent521bce7eff5cf921156efe74c91a0499ade43619 (diff)
Revert "[#801] Merge branch 'signup'"
This reverts commit d10f607a4d40587510b0dc31b31fe4750bf4a3a3, reversing changes made to c28abba2f5b1186c671ebef508d40ffaae6d5bc5.
Diffstat (limited to 'service/test')
-rw-r--r--service/test/integration/test_contacts.py1
-rw-r--r--service/test/integration/test_delete_mail.py13
-rw-r--r--service/test/integration/test_drafts.py30
-rw-r--r--service/test/integration/test_feedback_service.py2
-rw-r--r--service/test/integration/test_logout.py6
-rw-r--r--service/test/integration/test_mark_as_read_unread.py29
-rw-r--r--service/test/integration/test_multi_user_login.py8
-rw-r--r--service/test/integration/test_retrieve_attachment.py4
-rw-r--r--service/test/integration/test_static_files.py27
-rw-r--r--service/test/integration/test_tags.py23
-rw-r--r--service/test/integration/test_users_count.py5
-rw-r--r--service/test/support/integration/app_test_client.py67
-rw-r--r--service/test/support/integration/multi_user_client.py29
-rw-r--r--service/test/unit/resources/test_auth.py73
-rw-r--r--service/test/unit/resources/test_inbox_resource.py46
-rw-r--r--service/test/unit/resources/test_login_resource.py15
-rw-r--r--service/test/unit/resources/test_root_resource.py258
-rw-r--r--service/test/unit/resources/test_session.py25
-rw-r--r--service/test/unit/test_welcome_mail.py3
19 files changed, 114 insertions, 550 deletions
diff --git a/service/test/integration/test_contacts.py b/service/test/integration/test_contacts.py
index a890466f..946818fd 100644
--- a/service/test/integration/test_contacts.py
+++ b/service/test/integration/test_contacts.py
@@ -16,6 +16,7 @@
from test.support.integration import SoledadTestBase, MailBuilder
from twisted.internet import defer
import json
+import pkg_resources
class ContactsTest(SoledadTestBase):
diff --git a/service/test/integration/test_delete_mail.py b/service/test/integration/test_delete_mail.py
index 34ea5048..a912f9f0 100644
--- a/service/test/integration/test_delete_mail.py
+++ b/service/test/integration/test_delete_mail.py
@@ -15,7 +15,6 @@
# along with Pixelated. If not, see <http://www.gnu.org/licenses/>.
from twisted.internet import defer
from test.support.integration import SoledadTestBase, MailBuilder
-from pixelated.resources import IPixelatedSession
class DeleteMailTest(SoledadTestBase):
@@ -28,8 +27,7 @@ class DeleteMailTest(SoledadTestBase):
inbox_mails = yield self.app_test_client.get_mails_by_tag('inbox')
self.assertEquals(1, len(inbox_mails))
- response, first_request = yield self.app_test_client.get('/', as_json=False)
- yield self.app_test_client.delete_mail(mail.mail_id, session=first_request.getSession())
+ yield self.app_test_client.delete_mail(mail.mail_id)
inbox_mails = yield self.app_test_client.get_mails_by_tag('inbox')
self.assertEquals(0, len(inbox_mails))
@@ -39,8 +37,7 @@ class DeleteMailTest(SoledadTestBase):
@defer.inlineCallbacks
def test_delete_mail_when_trashing_mail_from_trash_mailbox(self):
mails = yield self.app_test_client.add_multiple_to_mailbox(1, 'trash')
- response, first_request = yield self.app_test_client.get('/', as_json=False)
- yield self.app_test_client.delete_mails([mails[0].ident], session=first_request.getSession())
+ yield self.app_test_client.delete_mails([mails[0].ident])
trash_mails = yield self.app_test_client.get_mails_by_tag('trash')
@@ -52,8 +49,7 @@ class DeleteMailTest(SoledadTestBase):
mails = yield self.app_test_client.add_multiple_to_mailbox(5, 'inbox')
mail_idents = [m.ident for m in mails]
- response, first_request = yield self.app_test_client.get('/', as_json=False)
- yield self.app_test_client.delete_mails(mail_idents, session=first_request.getSession())
+ yield self.app_test_client.delete_mails(mail_idents)
inbox = yield self.app_test_client.get_mails_by_tag('inbox')
self.assertEquals(0, len(inbox))
@@ -63,8 +59,7 @@ class DeleteMailTest(SoledadTestBase):
mails = yield self.app_test_client.add_multiple_to_mailbox(5, 'trash')
mail_idents = [m.ident for m in mails]
- response, first_request = yield self.app_test_client.get('/', as_json=False)
- yield self.app_test_client.delete_mails(mail_idents, session=first_request.getSession())
+ yield self.app_test_client.delete_mails(mail_idents)
trash = yield self.app_test_client.get_mails_by_tag('trash')
self.assertEquals(0, len(trash))
diff --git a/service/test/integration/test_drafts.py b/service/test/integration/test_drafts.py
index a9c7b3f7..657cfab1 100644
--- a/service/test/integration/test_drafts.py
+++ b/service/test/integration/test_drafts.py
@@ -17,7 +17,6 @@
from test.support.integration import SoledadTestBase, MailBuilder
from mockito import unstub, when, any
from twisted.internet import defer
-from pixelated.resources import IPixelatedSession
class DraftsTest(SoledadTestBase):
@@ -27,20 +26,17 @@ class DraftsTest(SoledadTestBase):
@defer.inlineCallbacks
def test_post_sends_mail_and_deletes_previous_draft_if_it_exists(self):
- response, first_request = yield self.app_test_client.get('/', as_json=False)
- session = first_request.getSession()
-
# act as if sending the mail by SMTP succeeded
sendmail_deferred = defer.Deferred()
when(self.app_test_client.mail_sender).sendmail(any()).thenReturn(sendmail_deferred)
# creates one draft
first_draft = MailBuilder().with_subject('First draft').build_json()
- first_draft_ident = (yield self.app_test_client.put_mail(first_draft, session=session)[0])['ident']
+ first_draft_ident = (yield self.app_test_client.put_mail(first_draft)[0])['ident']
# sends an updated version of the draft
second_draft = MailBuilder().with_subject('Second draft').with_ident(first_draft_ident).build_json()
- deferred_res = self.post_mail(second_draft, session)
+ deferred_res = self.post_mail(second_draft)
sendmail_deferred.callback(None) # SMTP succeeded
@@ -58,15 +54,12 @@ class DraftsTest(SoledadTestBase):
@defer.inlineCallbacks
def test_post_sends_mail_even_when_draft_does_not_exist(self):
- response, first_request = yield self.app_test_client.get('/', as_json=False)
- session = first_request.getSession()
-
# act as if sending the mail by SMTP succeeded
sendmail_deferred = defer.Deferred()
when(self.app_test_client.mail_sender).sendmail(any()).thenReturn(sendmail_deferred)
first_draft = MailBuilder().with_subject('First draft').build_json()
- res = self.post_mail(first_draft, session)
+ res = self.post_mail(first_draft)
sendmail_deferred.callback(True)
yield res
@@ -77,32 +70,25 @@ class DraftsTest(SoledadTestBase):
self.assertEquals('First draft', sent_mails[0].subject)
self.assertEquals(0, len(drafts))
- def post_mail(self, data, session):
- csrf = IPixelatedSession(session).get_csrf_token()
- deferred_res, req = self.app_test_client.post('/mails', data, csrf=csrf, session=session)
+ def post_mail(self, data):
+ deferred_res, req = self.app_test_client.post('/mails', data)
return deferred_res
@defer.inlineCallbacks
def test_put_creates_a_draft_if_it_does_not_exist(self):
- response, first_request = yield self.app_test_client.get('/', as_json=False)
- session = first_request.getSession()
-
mail = MailBuilder().with_subject('A new draft').build_json()
- yield self.app_test_client.put_mail(mail, session=session)[0]
+ yield self.app_test_client.put_mail(mail)[0]
mails = yield self.app_test_client.get_mails_by_tag('drafts')
self.assertEquals('A new draft', mails[0].subject)
@defer.inlineCallbacks
def test_put_updates_draft_if_it_already_exists(self):
- response, first_request = yield self.app_test_client.get('/', as_json=False)
- session = first_request.getSession()
-
draft = MailBuilder().with_subject('First draft').build_json()
- draft_ident = (yield self.app_test_client.put_mail(draft, session=session)[0])['ident']
+ draft_ident = (yield self.app_test_client.put_mail(draft)[0])['ident']
updated_draft = MailBuilder().with_subject('First draft edited').with_ident(draft_ident).build_json()
- yield self.app_test_client.put_mail(updated_draft, session=session)[0]
+ yield self.app_test_client.put_mail(updated_draft)[0]
drafts = yield self.app_test_client.get_mails_by_tag('drafts')
diff --git a/service/test/integration/test_feedback_service.py b/service/test/integration/test_feedback_service.py
index ff659396..c50c1883 100644
--- a/service/test/integration/test_feedback_service.py
+++ b/service/test/integration/test_feedback_service.py
@@ -1,4 +1,4 @@
-from twisted.trial import unittest
+import unittest
from httmock import urlmatch, HTTMock
from mockito import when
from twisted.internet import defer
diff --git a/service/test/integration/test_logout.py b/service/test/integration/test_logout.py
index 92c2afe5..c9d39d17 100644
--- a/service/test/integration/test_logout.py
+++ b/service/test/integration/test_logout.py
@@ -29,8 +29,7 @@ class MultiUserLogoutTest(MultiUserSoledadTestBase):
@defer.inlineCallbacks
def test_logout_deletes_services_stop_background_reactor_tasks_and_closes_soledad(self):
- response, first_request = yield self.app_test_client.get('/login', as_json=False)
- response, login_request = yield self.app_test_client.login(session=first_request.getSession())
+ response, login_request = yield self.app_test_client.login()
yield response
yield self.wait_for_session_user_id_to_finish()
@@ -38,8 +37,7 @@ class MultiUserLogoutTest(MultiUserSoledadTestBase):
response, request = self.app_test_client.post(
"/logout",
json.dumps({'csrftoken': [login_request.getCookie('XSRF-TOKEN')]}),
- ajax=False,
- session=login_request.getSession(),
+ from_request=login_request,
as_json=False)
yield response
diff --git a/service/test/integration/test_mark_as_read_unread.py b/service/test/integration/test_mark_as_read_unread.py
index c01deefc..18c3ddc2 100644
--- a/service/test/integration/test_mark_as_read_unread.py
+++ b/service/test/integration/test_mark_as_read_unread.py
@@ -30,40 +30,32 @@ class MarkAsReadUnreadTest(SoledadTestBase):
mails = yield self.app_test_client.get_mails_by_tag('inbox')
self.assertNotIn('read', mails[0].status)
- response, first_request = yield self.app_test_client.get('/', as_json=False)
- session = first_request.getSession()
- yield self.app_test_client.mark_many_as_read([mail.ident], session)
+ yield self.app_test_client.mark_many_as_read([mail.ident])
mails = yield self.app_test_client.get_mails_by_tag('inbox')
self.assertIn('read', mails[0].status)
@defer.inlineCallbacks
def test_mark_single_as_unread(self):
- response, first_request = yield self.app_test_client.get('/', as_json=False)
- session = first_request.getSession()
-
input_mail = MailBuilder().build_input_mail()
mail = yield self.app_test_client.add_mail_to_inbox(input_mail)
- yield self.app_test_client.mark_many_as_read([mail.ident], session)
+ yield self.app_test_client.mark_many_as_read([mail.ident])
- yield self.app_test_client.mark_many_as_unread([mail.ident], session)
+ yield self.app_test_client.mark_many_as_unread([mail.ident])
result = (yield self.app_test_client.get_mails_by_tag('inbox'))[0]
self.assertNotIn('read', result.status)
@defer.inlineCallbacks
def test_mark_many_mails_as_unread(self):
- response, first_request = yield self.app_test_client.get('/', as_json=False)
- session = first_request.getSession()
-
input_mail = MailBuilder().with_status([Status.SEEN]).build_input_mail()
input_mail2 = MailBuilder().with_status([Status.SEEN]).build_input_mail()
mail1 = yield self.app_test_client.add_mail_to_inbox(input_mail)
mail2 = yield self.app_test_client.add_mail_to_inbox(input_mail2)
- yield self.app_test_client.mark_many_as_read([mail1.ident, mail2.ident], session)
+ yield self.app_test_client.mark_many_as_read([mail1.ident, mail2.ident])
- yield self.app_test_client.mark_many_as_unread([mail1.ident, mail2.ident], session)
+ yield self.app_test_client.mark_many_as_unread([mail1.ident, mail2.ident])
mails = yield self.app_test_client.get_mails_by_tag('inbox')
@@ -83,9 +75,7 @@ class MarkAsReadUnreadTest(SoledadTestBase):
self.assertNotIn('read', mails[0].status)
self.assertNotIn('read', mails[1].status)
- response, first_request = yield self.app_test_client.get('/', as_json=False)
- session = first_request.getSession()
- yield self.app_test_client.mark_many_as_read([mails[0].ident, mails[1].ident], session)
+ yield self.app_test_client.mark_many_as_read([mails[0].ident, mails[1].ident])
mails = yield self.app_test_client.get_mails_by_tag('inbox')
@@ -94,15 +84,12 @@ class MarkAsReadUnreadTest(SoledadTestBase):
@defer.inlineCallbacks
def test_mark_mixed_status_as_read(self):
- response, first_request = yield self.app_test_client.get('/', as_json=False)
- session = first_request.getSession()
-
input_mail = MailBuilder().with_subject('first').build_input_mail()
input_mail2 = MailBuilder().with_subject('second').build_input_mail()
yield self.app_test_client.add_mail_to_inbox(input_mail)
mail2 = yield self.app_test_client.add_mail_to_inbox(input_mail2)
- yield self.app_test_client.mark_many_as_read([mail2.ident], session)
+ yield self.app_test_client.mark_many_as_read([mail2.ident])
mails = yield self.app_test_client.get_mails_by_tag('inbox')
@@ -111,7 +98,7 @@ class MarkAsReadUnreadTest(SoledadTestBase):
self.assertEquals(1, len(unread_mails))
self.assertEquals(1, len(read_mails))
- yield self.app_test_client.mark_many_as_read([mails[0].ident, mails[1].ident], session)
+ yield self.app_test_client.mark_many_as_read([mails[0].ident, mails[1].ident])
mails = yield self.app_test_client.get_mails_by_tag('inbox')
diff --git a/service/test/integration/test_multi_user_login.py b/service/test/integration/test_multi_user_login.py
index 2008b320..fe456583 100644
--- a/service/test/integration/test_multi_user_login.py
+++ b/service/test/integration/test_multi_user_login.py
@@ -33,14 +33,13 @@ class MultiUserLoginTest(MultiUserSoledadTestBase):
@defer.inlineCallbacks
def test_logged_in_users_sees_resources(self):
- response, first_request = yield self.app_test_client.get('/login', as_json=False)
- response, login_request = yield self.app_test_client.login(session=first_request.getSession())
+ response, login_request = yield self.app_test_client.login()
yield response
mail = load_mail_from_file('mbox00000000')
mail_id = yield self._create_mail_in_soledad(mail)
expected_mail_dict = {'body': u'Dignissimos ducimus veritatis. Est tenetur consequatur quia occaecati. Vel sit sit voluptas.\n\nEarum distinctio eos. Accusantium qui sint ut quia assumenda. Facere dignissimos inventore autem sit amet. Pariatur voluptatem sint est.\n\nUt recusandae praesentium aspernatur. Exercitationem amet placeat deserunt quae consequatur eum. Unde doloremque suscipit quia.\n\n', 'header': {u'date': u'Tue, 21 Apr 2015 08:43:27 +0000 (UTC)', u'to': [u'carmel@murazikortiz.name'], u'x-tw-pixelated-tags': u'nite, macro, trash', u'from': u'darby.senger@zemlak.biz', u'subject': u'Itaque consequatur repellendus provident sunt quia.'}, 'ident': mail_id, 'status': [], 'tags': [], 'textPlainBody': u'Dignissimos ducimus veritatis. Est tenetur consequatur quia occaecati. Vel sit sit voluptas.\n\nEarum distinctio eos. Accusantium qui sint ut quia assumenda. Facere dignissimos inventore autem sit amet. Pariatur voluptatem sint est.\n\nUt recusandae praesentium aspernatur. Exercitationem amet placeat deserunt quae consequatur eum. Unde doloremque suscipit quia.\n\n', 'mailbox': u'inbox', 'attachments': [], 'security_casing': {'imprints': [{'state': 'no_signature_information'}], 'locks': []}}
- response, request = self.app_test_client.get("/mail/%s" % mail_id, session=login_request.getSession())
+ response, request = self.app_test_client.get("/mail/%s" % mail_id, from_request=login_request)
response = yield response
self.assertEqual(200, request.code)
@@ -49,8 +48,7 @@ class MultiUserLoginTest(MultiUserSoledadTestBase):
@defer.inlineCallbacks
def test_wrong_credentials_cannot_access_resources(self):
- response, first_request = yield self.app_test_client.get('/login', as_json=False)
- response, login_request = self.app_test_client.login('username', 'wrong_password', session=first_request.getSession())
+ response, login_request = self.app_test_client.login('username', 'wrong_password')
response_str = yield response
self.assertEqual(401, login_request.responseCode)
self.assertIn('Invalid username or password', login_request.written)
diff --git a/service/test/integration/test_retrieve_attachment.py b/service/test/integration/test_retrieve_attachment.py
index ac6e52e7..b46d40d5 100644
--- a/service/test/integration/test_retrieve_attachment.py
+++ b/service/test/integration/test_retrieve_attachment.py
@@ -86,9 +86,7 @@ class RetrieveAttachmentTest(SoledadTestBase):
datagen, headers = multipart_encode([file])
post_data = "".join(datagen)
- response, first_request = yield self.app_test_client.get('/', as_json=False)
- session = first_request.getSession()
- _, req = yield self.app_test_client.post_attachment(post_data, headers, session)
+ _, req = yield self.app_test_client.post_attachment(post_data, headers)
self.assertEqual(201, req.code)
self.assertEqual('/attachment/B5B4ED80AC3B894523D72E375DACAA2FC6606C18EDF680FE95903086C8B5E14A', req.responseHeaders.getRawHeaders('location')[0])
diff --git a/service/test/integration/test_static_files.py b/service/test/integration/test_static_files.py
deleted file mode 100644
index e3fa8af5..00000000
--- a/service/test/integration/test_static_files.py
+++ /dev/null
@@ -1,27 +0,0 @@
-#
-# 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 <http://www.gnu.org/licenses/>.
-
-
-from twisted.internet.defer import inlineCallbacks
-from test.support.integration import SoledadTestBase
-
-
-class StaticFilesTest(SoledadTestBase):
-
- @inlineCallbacks
- def test_should_find_static_file(self):
- _, request = yield self.app_test_client.get('/static/js/main.js', as_json=False, ajax=False)
- self.assertEqual(200, request.responseCode)
diff --git a/service/test/integration/test_tags.py b/service/test/integration/test_tags.py
index d107e320..555a7382 100644
--- a/service/test/integration/test_tags.py
+++ b/service/test/integration/test_tags.py
@@ -31,9 +31,7 @@ class TagsTest(SoledadTestBase):
input_mail = MailBuilder().with_subject('Mail with tags').build_input_mail()
mail = yield self.app_test_client.add_mail_to_inbox(input_mail)
- response, first_request = yield self.app_test_client.get('/', as_json=False)
- session = first_request.getSession()
- yield self.app_test_client.post_tags(mail.ident, self._tags_json(['IMPORTANT']), session)
+ yield self.app_test_client.post_tags(mail.ident, self._tags_json(['IMPORTANT']))
mails = yield self.app_test_client.get_mails_by_tag('inbox')
self.assertEquals({'IMPORTANT'}, set(mails[0].tags))
@@ -43,18 +41,15 @@ class TagsTest(SoledadTestBase):
@defer.inlineCallbacks
def test_use_old_casing_when_same_tag_with_different_casing_is_posted(self):
- response, first_request = yield self.app_test_client.get('/', as_json=False)
- session = first_request.getSession()
-
input_mail = MailBuilder().with_subject('Mail with tags').build_input_mail()
mail = yield self.app_test_client.add_mail_to_inbox(input_mail)
- yield self.app_test_client.post_tags(mail.ident, self._tags_json(['ImPoRtAnT']), session)
+ yield self.app_test_client.post_tags(mail.ident, self._tags_json(['ImPoRtAnT']))
mails = yield self.app_test_client.get_mails_by_tag('ImPoRtAnT')
self.assertEquals({'ImPoRtAnT'}, set(mails[0].tags))
another_input_mail = MailBuilder().with_subject('Mail with tags').build_input_mail()
another_mail = yield self.app_test_client.add_mail_to_inbox(another_input_mail)
- yield self.app_test_client.post_tags(another_mail.ident, self._tags_json(['IMPORTANT']), session)
+ yield self.app_test_client.post_tags(another_mail.ident, self._tags_json(['IMPORTANT']))
mails = yield self.app_test_client.get_mails_by_tag('IMPORTANT')
self.assertEquals(0, len(mails))
mails = yield self.app_test_client.get_mails_by_tag('ImPoRtAnT')
@@ -67,9 +62,7 @@ class TagsTest(SoledadTestBase):
input_mail = MailBuilder().with_subject('Mail with tags').build_input_mail()
mail = yield self.app_test_client.add_mail_to_inbox(input_mail)
- response, first_request = yield self.app_test_client.get('/', as_json=False)
- session = first_request.getSession()
- yield self.app_test_client.post_tags(mail.ident, self._tags_json(['ImPoRtAnT']), session)
+ yield self.app_test_client.post_tags(mail.ident, self._tags_json(['ImPoRtAnT']))
mails = yield self.app_test_client.get_mails_by_tag('important')
self.assertEquals(0, len(mails))
@@ -85,9 +78,7 @@ class TagsTest(SoledadTestBase):
input_mail = MailBuilder().with_subject('Mail with tags').build_input_mail()
mail = yield self.app_test_client.add_mail_to_inbox(input_mail)
- response, first_request = yield self.app_test_client.get('/', as_json=False)
- session = first_request.getSession()
- yield self.app_test_client.post_tags(mail.ident, self._tags_json(['tag1', ' ']), session)
+ yield self.app_test_client.post_tags(mail.ident, self._tags_json(['tag1', ' ']))
mail = yield self.app_test_client.get_mail(mail.ident)
@@ -98,10 +89,8 @@ class TagsTest(SoledadTestBase):
input_mail = MailBuilder().with_subject('Mail with tags').build_input_mail()
mail = yield self.app_test_client.add_mail_to_inbox(input_mail)
- response, first_request = yield self.app_test_client.get('/', as_json=False)
- session = first_request.getSession()
for tag in SPECIAL_TAGS:
- response = yield self.app_test_client.post_tags(mail.ident, self._tags_json([tag.name.upper()]), session)
+ response = yield self.app_test_client.post_tags(mail.ident, self._tags_json([tag.name.upper()]))
self.assertEquals("None of the following words can be used as tags: %s" % tag.name, response)
mail = yield self.app_test_client.mail_store.get_mail(mail.ident)
diff --git a/service/test/integration/test_users_count.py b/service/test/integration/test_users_count.py
index a9813b2c..a03adacf 100644
--- a/service/test/integration/test_users_count.py
+++ b/service/test/integration/test_users_count.py
@@ -31,8 +31,7 @@ class UsersResourceTest(MultiUserSoledadTestBase):
@defer.inlineCallbacks
def test_online_users_count_uses_leap_auth_privileges(self):
- response, first_request = yield self.app_test_client.get('/', as_json=False)
- response, login_request = yield self.app_test_client.login(session=first_request.getSession())
+ response, login_request = yield self.app_test_client.login()
yield response
yield self.wait_for_session_user_id_to_finish()
@@ -41,7 +40,7 @@ class UsersResourceTest(MultiUserSoledadTestBase):
response, request = self.app_test_client.get(
"/users",
json.dumps({'csrftoken': [login_request.getCookie('XSRF-TOKEN')]}),
- session=login_request.getSession(),
+ from_request=login_request,
as_json=False)
yield response
diff --git a/service/test/support/integration/app_test_client.py b/service/test/support/integration/app_test_client.py
index fa695708..d52c85c0 100644
--- a/service/test/support/integration/app_test_client.py
+++ b/service/test/support/integration/app_test_client.py
@@ -38,7 +38,7 @@ from leap.soledad.client import Soledad
from leap.bitmask.mail.adaptors.soledad import SoledadMailAdaptor
from pixelated.adapter.mailstore.leap_attachment_store import LeapAttachmentStore
from pixelated.adapter.services.feedback_service import FeedbackService
-from pixelated.application import UserAgentMode, set_up_protected_resources, get_static_folder
+from pixelated.application import UserAgentMode, set_up_protected_resources
from pixelated.config.sessions import LeapSession
from pixelated.config.services import Services, ServicesFactory, SingleUserServicesFactory
from pixelated.config.site import PixelatedSite
@@ -49,7 +49,6 @@ from pixelated.adapter.search import SearchEngine
from pixelated.adapter.services.draft_service import DraftService
from pixelated.adapter.services.mail_service import MailService
from pixelated.resources.root_resource import RootResource
-from pixelated.resources.session import IPixelatedSession
from test.support.integration.model import MailBuilder
from test.support.test_helper import request_mock
from test.support.integration.model import ResponseMail
@@ -218,7 +217,7 @@ class AppTestClient(object):
services = self._test_account.services
self.service_factory.add_session('someuserid', services)
- self.resource = RootResource(self.service_factory, get_static_folder())
+ self.resource = RootResource(self.service_factory)
provider = mock()
self.resource.initialize(provider)
else:
@@ -227,7 +226,7 @@ class AppTestClient(object):
bonafide_checker = StubAuthenticator(provider)
bonafide_checker.add_user('username', 'password')
- self.resource = set_up_protected_resources(RootResource(self.service_factory, get_static_folder()), provider, self.service_factory, authenticator=bonafide_checker)
+ self.resource = set_up_protected_resources(RootResource(self.service_factory), provider, self.service_factory, authenticator=bonafide_checker)
@defer.inlineCallbacks
def create_user(self, account_name):
@@ -279,23 +278,17 @@ class AppTestClient(object):
request.args = get_args
return self._render(request, as_json)
- def post(self, path, body='', headers=None, ajax=True, csrf='token', session=None):
+ def post(self, path, body='', headers=None, ajax=True, csrf='token'):
headers = headers or {'Content-Type': 'application/json'}
request = request_mock(path=path, method="POST", body=body, headers=headers, ajax=ajax, csrf=csrf)
- if session:
- request.session = session
return self._render(request)
- def put(self, path, body, ajax=True, csrf='token', session=None):
+ def put(self, path, body, ajax=True, csrf='token'):
request = request_mock(path=path, method="PUT", body=body, headers={'Content-Type': ['application/json']}, ajax=ajax, csrf=csrf)
- if session:
- request.session = session
return self._render(request)
- def delete(self, path, body="", ajax=True, csrf='token', session=None):
+ def delete(self, path, body="", ajax=True, csrf='token'):
request = request_mock(path=path, body=body, headers={'Content-Type': ['application/json']}, method="DELETE", ajax=ajax, csrf=csrf)
- if session:
- request.session = session
return self._render(request)
@defer.inlineCallbacks
@@ -306,6 +299,7 @@ class AppTestClient(object):
def account_for(self, username):
return self.accounts[username]
+ # TODO: remove
def add_mail_to_user_inbox(self, input_mail, username):
return self.account_for(username).mail_store.add_mail('INBOX', input_mail.raw)
@@ -334,6 +328,10 @@ class AppTestClient(object):
mail_sender.sendmail.side_effect = lambda mail: succeed(mail)
return mail_sender
+ # TODO: remove
+ def _generate_soledad_test_folder_name(self, soledad_test_folder='/tmp/soledad-test/test'):
+ return os.path.join(soledad_test_folder, str(uuid.uuid4()))
+
def get_mails_by_tag(self, tag, page=1, window=100):
tags = 'tag:%s' % tag
return self.search(tags, page, window)
@@ -348,6 +346,13 @@ class AppTestClient(object):
res = yield res
defer.returnValue([ResponseMail(m) for m in res['mails']])
+ # TODO: remove
+ @defer.inlineCallbacks
+ def get_mails_by_mailbox_name(self, mbox_name):
+ mail_ids = yield self.mail_store.get_mailbox_mail_ids(mbox_name)
+ mails = yield self.mail_store.get_mails(mail_ids)
+ defer.returnValue(mails)
+
@defer.inlineCallbacks
def get_attachment(self, ident, encoding, filename=None, content_type=None, ajax=True, csrf='token'):
params = {'encoding': [encoding]}
@@ -360,20 +365,17 @@ class AppTestClient(object):
defer.returnValue((res, req))
@defer.inlineCallbacks
- def post_attachment(self, data, headers, session):
- csrf = IPixelatedSession(session).get_csrf_token()
- deferred_result, req = self.post('/attachment', body=data, headers=headers, csrf=csrf, session=session)
+ def post_attachment(self, data, headers):
+ deferred_result, req = self.post('/attachment', body=data, headers=headers)
res = yield deferred_result
defer.returnValue((res, req))
- def put_mail(self, data, session):
- csrf = IPixelatedSession(session).get_csrf_token()
- res, req = self.put('/mails', data, csrf=csrf, session=session)
+ def put_mail(self, data):
+ res, req = self.put('/mails', data)
return res, req
- def post_tags(self, mail_ident, tags_json, session):
- csrf = IPixelatedSession(session).get_csrf_token()
- res, req = self.post("/mail/%s/tags" % mail_ident, tags_json, csrf=csrf, session=session)
+ def post_tags(self, mail_ident, tags_json):
+ res, req = self.post("/mail/%s/tags" % mail_ident, tags_json)
return res
def get_tags(self, **kwargs):
@@ -384,24 +386,21 @@ class AppTestClient(object):
res, req = self.get('/mail/%s' % mail_ident)
return res
- def delete_mail(self, mail_ident, session):
- csrf = IPixelatedSession(session).get_csrf_token()
- res, req = self.delete("/mail/%s" % mail_ident, csrf=csrf, session=session)
+ # TODO: remove
+ def delete_mail(self, mail_ident):
+ res, req = self.delete("/mail/%s" % mail_ident)
return res
- def delete_mails(self, idents, session):
- csrf = IPixelatedSession(session).get_csrf_token()
- res, req = self.post("/mails/delete", json.dumps({'idents': idents}), csrf=csrf, session=session)
+ def delete_mails(self, idents):
+ res, req = self.post("/mails/delete", json.dumps({'idents': idents}))
return res
- def mark_many_as_unread(self, idents, session):
- csrf = IPixelatedSession(session).get_csrf_token()
- res, req = self.post('/mails/unread', json.dumps({'idents': idents}), csrf=csrf, session=session)
+ def mark_many_as_unread(self, idents):
+ res, req = self.post('/mails/unread', json.dumps({'idents': idents}))
return res
- def mark_many_as_read(self, idents, session):
- csrf = IPixelatedSession(session).get_csrf_token()
- res, req = self.post('/mails/read', json.dumps({'idents': idents}), csrf=csrf, session=session)
+ def mark_many_as_read(self, idents):
+ res, req = self.post('/mails/read', json.dumps({'idents': idents}))
return res
def get_contacts(self, query):
diff --git a/service/test/support/integration/multi_user_client.py b/service/test/support/integration/multi_user_client.py
index de272e16..82acb210 100644
--- a/service/test/support/integration/multi_user_client.py
+++ b/service/test/support/integration/multi_user_client.py
@@ -19,12 +19,11 @@ from mockito import mock, when, any as ANY
from pixelated.authentication import Authenticator, Authentication
from twisted.internet import defer
-from pixelated.application import UserAgentMode, set_up_protected_resources, get_static_folder
+from pixelated.application import UserAgentMode, set_up_protected_resources
from pixelated.config.services import ServicesFactory
from pixelated.config.sessions import LeapSessionFactory
import pixelated.config.services
-from pixelated.resources import IPixelatedSession
from pixelated.resources.root_resource import RootResource
from test.support.integration import AppTestClient
from test.support.integration.app_test_client import AppTestAccount, StubSRPChecker
@@ -46,7 +45,7 @@ class MultiUserClient(AppTestClient):
self.service_factory = ServicesFactory(UserAgentMode(is_single_user=False))
- root_resource = RootResource(self.service_factory, get_static_folder())
+ root_resource = RootResource(self.service_factory)
leap_provider = mock()
self.credentials_checker = StubSRPChecker(leap_provider)
self.resource = set_up_protected_resources(root_resource, leap_provider, self.service_factory)
@@ -58,41 +57,41 @@ class MultiUserClient(AppTestClient):
else:
when(Authenticator)._bonafide_auth(username, password).thenRaise(SRPAuthError)
- def login(self, username='username', password='password', session=None):
- auth_session = Authentication(username, 'some_user_token', 'some_user_uuid', 'session_id', {'is_admin': False})
+ def login(self, username='username', password='password'):
+ session = Authentication(username, 'some_user_token', 'some_user_uuid', 'session_id', {'is_admin': False})
leap_session = self._test_account.leap_session
- leap_session.user_auth = auth_session
+ leap_session.user_auth = session
config = mock()
config.leap_home = 'some_folder'
leap_session.config = config
leap_session.fresh_account = False
self.leap_session = leap_session
self.services = self._test_account.services
- self.user_auth = auth_session
+ self.user_auth = session
self._mock_bonafide_auth(username, password)
- when(LeapSessionFactory).create(username, password, auth_session).thenReturn(leap_session)
+ when(LeapSessionFactory).create(username, password, session).thenReturn(leap_session)
with patch('mockito.invocation.AnswerSelector', AnswerSelector):
when(leap_session).initial_sync().thenAnswer(lambda: defer.succeed(None))
when(pixelated.config.services).Services(ANY()).thenReturn(self.services)
- csrftoken = IPixelatedSession(session).get_csrf_token()
- request = request_mock(path='/login', method="POST", body={'username': username, 'password': password, 'csrftoken': csrftoken}, ajax=False)
- request.session = session
+ request = request_mock(path='/login', method="POST", body={'username': username, 'password': password})
return self._render(request, as_json=False)
- def get(self, path, get_args='', as_json=True, session=None):
+ def get(self, path, get_args='', as_json=True, from_request=None):
request = request_mock(path)
request.args = get_args
- if session:
+ if from_request:
+ session = from_request.getSession()
request.session = session
return self._render(request, as_json)
- def post(self, path, body='', headers=None, ajax=True, csrf='token', as_json=True, session=None):
+ def post(self, path, body='', headers=None, ajax=True, csrf='token', as_json=True, from_request=None):
headers = headers or {'Content-Type': 'application/json'}
request = request_mock(path=path, method="POST", body=body, headers=headers, ajax=ajax, csrf=csrf)
- if session:
+ if from_request:
+ session = from_request.getSession()
request.session = session
return self._render(request, as_json)
diff --git a/service/test/unit/resources/test_auth.py b/service/test/unit/resources/test_auth.py
deleted file mode 100644
index 3dc3e29f..00000000
--- a/service/test/unit/resources/test_auth.py
+++ /dev/null
@@ -1,73 +0,0 @@
-from mockito import mock, when, any as ANY
-
-from pixelated.application import get_static_folder
-from pixelated.resources.auth import SessionChecker, PixelatedRealm, PixelatedAuthSessionWrapper
-from pixelated.resources.login_resource import LoginResource
-from pixelated.resources.root_resource import RootResource
-from test.unit.resources import DummySite
-from twisted.cred import error
-from twisted.cred.checkers import ANONYMOUS, AllowAnonymousAccess
-from twisted.cred.portal import Portal
-from twisted.internet.defer import succeed, fail
-from twisted.python import failure
-from twisted.trial import unittest
-from twisted.web._auth.wrapper import UnauthorizedResource
-from twisted.web.resource import IResource, getChildForRequest
-from twisted.web.test.requesthelper import DummyRequest
-
-
-class TestPixelatedRealm(unittest.TestCase):
-
- def setUp(self):
- self.authenticated_root_resource = mock()
- self.public_root_resource = mock()
- self.realm = PixelatedRealm(self.authenticated_root_resource, self.public_root_resource)
-
- def test_anonymous_user_gets_anonymous_resource(self):
- interface, avatar, logout_handler = self.realm.requestAvatar(ANONYMOUS, None, IResource)
- self.assertEqual(interface, IResource)
- self.assertIs(avatar, self.public_root_resource)
-
- def test_authenticated_user_gets_root_resource(self):
- interface, avatar, logout_handler = self.realm.requestAvatar('username', None, IResource)
- self.assertEqual(interface, IResource)
- self.assertIs(avatar, self.authenticated_root_resource)
-
-
-class TestPixelatedAuthSessionWrapper(unittest.TestCase):
-
- def setUp(self):
- self.realm_mock = mock()
- services_factory = mock()
- session_checker = SessionChecker(services_factory)
- self.portal = Portal(self.realm_mock, [session_checker, AllowAnonymousAccess()])
- self.user_uuid_mock = mock()
- self.root_resource = RootResource(services_factory, get_static_folder())
- self.anonymous_resource = RootResource(services_factory, get_static_folder(), public=True)
-
- self.session_wrapper = PixelatedAuthSessionWrapper(self.portal)
- self.request = DummyRequest([])
- self.request.prepath = ['']
- self.request.path = '/'
-
- def test_root_url_should_delegate_to_public_root_resource_for_unauthenticated_user(self):
- when(self.realm_mock).requestAvatar(ANONYMOUS, None, IResource).thenReturn((IResource, self.anonymous_resource, lambda: None))
- request = DummyRequest([''])
- deferred_resource = getChildForRequest(self.session_wrapper, request)
- d = deferred_resource.d
-
- def assert_public_root_resource(resource):
- self.assertIs(resource, self.anonymous_resource)
-
- return d.addCallback(assert_public_root_resource)
-
- def test_root_url_should_delegate_to_protected_root_resource_for_authenticated_user(self):
- when(self.realm_mock).requestAvatar(ANY(), None, IResource).thenReturn((IResource, self.root_resource, lambda: None))
- request = DummyRequest([''])
- deferred_resource = getChildForRequest(self.session_wrapper, request)
- d = deferred_resource.d
-
- def assert_protected_root_resource(resource):
- self.assertIsInstance(resource, RootResource)
-
- return d.addCallback(assert_protected_root_resource)
diff --git a/service/test/unit/resources/test_inbox_resource.py b/service/test/unit/resources/test_inbox_resource.py
deleted file mode 100644
index 9af355ca..00000000
--- a/service/test/unit/resources/test_inbox_resource.py
+++ /dev/null
@@ -1,46 +0,0 @@
-import re
-
-from mock import MagicMock, patch
-from mockito import mock, when, any as ANY
-
-from pixelated.application import UserAgentMode
-from pixelated.resources.features_resource import FeaturesResource
-from test.unit.resources import DummySite
-from twisted.trial import unittest
-from twisted.web.test.requesthelper import DummyRequest
-from pixelated.resources.inbox_resource import InboxResource, MODE_STARTUP, MODE_RUNNING
-
-
-class TestInboxResource(unittest.TestCase):
- MAIL_ADDRESS = 'test_user@pixelated-project.org'
-
- def setUp(self):
- mail_service = mock()
- mail_service.account_email = self.MAIL_ADDRESS
-
- services = mock()
- services.mail_service = mail_service
-
- services_factory = mock()
- services_factory.mode = mock()
- when(services_factory).services(ANY()).thenReturn(services)
-
- self.inbox_resource = InboxResource(services_factory)
- self.web = DummySite(self.inbox_resource)
-
- def test_render_GET_should_template_account_email(self):
- self.inbox_resource._html_template = "<html><head><title>$account_email</title></head></html>"
- self.inbox_resource.initialize()
-
- request = DummyRequest([''])
- request.addCookie = lambda key, value: 'stubbed'
-
- d = self.web.get(request)
-
- def assert_response(_):
- expected = "<title>{0}</title>".format(self.MAIL_ADDRESS)
- matches = re.findall(expected, request.written[0])
- self.assertEquals(len(matches), 1)
-
- d.addCallback(assert_response)
- return d
diff --git a/service/test/unit/resources/test_login_resource.py b/service/test/unit/resources/test_login_resource.py
index 1161acc4..45036f8d 100644
--- a/service/test/unit/resources/test_login_resource.py
+++ b/service/test/unit/resources/test_login_resource.py
@@ -157,19 +157,6 @@ class TestLoginResource(unittest.TestCase):
d.addCallback(assert_default_invalid_banner_disclaimer_rendered)
return d
- def test_form_should_contain_csrftoken_input(self):
- request = DummyRequest([''])
-
- d = self.web.get(request)
-
- def assert_form_has_csrftoken_input(_):
- input_username = 'name="csrftoken"'
- written_response = ''.join(request.written)
- self.assertIn(input_username, written_response)
-
- d.addCallback(assert_form_has_csrftoken_input)
- return d
-
class TestLoginPOST(unittest.TestCase):
def setUp(self):
@@ -235,7 +222,7 @@ class TestLoginPOST(unittest.TestCase):
def assert_interstitial_in_response(_):
mock_authenticate.assert_called_once_with(self.username, self.password)
- interstitial_js_in_template = '<script src="static/Interstitial.js"></script>'
+ interstitial_js_in_template = '<script src="startup-assets/Interstitial.js"></script>'
self.assertIn(interstitial_js_in_template, self.request.written[0])
d.addCallback(assert_interstitial_in_response)
diff --git a/service/test/unit/resources/test_root_resource.py b/service/test/unit/resources/test_root_resource.py
index 1edba98c..4ff11ce8 100644
--- a/service/test/unit/resources/test_root_resource.py
+++ b/service/test/unit/resources/test_root_resource.py
@@ -1,95 +1,14 @@
-import os
+import unittest
import re
from mock import MagicMock, patch
from mockito import mock, when, any as ANY
-import pixelated
-from pixelated.application import UserAgentMode, get_static_folder
-from pixelated.resources import IPixelatedSession, UnAuthorizedResource
+from pixelated.application import UserAgentMode
from pixelated.resources.features_resource import FeaturesResource
-from pixelated.resources.login_resource import LoginResource
from test.unit.resources import DummySite
-from twisted.cred.checkers import ANONYMOUS
-from twisted.internet.defer import succeed
-from twisted.trial import unittest
-from twisted.web.resource import IResource, getChildForRequest
-from twisted.web.static import File
from twisted.web.test.requesthelper import DummyRequest
-from pixelated.resources.root_resource import InboxResource, RootResource, MODE_STARTUP, MODE_RUNNING
-
-
-class TestPublicRootResource(unittest.TestCase):
-
- def setUp(self):
- self.public_root_resource = RootResource(mock(), get_static_folder(), public=True)
- self.web = DummySite(self.public_root_resource)
-
- @patch('pixelated.resources.mails_resource.events.register')
- def test_put_child_public_adds_resource(self, *mocks):
- self.public_root_resource.initialize(provider=mock(), authenticator=mock())
- url_fragment, resource_mock = 'some-url-fragment', mock()
- self.public_root_resource.putChildPublic(url_fragment, resource_mock)
- request = DummyRequest([url_fragment])
- request.addCookie = MagicMock(return_value='stubbed')
- child_resource = getChildForRequest(self.public_root_resource, request)
- self.assertIs(child_resource, resource_mock)
-
- @patch('pixelated.resources.mails_resource.events.register')
- def test_put_child_protected_adds_unauthorized(self, *mocks):
- self.public_root_resource.initialize(provider=mock(), authenticator=mock())
- url_fragment, resource_mock = 'some-url-fragment', mock()
- self.public_root_resource.putChildProtected(url_fragment, resource_mock)
- request = DummyRequest([url_fragment])
- request.addCookie = MagicMock(return_value='stubbed')
- child_resource = getChildForRequest(self.public_root_resource, request)
- self.assertIsInstance(child_resource, UnAuthorizedResource)
-
- @patch('pixelated.resources.mails_resource.events.register')
- def test_put_child_adds_unauthorized(self, *mocks):
- self.public_root_resource.initialize(provider=mock(), authenticator=mock())
- url_fragment, resource_mock = 'some-url-fragment', mock()
- self.public_root_resource.putChild(url_fragment, resource_mock)
- request = DummyRequest([url_fragment])
- request.addCookie = MagicMock(return_value='stubbed')
- child_resource = getChildForRequest(self.public_root_resource, request)
- self.assertIsInstance(child_resource, UnAuthorizedResource)
-
- @patch('pixelated.resources.mails_resource.events.register')
- def test_private_resource_returns_401(self, *mocks):
- self.public_root_resource.initialize(provider=mock(), authenticator=mock())
- request = DummyRequest(['mails'])
- request.addCookie = MagicMock(return_value='stubbed')
- d = self.web.get(request)
-
- def assert_unauthorized(request):
- self.assertEqual(401, request.responseCode)
- self.assertEqual("Unauthorized!", request.written[0])
-
- d.addCallback(assert_unauthorized)
- return d
-
- @patch('pixelated.resources.mails_resource.events.register')
- def test_login_url_should_delegate_to_login_resource(self, *mocks):
- self.public_root_resource.initialize(provider=mock(), authenticator=mock())
- request = DummyRequest(['login'])
- request.addCookie = MagicMock(return_value='stubbed')
- child_resource = getChildForRequest(self.public_root_resource, request)
- self.assertIsInstance(child_resource, LoginResource)
-
- @patch('pixelated.resources.mails_resource.events.register')
- def test_root_url_should_redirect_to_login_resource(self, *mocks):
- self.public_root_resource.initialize(provider=mock(), authenticator=mock())
- request = DummyRequest([''])
- request.addCookie = MagicMock(return_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
+from pixelated.resources.root_resource import RootResource, MODE_STARTUP, MODE_RUNNING
class TestRootResource(unittest.TestCase):
@@ -105,46 +24,29 @@ class TestRootResource(unittest.TestCase):
when(self.services_factory).services(ANY()).thenReturn(self.services)
self.mail_service.account_email = self.MAIL_ADDRESS
- self.root_resource = RootResource(self.services_factory, get_static_folder())
- self.web = DummySite(self.root_resource)
-
- @patch('pixelated.resources.mails_resource.events.register')
- def test_put_child_protected_adds_resource(self, *mocks):
- self.root_resource.initialize(provider=mock(), authenticator=mock())
- url_fragment, resource_mock = 'some-url-fragment', mock()
- self.root_resource.putChildProtected(url_fragment, resource_mock)
- request = DummyRequest([url_fragment])
- request.addCookie = MagicMock(return_value='stubbed')
- child_resource = getChildForRequest(self.root_resource, request)
- self.assertIs(child_resource, resource_mock)
-
- @patch('pixelated.resources.mails_resource.events.register')
- def test_put_child_adds_resource(self, *mocks):
- self.root_resource.initialize(provider=mock(), authenticator=mock())
- url_fragment, resource_mock = 'some-url-fragment', mock()
- self.root_resource.putChild(url_fragment, resource_mock)
- request = DummyRequest([url_fragment])
- request.addCookie = MagicMock(return_value='stubbed')
- child_resource = getChildForRequest(self.root_resource, request)
- self.assertIs(child_resource, resource_mock)
-
- def test_root_url_should_delegate_to_inbox(self):
+ root_resource = RootResource(self.services_factory)
+ root_resource._html_template = "<html><head><title>$account_email</title></head></html>"
+ root_resource._mode = root_resource
+ self.web = DummySite(root_resource)
+ self.root_resource = root_resource
+
+ def test_render_GET_should_template_account_email(self):
request = DummyRequest([''])
- request.addCookie = MagicMock(return_value='stubbed')
- child_resource = getChildForRequest(self.root_resource, request)
- self.assertIsInstance(child_resource, InboxResource)
-
- @patch('pixelated.resources.mails_resource.events.register')
- def test_login_url_should_delegate_to_login_resource(self, *mocks):
- self.root_resource.initialize(provider=mock(), authenticator=mock())
- request = DummyRequest(['login'])
- request.addCookie = MagicMock(return_value='stubbed')
- child_resource = getChildForRequest(self.root_resource, request)
- self.assertIsInstance(child_resource, LoginResource)
+ request.addCookie = lambda key, value: 'stubbed'
+
+ d = self.web.get(request)
+
+ def assert_response(_):
+ expected = "<title>{0}</title>".format(self.MAIL_ADDRESS)
+ matches = re.findall(expected, request.written[0])
+ self.assertEquals(len(matches), 1)
+
+ d.addCallback(assert_response)
+ return d
def _test_should_renew_xsrf_cookie(self):
request = DummyRequest([''])
- request.addCookie = MagicMock(return_value='stubbed')
+ request.addCookie = MagicMock()
generated_csrf_token = 'csrf_token'
mock_sha = MagicMock()
mock_sha.hexdigest = MagicMock(return_value=generated_csrf_token)
@@ -170,7 +72,6 @@ class TestRootResource(unittest.TestCase):
self.root_resource._mode = MODE_STARTUP
request = DummyRequest(['/child'])
- request.addCookie = MagicMock(return_value='stubbed')
request.getCookie = MagicMock(return_value='irrelevant -- stubbed')
d = self.web.get(request)
@@ -186,12 +87,8 @@ class TestRootResource(unittest.TestCase):
request.requestHeaders.setRawHeaders('x-requested-with', ['XMLHttpRequest'])
request.requestHeaders.setRawHeaders('x-xsrf-token', [csrf_token])
- @patch('pixelated.resources.mails_resource.events.register')
- def test_should_unauthorize_child_resource_ajax_requests_when_csrf_mismatch(self, *mocks):
- self.root_resource.initialize(provider=mock(), authenticator=mock())
-
+ def test_should_unauthorize_child_resource_ajax_requests_when_csrf_mismatch(self):
request = DummyRequest(['/child'])
- request.addCookie = MagicMock(return_value='stubbed')
request.method = 'POST'
self._mock_ajax_csrf(request, 'stubbed csrf token')
@@ -206,46 +103,11 @@ class TestRootResource(unittest.TestCase):
d.addCallback(assert_unauthorized)
return d
- def test_GET_should_return_503_for_uninitialized_resource(self):
- request = DummyRequest(['/sandbox/'])
- request.addCookie = MagicMock(return_value='stubbed')
- request.method = 'GET'
-
- request.getCookie = MagicMock(return_value='stubbed csrf token')
-
- d = self.web.get(request)
-
- def assert_unavailable(_):
- self.assertEqual(503, request.responseCode)
-
- d.addCallback(assert_unavailable)
- return d
-
- @patch('pixelated.resources.mails_resource.events.register')
- def test_GET_should_return_404_for_non_existing_resource(self, *mocks):
- self.root_resource.initialize(provider=mock(), authenticator=mock())
-
- request = DummyRequest(['non-existing-child'])
- request.addCookie = MagicMock(return_value='stubbed')
- request.method = 'GET'
- request.getCookie = MagicMock(return_value='stubbed csrf token')
-
- d = self.web.get(request)
-
- def assert_not_found(_):
- self.assertEqual(404, request.responseCode)
-
- d.addCallback(assert_not_found)
- return d
-
- @patch('pixelated.resources.mails_resource.events.register')
- def test_should_404_non_existing_resource_with_valid_csrf(self, *mocks):
- self.root_resource.initialize(provider=mock(), authenticator=mock())
-
- request = DummyRequest(['non-existing-child'])
- request.addCookie = MagicMock(return_value='stubbed')
+ def test_should_404_non_existing_resource_with_valid_csrf(self):
+ request = DummyRequest(['/non-existing-child'])
request.method = 'POST'
self._mock_ajax_csrf(request, 'stubbed csrf token')
+
request.getCookie = MagicMock(return_value='stubbed csrf token')
d = self.web.get(request)
@@ -259,10 +121,9 @@ class TestRootResource(unittest.TestCase):
def test_should_authorize_child_resource_non_ajax_GET_requests(self):
request = DummyRequest(['features'])
- request.addCookie = MagicMock(return_value='stubbed')
request.getCookie = MagicMock(return_value='irrelevant -- stubbed')
- self.root_resource.putChild('features', FeaturesResource())
+ self.root_resource._child_resources.add('features', FeaturesResource())
self.root_resource._mode = MODE_RUNNING
d = self.web.get(request)
@@ -273,10 +134,7 @@ class TestRootResource(unittest.TestCase):
d.addCallback(assert_unauthorized)
return d
- @patch('pixelated.resources.mails_resource.events.register')
- def test_should_unauthorize_child_resource_non_ajax_POST_requests_when_csrf_input_mismatch(self, *mocks):
- self.root_resource.initialize(provider=mock(), authenticator=mock())
-
+ def test_should_unauthorize_child_resource_non_ajax_POST_requests_when_csrf_input_mismatch(self):
request = DummyRequest(['mails'])
request.method = 'POST'
request.addArg('csrftoken', 'some csrf token')
@@ -284,7 +142,6 @@ class TestRootResource(unittest.TestCase):
mock_content.read = MagicMock(return_value={})
request.content = mock_content
- request.addCookie = MagicMock(return_value='stubbed')
request.getCookie = MagicMock(return_value='mismatched csrf token')
d = self.web.get(request)
@@ -295,62 +152,3 @@ class TestRootResource(unittest.TestCase):
d.addCallback(assert_unauthorized)
return d
-
- @patch('pixelated.resources.mails_resource.events.register')
- def test_assets_should_be_publicly_available(self, *mocks):
- self.root_resource.initialize(provider=mock(), authenticator=mock())
-
- request = DummyRequest(['static', 'dummy.json'])
- request.addCookie = MagicMock(return_value='stubbed')
- d = self.web.get(request)
-
- def assert_response(_):
- self.assertEqual(200, request.responseCode)
-
- d.addCallback(assert_response)
- return d
-
- @patch('pixelated.resources.mails_resource.events.register')
- def test_login_should_be_publicly_available(self, *mocks):
- self.root_resource.initialize(provider=mock(), authenticator=mock())
-
- request = DummyRequest(['login'])
- request.addCookie = MagicMock(return_value='stubbed')
- d = self.web.get(request)
-
- def assert_response(_):
- self.assertEqual(200, request.responseCode)
-
- d.addCallback(assert_response)
- return d
-
- def test_root_should_be_handled_by_inbox_resource(self):
- request = DummyRequest([])
- request.addCookie = MagicMock(return_value='stubbed')
- request.prepath = ['']
- request.path = '/'
-
- resource = self.root_resource.getChildWithDefault(request.prepath[-1], request)
- self.assertIsInstance(resource, InboxResource)
-
- def test_inbox_should_not_be_public(self):
- request = DummyRequest([])
- request.addCookie = MagicMock(return_value='stubbed')
- request.prepath = ['']
- request.path = '/'
-
- resource = self.root_resource.getChildWithDefault(request.prepath[-1], request)
- self.assertIsInstance(resource, InboxResource)
-
- def test_every_url_should_get_csrftoken_header(self):
- # self.root_resource.initialize(provider=mock(), authenticator=mock())
- request = DummyRequest(['any'])
- request.addCookie = MagicMock(return_value='stubbed')
- d = self.web.get(request)
-
- def assert_add_cookie_called_for_csrftoken(request):
- csrftoken = IPixelatedSession(request.getSession()).get_csrf_token()
- self.assertEqual([(('XSRF-TOKEN', csrftoken),)], request.addCookie.call_args_list)
-
- d.addCallback(assert_add_cookie_called_for_csrftoken)
- return d
diff --git a/service/test/unit/resources/test_session.py b/service/test/unit/resources/test_session.py
deleted file mode 100644
index fe47483d..00000000
--- a/service/test/unit/resources/test_session.py
+++ /dev/null
@@ -1,25 +0,0 @@
-from twisted.trial import unittest
-from mockito import mock
-from pixelated.resources.session import CSRF_TOKEN_LENGTH, PixelatedSession
-
-
-class TestPixelatedSession(unittest.TestCase):
-
- def setUp(self):
- self.pixelated_session = PixelatedSession(mock())
-
- def test_csrf_token_should_be_configured_length(self):
- self.assertEqual(len(self.pixelated_session.get_csrf_token()), 2 * CSRF_TOKEN_LENGTH)
-
- def test_csrf_token_should_be_hexdigested(self):
- self.assertTrue(all(c in '0123456789abcdef' for c in self.pixelated_session.get_csrf_token()))
-
- def test_csrf_token_should_always_be_the_same_for_one_session(self):
- first_csrf_token = self.pixelated_session.get_csrf_token()
- second_csrf_token = self.pixelated_session.get_csrf_token()
- self.assertEqual(first_csrf_token, second_csrf_token)
-
- def test_csrf_token_should_be_different_for_different_session(self):
- first_csrf_token = self.pixelated_session.get_csrf_token()
- second_csrf_token = PixelatedSession(mock()).get_csrf_token()
- self.assertNotEqual(first_csrf_token, second_csrf_token)
diff --git a/service/test/unit/test_welcome_mail.py b/service/test/unit/test_welcome_mail.py
index 42e21e8d..7eb65903 100644
--- a/service/test/unit/test_welcome_mail.py
+++ b/service/test/unit/test_welcome_mail.py
@@ -41,7 +41,8 @@ class TestWelcomeMail(unittest.TestCase):
with open(os.path.join(current_path,
'..',
'..',
- 'templates',
+ 'pixelated',
+ 'assets',
'welcome.mail.pt-BR')) as mail_template_file:
mail_template = message_from_file(mail_template_file)