summaryrefslogtreecommitdiff
path: root/src/leap/soledad/tests/test_soledad.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/leap/soledad/tests/test_soledad.py')
-rw-r--r--src/leap/soledad/tests/test_soledad.py302
1 files changed, 0 insertions, 302 deletions
diff --git a/src/leap/soledad/tests/test_soledad.py b/src/leap/soledad/tests/test_soledad.py
deleted file mode 100644
index 09711f19..00000000
--- a/src/leap/soledad/tests/test_soledad.py
+++ /dev/null
@@ -1,302 +0,0 @@
-# -*- coding: utf-8 -*-
-# test_soledad.py
-# Copyright (C) 2013 LEAP
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-
-"""
-Tests for general Soledad functionality.
-"""
-
-
-import os
-import re
-import tempfile
-import simplejson as json
-from mock import Mock
-
-
-from leap.common.testing.basetest import BaseLeapTest
-from leap.common.events import (
- server,
- component,
- events_pb2 as proto,
- register,
- signal,
-)
-from leap.soledad.tests import (
- BaseSoledadTest,
- ADDRESS,
-)
-from leap import soledad
-from leap.soledad import Soledad
-from leap.soledad.crypto import SoledadCrypto
-from leap.soledad.shared_db import SoledadSharedDatabase
-from leap.soledad.backends.leap_backend import (
- LeapDocument,
- LeapSyncTarget,
-)
-
-
-class AuxMethodsTestCase(BaseSoledadTest):
-
- def test__init_dirs(self):
- sol = self._soledad_instance(prefix='_init_dirs')
- sol._init_dirs()
- local_db_dir = os.path.dirname(sol.local_db_path)
- secrets_path = os.path.dirname(sol.secrets_path)
- self.assertTrue(os.path.isdir(local_db_dir))
- self.assertTrue(os.path.isdir(secrets_path))
-
- def test__init_db(self):
- sol = self._soledad_instance()
- sol._init_dirs()
- sol._crypto = SoledadCrypto(sol)
- #self._soledad._gpg.import_keys(PUBLIC_KEY)
- if not sol._has_secret():
- sol._gen_secret()
- sol._load_secrets()
- sol._init_db()
- from leap.soledad.backends.sqlcipher import SQLCipherDatabase
- self.assertIsInstance(sol._db, SQLCipherDatabase)
-
- def test__init_config_defaults(self):
- """
- Test if configuration defaults point to the correct place.
- """
-
- class SoledadMock(Soledad):
-
- def __init__(self):
- pass
-
- # instantiate without initializing so we just test _init_config()
- sol = SoledadMock()
- Soledad._init_config(sol, None, None, '')
- # assert value of secrets_path
- self.assertEquals(
- os.path.join(
- sol.DEFAULT_PREFIX, Soledad.STORAGE_SECRETS_FILE_NAME),
- sol.secrets_path)
- # assert value of local_db_path
- self.assertEquals(
- os.path.join(sol.DEFAULT_PREFIX, 'soledad.u1db'),
- sol.local_db_path)
-
- def test__init_config_from_params(self):
- """
- Test if configuration is correctly read from file.
- """
- sol = self._soledad_instance(
- 'leap@leap.se',
- passphrase='123',
- secrets_path='value_3',
- local_db_path='value_2',
- server_url='value_1',
- cert_file=None)
- self.assertEqual(
- os.path.join(self.tempdir, 'value_3'),
- sol.secrets_path)
- self.assertEqual(
- os.path.join(self.tempdir, 'value_2'),
- sol.local_db_path)
- self.assertEqual('value_1', sol.server_url)
-
-
-class SoledadSharedDBTestCase(BaseSoledadTest):
- """
- These tests ensure the functionalities of the shared recovery database.
- """
-
- def setUp(self):
- BaseSoledadTest.setUp(self)
- self._shared_db = SoledadSharedDatabase(
- 'https://provider/', LeapDocument, None)
-
- def test__get_secrets_from_shared_db(self):
- """
- Ensure the shared db is queried with the correct doc_id.
- """
- doc_id = self._soledad._uuid_hash()
- self._soledad._get_secrets_from_shared_db()
- self.assertTrue(
- self._soledad._shared_db().get_doc.assert_called_with(
- doc_id) is None,
- 'Wrong doc_id when fetching recovery document.')
-
- def test__put_secrets_in_shared_db(self):
- """
- Ensure recovery document is put into shared recover db.
- """
- doc_id = self._soledad._uuid_hash()
- self._soledad._put_secrets_in_shared_db()
- self.assertTrue(
- self._soledad._shared_db().get_doc.assert_called_with(
- doc_id) is None,
- 'Wrong doc_id when fetching recovery document.')
- self.assertTrue(
- self._soledad._shared_db.put_doc.assert_called_with(
- self._doc_put) is None,
- 'Wrong document when putting recovery document.')
- self.assertTrue(
- self._doc_put.doc_id == doc_id,
- 'Wrong doc_id when putting recovery document.')
-
-
-class SoledadSignalingTestCase(BaseSoledadTest):
- """
- These tests ensure signals are correctly emmited by Soledad.
- """
-
- EVENTS_SERVER_PORT = 8090
-
- def setUp(self):
- BaseSoledadTest.setUp(self)
- # mock signaling
- soledad.events.signal = Mock()
-
- def tearDown(self):
- pass
-
- def _pop_mock_call(self, mocked):
- mocked.call_args_list.pop()
- mocked.mock_calls.pop()
- mocked.call_args = mocked.call_args_list[-1]
-
- def test_stage2_bootstrap_signals(self):
- """
- Test that a fresh soledad emits all bootstrap signals.
- """
- soledad.events.signal.reset_mock()
- # get a fresh instance so it emits all bootstrap signals
- sol = self._soledad_instance(
- secrets_path='alternative.json',
- local_db_path='alternative.u1db')
- # reverse call order so we can verify in the order the signals were
- # expected
- soledad.events.signal.mock_calls.reverse()
- soledad.events.signal.call_args = \
- soledad.events.signal.call_args_list[0]
- soledad.events.signal.call_args_list.reverse()
- # assert signals
- soledad.events.signal.assert_called_with(
- proto.SOLEDAD_DOWNLOADING_KEYS,
- ADDRESS,
- )
- self._pop_mock_call(soledad.events.signal)
- soledad.events.signal.assert_called_with(
- proto.SOLEDAD_DONE_DOWNLOADING_KEYS,
- ADDRESS,
- )
- self._pop_mock_call(soledad.events.signal)
- soledad.events.signal.assert_called_with(
- proto.SOLEDAD_CREATING_KEYS,
- ADDRESS,
- )
- self._pop_mock_call(soledad.events.signal)
- soledad.events.signal.assert_called_with(
- proto.SOLEDAD_DONE_CREATING_KEYS,
- ADDRESS,
- )
- self._pop_mock_call(soledad.events.signal)
- soledad.events.signal.assert_called_with(
- proto.SOLEDAD_DOWNLOADING_KEYS,
- ADDRESS,
- )
- self._pop_mock_call(soledad.events.signal)
- soledad.events.signal.assert_called_with(
- proto.SOLEDAD_DONE_DOWNLOADING_KEYS,
- ADDRESS,
- )
- self._pop_mock_call(soledad.events.signal)
- soledad.events.signal.assert_called_with(
- proto.SOLEDAD_UPLOADING_KEYS,
- ADDRESS,
- )
- self._pop_mock_call(soledad.events.signal)
- soledad.events.signal.assert_called_with(
- proto.SOLEDAD_DONE_UPLOADING_KEYS,
- ADDRESS,
- )
-
- def test_stage1_bootstrap_signals(self):
- """
- Test that an existent soledad emits some of the bootstrap signals.
- """
- soledad.events.signal.reset_mock()
- # get an existent instance so it emits only some of bootstrap signals
- sol = self._soledad_instance()
- # reverse call order so we can verify in the order the signals were
- # expected
- soledad.events.signal.mock_calls.reverse()
- soledad.events.signal.call_args = \
- soledad.events.signal.call_args_list[0]
- soledad.events.signal.call_args_list.reverse()
- # assert signals
- soledad.events.signal.assert_called_with(
- proto.SOLEDAD_DOWNLOADING_KEYS,
- ADDRESS,
- )
- self._pop_mock_call(soledad.events.signal)
- soledad.events.signal.assert_called_with(
- proto.SOLEDAD_DONE_DOWNLOADING_KEYS,
- ADDRESS,
- )
- self._pop_mock_call(soledad.events.signal)
- soledad.events.signal.assert_called_with(
- proto.SOLEDAD_UPLOADING_KEYS,
- ADDRESS,
- )
- self._pop_mock_call(soledad.events.signal)
- soledad.events.signal.assert_called_with(
- proto.SOLEDAD_DONE_UPLOADING_KEYS,
- ADDRESS,
- )
-
- def test_sync_signals(self):
- """
- Test Soledad emits SOLEDAD_CREATING_KEYS signal.
- """
- soledad.events.signal.reset_mock()
- # get a fresh instance so it emits all bootstrap signals
- sol = self._soledad_instance()
- # mock the actual db sync so soledad does not try to connect to the
- # server
- sol._db.sync = Mock()
- # do the sync
- sol.sync()
- # assert the signal has been emitted
- soledad.events.signal.assert_called_with(
- proto.SOLEDAD_DONE_DATA_SYNC,
- ADDRESS,
- )
-
- def test_need_sync_signals(self):
- """
- Test Soledad emits SOLEDAD_CREATING_KEYS signal.
- """
- soledad.events.signal.reset_mock()
- sol = self._soledad_instance()
- # mock the sync target
- LeapSyncTarget.get_sync_info = Mock(return_value=[0, 0, 0, 0, 2])
- # mock our generation so soledad thinks there's new data to sync
- sol._db._get_generation = Mock(return_value=1)
- # check for new data to sync
- sol.need_sync('http://provider/userdb')
- # assert the signal has been emitted
- soledad.events.signal.assert_called_with(
- proto.SOLEDAD_NEW_DATA_TO_SYNC,
- ADDRESS,
- )