Browse Source
* Added util tests * FIxed build failures * Incorportaed review comments Added new tests * Test added for generate_key * Updated module name * Correct newly added testspull/1278/head
committed by
Safihre
7 changed files with 264 additions and 0 deletions
@ -0,0 +1,46 @@ |
|||||
|
#!/usr/bin/python3 -OO |
||||
|
# Copyright 2007-2019 The SABnzbd-Team <team@sabnzbd.org> |
||||
|
# |
||||
|
# 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 2 |
||||
|
# 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, write to the Free Software |
||||
|
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. |
||||
|
|
||||
|
""" |
||||
|
tests.test_utils.test_check_dir - Testing SABnzbd checkdir util |
||||
|
""" |
||||
|
|
||||
|
from sabnzbd.getipaddress import * |
||||
|
from sabnzbd.cfg import selftest_host |
||||
|
from sabnzbd.misc import probablyipv4, probablyipv6 |
||||
|
|
||||
|
|
||||
|
class TestGetIpAddress: |
||||
|
def test_addresslookup4(self): |
||||
|
address = addresslookup4(selftest_host()) |
||||
|
assert address |
||||
|
for item in address: |
||||
|
assert isinstance(item[0], type(socket.AF_INET)) |
||||
|
|
||||
|
def test_publicipv4(self): |
||||
|
public_ipv4 = publicipv4() |
||||
|
assert probablyipv4(public_ipv4) |
||||
|
|
||||
|
def test_localipv4(self): |
||||
|
local_ipv4 = localipv4() |
||||
|
assert probablyipv4(local_ipv4) |
||||
|
|
||||
|
def test_ipv6(self): |
||||
|
test_ipv6 = ipv6() |
||||
|
# Not all systems have IPv6 |
||||
|
if test_ipv6: |
||||
|
assert probablyipv6(test_ipv6) |
@ -0,0 +1,41 @@ |
|||||
|
#!/usr/bin/python3 -OO |
||||
|
# Copyright 2007-2019 The SABnzbd-Team <team@sabnzbd.org> |
||||
|
# |
||||
|
# 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 2 |
||||
|
# 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, write to the Free Software |
||||
|
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. |
||||
|
|
||||
|
""" |
||||
|
tests.test_newsunpack - Tests of various functions in newspack |
||||
|
""" |
||||
|
|
||||
|
from sabnzbd.newsunpack import * |
||||
|
import pytest |
||||
|
|
||||
|
|
||||
|
class TestNewsUnpack: |
||||
|
@pytest.mark.parametrize( |
||||
|
"test_input, expected_output", |
||||
|
[ |
||||
|
(["cmd1", 9, "cmd3"], '"cmd1" "9" "cmd3"'), # sending all commands as valid string |
||||
|
(["", "cmd1", "5"], '"" "cmd1" "5"'), # sending blank string |
||||
|
(["cmd1", None, "cmd3", "tail -f"], '"cmd1" "" "cmd3" "tail -f"'), # sending None in command |
||||
|
(["cmd1", 0, "ps ux"], '"cmd1" "" "ps ux"'), # sending 0 |
||||
|
], |
||||
|
) |
||||
|
def test_list_to_cmd(self, test_input, expected_output): |
||||
|
""" Test to convert list to a cmd.exe-compatible command string """ |
||||
|
|
||||
|
res = list2cmdline(test_input) |
||||
|
# Make sure the output is cmd.exe-compatible |
||||
|
assert res == expected_output |
@ -0,0 +1,67 @@ |
|||||
|
#!/usr/bin/python3 -OO |
||||
|
# Copyright 2007-2019 The SABnzbd-Team <team@sabnzbd.org> |
||||
|
# |
||||
|
# 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 2 |
||||
|
# 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, write to the Free Software |
||||
|
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. |
||||
|
|
||||
|
""" |
||||
|
tests.test_cert_gen - Testing Certificate generation |
||||
|
""" |
||||
|
|
||||
|
import datetime |
||||
|
from cryptography import x509 |
||||
|
from cryptography.hazmat.backends import default_backend |
||||
|
from cryptography.hazmat.primitives.asymmetric import rsa |
||||
|
|
||||
|
from sabnzbd.utils.certgen import generate_key, generate_local_cert |
||||
|
from tests.testhelper import * |
||||
|
|
||||
|
|
||||
|
class TestCertGen: |
||||
|
def test_generate_key_default(self): |
||||
|
# Generate private key with default key_size and file name |
||||
|
private_key = generate_key(output_file=os.path.join(SAB_CACHE_DIR, "test_key.pem")) |
||||
|
assert private_key.key_size == 2048 |
||||
|
|
||||
|
@pytest.mark.parametrize( |
||||
|
"key_size, file_name", [(512, "test_key.pem"), (1024, "test_123_key.pem"), (4096, "123_key.pem")] |
||||
|
) |
||||
|
def test_generate_key_custom(self, key_size, file_name): |
||||
|
# Generate private key |
||||
|
private_key = generate_key(key_size=key_size, output_file=os.path.join(SAB_CACHE_DIR, file_name)) |
||||
|
|
||||
|
# validate generated private key |
||||
|
assert private_key.key_size == key_size |
||||
|
assert os.path.isfile(os.path.join(SAB_CACHE_DIR, file_name)) |
||||
|
|
||||
|
def test_generate_local_cert(self): |
||||
|
# Generate private key |
||||
|
private_key = generate_key(output_file=os.path.join(SAB_CACHE_DIR, "test_key.pem")) |
||||
|
|
||||
|
# Generate local certificate using private key |
||||
|
output_file = os.path.join(SAB_CACHE_DIR, "test_cert.cert") |
||||
|
local_cert = generate_local_cert(private_key, output_file=output_file) |
||||
|
assert local_cert |
||||
|
|
||||
|
# Validating generated key file |
||||
|
public_key = local_cert.public_key() |
||||
|
assert isinstance(public_key, rsa.RSAPublicKey) |
||||
|
|
||||
|
# Validate certificate file |
||||
|
with open(output_file, "rb") as cert_file: |
||||
|
cert_content = cert_file.read() |
||||
|
cert = x509.load_pem_x509_certificate(cert_content, default_backend()) |
||||
|
|
||||
|
# Validate that the timestamp at which the certificate stops being valid (expiration date) is in future |
||||
|
assert datetime.datetime.now() < cert.not_valid_after |
@ -0,0 +1,33 @@ |
|||||
|
#!/usr/bin/python3 -OO |
||||
|
# Copyright 2007-2019 The SABnzbd-Team <team@sabnzbd.org> |
||||
|
# |
||||
|
# 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 2 |
||||
|
# 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, write to the Free Software |
||||
|
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. |
||||
|
|
||||
|
""" |
||||
|
tests.test_utils.test_diskspeed - Testing SABnzbd diskspeed |
||||
|
""" |
||||
|
|
||||
|
from tests.testhelper import * |
||||
|
from sabnzbd.utils.diskspeed import diskspeedmeasure |
||||
|
|
||||
|
|
||||
|
class TestDiskSpeed: |
||||
|
def test_disk_speed(self): |
||||
|
speed = diskspeedmeasure(SAB_CACHE_DIR) |
||||
|
assert speed |
||||
|
assert isinstance(speed, float) |
||||
|
|
||||
|
# Make sure the test-file was cleaned up after the test |
||||
|
assert not os.path.exists(os.path.join(SAB_CACHE_DIR, "outputTESTING.txt")) |
@ -0,0 +1,45 @@ |
|||||
|
#!/usr/bin/python3 -OO |
||||
|
# Copyright 2007-2019 The SABnzbd-Team <team@sabnzbd.org> |
||||
|
# |
||||
|
# 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 2 |
||||
|
# 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, write to the Free Software |
||||
|
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. |
||||
|
|
||||
|
""" |
||||
|
tests.test_utils.test_internetspeed - Testing SABnzbd internetspeed |
||||
|
""" |
||||
|
|
||||
|
from sabnzbd.utils.internetspeed import internetspeed, measurespeed, SizeUrlList |
||||
|
|
||||
|
|
||||
|
class TestInternetSpeed: |
||||
|
""" This class contains tests to measure internet speed |
||||
|
with an active and inactive connection |
||||
|
""" |
||||
|
|
||||
|
def test_measurespeed_invalid_url(self): |
||||
|
speed = measurespeed("www.fake-url-9999999.xyz") |
||||
|
|
||||
|
assert not speed |
||||
|
|
||||
|
def test_measurespeed_valid_url(self): |
||||
|
speed = measurespeed(SizeUrlList[0][1]) |
||||
|
|
||||
|
assert isinstance(speed, float) |
||||
|
assert speed > 0 |
||||
|
|
||||
|
def test_internet_speed(self): |
||||
|
curr_speed_mbps = internetspeed() |
||||
|
|
||||
|
assert isinstance(curr_speed_mbps, float) |
||||
|
assert curr_speed_mbps > 0 |
@ -0,0 +1,32 @@ |
|||||
|
#!/usr/bin/python3 -OO |
||||
|
# Copyright 2007-2019 The SABnzbd-Team <team@sabnzbd.org> |
||||
|
# |
||||
|
# 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 2 |
||||
|
# 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, write to the Free Software |
||||
|
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. |
||||
|
|
||||
|
""" |
||||
|
tests.test_utils.test_pystone - Testing SABnzbd pystone |
||||
|
""" |
||||
|
|
||||
|
from sabnzbd.utils.pystone import pystones |
||||
|
|
||||
|
|
||||
|
class TestPystone: |
||||
|
def test_pystone(self): |
||||
|
""" Tests for performance with various loop sizes """ |
||||
|
loops = [10, 1000, 50000, 100000] |
||||
|
for loop in loops: |
||||
|
benchtime, stones = pystones(loop) |
||||
|
assert benchtime > 0 |
||||
|
assert stones > 0 |
Loading…
Reference in new issue