moto/tests/test_events/test_events_partners_integration.py

106 lines
3.9 KiB
Python
Raw Normal View History

import json
import os
from datetime import datetime
from unittest import SkipTest, mock
import boto3
2024-01-07 12:03:33 +00:00
from moto import mock_aws, settings
2024-01-07 12:03:33 +00:00
@mock_aws
def test_create_partner_event_bus():
client_account = "111122223333"
client = boto3.client("events", "us-east-1")
client.create_partner_event_source(
Name="mypartner/actions/action1", Account=client_account
)
resp = client.describe_partner_event_source(Name="mypartner/actions/action1")
assert (
resp["Arn"]
== "arn:aws:events:us-east-1::event-source/aws.partner/mypartner/actions/action1"
)
assert resp["Name"] == "mypartner/actions/action1"
2024-01-07 12:03:33 +00:00
@mock_aws
def test_describe_partner_event_busses():
if settings.TEST_SERVER_MODE:
raise SkipTest("Can't change accounts easily in ServerMode")
# Having a separate partner account isn't 'strictly necessary - we could do that from the main account
# But it makes it more obvious for the reader that we're accessing different accounts IMO
partner_account = "111122223333"
client_account = "444455556666"
client = boto3.client("events", "us-east-1")
name = "mypartner/actions/action1"
with mock.patch.dict(os.environ, {"MOTO_ACCOUNT_ID": partner_account}):
client.create_partner_event_source(Name=name, Account=client_account)
with mock.patch.dict(os.environ, {"MOTO_ACCOUNT_ID": client_account}):
resp = client.describe_event_source(Name=name)
assert resp["Name"] == name
assert resp["CreatedBy"] == "mypartner"
assert resp["State"] == "ACTIVE"
client.create_event_bus(Name=name, EventSourceName=name)
resp = client.describe_event_bus(Name=name)
assert resp["Name"] == name
with mock.patch.dict(os.environ, {"MOTO_ACCOUNT_ID": partner_account}):
client.delete_partner_event_source(Name=name, Account=client_account)
with mock.patch.dict(os.environ, {"MOTO_ACCOUNT_ID": client_account}):
resp = client.describe_event_source(Name=name)
assert resp["State"] == "DELETED"
2024-01-07 12:03:33 +00:00
@mock_aws
def test_put_partner_events():
if settings.TEST_SERVER_MODE:
raise SkipTest("Can't change accounts easily in ServerMode")
partner_account = "111122223333"
client_account = "444455556666"
events = boto3.client("events", "us-east-1")
logs = boto3.client("logs", region_name="us-east-1")
name = "mypartner/actions/action1"
with mock.patch.dict(os.environ, {"MOTO_ACCOUNT_ID": partner_account}):
events.create_partner_event_source(Name=name, Account=client_account)
with mock.patch.dict(os.environ, {"MOTO_ACCOUNT_ID": client_account}):
events.create_event_bus(Name=name, EventSourceName=name)
log_group_name = "/test-group"
rule_name = "test-rule"
logs.create_log_group(logGroupName=log_group_name)
log_group_arn = (
f"arn:aws:logs:us-east-1:{client_account}:log-group:{log_group_name}"
)
events.put_rule(
Name=rule_name,
EventPattern=json.dumps({"account": [client_account]}),
State="ENABLED",
)
events.put_targets(
Rule=rule_name,
Targets=[{"Id": "logs", "Arn": log_group_arn}],
)
with mock.patch.dict(os.environ, {"MOTO_ACCOUNT_ID": partner_account}):
resp = events.put_partner_events(
Entries=[
{
"Time": datetime.now(),
"Source": name,
"DetailType": "test-detail-type",
"Detail": json.dumps({"foo": "123", "bar": "123"}),
}
]
)
assert resp["FailedEntryCount"] == 0
with mock.patch.dict(os.environ, {"MOTO_ACCOUNT_ID": client_account}):
log_events = logs.filter_log_events(logGroupName=log_group_name)["events"]
assert len(log_events) == 1
assert "test-detail-type" in log_events[0]["message"]