moto/tests/test_guardduty/test_guardduty.py

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

156 lines
5.0 KiB
Python
Raw Normal View History

2021-12-07 12:10:43 +00:00
import boto3
2022-05-27 10:28:08 +00:00
import pytest
2021-12-07 12:10:43 +00:00
import sure # noqa # pylint: disable=unused-import
2022-05-27 10:28:08 +00:00
from botocore.exceptions import ClientError
2021-12-07 12:10:43 +00:00
from moto import mock_guardduty
@mock_guardduty
def test_create_detector():
client = boto3.client("guardduty", region_name="us-east-1")
response = client.create_detector(
Enable=True,
ClientToken="745645734574758463758",
FindingPublishingFrequency="ONE_HOUR",
DataSources={"S3Logs": {"Enable": True}},
Tags={},
)
response.should.have.key("DetectorId")
response["DetectorId"].shouldnt.equal(None)
@mock_guardduty
def test_create_detector_with_minimal_params():
client = boto3.client("guardduty", region_name="us-east-1")
response = client.create_detector(Enable=True)
response.should.have.key("DetectorId")
response["DetectorId"].shouldnt.equal(None)
2022-05-27 10:28:08 +00:00
@mock_guardduty
def test_get_detector_with_s3():
client = boto3.client("guardduty", region_name="us-east-1")
detector_id = client.create_detector(
Enable=True,
ClientToken="745645734574758463758",
FindingPublishingFrequency="ONE_HOUR",
DataSources={"S3Logs": {"Enable": True}},
Tags={},
)["DetectorId"]
resp = client.get_detector(DetectorId=detector_id)
resp.should.have.key("FindingPublishingFrequency").equals("ONE_HOUR")
resp.should.have.key("DataSources")
resp["DataSources"].should.have.key("S3Logs").equals({"Status": "ENABLED"})
resp.should.have.key("CreatedAt")
@mock_guardduty
def test_get_detector_with_all_data_sources():
client = boto3.client("guardduty", region_name="us-east-1")
detector_id = client.create_detector(
Enable=True,
ClientToken="745645734574758463758",
FindingPublishingFrequency="ONE_HOUR",
DataSources={
"S3Logs": {"Enable": True},
"Kubernetes": {"AuditLogs": {"Enable": True}},
},
Tags={},
)["DetectorId"]
resp = client.get_detector(DetectorId=detector_id)
resp.should.have.key("FindingPublishingFrequency").equals("ONE_HOUR")
resp.should.have.key("DataSources")
resp["DataSources"].should.have.key("S3Logs").equals({"Status": "ENABLED"})
resp["DataSources"].should.have.key("Kubernetes")
resp["DataSources"]["Kubernetes"].should.have.key("AuditLogs").equals(
{"Status": "ENABLED"}
)
resp.should.have.key("CreatedAt")
@mock_guardduty
def test_update_detector():
client = boto3.client("guardduty", region_name="us-east-1")
detector_id = client.create_detector(
Enable=True,
ClientToken="745645734574758463758",
FindingPublishingFrequency="ONE_HOUR",
Tags={},
)["DetectorId"]
client.update_detector(
DetectorId=detector_id,
Enable=False,
FindingPublishingFrequency="SIX_HOURS",
DataSources={
"S3Logs": {"Enable": True},
"Kubernetes": {"AuditLogs": {"Enable": False}},
},
)
resp = client.get_detector(DetectorId=detector_id)
resp.should.have.key("FindingPublishingFrequency").equals("SIX_HOURS")
resp.should.have.key("DataSources")
resp["DataSources"].should.have.key("S3Logs").equals({"Status": "ENABLED"})
resp["DataSources"].should.have.key("Kubernetes")
resp["DataSources"]["Kubernetes"].should.have.key("AuditLogs").equals(
{"Status": "DISABLED"}
)
2021-12-07 12:10:43 +00:00
@mock_guardduty
def test_list_detectors_initial():
client = boto3.client("guardduty", region_name="us-east-1")
response = client.list_detectors()
response.should.have.key("DetectorIds").equals([])
@mock_guardduty
def test_list_detectors():
client = boto3.client("guardduty", region_name="us-east-1")
d1 = client.create_detector(
Enable=True,
ClientToken="745645734574758463758",
FindingPublishingFrequency="ONE_HOUR",
DataSources={"S3Logs": {"Enable": True}},
Tags={},
)["DetectorId"]
d2 = client.create_detector(Enable=False)["DetectorId"]
response = client.list_detectors()
response.should.have.key("DetectorIds")
set(response["DetectorIds"]).should.equal({d1, d2})
2022-05-27 10:28:08 +00:00
@mock_guardduty
def test_delete_detector():
client = boto3.client("guardduty", region_name="us-east-1")
detector_id = client.create_detector(
Enable=True,
ClientToken="745645734574758463758",
FindingPublishingFrequency="ONE_HOUR",
DataSources={
"S3Logs": {"Enable": True},
"Kubernetes": {"AuditLogs": {"Enable": True}},
},
Tags={},
)["DetectorId"]
client.get_detector(DetectorId=detector_id)
client.delete_detector(DetectorId=detector_id)
with pytest.raises(ClientError) as exc:
client.get_detector(DetectorId=detector_id)
err = exc.value.response["Error"]
err["Code"].should.equal("BadRequestException")
err["Message"].should.equal(
"The request is rejected because the input detectorId is not owned by the current account."
)
client.list_detectors().should.have.key("DetectorIds").equals([])