summaryrefslogtreecommitdiff
path: root/service/test/unit
diff options
context:
space:
mode:
Diffstat (limited to 'service/test/unit')
-rw-r--r--service/test/unit/resources/test_backup_account_resource.py7
-rw-r--r--service/test/unit/resources/test_login_resource.py23
-rw-r--r--service/test/unit/support/test_language.py40
-rw-r--r--service/test/unit/test_account_recovery.py51
4 files changed, 88 insertions, 33 deletions
diff --git a/service/test/unit/resources/test_backup_account_resource.py b/service/test/unit/resources/test_backup_account_resource.py
index 220e3909..e16fa0e1 100644
--- a/service/test/unit/resources/test_backup_account_resource.py
+++ b/service/test/unit/resources/test_backup_account_resource.py
@@ -44,8 +44,10 @@ class TestBackupAccountResource(unittest.TestCase):
d.addCallback(assert_200_when_user_logged_in)
return d
+ @patch('pixelated.resources.backup_account_resource.parse_accept_language')
@patch('pixelated.resources.backup_account_resource.AccountRecovery')
- def test_post_updates_recovery_code(self, mock_account_recovery_init):
+ def test_post_updates_recovery_code(self, mock_account_recovery_init, mock_language):
+ mock_language.return_value = 'pt-BR'
mock_account_recovery = MagicMock()
mock_account_recovery_init.return_value = mock_account_recovery
mock_account_recovery.update_recovery_code.return_value = defer.succeed("Success")
@@ -61,7 +63,8 @@ class TestBackupAccountResource(unittest.TestCase):
self.resource.soledad(request),
self.resource._service(request, '_leap_session').smtp_config,
self.resource._get_backup_email(request),
- self.leap_provider.server_name)
+ self.leap_provider.server_name,
+ language='pt-BR')
mock_account_recovery.update_recovery_code.assert_called()
d.addCallback(assert_update_recovery_code_called)
diff --git a/service/test/unit/resources/test_login_resource.py b/service/test/unit/resources/test_login_resource.py
index eaaba1d4..03d61758 100644
--- a/service/test/unit/resources/test_login_resource.py
+++ b/service/test/unit/resources/test_login_resource.py
@@ -24,30 +24,9 @@ from twisted.trial import unittest
from twisted.web.test.requesthelper import DummyRequest
from pixelated.resources.login_resource import LoginResource, LoginStatusResource
-from pixelated.resources.login_resource import parse_accept_language
from test.unit.resources import DummySite
-class TestParseAcceptLanguage(unittest.TestCase):
- def test_parse_pt_br_simple(self):
- all_headers = {
- 'accept-language': 'pt-BR,pt;q=0.8,en-US;q=0.5,en;q=0.3'}
- parsed_language = parse_accept_language(all_headers)
- self.assertEqual('pt-BR', parsed_language)
-
- def test_parse_en_us_simple(self):
- all_headers = {
- 'accept-language': 'en-US,en;q=0.8,en-US;q=0.5,en;q=0.3'}
- parsed_language = parse_accept_language(all_headers)
- self.assertEqual('en-US', parsed_language)
-
- def test_parse_pt_br_as_default(self):
- all_headers = {
- 'accept-language': 'de-DE,de;q=0.8,en-US;q=0.5,en;q=0.3'}
- parsed_language = parse_accept_language(all_headers)
- self.assertEqual('pt-BR', parsed_language)
-
-
class TestLoginResource(unittest.TestCase):
def setUp(self):
self.services_factory = mock()
@@ -252,7 +231,7 @@ class TestLoginPOST(unittest.TestCase):
d = self.web.get(self.request)
def assert_login_setup_service_for_user(_):
- mock_user_bootstrap_setup.assert_called_once_with(self.user_auth, self.password, 'pt-BR')
+ mock_user_bootstrap_setup.assert_called_once_with(self.user_auth, self.password, 'en-US')
d.addCallback(assert_login_setup_service_for_user)
return d
diff --git a/service/test/unit/support/test_language.py b/service/test/unit/support/test_language.py
new file mode 100644
index 00000000..b84f3a23
--- /dev/null
+++ b/service/test/unit/support/test_language.py
@@ -0,0 +1,40 @@
+#
+# Copyright (c) 2017 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.trial import unittest
+
+from pixelated.support.language import parse_accept_language
+
+
+class TestParseAcceptLanguage(unittest.TestCase):
+ def test_parse_pt_br_simple(self):
+ all_headers = {
+ 'accept-language': 'pt-BR,pt;q=0.8,en-US;q=0.5,en;q=0.3'}
+ parsed_language = parse_accept_language(all_headers)
+ self.assertEqual('pt-BR', parsed_language)
+
+ def test_parse_en_us_simple(self):
+ all_headers = {
+ 'accept-language': 'en-US,en;q=0.8,en-US;q=0.5,en;q=0.3'}
+ parsed_language = parse_accept_language(all_headers)
+ self.assertEqual('en-US', parsed_language)
+
+ def test_parse_en_us_as_default(self):
+ all_headers = {
+ 'accept-language': 'de-DE,de;q=0.8,en-US;q=0.5,en;q=0.3'}
+ parsed_language = parse_accept_language(all_headers)
+ self.assertEqual('en-US', parsed_language)
diff --git a/service/test/unit/test_account_recovery.py b/service/test/unit/test_account_recovery.py
index b0edc466..4dc9621f 100644
--- a/service/test/unit/test_account_recovery.py
+++ b/service/test/unit/test_account_recovery.py
@@ -50,25 +50,58 @@ class AccountRecoveryTest(unittest.TestCase):
yield self.account_recovery.update_recovery_code()
self.mock_bonafide_session.update_recovery_code.assert_called_once_with(self.generated_code)
+ @defer.inlineCallbacks
+ def test_creates_recovery_code(self):
+ when(self.account_recovery)._send_mail(ANY).thenReturn(defer.succeed(None))
+ yield self.account_recovery.update_recovery_code()
+ self.mock_soledad.create_recovery_code.assert_called_once()
+
+ @patch('pixelated.account_recovery.smtp.sendmail')
+ @patch('pixelated.account_recovery.pkg_resources.resource_filename')
+ @defer.inlineCallbacks
+ def test_default_email_template(self, mock_resource, mock_sendmail):
+ mock_sendmail.return_value = defer.succeed(None)
+
+ with patch('pixelated.account_recovery.open', mock_open(read_data=''), create=True):
+ yield self.account_recovery.update_recovery_code()
+ mock_resource.assert_called_once_with('pixelated.assets',
+ 'recovery.mail.en-US')
+
+ @patch('pixelated.account_recovery.smtp.sendmail')
+ @patch('pixelated.account_recovery.pkg_resources.resource_filename')
+ @defer.inlineCallbacks
+ def test_portuguese_email_template(self, mock_resource, mock_sendmail):
+ self.account_recovery = AccountRecovery(
+ self.mock_bonafide_session,
+ self.mock_soledad,
+ self.mock_smtp_config,
+ self.backup_email,
+ self.domain,
+ language='pt-BR')
+ mock_sendmail.return_value = defer.succeed(None)
+
+ with patch('pixelated.account_recovery.open', mock_open(read_data=''), create=True):
+ yield self.account_recovery.update_recovery_code()
+ mock_resource.assert_called_once_with('pixelated.assets',
+ 'recovery.mail.pt-BR')
+
+ @patch('pixelated.account_recovery.formatdate')
@patch('pixelated.account_recovery.smtp.sendmail')
@patch('pixelated.account_recovery.pkg_resources.resource_filename')
@defer.inlineCallbacks
- def test_send_recovery_code_by_email(self, mock_resource, mock_sendmail):
+ def test_send_recovery_code_by_email(self, mock_resource, mock_sendmail, mock_formatdate):
mock_sendmail.return_value = defer.succeed(None)
+ mock_formatdate.return_value = 'Sat, 21 Mar 2015 19:30:09 -0300'
sender = 'team@{}'.format(self.domain)
- mock_file_content = '{domain}, {recovery_code}, {account_recovery_url}'
- recovery_code_email = 'test.com, 4645a2f8997e5d0d, test.com/account-recovery'
- msg = MIMEText(recovery_code_email)
- msg['Subject'] = 'Recovery Code'
- msg['From'] = sender
- msg['To'] = self.backup_email
+ mock_file_content = '{backup_email}, {sender}, {date}, {domain}, {recovery_code}'
+ recovery_code_email = '\ntest@test.com, team@test.com, Sat, 21 Mar 2015 19:30:09 -0300, test.com, 34363435613266383939376535643064'
with patch('pixelated.account_recovery.open', mock_open(read_data=mock_file_content), create=True):
- yield self.account_recovery._send_mail(self.generated_code, self.backup_email)
+ yield self.account_recovery.update_recovery_code()
mock_sendmail.assert_called_with(
self.mock_smtp_config.remote_smtp_host,
sender,
[self.backup_email],
- msg.as_string())
+ recovery_code_email)