def test_create_context_debotscore(params, rate, expected_score, mocker):
    expected_output = {'Indicator': '88.88.88.88', 'Score': expected_score, 'Type': 'ip', 'Vendor': 'ThreatConnect'}
    indicator = deepcopy(IP_INDICATOR)
    indicator[0]['rating'] = float(rate)
    mocker.patch.object(demisto, 'params', return_value=params)
    output = create_context(indicator, True)[0].get('DBotScore', [{}])[0]
    assert output == expected_output, f'expected_output({indicator}, True)[0].get(\'DBotScore\')\n\treturns: {output}' \
                                      f'\n\tinstead: {expected_output}'
def test_create_context(indicators, expected_output, mocker):
    params = {
        "defaultOrg": "Demisto Inc.",
        "freshness": 7,
        "rating": 0,
        "confidence": 0
    }
    mocker.patch.object(demisto, 'params', return_value=params)
    output = create_context(indicators)
    assert output == expected_output, f'expected_output({indicators})\n\treturns: {output}\n\tinstead: {expected_output}'
def test_create_context_debotscore_samilar_indicator(mocker):
    indicator = deepcopy(IP_INDICATOR)
    indicator.extend(deepcopy(IP_INDICATOR))
    indicator[0]['confidence'] = 0
    mocker.patch.object(demisto, 'params', return_value={"defaultOrg": "Demisto Inc.",
                                                         "freshness": 7, "rating": 0, "confidence": 50})

    # passing 2 ip indicators with the same address, one of them should gets the score 2 and the second one the score 3
    context, _ = create_context(indicator, True)
    # validate there is one indicator with the highest score - 3
    assert context
    assert len(context['DBotScore']) == 1
    assert context['DBotScore'][0]['Indicator'] == '88.88.88.88'
    assert context['DBotScore'][0]['Score'] == 3
def test_create_context(indicators, expected_output, params, mocker):
    mocker.patch.object(demisto, 'params', return_value=params)
    output = create_context(indicators)
    assert output == expected_output, f'expected_output({indicators})\n\treturns: ' \
                                      f'{output}\n\tinstead: {expected_output}'