Implemented tests for CapturingTask. A few mock classes where needed.
This commit is contained in:
parent
007f458cd5
commit
cf4ce06b57
3 changed files with 267 additions and 236 deletions
170
tests/capturer_test.py
Normal file
170
tests/capturer_test.py
Normal file
|
|
@ -0,0 +1,170 @@
|
|||
from tests.mock_classes import (
|
||||
MockCapturingInterface,
|
||||
MockParsingFlow,
|
||||
MockUrlAttackReturnsSuccess,
|
||||
MockUrlAttackReturnsFailure,
|
||||
)
|
||||
from capturer.capturer import CapturingTask
|
||||
|
||||
|
||||
def test_capturing_task_successful_task_flow():
|
||||
|
||||
the_task_parameters = dict()
|
||||
the_task_parameters["uuid"] = "test_uuid"
|
||||
the_task_parameters["ad_url"] = "test_url"
|
||||
the_task_parameters["fk_uuid_exploring"] = "test_exploring_uuid"
|
||||
the_task_parameters["status"] = "Pending"
|
||||
|
||||
fake_resulting_field_values = {
|
||||
"a_field": {"a_value": 1},
|
||||
"another_field": {"another_value": 2},
|
||||
}
|
||||
mock_parsing_flow = MockParsingFlow(
|
||||
mock_all_found_fields_are_valid=True,
|
||||
mock_all_non_optional_fields_were_found=True,
|
||||
mock_field_values_to_return=fake_resulting_field_values,
|
||||
)
|
||||
|
||||
mock_capturing_interface = MockCapturingInterface()
|
||||
|
||||
task = CapturingTask(
|
||||
task_parameters=the_task_parameters,
|
||||
capturing_interface=mock_capturing_interface,
|
||||
new_parsing_flow=mock_parsing_flow,
|
||||
url_acquisition_object=MockUrlAttackReturnsSuccess,
|
||||
dead_ad_checker=lambda: False,
|
||||
)
|
||||
|
||||
task.capture()
|
||||
|
||||
final_data = task.get_ad_data()
|
||||
|
||||
assert (
|
||||
len(mock_capturing_interface.tasks) == 1
|
||||
and mock_capturing_interface.tasks[the_task_parameters["uuid"]][-1].status
|
||||
== "Data ready"
|
||||
and fake_resulting_field_values == final_data
|
||||
)
|
||||
|
||||
|
||||
def test_capturing_task_dead_ad_task_flow():
|
||||
the_task_parameters = dict()
|
||||
the_task_parameters["uuid"] = "test_uuid"
|
||||
the_task_parameters["ad_url"] = "test_url"
|
||||
the_task_parameters["fk_uuid_exploring"] = "test_exploring_uuid"
|
||||
the_task_parameters["status"] = "Pending"
|
||||
|
||||
mock_parsing_flow = MockParsingFlow(
|
||||
mock_all_found_fields_are_valid=False,
|
||||
issues_to_return={"some_field": {"valid": False}},
|
||||
)
|
||||
|
||||
mock_capturing_interface = MockCapturingInterface()
|
||||
|
||||
task = CapturingTask(
|
||||
task_parameters=the_task_parameters,
|
||||
capturing_interface=mock_capturing_interface,
|
||||
new_parsing_flow=mock_parsing_flow,
|
||||
url_acquisition_object=MockUrlAttackReturnsFailure,
|
||||
dead_ad_checker=lambda x: True,
|
||||
)
|
||||
|
||||
task.capture()
|
||||
|
||||
assert (
|
||||
len(mock_capturing_interface.tasks) == 1
|
||||
and mock_capturing_interface.tasks[the_task_parameters["uuid"]][-1].status
|
||||
== "Dead ad"
|
||||
)
|
||||
|
||||
|
||||
def test_capturing_task_invalid_fields_surrender_flow():
|
||||
the_task_parameters = dict()
|
||||
the_task_parameters["uuid"] = "test_uuid"
|
||||
the_task_parameters["ad_url"] = "test_url"
|
||||
the_task_parameters["fk_uuid_exploring"] = "test_exploring_uuid"
|
||||
the_task_parameters["status"] = "Pending"
|
||||
|
||||
mock_parsing_flow = MockParsingFlow(
|
||||
mock_all_found_fields_are_valid=False,
|
||||
issues_to_return={"some_field": {"valid": False}},
|
||||
)
|
||||
|
||||
mock_capturing_interface = MockCapturingInterface()
|
||||
|
||||
task = CapturingTask(
|
||||
task_parameters=the_task_parameters,
|
||||
capturing_interface=mock_capturing_interface,
|
||||
new_parsing_flow=mock_parsing_flow,
|
||||
url_acquisition_object=MockUrlAttackReturnsSuccess,
|
||||
dead_ad_checker=lambda: False,
|
||||
)
|
||||
|
||||
task.capture()
|
||||
|
||||
assert (
|
||||
len(mock_capturing_interface.tasks) == 1
|
||||
and mock_capturing_interface.tasks[the_task_parameters["uuid"]][-1].status
|
||||
== "Invalid value fields"
|
||||
)
|
||||
|
||||
|
||||
def test_capturing_task_missing_fields_surrender_flow():
|
||||
the_task_parameters = dict()
|
||||
the_task_parameters["uuid"] = "test_uuid"
|
||||
the_task_parameters["ad_url"] = "test_url"
|
||||
the_task_parameters["fk_uuid_exploring"] = "test_exploring_uuid"
|
||||
the_task_parameters["status"] = "Pending"
|
||||
|
||||
mock_parsing_flow = MockParsingFlow(
|
||||
mock_all_non_optional_fields_were_found=False,
|
||||
issues_to_return={"some_field": {"found": False}},
|
||||
)
|
||||
|
||||
mock_capturing_interface = MockCapturingInterface()
|
||||
|
||||
task = CapturingTask(
|
||||
task_parameters=the_task_parameters,
|
||||
capturing_interface=mock_capturing_interface,
|
||||
new_parsing_flow=mock_parsing_flow,
|
||||
url_acquisition_object=MockUrlAttackReturnsSuccess,
|
||||
dead_ad_checker=lambda: False,
|
||||
)
|
||||
|
||||
task.capture()
|
||||
|
||||
assert (
|
||||
len(mock_capturing_interface.tasks) == 1
|
||||
and mock_capturing_interface.tasks[the_task_parameters["uuid"]][-1].status
|
||||
== "Fields missing"
|
||||
)
|
||||
|
||||
|
||||
def test_capturing_task_unexpected_issue_surrender_flow():
|
||||
the_task_parameters = dict()
|
||||
the_task_parameters["uuid"] = "test_uuid"
|
||||
the_task_parameters["ad_url"] = "test_url"
|
||||
the_task_parameters["fk_uuid_exploring"] = "test_exploring_uuid"
|
||||
the_task_parameters["status"] = "Pending"
|
||||
|
||||
mock_parsing_flow = MockParsingFlow()
|
||||
|
||||
mock_capturing_interface = MockCapturingInterface()
|
||||
|
||||
CapturingTask.sleep_time_failed_request = 0 # Override quite long sleep time
|
||||
|
||||
task = CapturingTask(
|
||||
task_parameters=the_task_parameters,
|
||||
capturing_interface=mock_capturing_interface,
|
||||
new_parsing_flow=mock_parsing_flow,
|
||||
url_acquisition_object=MockUrlAttackReturnsFailure,
|
||||
dead_ad_checker=lambda x: False,
|
||||
)
|
||||
|
||||
task.capture()
|
||||
|
||||
assert (
|
||||
len(mock_capturing_interface.tasks) == 1
|
||||
and mock_capturing_interface.tasks[the_task_parameters["uuid"]][-1].status
|
||||
== "Surrender"
|
||||
)
|
||||
Loading…
Add table
Add a link
Reference in a new issue