summaryrefslogtreecommitdiff
path: root/service/test/unit/resources/test_backup_account_resource.py
diff options
context:
space:
mode:
Diffstat (limited to 'service/test/unit/resources/test_backup_account_resource.py')
-rw-r--r--service/test/unit/resources/test_backup_account_resource.py45
1 files changed, 44 insertions, 1 deletions
diff --git a/service/test/unit/resources/test_backup_account_resource.py b/service/test/unit/resources/test_backup_account_resource.py
index 21ae5aab..e169062e 100644
--- a/service/test/unit/resources/test_backup_account_resource.py
+++ b/service/test/unit/resources/test_backup_account_resource.py
@@ -19,6 +19,7 @@ import os
from mock import MagicMock, patch
from twisted.trial import unittest
from twisted.web.test.requesthelper import DummyRequest
+from twisted.internet import defer
from pixelated.resources.backup_account_resource import BackupAccountResource
from test.unit.resources import DummySite
@@ -27,7 +28,7 @@ from test.unit.resources import DummySite
class TestBackupAccountResource(unittest.TestCase):
def setUp(self):
self.services_factory = MagicMock()
- self.resource = BackupAccountResource(self.services_factory)
+ self.resource = BackupAccountResource(self.services_factory, MagicMock())
self.web = DummySite(self.resource)
def test_get(self):
@@ -41,3 +42,45 @@ class TestBackupAccountResource(unittest.TestCase):
d.addCallback(assert_200_when_user_logged_in)
return d
+
+ @patch('pixelated.resources.backup_account_resource.AccountRecovery')
+ def test_post_updates_recovery_code(self, mock_account_recovery_init):
+ 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_sesssion)
+ mock_account_recovery.update_recovery_code.assert_called()
+
+ d.addCallback(assert_update_recovery_code_called)
+ return d
+
+ @patch('pixelated.resources.backup_account_resource.AccountRecovery.update_recovery_code')
+ def test_post_returns_successfully(self, mock_update_recovery_code):
+ mock_update_recovery_code.return_value = defer.succeed("Success")
+ request = DummyRequest(['/backup-account'])
+ request.method = 'POST'
+ d = self.web.get(request)
+
+ def assert_successful_response(_):
+ self.assertEqual(204, request.responseCode)
+
+ d.addCallback(assert_successful_response)
+ return d
+
+ @patch('pixelated.resources.backup_account_resource.AccountRecovery.update_recovery_code')
+ def test_post_returns_internal_server_error(self, mock_update_recovery_code):
+ mock_update_recovery_code.return_value = defer.fail(Exception)
+ request = DummyRequest(['/backup-account'])
+ request.method = 'POST'
+ d = self.web.get(request)
+
+ def assert_successful_response(_):
+ self.assertEqual(500, request.responseCode)
+
+ d.addCallback(assert_successful_response)
+ return d