summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnike Arni <aarni@thoughtworks.com>2017-03-17 11:18:39 -0300
committerAnike Arni <aarni@thoughtworks.com>2017-03-17 11:18:39 -0300
commit067db035910c8284d508401c34ca4cb5928c2b52 (patch)
treebe4e94c21c6b6cf29a5d26b1debecbbf36b87fc2
parent3bc6901663c60e6b477477bd6e47e9f60fbb895b (diff)
[#1012] Generates recovery code in soledad client
with @tayanefernandes
-rw-r--r--service/pixelated/account_recovery.py8
-rw-r--r--service/pixelated/resources/backup_account_resource.py4
-rw-r--r--service/requirements.txt2
-rw-r--r--service/test/unit/resources/test_backup_account_resource.py7
-rw-r--r--service/test/unit/test_account_recovery.py9
5 files changed, 20 insertions, 10 deletions
diff --git a/service/pixelated/account_recovery.py b/service/pixelated/account_recovery.py
index cca88760..234bb1fe 100644
--- a/service/pixelated/account_recovery.py
+++ b/service/pixelated/account_recovery.py
@@ -20,13 +20,15 @@ log = Logger()
class AccountRecovery(object):
- def __init__(self, session):
- self._session = session
+ def __init__(self, session, soledad):
+ self._bonafide_session = session
+ self._soledad = soledad
@inlineCallbacks
def update_recovery_code(self):
try:
- response = yield self._session.update_recovery_code('123')
+ code = self._soledad.create_recovery_code()
+ response = yield self._bonafide_session.update_recovery_code(code)
returnValue(response)
except Exception as e:
log.warn('Something went wrong when trying to save the recovery code')
diff --git a/service/pixelated/resources/backup_account_resource.py b/service/pixelated/resources/backup_account_resource.py
index 7c66336f..ca32e973 100644
--- a/service/pixelated/resources/backup_account_resource.py
+++ b/service/pixelated/resources/backup_account_resource.py
@@ -49,7 +49,9 @@ class BackupAccountResource(BaseResource):
return renderElement(request, site)
def render_POST(self, request):
- account_recovery = AccountRecovery(self._authenticator.bonafide_session)
+ account_recovery = AccountRecovery(
+ self._authenticator.bonafide_session,
+ self._services(request)._leap_session.soledad)
def update_response(response):
request.setResponseCode(NO_CONTENT)
diff --git a/service/requirements.txt b/service/requirements.txt
index 5c478bf2..d196572c 100644
--- a/service/requirements.txt
+++ b/service/requirements.txt
@@ -9,5 +9,5 @@ Twisted==16.1.1
-e 'git+https://0xacab.org/leap/leap_pycommon.git@master#egg=leap.common'
-e 'git+https://0xacab.org/pixelated/bitmask-dev.git@development#egg=leap.bitmask'
-e 'git+https://0xacab.org/pixelated/soledad.git@master#egg=leap.soledad.common&subdirectory=common/'
--e 'git+https://0xacab.org/pixelated/soledad.git@master#egg=leap.soledad.client&subdirectory=client/'
+-e 'git+https://0xacab.org/pixelated/soledad.git@generate-recovery-code#egg=leap.soledad.client&subdirectory=client/'
-e .
diff --git a/service/test/unit/resources/test_backup_account_resource.py b/service/test/unit/resources/test_backup_account_resource.py
index 2e676d9b..09520969 100644
--- a/service/test/unit/resources/test_backup_account_resource.py
+++ b/service/test/unit/resources/test_backup_account_resource.py
@@ -16,7 +16,8 @@
import os
-from mock import MagicMock, patch
+from mock import MagicMock, patch, ANY
+
from twisted.trial import unittest
from twisted.web.test.requesthelper import DummyRequest
from twisted.internet import defer
@@ -48,12 +49,14 @@ class TestBackupAccountResource(unittest.TestCase):
mock_account_recovery = MagicMock()
mock_account_recovery_init.return_value = mock_account_recovery
mock_account_recovery.update_recovery_code.return_value = defer.succeed("Success")
+
request = DummyRequest(['/backup-account'])
request.method = 'POST'
d = self.web.get(request)
def assert_update_recovery_code_called(_):
- mock_account_recovery_init.assert_called_with(self.resource._authenticator.bonafide_session)
+ mock_account_recovery_init.assert_called_with(
+ self.resource._authenticator.bonafide_session, ANY)
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 026d161f..af14814a 100644
--- a/service/test/unit/test_account_recovery.py
+++ b/service/test/unit/test_account_recovery.py
@@ -26,8 +26,11 @@ class AccountRecoveryTest(unittest.TestCase):
@inlineCallbacks
def test_update_recovery_code(self):
- mock_session = Mock()
- account_recovery = AccountRecovery(mock_session)
+ generated_code = '4645a2f8997e5d0d'
+ mock_bonafide_session = Mock()
+ mock_soledad = Mock()
+ mock_soledad.create_recovery_code.return_value = generated_code
+ account_recovery = AccountRecovery(mock_bonafide_session, mock_soledad)
yield account_recovery.update_recovery_code()
- mock_session.update_recovery_code.assert_called_once_with('123')
+ mock_bonafide_session.update_recovery_code.assert_called_once_with(generated_code)