From 6fb7867767c274c30be6d20b7b4a040dbbff59ad Mon Sep 17 00:00:00 2001 From: Logan Jones Date: Sun, 19 Jul 2020 05:00:24 -0400 Subject: [PATCH] Fix: Put Events API (#3145) * Fix: Put Events API * Update from code review. Co-authored-by: Logan Asher Jones --- moto/events/models.py | 4 +++- moto/events/responses.py | 13 +++++++------ tests/test_events/test_events.py | 4 +++- 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/moto/events/models.py b/moto/events/models.py index 360c8d631..d70898198 100644 --- a/moto/events/models.py +++ b/moto/events/models.py @@ -8,6 +8,8 @@ from moto.core import BaseBackend, BaseModel from moto.sts.models import ACCOUNT_ID from moto.utilities.tagging_service import TaggingService +from uuid import uuid4 + class Rule(BaseModel): def _generate_arn(self, name): @@ -344,7 +346,7 @@ class EventsBackend(BaseBackend): raise JsonRESTError("ValidationError", "Can only submit 10 events at once") # We dont really need to store the events yet - return [] + return [{"EventId": str(uuid4())} for _ in events] def remove_targets(self, name, ids): rule = self.rules.get(name) diff --git a/moto/events/responses.py b/moto/events/responses.py index 73db00bdd..76c590e16 100644 --- a/moto/events/responses.py +++ b/moto/events/responses.py @@ -150,14 +150,15 @@ class EventsHandler(BaseResponse): def put_events(self): events = self._get_param("Entries") - failed_entries = self.events_backend.put_events(events) + entries = self.events_backend.put_events(events) - if failed_entries: - return json.dumps( - {"FailedEntryCount": len(failed_entries), "Entries": failed_entries} - ) + failed_count = len([e for e in entries if "ErrorCode" in e]) + response = { + "FailedEntryCount": failed_count, + "Entries": entries, + } - return "", self.response_headers + return json.dumps(response) def put_rule(self): name = self._get_param("Name") diff --git a/tests/test_events/test_events.py b/tests/test_events/test_events.py index f83c60764..678e0a622 100644 --- a/tests/test_events/test_events.py +++ b/tests/test_events/test_events.py @@ -312,8 +312,10 @@ def test_put_events(): "DetailType": "myDetailType", } - client.put_events(Entries=[event]) + response = client.put_events(Entries=[event]) # Boto3 would error if it didn't return 200 OK + response["FailedEntryCount"].should.equal(0) + response["Entries"].should.have.length_of(1) with assert_raises(ClientError): client.put_events(Entries=[event] * 20)