Add unit tests: file stats and port selection.

This commit is contained in:
Connor Mendenhall 2014-06-02 22:45:51 -05:00
parent 1a6f08a846
commit d64af1673a

View File

@ -1,4 +1,5 @@
from onionshare import *
import tempfile
def test_get_platform_returns_env_var():
"get_platform() returns ONIONSHARE_PLATFORM from the environment"
@ -6,10 +7,7 @@ def test_get_platform_returns_env_var():
assert get_platform() == 'TI-83+'
def test_get_platform_returns_platform_system():
"""
get_platform() returns platform.system() when
ONIONSHARE_PLATFORM is not defined
"""
"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'
@ -22,10 +20,7 @@ def test_tails_appends_to_path():
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
"""
"get_hidden_service_dir() uses a 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"
@ -64,10 +59,27 @@ def test_tails_open_port():
onionshare.tails_open_port('port')
expected_call = [
'/sbin/iptables', '-I', 'OUTPUT',
'-o', 'lo', '-p',
'tcp', '--dport', 'port', '-j', 'ACCEPT'
]
'/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_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
@ -81,26 +93,8 @@ 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
@ -117,3 +111,41 @@ def test_generate_slug_characters():
def test_starts_with_empty_strings():
"creates an empty strings dict by default"
assert strings == {}
def test_choose_port_returns_a_port_number():
"choose_port() returns a port number"
assert 1024 <= choose_port() <= 65535
def test_choose_port_returns_an_open_port():
"choose_port() returns an open port"
port = choose_port()
socket.socket().bind(("127.0.0.1", port))
def write_tempfile(text):
tempdir = tempfile.mkdtemp()
path = tempdir + "/test-file.txt"
with open(path, "w") as f:
f.write(text)
f.close()
return path
def test_filehash_returns_correct_hash():
"file_crunching() returns correct hash"
text = """
If you want a picture of the future, imagine a boot stamping on an
encrypted, redundant, distributed filesystem -- forever.
"""
tempfile = write_tempfile(text)
filehash, _ = file_crunching(tempfile)
assert filehash == 'bc004fe72e6530a545570b4c6ce76bcb78ea526b'
def test_filehash_returns_correct_size():
"file_crunching() returns correct size"
text = "AUSCANNZUKUS has always been at war with Eastasia."
tempfile = write_tempfile(text)
_, filesize = file_crunching(tempfile)
assert filesize == 50