import json
import pytest
from PrismaCloudComputeParseComplianceAlert import parse_compliance
def test_parse_compliance():
valid_raw_json = json.dumps(
{
"_id": "testID",
"compliance": [{"description": "testDescription", "id": "testID", "type": "testType"}],
"kind": "compliance",
"time": "1970-01-01T00:00:00.000Z",
"type": "host",
}
)
no_kind_raw_json = json.dumps({"_id": "testID", "time": "1970-01-01T00:00:00.000Z"})
wrong_kind_raw_json = json.dumps({"_id": "testID", "time": "1970-01-01T00:00:00.000Z", "kind": "wrongKind"})
tests = [
{
"input": valid_raw_json,
"expectedException": False,
"expectedResult": {
"readable": r"""### Compliance Information
|time|type|
|---|---|
| 1970-01-01T00:00:00.000Z | host |
### Compliance
|description|id|type|
|---|---|---|
| testDescription | testID | testType |
""",
"output": {"PrismaCloudCompute.ComplianceAlert": json.loads(valid_raw_json)},
"raw": valid_raw_json,
},
},
{
"input": no_kind_raw_json,
"expectedException": True,
},
{
"input": wrong_kind_raw_json,
"expectedException": True,
},
]
for test in tests:
if test["expectedException"]:
with pytest.raises(Exception) as ex:
parse_compliance(test["input"])
assert str(ex.value) == f"Input should be a raw JSON compliance alert, received: {test['input']}"
else:
assert parse_compliance(test["input"]) == (
test["expectedResult"]["readable"],
test["expectedResult"]["output"],
test["expectedResult"]["raw"],
)