# -*- 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 . """ Tests for general Soledad functionality. """ import os import re import tempfile try: import simplejson as json except ImportError: import json # noqa from leap.soledad.tests import BaseSoledadTest from leap.soledad import Soledad from leap.soledad.crypto import SoledadCrypto 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._config.get_local_db_path()) secret_path = os.path.dirname(sol._config.get_secret_path()) self.assertTrue(os.path.isdir(local_db_dir)) self.assertTrue(os.path.isdir(secret_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_symkey(): sol._gen_symkey() sol._load_symkey() sol._init_db() from leap.soledad.backends.sqlcipher import SQLCipherDatabase self.assertIsInstance(sol._db, SQLCipherDatabase) def test__init_config_default(self): """ Test if configuration defaults point to the correct place. """ sol = Soledad('leap@leap.se', passphrase='123', bootstrap=False) self.assertTrue(bool(re.match( '.*/\.config/leap/soledad/secret.gpg', sol._config.get_secret_path()))) self.assertTrue(bool(re.match( '.*/\.config/leap/soledad/soledad.u1db', sol._config.get_local_db_path()))) self.assertEqual( 'http://provider/soledad/shared', sol._config.get_shared_db_url()) def test__init_config_defaults(self): """ Test if configuration defaults point to the correct place. """ # we use regexp match here because HOME environment variable is # changed by the BaseLeapTest class but BaseConfig does not capture # that change. sol = Soledad('leap@leap.se', passphrase='123', bootstrap=False) self.assertTrue(bool(re.match( '.*/\.config/leap/soledad/secret.gpg', sol._config.get_secret_path()))) self.assertTrue(bool(re.match( '.*/\.config/leap/soledad/soledad.u1db', sol._config.get_local_db_path()))) self.assertEqual( 'http://provider/soledad/shared', sol._config.get_shared_db_url()) def test__init_config_from_file(self): """ Test if configuration is correctly read from file. """ # we use regexp match here because HOME environment variable is # changed by the BaseLeapTest class but BaseConfig does not capture # that change. config_values = { "secret_path": "value_1", "local_db_path": "value_2", "shared_db_url": "value_3" } tmpfile = tempfile.mktemp(dir=self.tempdir) f = open(tmpfile, 'w') f.write(json.dumps(config_values)) f.close() sol = Soledad( 'leap@leap.se', passphrase='123', bootstrap=False, config_path=tmpfile) self.assertEqual('value_1', sol._config.get_secret_path()) self.assertEqual('value_2', sol._config.get_local_db_path()) self.assertEqual('value_3', sol._config.get_shared_db_url()) def test__init_config_from_params(self): """ Test if configuration is correctly read from file. """ # we use regexp match here because HOME environment variable is # changed by the BaseLeapTest class but BaseConfig does not capture # that change. sol = Soledad( 'leap@leap.se', passphrase='123', bootstrap=False, secret_path='value_3', local_db_path='value_2', shared_db_url='value_1') self.assertEqual('value_3', sol._config.get_secret_path()) self.assertEqual('value_2', sol._config.get_local_db_path()) self.assertEqual('value_1', sol._config.get_shared_db_url())