mirror of
https://github.com/prowler-cloud/prowler.git
synced 2026-07-23 20:42:02 +00:00
fix(OCSF): fix OCSF output when timestamp is UNIX format (#6627)
Co-authored-by: Rubén De la Torre Vico <rubendltv22@gmail.com>
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
import os
|
||||
from datetime import datetime
|
||||
from typing import List
|
||||
|
||||
from py_ocsf_models.events.base_event import SeverityID, StatusID
|
||||
@@ -68,7 +69,11 @@ class OCSF(Output):
|
||||
activity_name=finding_activity.name,
|
||||
finding_info=FindingInformation(
|
||||
created_time_dt=finding.timestamp,
|
||||
created_time=int(finding.timestamp.timestamp()),
|
||||
created_time=(
|
||||
int(finding.timestamp.timestamp())
|
||||
if isinstance(finding.timestamp, datetime)
|
||||
else finding.timestamp
|
||||
),
|
||||
desc=finding.metadata.Description,
|
||||
title=finding.metadata.CheckTitle,
|
||||
uid=finding.uid,
|
||||
@@ -77,7 +82,11 @@ class OCSF(Output):
|
||||
types=finding.metadata.CheckType,
|
||||
),
|
||||
time_dt=finding.timestamp,
|
||||
time=int(finding.timestamp.timestamp()),
|
||||
time=(
|
||||
int(finding.timestamp.timestamp())
|
||||
if isinstance(finding.timestamp, datetime)
|
||||
else finding.timestamp
|
||||
),
|
||||
remediation=Remediation(
|
||||
desc=finding.metadata.Remediation.Recommendation.Text,
|
||||
references=list(
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
from datetime import datetime
|
||||
from typing import Union
|
||||
|
||||
from prowler.config.config import prowler_version
|
||||
from prowler.lib.check.models import CheckMetadata, Code, Recommendation, Remediation
|
||||
@@ -19,7 +20,7 @@ def generate_finding_output(
|
||||
resource_name: str = "",
|
||||
resource_tags: dict = {},
|
||||
compliance: dict = {"test-compliance": "test-compliance"},
|
||||
timestamp: datetime = None,
|
||||
timestamp: Union[int, datetime] = None,
|
||||
provider: str = "aws",
|
||||
partition: str = "aws",
|
||||
description: str = "check description",
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import json
|
||||
from datetime import datetime
|
||||
from datetime import datetime, timezone
|
||||
from io import StringIO
|
||||
|
||||
import requests
|
||||
@@ -36,7 +36,15 @@ class TestOCSF:
|
||||
muted=False,
|
||||
region=AWS_REGION_EU_WEST_1,
|
||||
resource_tags={"Name": "test", "Environment": "dev"},
|
||||
)
|
||||
),
|
||||
# Test with int timestamp (UNIX timestamp)
|
||||
generate_finding_output(
|
||||
status="FAIL",
|
||||
severity="medium",
|
||||
muted=False,
|
||||
region=AWS_REGION_EU_WEST_1,
|
||||
timestamp=1619600000,
|
||||
),
|
||||
]
|
||||
|
||||
ocsf = OCSF(findings)
|
||||
@@ -101,6 +109,14 @@ class TestOCSF:
|
||||
"compliance": findings[0].compliance,
|
||||
}
|
||||
|
||||
# Test with int timestamp (UNIX timestamp)
|
||||
output_data = ocsf.data[1]
|
||||
|
||||
assert output_data.time == 1619600000
|
||||
assert output_data.time_dt == datetime.fromtimestamp(
|
||||
1619600000, tz=timezone.utc
|
||||
)
|
||||
|
||||
def test_validate_ocsf(self):
|
||||
mock_file = StringIO()
|
||||
findings = [
|
||||
|
||||
Reference in New Issue
Block a user