Skip to content

Commit b3d1ddb

Browse files
authored
test: cover empty http list and empty line handling in list_comparison (#930)
* test: cover empty http list and empty line handling in list_comparison
1 parent 0243189 commit b3d1ddb

File tree

1 file changed

+60
-2
lines changed

1 file changed

+60
-2
lines changed

tests/unit/processor/list_comparison/test_list_comparison.py

Lines changed: 60 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
# pylint: disable=missing-docstring
22
# pylint: disable=protected-access
3-
import pytest
4-
53
import json
64
from pathlib import Path
5+
from string import Template
76
from unittest import mock
7+
8+
import pytest
89
import responses
910

1011
from logprep.factory import Factory
@@ -398,3 +399,60 @@ def test_match_list_field(self, testcase, system, result):
398399
processor.setup()
399400
processor.process(document)
400401
assert document == expected, testcase
402+
403+
@pytest.mark.parametrize(
404+
"http_list_content, expected_result",
405+
[
406+
("", set()),
407+
("\n", {""}),
408+
],
409+
)
410+
@responses.activate
411+
def test_list_comparison_empty_http_list_or_empty_line_updates_compare_sets(
412+
self,
413+
http_list_content,
414+
expected_result,
415+
):
416+
document = {"user": "Foo"}
417+
expected_document = {"user": "Foo", "user_results": {"not_in_list": ["bad_users.list"]}}
418+
419+
url_template = "http://localhost/tests/testdata/${LOGPREP_LIST}?ref=bla"
420+
list_name = "bad_users.list"
421+
url = Template(url_template).substitute({"LOGPREP_LIST": list_name})
422+
423+
responses.add(
424+
responses.GET,
425+
url=url,
426+
body=http_list_content,
427+
status=200,
428+
)
429+
430+
rule_dict = {
431+
"filter": "user",
432+
"list_comparison": {
433+
"source_fields": ["user"],
434+
"target_field": "user_results",
435+
"list_file_paths": [list_name],
436+
},
437+
"description": "",
438+
}
439+
440+
config = {
441+
"type": "list_comparison",
442+
"rules": [],
443+
"list_search_base_path": url_template,
444+
}
445+
446+
HttpGetter._shared.clear()
447+
448+
processor = Factory.create({"custom_lister": config})
449+
rule = processor.rule_class.create_from_dict(rule_dict)
450+
processor._rule_tree.add_rule(rule)
451+
452+
processor.setup()
453+
processor.process(document)
454+
455+
assert document == expected_document
456+
assert len(responses.calls) == 1
457+
assert responses.calls[0].request.url == url
458+
assert rule.compare_sets[list_name] == expected_result

0 commit comments

Comments
 (0)