diff options
author | Delirious Lettuce <delirious.lettuce@gmail.com> | 2017-07-08 11:23:17 -0600 |
---|---|---|
committer | Delirious Lettuce <delirious.lettuce@gmail.com> | 2017-07-08 11:23:17 -0600 |
commit | 711ae30ba90696cd7e34a8180bc3e8db11aa0ef5 (patch) | |
tree | 39dd3e110416aa74424d5499c7c1434784485584 /test | |
parent | 27b917e9e5122a388c251b982608972908844167 (diff) | |
download | onionshare-711ae30ba90696cd7e34a8180bc3e8db11aa0ef5.tar.gz onionshare-711ae30ba90696cd7e34a8180bc3e8db11aa0ef5.zip |
Initial commit, coverage of `onionshare.settings.py` at 92%
Diffstat (limited to 'test')
-rw-r--r-- | test/onionshare_settings_test.py | 163 |
1 files changed, 163 insertions, 0 deletions
diff --git a/test/onionshare_settings_test.py b/test/onionshare_settings_test.py new file mode 100644 index 00000000..1489c348 --- /dev/null +++ b/test/onionshare_settings_test.py @@ -0,0 +1,163 @@ +""" +OnionShare | https://onionshare.org/ + +Copyright (C) 2017 Micah Lee <micah@micahflee.com> + +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/>. +""" + +import json +import os +import tempfile + +import pytest + +from onionshare import common, settings, strings + + +@pytest.fixture +def custom_version(monkeypatch): + monkeypatch.setattr(common, 'get_version', lambda: 'DUMMY_VERSION_1.2.3') + + +@pytest.fixture +def os_path_expanduser(monkeypatch): + monkeypatch.setattr('os.path.expanduser', lambda path: path) + + +@pytest.fixture +def settings_obj(custom_version, sys_onionshare_dev_mode, platform_linux): + return settings.Settings() + + +class TestSettings: + def test_init(self, settings_obj): + assert settings_obj._settings == settings_obj.default_settings == { + 'version': 'DUMMY_VERSION_1.2.3', + 'connection_type': 'bundled', + 'control_port_address': '127.0.0.1', + 'control_port_port': 9051, + 'socks_address': '127.0.0.1', + 'socks_port': 9050, + 'socket_file_path': '/var/run/tor/control', + 'auth_type': 'no_auth', + 'auth_password': '', + 'close_after_first_download': True, + 'systray_notifications': True, + 'use_stealth': False, + 'use_autoupdate': True, + 'autoupdate_timestamp': None + } + + def test_fill_in_defaults(self, settings_obj): + del settings_obj._settings['version'] + settings_obj.fill_in_defaults() + assert settings_obj._settings['version'] == 'DUMMY_VERSION_1.2.3' + + def test_load(self, settings_obj): + custom_settings = { + 'version': 'CUSTOM_VERSION', + 'socks_port': 9999, + 'use_stealth': True + } + tmp_file, tmp_file_path = tempfile.mkstemp() + with open(tmp_file, 'w') as f: + json.dump(custom_settings, f) + settings_obj.filename = tmp_file_path + settings_obj.load() + + assert settings_obj._settings['version'] == 'CUSTOM_VERSION' + assert settings_obj._settings['socks_port'] == 9999 + assert settings_obj._settings['use_stealth'] is True + + os.remove(tmp_file_path) + assert os.path.exists(tmp_file_path) is False + + def test_save(self, monkeypatch, settings_obj): + monkeypatch.setattr(strings, '_', lambda _: '') + + settings_filename = 'default_settings.json' + tmp_dir = tempfile.gettempdir() + settings_path = os.path.join(tmp_dir, settings_filename) + settings_obj.filename = settings_path + settings_obj.save() + with open(settings_path, 'r') as f: + settings = json.load(f) + + assert settings_obj._settings == settings + + os.remove(settings_path) + assert os.path.exists(settings_path) is False + + def test_get(self, settings_obj): + assert settings_obj.get('version') == 'DUMMY_VERSION_1.2.3' + assert settings_obj.get('connection_type') == 'bundled' + assert settings_obj.get('control_port_address') == '127.0.0.1' + assert settings_obj.get('control_port_port') == 9051 + assert settings_obj.get('socks_address') == '127.0.0.1' + assert settings_obj.get('socks_port') == 9050 + assert settings_obj.get('socket_file_path') == '/var/run/tor/control' + assert settings_obj.get('auth_type') == 'no_auth' + assert settings_obj.get('auth_password') == '' + assert settings_obj.get('close_after_first_download') is True + assert settings_obj.get('systray_notifications') is True + assert settings_obj.get('use_stealth') is False + assert settings_obj.get('use_autoupdate') is True + assert settings_obj.get('autoupdate_timestamp') is None + + def test_set_version(self, settings_obj): + settings_obj.set('version', 'CUSTOM_VERSION') + assert settings_obj._settings['version'] == 'CUSTOM_VERSION' + + def test_set_control_port_port(self, settings_obj): + settings_obj.set('control_port_port', 999) + assert settings_obj._settings['control_port_port'] == 999 + + settings_obj.set('control_port_port', 'NON_INTEGER') + assert settings_obj._settings['control_port_port'] == 9051 + + def test_set_socks_port(self, settings_obj): + settings_obj.set('socks_port', 888) + assert settings_obj._settings['socks_port'] == 888 + + settings_obj.set('socks_port', 'NON_INTEGER') + assert settings_obj._settings['socks_port'] == 9050 + + def test_filename_darwin( + self, + custom_version, + monkeypatch, + os_path_expanduser, + platform_darwin): + obj = settings.Settings() + assert (obj.filename == + '~/Library/Application Support/OnionShare/onionshare.json') + + def test_filename_linux( + self, + custom_version, + monkeypatch, + os_path_expanduser, + platform_linux): + obj = settings.Settings() + assert obj.filename == '~/.config/onionshare/onionshare.json' + + def test_filename_windows( + self, + custom_version, + monkeypatch, + platform_windows): + monkeypatch.setenv('APPDATA', 'C:') + obj = settings.Settings() + assert obj.filename == 'C:\\OnionShare\\onionshare.json' |