from CheckFieldValue import poll_field
from CommonServerPython import *
incident_contains_field_in_custom_fields = {
"id": 1,
"name": "This is incident1",
"type": "Phishing",
"severity": 0,
"status": 1,
"created": "2019-01-02",
"closed": "0001-01-01T00:00:00Z",
"labels": [{"type": "subject", "value": "This subject1"}, {"type": "unique", "value": "This subject1"}],
"attachment": [{"name": "Test word1 word2"}],
"CustomFields": {"field_name": "Test"},
}
incident_with_empty_field_in_custom_fields = {
"id": 1,
"name": "This is incident1",
"type": "Phishing",
"severity": 0,
"status": 1,
"created": "2019-01-02",
"closed": "0001-01-01T00:00:00Z",
"labels": [{"type": "subject", "value": "This subject1"}, {"type": "unique", "value": "This subject1"}],
"attachment": [{"name": "Test word1 word2"}],
"CustomFields": {"field_name": ""},
}
incident_contains_field_in_root = {
"field_name": "Test",
"id": 2,
"name": "This is incident2",
"type": "Phishing",
"severity": 0,
"status": 1,
"created": "2019-01-02",
"closed": "0001-01-01T00:00:00Z",
"labels": [{"type": "subject", "value": "This subject1"}, {"type": "unique", "value": "This subject1"}],
"attachment": [{"name": "Test word1 word2"}],
}
incident_without_field = {
"id": 3,
"name": "This is incident3",
"type": "Phishing",
"severity": 0,
"status": 1,
"created": "2019-01-02",
"closed": "0001-01-01T00:00:00Z",
"labels": [{"type": "subject", "value": "This subject1"}, {"type": "unique", "value": "This subject1"}],
"attachment": [{"name": "Test word1 word2"}],
}
incident_with_empty_field = {
"field_name": "",
"id": 3,
"name": "This is incident3",
"type": "Phishing",
"severity": 0,
"status": 1,
"created": "2019-01-02",
"closed": "0001-01-01T00:00:00Z",
"labels": [{"type": "subject", "value": "This subject1"}, {"type": "unique", "value": "This subject1"}],
"attachment": [{"name": "Test word1 word2"}],
}
def test_poll_field_from_root_with_regex_success(mocker):
"""Unit test
Given
- An incident with the field named 'field_name' with value 'Test' in the root
- The regex sent is matching the field value
When
- mock the server response to demisto.incidents().
Then
Validate the script finds the field
"""
mocker.patch.object(demisto, "incidents", return_value=[incident_contains_field_in_root])
args = {
"field": "field_name",
"regex": "^Test",
}
result = poll_field(args)
assert result.readable_output in "The field exists."
assert result.outputs["exists"] is True
def test_poll_field_from_root_with_regex_failure(mocker):
"""Unit test
Given
- An incident with the field named 'field_name' with value 'Test' in the root
- The regex sent does not match the field value
When
- mock the server response to demisto.incidents().
Then
Validate the script returns a false value
"""
mocker.patch.object(demisto, "incidents", return_value=[incident_contains_field_in_root])
args = {
"field": "field_name",
"regex": "^Testing",
}
result = poll_field(args)
assert result.readable_output in "The field does not exist."
assert result.outputs["exists"] is False
def test_poll_field_from_root_without_regex_success(mocker):
"""Unit test
Given
- An incident with the field named 'field_name' with value 'Test' in root
- No regex argument sent to the command
When
- mock the server response to demisto.incidents().
Then
Validate the script finds the field
"""
mocker.patch.object(demisto, "incidents", return_value=[incident_contains_field_in_root])
args = {
"field": "field_name",
}
result = poll_field(args)
assert result.readable_output in "The field exists."
assert result.outputs["exists"] is True
def test_poll_missing_field_in_root(mocker):
"""Unit test
Given
- An incident without the field named 'field_name' in the root
When
- mock the server response to demisto.incidents().
Then
Validate the script returns a false value
"""
mocker.patch.object(demisto, "incidents", return_value=[incident_without_field])
args = {
"field": "field_name",
}
result = poll_field(args)
assert result.readable_output in "The field does not exist."
assert result.outputs["exists"] is False
# ---------- Incident with customFields entry -------------------
def test_poll_field_from_custom_fields_with_regex_success(mocker):
"""Unit test
Given
- An incident with the field named 'field_name' with value 'Test' in the 'CustomFields' entry
- The regex sent is matching the field value
When
- mock the server response to demisto.incidents().
Then
Validate the script finds the field
"""
mocker.patch.object(demisto, "incidents", return_value=[incident_contains_field_in_custom_fields])
args = {
"field": "field_name",
"regex": "Test",
}
result = poll_field(args)
assert result.readable_output in "The field exists."
assert result.outputs["exists"] is True
def test_poll_field_from_custom_fields_with_regex_failure(mocker):
"""Unit test
Given
- An incident with the field named 'field_name' with value 'Test' in the 'CustomFields' entry
- The regex sent does not match the field value
When
- mock the server response to demisto.incidents().
Then
Validate the script returns a false value
"""
mocker.patch.object(demisto, "incidents", return_value=[incident_contains_field_in_custom_fields])
args = {
"field": "field_name",
"regex": "NOT",
}
result = poll_field(args)
assert result.readable_output in "The field does not exist."
assert result.outputs["exists"] is False
def test_poll_field_from_custom_fields_without_regex_success(mocker):
"""Unit test
Given
- An incident with the field named 'field_name' with value 'Test' in the 'CustomFields' entry
- No regex argument sent to the command
When
- mock the server response to demisto.incidents().
Then
Validate the script finds the field
"""
mocker.patch.object(demisto, "incidents", return_value=[incident_contains_field_in_custom_fields])
args = {
"field": "field_name",
}
result = poll_field(args)
assert result.readable_output in "The field exists."
assert result.outputs["exists"] is True
def test_poll_missing_field_in_custom_fields(mocker):
"""Unit test
Given
- An incident with the field named 'field_name' in 'CustomFields' entry with an empty value
- No regex argument sent to the command
When
- mock the server response to demisto.incidents().
Then
Validate the script finds the field
"""
mocker.patch.object(demisto, "incidents", return_value=[incident_with_empty_field_in_custom_fields])
args = {
"field": "field_name",
}
result = poll_field(args)
assert result.readable_output in "The field does not exist."
assert result.outputs["exists"] is False