Merge branch 'write-tests' of https://github.com/ecmendenhall/onionshare into ecmendenhall-write-tests

This commit is contained in:
Micah Lee 2014-05-31 19:55:53 -04:00
commit 79f36fc804
2 changed files with 123 additions and 1 deletions

View File

@ -8,9 +8,12 @@ def get_platform():
else:
return platform.system()
if get_platform() == 'Tails':
def append_lib_on_tails():
if get_platform() == 'Tails':
sys.path.append(os.path.dirname(__file__)+'/../tails/lib')
append_lib_on_tails()
from stem.control import Controller
from stem import SocketError

119
test/onionshare_test.py Normal file
View File

@ -0,0 +1,119 @@
from onionshare import *
def test_get_platform_returns_env_var():
"get_platform() returns ONIONSHARE_PLATFORM from the environment"
os.environ['ONIONSHARE_PLATFORM'] = 'TI-83+'
assert get_platform() == 'TI-83+'
def test_get_platform_returns_platform_system():
"""
get_platform() returns platform.system() when
ONIONSHARE_PLATFORM is not defined
"""
os.environ.pop('ONIONSHARE_PLATFORM', None)
onionshare.platform.system = lambda: 'Sega Saturn'
assert get_platform() == 'Sega Saturn'
def test_tails_appends_to_path():
"adds '/../tails/lib' to the path when running on Tails"
original_path = sys.path
onionshare.platform.system = lambda: 'Tails'
append_lib_on_tails()
assert sys.path[-1][-13:] == '/../tails/lib'
def test_get_hidden_service_dir_windows_with_temp():
"""
get_hidden_service_dir() uses a temporary directory from the
Windows environment when defined
"""
onionshare.platform.system = lambda: 'Windows'
os.environ['Temp'] = "C:\Internet Explorer\Secrets"
expected_path = "C:/Internet Explorer/Secrets/onionshare_hidden_service_port"
assert get_hidden_service_dir('port') == expected_path
def test_get_hidden_service_dir_windows_default():
"get_hidden_service_dir() uses C:/tmp by default on Windows"
onionshare.get_platform = lambda: 'Windows'
os.environ.pop('Temp', None)
expected_path = "C:/tmp/onionshare_hidden_service_port"
assert get_hidden_service_dir('port') == expected_path
def test_get_hidden_service_dir_posix():
"get_hidden_service_dir() uses /tmp by default on POSIX"
onionshare.get_platform = lambda: 'Not Windows'
expected_path = "/tmp/onionshare_hidden_service_port"
assert get_hidden_service_dir('port') == expected_path
class MockSubprocess():
def __init__(self):
self.last_call = None
def call(self, args):
self.last_call = args
def last_call_args(self):
return self.last_call
def test_tails_open_port():
"tails_open_port() calls iptables with ACCEPT arg"
onionshare.get_platform = lambda: 'Tails'
onionshare.strings = {'punching_a_hole': ''}
mock_subprocess = MockSubprocess()
onionshare.subprocess = mock_subprocess
onionshare.tails_open_port('port')
expected_call = [
'/sbin/iptables', '-I', 'OUTPUT',
'-o', 'lo', '-p',
'tcp', '--dport', 'port', '-j', 'ACCEPT'
]
actual_call = mock_subprocess.last_call_args()
assert actual_call == expected_call
def test_load_strings_defaults_to_english():
"load_strings() loads English by default"
locale.getdefaultlocale = lambda: ('en_US', 'UTF-8')
load_strings()
assert onionshare.strings['calculating_sha1'] == "Calculating SHA1 checksum."
def test_load_strings_loads_other_languages():
"load_strings() loads other languages in different locales"
locale.getdefaultlocale = lambda: ('fr_FR', 'UTF-8')
load_strings("fr")
print onionshare.strings
assert onionshare.strings['calculating_sha1'] == "Calculer un hachage SHA-1."
def test_tails_close_port():
"tails_close_port() calls iptables with REJECT arg"
onionshare.get_platform = lambda: 'Tails'
onionshare.strings = {'closing_hole': ''}
mock_subprocess = MockSubprocess()
onionshare.subprocess = mock_subprocess
onionshare.tails_close_port('port')
expected_call = [
'/sbin/iptables', '-I', 'OUTPUT',
'-o', 'lo', '-p',
'tcp', '--dport', 'port', '-j', 'REJECT'
]
actual_call = mock_subprocess.last_call_args()
assert actual_call == expected_call
def test_generate_slug_length():
"generates a 32-character slug"
assert len(slug) == 32
def test_generate_slug_characters():
"generates a hex slug"
def is_hex(string):
hex_alphabet = "01234556789abcdef"
return all(char in hex_alphabet for char in string)
assert is_hex(slug)
def test_starts_with_empty_strings():
"creates an empty strings dict by default"
assert strings == {}