diff options
| -rw-r--r-- | service/pixelated/account_recovery.py | 8 | ||||
| -rw-r--r-- | service/pixelated/resources/backup_account_resource.py | 6 | ||||
| -rw-r--r-- | service/pixelated/resources/root_resource.py | 2 | ||||
| -rw-r--r-- | service/test/unit/resources/test_backup_account_resource.py | 8 | ||||
| -rw-r--r-- | service/test/unit/test_account_recovery.py | 19 | 
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()) | 
