CheckLastEnrichment

Check if DomainTools Data is in Need of Enrichment.

python · DomainTools Iris Investigate

Details

IDCheckLastEnrichment
Languagepython
From Version6.6.0
Docker Imagedemisto/python3:3.12.13.10116658
TagsDomainTools Condition

README

Check if DomainTools Data is in Need of Enrichment

Script Data


Name Description
Script Type python3
Tags DomainTools, Condition
Cortex XSOAR Version 6.9.0

Inputs


Argument Name Description
last_enrichment Date domain was last enriched ‘%Y-%m-%d’

Outputs


Path Description Type
yes Refresh Enrichment Data String
no Don’t Refresh Enrichment Data String
from CheckLastEnrichment import main, time_check
from CommonServerPython import *
from freezegun import freeze_time


@freeze_time("2024-01-01 14:00:00")
def test_time_check_false():
    create_date = str(datetime.now().date())
    result = time_check(create_date)
    assert result is False


@freeze_time("2024-01-01 14:00:00")
def test_time_check_true():
    create_date = (datetime.now() - timedelta(days=1)).strftime("%Y-%m-%d")
    result = time_check(create_date)
    assert result is True


@freeze_time("2024-01-01 14:00:00")
def test_check_last_enrichment(mocker):
    enrich_date = (datetime.now() - timedelta(days=2)).strftime("%Y-%m-%d")
    mocker.patch.object(demisto, "args", return_value={"last_enrichment": enrich_date})
    mocker.patch.object(demisto, "results")

    main()
    assert demisto.results.call_count == 1
    # call_args is tuple (args list, kwargs). we only need the first one
    results = demisto.results.call_args[0]
    assert len(results) == 1
    assert results[0]["Contents"] == "yes"


@freeze_time("2024-01-01 14:00:00")
def test_check_last_enrichment_recent_date(mocker):
    last_enrichment = (datetime.now() - timedelta(minutes=10)).strftime("%Y-%m-%d")
    mocker.patch.object(demisto, "args", return_value={"last_enrichment": last_enrichment})
    mocker.patch.object(demisto, "results")

    main()
    assert demisto.results.call_count == 1
    # call_args is tuple (args list, kwargs). we only need the first one
    results = demisto.results.call_args[0]
    assert len(results) == 1
    assert results[0]["Contents"] == "no"


@freeze_time("2024-01-01 14:00:00")
def test_check_last_enrichment_none(mocker):
    mocker.patch.object(demisto, "args", return_value={"last_enrichment": None})
    mocker.patch.object(demisto, "results")

    main()
    assert demisto.results.call_count == 1
    # call_args is tuple (args list, kwargs). we only need the first one
    results = demisto.results.call_args[0]
    assert len(results) == 1
    assert results[0]["Contents"] == "yes"


@freeze_time("2024-01-01 14:00:00")
def test_main_exception(mocker):
    mocker.patch.object(demisto, "args", return_value={"invalid_key": "invalid_value"})
    mocker.patch.object(demisto, "results")
    mocker.patch("sys.exit")

    main()
    results = demisto.results.call_args[0]
    assert results[0]["Contents"] == "Failed to execute CheckLastEnrichment. Error: 'last_enrichment'"