From a5eb46962d1e0e8777d80d334d9be4b0822f145f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Anton=20Gr=C3=BCbel?= Date: Thu, 12 Aug 2021 14:02:16 +0900 Subject: [PATCH] Fix events target for custom event bus (#4168) --- moto/events/models.py | 2 +- tests/test_events/test_events_integration.py | 45 ++++++++++++++++++++ 2 files changed, 46 insertions(+), 1 deletion(-) diff --git a/moto/events/models.py b/moto/events/models.py index 297295ef0..883edbc90 100644 --- a/moto/events/models.py +++ b/moto/events/models.py @@ -97,7 +97,7 @@ class Rule(CloudFormationModel): def send_to_targets(self, event_bus_name, event): event_bus_name = event_bus_name.split("/")[-1] - if event_bus_name != self.event_bus_name: + if event_bus_name != self.event_bus_name.split("/")[-1]: return if not self.event_pattern.matches_event(event): diff --git a/tests/test_events/test_events_integration.py b/tests/test_events/test_events_integration.py index 8f20c94ce..73f82ec69 100644 --- a/tests/test_events/test_events_integration.py +++ b/tests/test_events/test_events_integration.py @@ -206,3 +206,48 @@ def test_send_to_sqs_queue(): body["region"].should.equal("eu-central-1") body["resources"].should.be.empty body["detail"].should.equal({"key": "value"}) + + +@mock_events +@mock_sqs +def test_send_to_sqs_queue_with_custom_event_bus(): + # given + client_events = boto3.client("events", "eu-central-1") + client_sqs = boto3.client("sqs", region_name="eu-central-1") + + event_bus_arn = client_events.create_event_bus(Name="mock")["EventBusArn"] + rule_name = "test-rule" + queue_url = client_sqs.create_queue(QueueName="test-queue")["QueueUrl"] + queue_arn = client_sqs.get_queue_attributes( + QueueUrl=queue_url, AttributeNames=["QueueArn"] + )["Attributes"]["QueueArn"] + client_events.put_rule( + Name=rule_name, + EventPattern=json.dumps({"account": [ACCOUNT_ID]}), + State="ENABLED", + EventBusName=event_bus_arn, + ) + client_events.put_targets( + Rule=rule_name, + Targets=[{"Id": "sqs", "Arn": queue_arn}], + EventBusName=event_bus_arn, + ) + + # when + client_events.put_events( + Entries=[ + { + "Source": "source", + "DetailType": "type", + "Detail": json.dumps({"key": "value"}), + "EventBusName": event_bus_arn, + } + ], + ) + + # then + response = client_sqs.receive_message(QueueUrl=queue_url) + assert len(response["Messages"]) == 1 + + body = json.loads(response["Messages"][0]["Body"]) + body["detail"].should.equal({"key": "value"})