diff --git a/tests/test_httpheader.py b/tests/test_httpheader.py index a862513..7fe0e53 100644 --- a/tests/test_httpheader.py +++ b/tests/test_httpheader.py @@ -1,24 +1,31 @@ # MIT licensed -# Copyright (c) 2021 lilydjwg , et al. +# Copyright (c) 2021,2024 lilydjwg , et al. import pytest -import pytest_httpbin -assert pytest_httpbin # for pyflakes -pytestmark = [pytest.mark.asyncio(scope="session"), pytest.mark.needs_net] +httpbin_available = True +try: + import pytest_httpbin + assert pytest_httpbin # for pyflakes +except ImportError: + httpbin_available = False +pytestmark = pytest.mark.asyncio(scope="session") + +@pytest.mark.needs_net async def test_redirection(get_version): - assert await get_version("unifiedremote", { - "source": "httpheader", - "url": "https://www.unifiedremote.com/download/linux-x64-deb", - "regex": r'urserver-([\d.]+).deb', - }) is not None + assert await get_version("unifiedremote", { + "source": "httpheader", + "url": "https://www.unifiedremote.com/download/linux-x64-deb", + "regex": r'urserver-([\d.]+).deb', + }) is not None +@pytest.mark.skipif(not httpbin_available, reason="needs pytest_httpbin") async def test_get_version_withtoken(get_version, httpbin): - assert await get_version("unifiedremote", { - "source": "httpheader", - "url": httpbin.url + "/basic-auth/username/superpassword", - "httptoken": "Basic dXNlcm5hbWU6c3VwZXJwYXNzd29yZA==", - "header": "server", - "regex": r'([0-9.]+)*', - }) is not None + assert await get_version("unifiedremote", { + "source": "httpheader", + "url": httpbin.url + "/basic-auth/username/superpassword", + "httptoken": "Basic dXNlcm5hbWU6c3VwZXJwYXNzd29yZA==", + "header": "server", + "regex": r'([0-9.]+)*', + }) is not None diff --git a/tests/test_regex.py b/tests/test_regex.py index 0e1e7d5..941d441 100644 --- a/tests/test_regex.py +++ b/tests/test_regex.py @@ -1,130 +1,138 @@ # MIT licensed -# Copyright (c) 2013-2020 lilydjwg , et al. +# Copyright (c) 2013-2020,2024 lilydjwg , et al. import base64 import pytest -import pytest_httpbin -assert pytest_httpbin # for pyflakes -pytestmark = pytest.mark.asyncio(scope="session") +httpbin_available = True +try: + import pytest_httpbin + assert pytest_httpbin # for pyflakes +except ImportError: + httpbin_available = False + +pytestmark = [ + pytest.mark.asyncio(scope="session"), + pytest.mark.skipif(not httpbin_available, reason="needs pytest_httpbin"), +] def base64_encode(s): - return base64.b64encode(s.encode('utf-8')).decode('ascii') + return base64.b64encode(s.encode('utf-8')).decode('ascii') async def test_regex_httpbin_default_user_agent(get_version, httpbin): - ua = await get_version("example", { - "source": "regex", - "url": httpbin.url + "/get", - "regex": r'"User-Agent":\s*"([^"]+)"', - }) - assert ua.startswith("lilydjwg/nvchecker") + ua = await get_version("example", { + "source": "regex", + "url": httpbin.url + "/get", + "regex": r'"User-Agent":\s*"([^"]+)"', + }) + assert ua.startswith("lilydjwg/nvchecker") async def test_regex_httpbin_user_agent(get_version, httpbin): - assert await get_version("example", { - "source": "regex", - "url": httpbin.url + "/get", - "regex": r'"User-Agent":\s*"(\w+)"', - "user_agent": "Meow", - }) == "Meow" + assert await get_version("example", { + "source": "regex", + "url": httpbin.url + "/get", + "regex": r'"User-Agent":\s*"(\w+)"', + "user_agent": "Meow", + }) == "Meow" async def test_regex(get_version, httpbin): - assert await get_version("example", { - "source": "regex", - "url": httpbin.url + "/base64/" + base64_encode("version 1.12 released"), - "regex": r'version ([0-9.]+)', - }) == "1.12" + assert await get_version("example", { + "source": "regex", + "url": httpbin.url + "/base64/" + base64_encode("version 1.12 released"), + "regex": r'version ([0-9.]+)', + }) == "1.12" async def test_missing_ok(get_version, httpbin): - assert await get_version("example", { - "source": "regex", - "url": httpbin.url + "/base64/" + base64_encode("something not there"), - "regex": "foobar", - "missing_ok": True, - }) is None + assert await get_version("example", { + "source": "regex", + "url": httpbin.url + "/base64/" + base64_encode("something not there"), + "regex": "foobar", + "missing_ok": True, + }) is None async def test_missing(get_version, httpbin): - with pytest.raises(RuntimeError): - await get_version("example", { - "source": "regex", - "url": httpbin.url + "/base64/" + base64_encode("something not there"), - "regex": "foobar", - }) + with pytest.raises(RuntimeError): + await get_version("example", { + "source": "regex", + "url": httpbin.url + "/base64/" + base64_encode("something not there"), + "regex": "foobar", + }) async def test_multi_group(get_version, httpbin): - with pytest.raises(RuntimeError): - await get_version("example", { - "source": "regex", - "url": httpbin.url + "/base64/" + base64_encode("1.2"), - "regex": r"(\d+)\.(\d+)", - }) + with pytest.raises(RuntimeError): + await get_version("example", { + "source": "regex", + "url": httpbin.url + "/base64/" + base64_encode("1.2"), + "regex": r"(\d+)\.(\d+)", + }) async def test_regex_with_tokenBasic(get_version, httpbin): - assert await get_version("example", { - "source": "regex", - "url": httpbin.url + "/basic-auth/username/superpassword", - "httptoken": "Basic dXNlcm5hbWU6c3VwZXJwYXNzd29yZA==", - "regex": r'"user":\s*"([a-w]+)"', - }) == "username" + assert await get_version("example", { + "source": "regex", + "url": httpbin.url + "/basic-auth/username/superpassword", + "httptoken": "Basic dXNlcm5hbWU6c3VwZXJwYXNzd29yZA==", + "regex": r'"user":\s*"([a-w]+)"', + }) == "username" async def test_regex_with_tokenBearer(get_version, httpbin): - assert await get_version("example", { - "source": "regex", - "url": httpbin.url + "/bearer", - "httptoken": "Bearer username:password", - "regex": r'"token":\s*"([a-w]+):.*"', - }) == "username" + assert await get_version("example", { + "source": "regex", + "url": httpbin.url + "/bearer", + "httptoken": "Bearer username:password", + "regex": r'"token":\s*"([a-w]+):.*"', + }) == "username" async def test_regex_no_verify_ssl(get_version, httpbin_secure): - assert await get_version("example", { - "source": "regex", - "url": httpbin_secure.url + "/base64/" + base64_encode("version 1.12 released"), - "regex": r'version ([0-9.]+)', - "verify_cert": False, - }) == "1.12" + assert await get_version("example", { + "source": "regex", + "url": httpbin_secure.url + "/base64/" + base64_encode("version 1.12 released"), + "regex": r'version ([0-9.]+)', + "verify_cert": False, + }) == "1.12" async def test_regex_bad_ssl(get_version, httpbin_secure): - try: - await get_version("example", { - "source": "regex", - "url": httpbin_secure.url + "/base64/" + base64_encode("version 1.12 released"), - "regex": r'version ([0-9.]+)', - }) - except Exception: - pass - else: - assert False, 'certificate should not be trusted' + try: + await get_version("example", { + "source": "regex", + "url": httpbin_secure.url + "/base64/" + base64_encode("version 1.12 released"), + "regex": r'version ([0-9.]+)', + }) + except Exception: + pass + else: + assert False, 'certificate should not be trusted' async def test_regex_post(get_version, httpbin): - assert await get_version("example", { - "source": "regex", - "url": httpbin.url + "/post", - "regex": r'"ABCDEF":\s*"(\w+)"', - "post_data": "ABCDEF=234&CDEFG=xyz" - }) == "234" + assert await get_version("example", { + "source": "regex", + "url": httpbin.url + "/post", + "regex": r'"ABCDEF":\s*"(\w+)"', + "post_data": "ABCDEF=234&CDEFG=xyz" + }) == "234" async def test_regex_post2(get_version, httpbin): - assert await get_version("example", { - "source": "regex", - "url": httpbin.url + "/post", - "regex": r'"CDEFG":\s*"(\w+)"', - "post_data": "ABCDEF=234&CDEFG=xyz" - }) == "xyz" + assert await get_version("example", { + "source": "regex", + "url": httpbin.url + "/post", + "regex": r'"CDEFG":\s*"(\w+)"', + "post_data": "ABCDEF=234&CDEFG=xyz" + }) == "xyz" async def test_regex_post_json(get_version, httpbin): - assert await get_version("example", { - "source": "regex", - "url": httpbin.url + "/post", - "regex": r'"ABCDEF":\s*(\w+)', - "post_data": '{"ABCDEF":234,"CDEFG":"xyz"}', - "post_data_type": "application/json" - }) == "234" + assert await get_version("example", { + "source": "regex", + "url": httpbin.url + "/post", + "regex": r'"ABCDEF":\s*(\w+)', + "post_data": '{"ABCDEF":234,"CDEFG":"xyz"}', + "post_data_type": "application/json" + }) == "234" async def test_regex_post_json2(get_version, httpbin): - assert await get_version("example", { - "source": "regex", - "url": httpbin.url + "/post", - "regex": r'"CDEFG":\s*"(\w+)"', - "post_data": '{"ABCDEF":234,"CDEFG":"xyz"}', - "post_data_type": "application/json" - }) == "xyz" + assert await get_version("example", { + "source": "regex", + "url": httpbin.url + "/post", + "regex": r'"CDEFG":\s*"(\w+)"', + "post_data": '{"ABCDEF":234,"CDEFG":"xyz"}', + "post_data_type": "application/json" + }) == "xyz"