Esempio n. 1
0
def test_url_command(mocker, url, context, expected_results):
    """
    Given:
        - a url

    When:
        - mocking the integration context data, runnig url_command

    Then:
        - validating whether the url is malicious (in integration context)

    """
    mocker.patch.object(
        demisto,
        "getIntegrationContext",
        return_value=context,
    )
    mocker.patch.object(OpenPhish_v2, "_is_reload_needed", return_value=False)
    client = Client(MOCK_URL, True, False, 1)
    results = url_command(client, **url)
    output = results.to_context().get('EntryContext', {})
    DBOT_KEY = 'DBotScore(val.Indicator && val.Indicator == obj.Indicator && val.Vendor == obj.Vendor && val.Type == obj.Type)'
    assert output.get('URL(val.Data && val.Data == obj.Data)',
                      []) == expected_results.get('URL')
    assert output.get(DBOT_KEY, []) == expected_results.get('DBOTSCORE')
def test_url_command(mocker, url, context, expected_results):
    """
    Given:
        - a url

    When:
        - mocking the integration context data, runnig url_command

    Then:
        - validating whether the url is malicious (in integration context)

    """
    mocker.patch.object(
        demisto,
        "getIntegrationContext",
        return_value=context,
    )
    mocker.patch.object(OpenPhish_v2, "_is_reload_needed", return_value=False)
    client = Client(MOCK_URL, True, False, 1)
    results = url_command(client, **url)
    assert len(results) >= 1
    for i in range(len(results)):
        output = results[i].to_context().get("EntryContext", {})
        assert output.get("URL(val.Data && val.Data == obj.Data)",
                          []) == expected_results[i].get("URL")
        assert output.get(DBOT_KEY, []) == expected_results[i].get("DBOTSCORE")
Esempio n. 3
0
def test_status_command(mocker, data, expected_result):
    """
    Given:
        - Integration context
    When:
        - After status command
    Then:
        - Returns number of loaded urls if data was loaded.
        - Otherwise, returns Database not loaded.
    """
    client = Client(MOCK_URL, True, False, 1)
    mocker.patch.object(demisto, "getIntegrationContext", return_value=data)
    status = status_command(client)
    assert status.readable_output == expected_result
Esempio n. 4
0
def test_reload_command(mocker):
    """
           When:
               - reloading data from to the api to integration context

           Then:
               - checks if the reloading finished successfully

           """
    mock_data_from_api = RAW_DATA
    mocker.patch.object(Client,
                        'http_request',
                        return_value=mock_data_from_api)
    mocker.patch.object(demisto, "setIntegrationContext")
    client = Client(url=MOCK_URL,
                    use_ssl=False,
                    use_proxy=False,
                    fetch_interval_hours=1)
    status = reload_command(client)
    assert status.readable_output == "Database was updated successfully to the integration context."
Esempio n. 5
0
from datetime import datetime
import pytest
import OpenPhish_v2
import demistomock as demisto
from OpenPhish_v2 import Client, _is_reload_needed, remove_backslash, reload_command, status_command, url_command
from freezegun import freeze_time
from test_data.api_raw import RAW_DATA
MOCK_URL = "http://openphish.com"
MOCK_DELIVERED_MESSAGE = {}

RELOADED_DATA = [
    (Client(MOCK_URL, True, False, 2), {}, True),  # case no data in memory
    (Client(MOCK_URL, True, False, 2), {
        "list": []
    }, True),  # case no timestamp and list is emtpy
    (Client(MOCK_URL, True, False, 2), {
        "list": [
            'hxxp://www.niccakorea.com/board/index.html',
            'hxxp://lloyds.settlemypayee.uk',
            'hxxp://whatsapp-chat02.zzux.com',
            'hxxp://dd0ddddddcuser.ey.r.appspot.com'
        ],
        "timestamp":
        None
    }, True),  # case no timestamp
    (
        Client(MOCK_URL, True, False, 1),
        {
            "list": [
                'hxxp://www.niccakorea.com/board/index.html',
                'hxxp://lloyds.settlemypayee.uk',