summaryrefslogtreecommitdiff
path: root/service
diff options
context:
space:
mode:
authorTulio Casagrande <tcasagra@thoughtworks.com>2017-04-10 17:38:50 -0300
committerTulio Casagrande <tcasagra@thoughtworks.com>2017-04-10 17:38:50 -0300
commit264da7ad65744ebdf7f1f467b0a86e6565d7d7a5 (patch)
treee2445f40ba9d1b7c779eb4997f879b8449043dcf /service
parent93ff3bf0f2a364c14c2354b7678b40fd2ccd2645 (diff)
[#927] Send recovery code using provider domain
with @deniscostadsc
Diffstat (limited to 'service')
-rw-r--r--service/pixelated/account_recovery.py8
-rw-r--r--service/pixelated/resources/backup_account_resource.py6
-rw-r--r--service/pixelated/resources/root_resource.py2
-rw-r--r--service/test/unit/resources/test_backup_account_resource.py8
-rw-r--r--service/test/unit/test_account_recovery.py19
5 files changed, 27 insertions, 16 deletions
diff --git a/service/pixelated/account_recovery.py b/service/pixelated/account_recovery.py
index c0a18792..13313996 100644
--- a/service/pixelated/account_recovery.py
+++ b/service/pixelated/account_recovery.py
@@ -25,11 +25,12 @@ log = Logger()
class AccountRecovery(object):
- def __init__(self, session, soledad, smtp_config, backup_email):
+ def __init__(self, session, soledad, smtp_config, backup_email, domain):
self._bonafide_session = session
self._soledad = soledad
self._smtp_config = smtp_config
self._backup_email = backup_email
+ self._domain = domain
@inlineCallbacks
def update_recovery_code(self):
@@ -47,15 +48,16 @@ class AccountRecovery(object):
@inlineCallbacks
def _send_mail(self, code, backup_email):
+ sender = 'team@{}'.format(self._domain)
msg = MIMEText('Your code %s' % code)
msg['Subject'] = 'Recovery Code'
- msg['From'] = 'team@pixelated-project.org'
+ msg['From'] = sender
msg['To'] = backup_email
try:
send_mail_result = yield smtp.sendmail(
str(self._smtp_config.remote_smtp_host),
- 'team@pixelated-project.org',
+ sender,
[backup_email],
msg.as_string())
returnValue(send_mail_result)
diff --git a/service/pixelated/resources/backup_account_resource.py b/service/pixelated/resources/backup_account_resource.py
index f51ac2ec..db6c5c58 100644
--- a/service/pixelated/resources/backup_account_resource.py
+++ b/service/pixelated/resources/backup_account_resource.py
@@ -38,9 +38,10 @@ class BackupAccountPage(Element):
class BackupAccountResource(BaseResource):
isLeaf = True
- def __init__(self, services_factory, authenticator):
+ def __init__(self, services_factory, authenticator, leap_provider):
BaseResource.__init__(self, services_factory)
self._authenticator = authenticator
+ self._leap_provider = leap_provider
def render_GET(self, request):
request.setResponseCode(OK)
@@ -55,7 +56,8 @@ class BackupAccountResource(BaseResource):
self._authenticator.bonafide_session,
self.soledad(request),
self._service(request, '_leap_session').smtp_config,
- self._get_backup_email(request))
+ self._get_backup_email(request),
+ self._leap_provider.server_name)
def update_response(response):
request.setResponseCode(NO_CONTENT)
diff --git a/service/pixelated/resources/root_resource.py b/service/pixelated/resources/root_resource.py
index d860c422..896bc24b 100644
--- a/service/pixelated/resources/root_resource.py
+++ b/service/pixelated/resources/root_resource.py
@@ -93,7 +93,7 @@ class RootResource(BaseResource):
def initialize(self, provider=None, disclaimer_banner=None, authenticator=None):
self._child_resources.add('assets', File(self._protected_static_folder))
self._child_resources.add(AccountRecoveryResource.BASE_URL, AccountRecoveryResource(self._services_factory))
- self._child_resources.add('backup-account', BackupAccountResource(self._services_factory, authenticator))
+ self._child_resources.add('backup-account', BackupAccountResource(self._services_factory, authenticator, provider))
self._child_resources.add('sandbox', SandboxResource(self._protected_static_folder))
self._child_resources.add('keys', KeysResource(self._services_factory))
self._child_resources.add(AttachmentsResource.BASE_URL, AttachmentsResource(self._services_factory))
diff --git a/service/test/unit/resources/test_backup_account_resource.py b/service/test/unit/resources/test_backup_account_resource.py
index e5e2793a..d6999c96 100644
--- a/service/test/unit/resources/test_backup_account_resource.py
+++ b/service/test/unit/resources/test_backup_account_resource.py
@@ -28,7 +28,10 @@ from test.unit.resources import DummySite
class TestBackupAccountResource(unittest.TestCase):
def setUp(self):
self.services_factory = MagicMock()
- self.resource = BackupAccountResource(self.services_factory, MagicMock())
+ self.authenticator = MagicMock()
+ self.leap_provider = MagicMock()
+ self.leap_provider.server_name = 'test.com'
+ self.resource = BackupAccountResource(self.services_factory, self.authenticator, self.leap_provider)
self.web = DummySite(self.resource)
def test_get(self):
@@ -59,7 +62,8 @@ class TestBackupAccountResource(unittest.TestCase):
self.resource._authenticator.bonafide_session,
self.resource.soledad(request),
self.resource._service(request, '_leap_session').smtp_config,
- self.resource._get_backup_email(request))
+ self.resource._get_backup_email(request),
+ self.leap_provider.server_name)
mock_account_recovery.update_recovery_code.assert_called()
d.addCallback(assert_update_recovery_code_called)
diff --git a/service/test/unit/test_account_recovery.py b/service/test/unit/test_account_recovery.py
index f113169a..cd6835a9 100644
--- a/service/test/unit/test_account_recovery.py
+++ b/service/test/unit/test_account_recovery.py
@@ -32,14 +32,16 @@ class AccountRecoveryTest(unittest.TestCase):
self.mock_soledad = Mock()
self.mock_smtp_config = Mock()
self.keymanager = Mock()
- self.mock_smtp_config.remote_smtp_host = 'test.com'
+ self.mock_smtp_config.remote_smtp_host = 'localhost'
self.mock_soledad.create_recovery_code.return_value = self.generated_code
self.backup_email = 'test@test.com'
+ self.domain = 'test.com'
self.account_recovery = AccountRecovery(
self.mock_bonafide_session,
self.mock_soledad,
self.mock_smtp_config,
- self.backup_email)
+ self.backup_email,
+ self.domain)
self.mock_smtp = Mock()
@defer.inlineCallbacks
@@ -50,9 +52,10 @@ class AccountRecoveryTest(unittest.TestCase):
@defer.inlineCallbacks
def test_send_recovery_code_by_email(self):
+ sender = 'team@{}'.format(self.domain)
msg = MIMEText('Your code %s' % self.generated_code)
msg['Subject'] = 'Recovery Code'
- msg['From'] = 'team@pixelated-project.org'
+ msg['From'] = sender
msg['To'] = self.backup_email
result = MagicMock()
@@ -60,8 +63,8 @@ class AccountRecoveryTest(unittest.TestCase):
with patch.object(smtp, 'sendmail', return_value=deferred_sendmail) as mock_sendmail:
response = yield self.account_recovery._send_mail(self.generated_code, self.backup_email)
- mock_sendmail.assert_called_with(
- 'test.com',
- 'team@pixelated-project.org',
- [self.backup_email],
- msg.as_string())
+ mock_sendmail.assert_called_with(
+ self.mock_smtp_config.remote_smtp_host,
+ sender,
+ [self.backup_email],
+ msg.as_string())