mirror of
https://github.com/onionshare/onionshare.git
synced 2024-10-01 01:35:40 -04:00
Initial commit, coverage of onionshare.settings.py
at 92%
This commit is contained in:
parent
27b917e9e5
commit
711ae30ba9
163
test/onionshare_settings_test.py
Normal file
163
test/onionshare_settings_test.py
Normal file
@ -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'
|
Loading…
Reference in New Issue
Block a user