import demistomock as demisto
import pytest
@pytest.mark.parametrize("str1, str2, expected_results", [("aaa", "aaa", 0), ("aba", "baba", 1), ("kitten", "sitting", 3)])
def test_levenshtein(str1, str2, expected_results):
"""
Given
- Two strings.
When
- Calling levenshtein function.
Then
- Return the Levenshtein distance (int).
"""
from CheckSenderDomainDistance import levenshtein
assert levenshtein(str1, str2) == expected_results
@pytest.mark.parametrize(
"domain, sender, expected_results",
[
("example.com", "mail@example1.com", "Domain example1.com is suspiciously close to example.com"),
("", "mail@example1.com", "Unable to extract domain from arguments"),
("example.com", "", "Unable to find sender in email"),
("example.com", "mail@example.com", "no"),
],
)
def test_main(mocker, domain, sender, expected_results):
"""
Given
- The commands args.
When
- Calling the main function.
Then
- Verify the result is as expected.
"""
from CheckSenderDomainDistance import main
mocker.patch("CheckSenderDomainDistance.levenshtein", return_value=1)
mocker.patch.object(demisto, "args", return_value={"domain": domain, "sender": sender})
results_mock = mocker.patch.object(demisto, "results")
main()
try:
contents_results_mock = results_mock.call_args[0][0][0].get("Contents")
assert contents_results_mock == expected_results
except AttributeError: # In the fourth case
assert results_mock.call_args[0][0][0] == expected_results