Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions moto/cloudtrail/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -335,11 +335,11 @@ def list_trails(self) -> Iterable[Trail]:
return self.describe_trails(include_shadow_trails=True)

def start_logging(self, name: str) -> None:
trail = self.trails[name]
trail = self.get_trail(name)
trail.start_logging()

def stop_logging(self, name: str) -> None:
trail = self.trails[name]
trail = self.get_trail(name)
trail.stop_logging()

def delete_trail(self, name: str) -> None:
Expand Down
22 changes: 22 additions & 0 deletions tests/test_cloudtrail/test_cloudtrail.py
Original file line number Diff line number Diff line change
Expand Up @@ -262,6 +262,28 @@ def test_get_trail_status_arn_inactive():
assert "StartLoggingTime" not in status


@mock_aws
def test_start_and_stop_logging_by_arn():
"""StartLogging/StopLogging accept trail ARN as well as name (like AWS)."""
client = boto3.client("cloudtrail", region_name="us-east-1")
_, resp, trail_name = create_trail_simple()
arn = resp["TrailARN"]

client.start_logging(Name=arn)
assert client.get_trail_status(Name=trail_name)["IsLogging"] is True

client.stop_logging(Name=arn)
assert client.get_trail_status(Name=trail_name)["IsLogging"] is False


@mock_aws
def test_start_logging_unknown_trail_raises_not_found():
client = boto3.client("cloudtrail", region_name="us-east-1")
with pytest.raises(ClientError) as exc:
client.start_logging(Name="unknowntrail")
assert exc.value.response["Error"]["Code"] == "TrailNotFoundException"


@mock_aws
def test_get_trail_status_after_starting():
client = boto3.client("cloudtrail", region_name="eu-west-3")
Expand Down