Add events.list_event_buses
This commit is contained in:
		
							parent
							
								
									f1dbdc9184
								
							
						
					
					
						commit
						831577350d
					
				| @ -2713,7 +2713,7 @@ | ||||
| - [ ] upgrade_elasticsearch_domain | ||||
| 
 | ||||
| ## events | ||||
| 51% implemented | ||||
| 54% implemented | ||||
| - [ ] activate_event_source | ||||
| - [X] create_event_bus | ||||
| - [ ] create_partner_event_source | ||||
| @ -2727,7 +2727,7 @@ | ||||
| - [X] describe_rule | ||||
| - [X] disable_rule | ||||
| - [X] enable_rule | ||||
| - [ ] list_event_buses | ||||
| - [X] list_event_buses | ||||
| - [ ] list_event_sources | ||||
| - [ ] list_partner_event_source_accounts | ||||
| - [ ] list_partner_event_sources | ||||
|  | ||||
| @ -344,6 +344,16 @@ class EventsBackend(BaseBackend): | ||||
| 
 | ||||
|         return self.event_buses[name] | ||||
| 
 | ||||
|     def list_event_buses(self, name_prefix): | ||||
|         if name_prefix: | ||||
|             return [ | ||||
|                 event_bus | ||||
|                 for event_bus in self.event_buses.values() | ||||
|                 if event_bus.name.startswith(name_prefix) | ||||
|             ] | ||||
| 
 | ||||
|         return list(self.event_buses.values()) | ||||
| 
 | ||||
| 
 | ||||
| available_regions = boto3.session.Session().get_available_regions("events") | ||||
| events_backends = {region: EventsBackend(region) for region in available_regions} | ||||
|  | ||||
| @ -278,3 +278,21 @@ class EventsHandler(BaseResponse): | ||||
|         event_bus = self.events_backend.create_event_bus(name, event_source_name) | ||||
| 
 | ||||
|         return json.dumps({"EventBusArn": event_bus.arn}), self.response_headers | ||||
| 
 | ||||
|     def list_event_buses(self): | ||||
|         name_prefix = self._get_param("NamePrefix") | ||||
|         # ToDo: add 'NextToken' & 'Limit' parameters | ||||
| 
 | ||||
|         response = [] | ||||
|         for event_bus in self.events_backend.list_event_buses(name_prefix): | ||||
|             event_bus_response = { | ||||
|                 "Name": event_bus.name, | ||||
|                 "Arn": event_bus.arn, | ||||
|             } | ||||
| 
 | ||||
|             if event_bus.policy: | ||||
|                 event_bus_response["Policy"] = event_bus.policy | ||||
| 
 | ||||
|             response.append(event_bus_response) | ||||
| 
 | ||||
|         return json.dumps({"EventBuses": response}), self.response_headers | ||||
|  | ||||
| @ -213,14 +213,14 @@ def test_put_permission_errors(): | ||||
|     client.put_permission.when.called_with( | ||||
|         EventBusName="non-existing", | ||||
|         Action="events:PutEvents", | ||||
|         Principal="762054135200", | ||||
|         Principal="111111111111", | ||||
|         StatementId="test", | ||||
|     ).should.throw(ClientError, "Event bus non-existing does not exist.") | ||||
| 
 | ||||
