From 067db035910c8284d508401c34ca4cb5928c2b52 Mon Sep 17 00:00:00 2001 From: Anike Arni Date: Fri, 17 Mar 2017 11:18:39 -0300 Subject: [#1012] Generates recovery code in soledad client with @tayanefernandes --- service/pixelated/account_recovery.py | 8 +++++--- service/pixelated/resources/backup_account_resource.py | 4 +++- service/requirements.txt | 2 +- service/test/unit/resources/test_backup_account_resource.py | 7 +++++-- service/test/unit/test_account_recovery.py | 9 ++++++--- 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) -- cgit v1.2.3