From 3e9a32625a9adbf557d6b3b1d3954e455fb75356 Mon Sep 17 00:00:00 2001 From: Tulio Casagrande Date: Tue, 13 Sep 2016 17:52:44 -0300 Subject: [#778] Isolated and fixed keymanager tests We covered a lot of missing cases on the keymanager tests. We also isolated these tests, that caused some other tests to break, so we fixed them. --- .../test/unit/bitmask_libraries/test_keymanager.py | 99 ++++++++++++---------- .../test/unit/bitmask_libraries/test_provider.py | 9 +- 2 files changed, 61 insertions(+), 47 deletions(-) (limited to 'service/test/unit/bitmask_libraries') diff --git a/service/test/unit/bitmask_libraries/test_keymanager.py b/service/test/unit/bitmask_libraries/test_keymanager.py index 0c46460a..89327b54 100644 --- a/service/test/unit/bitmask_libraries/test_keymanager.py +++ b/service/test/unit/bitmask_libraries/test_keymanager.py @@ -13,21 +13,36 @@ # # You should have received a copy of the GNU Affero General Public License # along with Pixelated. If not, see . -from mock import patch +from mock import patch, MagicMock from mockito import when - -from test_abstract_leap import AbstractLeapTest -from leap.keymanager import openpgp, KeyNotFound +from unittest import TestCase from pixelated.bitmask_libraries.keymanager import Keymanager from pixelated.config import leap_config -class KeymanagerTest(AbstractLeapTest): +class KeymanagerTest(TestCase): + + def setUp(self): + self.provider = MagicMock() + self.soledad = MagicMock() + self.auth = MagicMock(token='token', auth='auth') + with patch('pixelated.bitmask_libraries.keymanager.KeyManager'): + self.keymanager = Keymanager(self.provider, + self.soledad, + 'test_user@some-server.test', + self.auth.token, + self.auth.uuid) + + def tearDown(self): + reload(leap_config) + @patch('pixelated.bitmask_libraries.keymanager.KeyManager') - def test_that_keymanager_is_created(self, keymanager_mock): - when(self.provider)._discover_nicknym_server().thenReturn('https://nicknym.some-server.test:6425/') - self.provider.combined_cerfificates_path = 'combined_cerfificates_path' - self.provider.provider_api_cert = '/some/path/to/provider_ca_cert' + def test_keymanager_is_created(self, keymanager_mock): + when(self.provider)._discover_nicknym_server().thenReturn('nicknym_server') + self.provider.provider_api_cert = 'ca_cert_path' + self.provider.api_uri = 'api_uri' + self.provider.api_version = '1' + self.provider.combined_cerfificates_path = 'combined_ca_bundle' leap_config.gpg_binary = '/path/to/gpg' Keymanager(self.provider, @@ -38,45 +53,41 @@ class KeymanagerTest(AbstractLeapTest): keymanager_mock.assert_called_with( 'test_user@some-server.test', - 'https://nicknym.some-server.test:6425/', + 'nicknym_server', self.soledad, token=self.auth.token, - ca_cert_path='/some/path/to/provider_ca_cert', - api_uri='https://api.some-server.test:4430', + ca_cert_path='ca_cert_path', + api_uri='api_uri', api_version='1', uid=self.auth.uuid, gpgbinary='/path/to/gpg', - combined_ca_bundle='combined_cerfificates_path') + combined_ca_bundle='combined_ca_bundle') - @patch('pixelated.bitmask_libraries.keymanager.KeyManager') - def test_gen_key(self, keymanager_mock): - # given - keyman = keymanager_mock.return_value - keyman.get_key.side_effect = KeyNotFound - keymanager = Keymanager(self.provider, - self.soledad, - 'test_user@some-server.test', - self.auth.token, - self.auth.uuid) - - # when/then - keymanager.generate_openpgp_key() - - keyman.get_key.assert_called_with('test_user@some-server.test', private=True, fetch_remote=False) - keyman.gen_key.assert_called_once() - keyman.send_key.assert_called_once() + def test_keymanager_generate_openpgp_key_generates_key_correctly(self): + when(self.keymanager)._key_exists('test_user@some-server.test').thenReturn(False) - @patch('pixelated.bitmask_libraries.keymanager.KeyManager') - def test_existing_key_not_sent_to_leap(self, keymanager_mock): - keyman = keymanager_mock.return_value - keyman.get_key.side_effect = KeyNotFound - keymanager = Keymanager(self.provider, - self.soledad, - 'test_user@some-server.test', - self.auth.token, - self.auth.uuid) - - when(keymanager)._key_exists('test_user@some-server.test').thenReturn(True) - keymanager.generate_openpgp_key() - keyman.gen_key.assert_not_called() - keyman.send_key.assert_not_called() + self.keymanager._gen_key = MagicMock() + self.keymanager._send_key_to_leap = MagicMock() + + self.keymanager.generate_openpgp_key() + + self.keymanager._gen_key.assert_called_once() + self.keymanager._send_key_to_leap.assert_called_once() + + def test_keymanager_generate_openpgp_key_dont_regenerate_preexisting_key(self): + when(self.keymanager)._key_exists('test_user@some-server.test').thenReturn(True) + + self.keymanager._gen_key = MagicMock() + + self.keymanager.generate_openpgp_key() + + self.keymanager._gen_key.assert_not_called() + + def test_keymanager_generate_openpgp_key_dont_upload_preexisting_key(self): + when(self.keymanager)._key_exists('test_user@some-server.test').thenReturn(True) + + self.keymanager._send_key_to_leap = MagicMock() + + self.keymanager.generate_openpgp_key() + + self.keymanager._send_key_to_leap.assert_not_called() diff --git a/service/test/unit/bitmask_libraries/test_provider.py b/service/test/unit/bitmask_libraries/test_provider.py index 4e7c565f..708b05b6 100644 --- a/service/test/unit/bitmask_libraries/test_provider.py +++ b/service/test/unit/bitmask_libraries/test_provider.py @@ -139,9 +139,12 @@ PROVIDER_WEB_CERT = '/tmp/bootstrap-ca.crt' class LeapProviderTest(AbstractLeapTest): def setUp(self): - leap_config.set_leap_home('/tmp/foobar') + leap_config.leap_home = '/tmp/foobar' LeapCertificate.set_cert_and_fingerprint(PROVIDER_WEB_CERT, None) + def tearDown(self): + reload(leap_config) + def test_provider_fetches_provider_json(self): with HTTMock(provider_json_mock, soledad_json_mock): provider = LeapProvider('some-provider.test') @@ -212,7 +215,7 @@ class LeapProviderTest(AbstractLeapTest): with HTTMock(provider_json_mock, soledad_json_mock, not_found_mock): provider = LeapProvider('some-provider.test') provider.fetch_soledad_json() - get_func.assert_called_with('https://api.some-provider.test:4430/1/config/soledad-service.json', verify='/some/leap/home/providers/some-provider.test/keys/client/api.pem', timeout=15) + get_func.assert_called_with('https://api.some-provider.test:4430/1/config/soledad-service.json', verify='/tmp/foobar/providers/some-provider.test/keys/client/api.pem', timeout=15) def test_that_leap_fingerprint_is_validated(self): session = MagicMock(wraps=requests.session()) @@ -232,4 +235,4 @@ class LeapProviderTest(AbstractLeapTest): provider = LeapProvider('some-provider.test') certs = provider.provider_api_cert - self.assertEqual('/some/leap/home/providers/some-provider.test/keys/client/api.pem', certs) + self.assertEqual('/tmp/foobar/providers/some-provider.test/keys/client/api.pem', certs) -- cgit v1.2.3