moto/tests/test_events/test_events_partners_integration.py

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

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"]