|     client.put_permission.when.called_with( | ||||
|         EventBusName="test-bus", | ||||
|         Action="events:PutPermission", | ||||
|         Principal="762054135200", | ||||
|         Principal="111111111111", | ||||
|         StatementId="test", | ||||
|     ).should.throw( | ||||
|         ClientError, "Provided value in parameter 'action' is not supported." | ||||
| @ -243,7 +243,7 @@ def test_remove_permission_errors(): | ||||
|     client.put_permission( | ||||
|         EventBusName="test-bus", | ||||
|         Action="events:PutEvents", | ||||
|         Principal="762054135200", | ||||
|         Principal="111111111111", | ||||
|         StatementId="test", | ||||
|     ) | ||||
| 
 | ||||
| @ -322,7 +322,7 @@ def test_describe_event_bus(): | ||||
|     client.put_permission( | ||||
|         EventBusName="test-bus", | ||||
|         Action="events:PutEvents", | ||||
|         Principal="762054135200", | ||||
|         Principal="111111111111", | ||||
|         StatementId="test", | ||||
|     ) | ||||
| 
 | ||||
| @ -339,7 +339,7 @@ def test_describe_event_bus(): | ||||
|                 { | ||||
|                     "Sid": "test", | ||||
|                     "Effect": "Allow", | ||||
|                     "Principal": {"AWS": "arn:aws:iam::762054135200:root"}, | ||||
|                     "Principal": {"AWS": "arn:aws:iam::111111111111:root"}, | ||||
|                     "Action": "events:PutEvents", | ||||
|                     "Resource": "arn:aws:events:us-east-1:123456789012:event-bus/test-bus", | ||||
|                 } | ||||
| @ -355,3 +355,63 @@ def test_describe_event_bus_errors(): | ||||
|     client.describe_event_bus.when.called_with(Name="non-existing").should.throw( | ||||
|         ClientError, "Event bus non-existing does not exist." | ||||
|     ) | ||||
| 
 | ||||
| 
 | ||||
| @mock_events | ||||
| def test_list_event_buses(): | ||||
|     client = boto3.client("events", "us-east-1") | ||||
|     client.create_event_bus(Name="test-bus-1") | ||||
|     client.put_permission( | ||||
|         EventBusName="test-bus-1", | ||||
|         Action="events:PutEvents", | ||||
|         Principal="111111111111", | ||||
|         StatementId="test", | ||||
|     ) | ||||
|     client.create_event_bus(Name="test-bus-2") | ||||
|     client.create_event_bus(Name="other-bus-1") | ||||
|     client.create_event_bus(Name="other-bus-2") | ||||
| 
 | ||||
|     response = client.list_event_buses() | ||||
| 
 | ||||
|     response["EventBuses"].should.have.length_of(5) | ||||
|     sorted(response["EventBuses"], key=lambda i: i["Name"]).should.equal( | ||||
|         [ | ||||
|             { | ||||
|                 "Name": "default", | ||||
|                 "Arn": "arn:aws:events:us-east-1:123456789012:event-bus/default", | ||||
|             }, | ||||
|             { | ||||
|                 "Name": "other-bus-1", | ||||
|                 "Arn": "arn:aws:events:us-east-1:123456789012:event-bus/other-bus-1", | ||||
|             }, | ||||
|             { | ||||
|                 "Name": "other-bus-2", | ||||
|                 "Arn": "arn:aws:events:us-east-1:123456789012:event-bus/other-bus-2", | ||||
|             }, | ||||
|             { | ||||
|                 "Name": "test-bus-1", | ||||
|                 "Arn": "arn:aws:events:us-east-1:123456789012:event-bus/test-bus-1", | ||||
|                 "Policy": '{"Version": "2012-10-17", "Statement": [{"Sid": "test", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::111111111111:root"}, "Action": "events:PutEvents", "Resource": "arn:aws:events:us-east-1:123456789012:event-bus/test-bus-1"}]}', | ||||
|             }, | ||||
|             { | ||||
|                 "Name": "test-bus-2", | ||||
|                 "Arn": "arn:aws:events:us-east-1:123456789012:event-bus/test-bus-2", | ||||
|             }, | ||||
|         ] | ||||
|     ) | ||||
| 
 | ||||
|     response = client.list_event_buses(NamePrefix="other-bus") | ||||
| 
 | ||||
|     response["EventBuses"].should.have.length_of(2) | ||||
|     response["EventBuses"].should.equal( | ||||
|         [ | ||||
|             { | ||||
|                 "Name": "other-bus-1", | ||||
|                 "Arn": "arn:aws:events:us-east-1:123456789012:event-bus/other-bus-1", | ||||
|             }, | ||||
|             { | ||||
|                 "Name": "other-bus-2", | ||||
|                 "Arn": "arn:aws:events:us-east-1:123456789012:event-bus/other-bus-2", | ||||
|             }, | ||||
|         ] | ||||
|     ) | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user