librefi/tests/regex_utils.py

72 lines
2.1 KiB
Python
Raw Normal View History

2020-11-29 01:14:58 +01:00
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
2020-09-09 18:37:20 +02:00
from librefi.utils import regex_search_string
2020-11-29 02:36:57 +01:00
from librefi.compat import compat_str
2020-09-09 18:37:20 +02:00
HTML_STRING = """
<form method="POST" action="/?your=mother">
<input type="hidden" value="tesco" />
<input type="hidden" name="twoja" value="stara" />
2020-09-09 18:37:20 +02:00
</form>
"""
PATTERN_1 = r'<form [^>]+action="([^"]+)'
EXPECTED_RESULT_1 = "/?your=mother"
2020-09-09 18:37:20 +02:00
PATTERN_2 = r'<input [^>]*value="([^"]+)"'
EXPECTED_RESULT_2 = ["tesco", "stara"]
2020-09-09 18:37:20 +02:00
def test_regex_search_single_regex():
result = regex_search_string(PATTERN_1, HTML_STRING)
2020-09-09 18:37:20 +02:00
assert result is not None
assert result == EXPECTED_RESULT_1
2020-09-09 18:37:20 +02:00
def test_regex_search_multiple_regexes():
2020-09-09 18:37:20 +02:00
result = regex_search_string(
[r'dupsko', PATTERN_1, r'byle jakie'], HTML_STRING)
2020-09-09 18:37:20 +02:00
assert result is not None
assert result == EXPECTED_RESULT_1
2020-09-09 18:37:20 +02:00
def test_regex_search_invalid():
result = regex_search_string([r'dupsko', r'czorne'], HTML_STRING)
assert result is None
assert result != EXPECTED_RESULT_1
2020-09-09 18:37:20 +02:00
def test_regex_search_default():
default = "sth"
result = regex_search_string(
[r'dupsko', r'czorne'], HTML_STRING, default=default)
assert result is not None
assert result == default
def test_regex_search_multiple_results():
results = regex_search_string(PATTERN_2, HTML_STRING, multiple=True)
assert results is not None
assert isinstance(results, list)
assert len(results) == len(EXPECTED_RESULT_2)
for i in range(len(results)):
2020-11-29 02:36:57 +01:00
assert isinstance(results[i], compat_str)
assert results[i] == EXPECTED_RESULT_2[i]
def test_regex_search_whole_single_match():
result = regex_search_string(PATTERN_1, HTML_STRING, whole_match=True)
assert result is not None
assert result.group(1) == EXPECTED_RESULT_1
def test_regex_search_multiple_whole_matches():
results = regex_search_string(
PATTERN_2, HTML_STRING, multiple=True, whole_match=True)
assert results is not None
assert isinstance(results, list)
assert len(results) == len(EXPECTED_RESULT_2)
for i in range(len(results)):
assert results[i].group(1) == EXPECTED_RESULT_2[i]