events: delete_rule implementation update (#5056)
This commit is contained in:
parent
5efa5b66bf
commit
a20633b577
@ -1045,7 +1045,11 @@ class EventsBackend(BaseBackend):
|
|||||||
return rule
|
return rule
|
||||||
|
|
||||||
def delete_rule(self, name):
|
def delete_rule(self, name):
|
||||||
arn = self.rules.get(name).arn
|
rule = self.rules.get(name)
|
||||||
|
if len(rule.targets) > 0:
|
||||||
|
raise ValidationException("Rule can't be deleted since it has targets.")
|
||||||
|
|
||||||
|
arn = rule.arn
|
||||||
if self.tagger.has_tags(arn):
|
if self.tagger.has_tags(arn):
|
||||||
self.tagger.delete_all_tags_for_resource(arn)
|
self.tagger.delete_all_tags_for_resource(arn)
|
||||||
return self.rules.pop(name) is not None
|
return self.rules.pop(name) is not None
|
||||||
|
@ -62,7 +62,7 @@ def get_random_rule():
|
|||||||
return RULES[random.randint(0, len(RULES) - 1)]
|
return RULES[random.randint(0, len(RULES) - 1)]
|
||||||
|
|
||||||
|
|
||||||
def generate_environment():
|
def generate_environment(add_targets=True):
|
||||||
client = boto3.client("events", "us-west-2")
|
client = boto3.client("events", "us-west-2")
|
||||||
|
|
||||||
for rule in RULES:
|
for rule in RULES:
|
||||||
@ -73,12 +73,13 @@ def generate_environment():
|
|||||||
Tags=rule.get("Tags", []),
|
Tags=rule.get("Tags", []),
|
||||||
)
|
)
|
||||||
|
|
||||||
targets = []
|
if add_targets:
|
||||||
for target in TARGETS:
|
targets = []
|
||||||
if rule["Name"] in TARGETS[target].get("Rules"):
|
for target in TARGETS:
|
||||||
targets.append({"Id": target, "Arn": TARGETS[target]["Arn"]})
|
if rule["Name"] in TARGETS[target].get("Rules"):
|
||||||
|
targets.append({"Id": target, "Arn": TARGETS[target]["Arn"]})
|
||||||
|
|
||||||
client.put_targets(Rule=rule["Name"], Targets=targets)
|
client.put_targets(Rule=rule["Name"], Targets=targets)
|
||||||
|
|
||||||
return client
|
return client
|
||||||
|
|
||||||
@ -298,13 +299,32 @@ def test_list_rule_names_by_target_using_limit():
|
|||||||
|
|
||||||
@mock_events
|
@mock_events
|
||||||
def test_delete_rule():
|
def test_delete_rule():
|
||||||
client = generate_environment()
|
client = generate_environment(add_targets=False)
|
||||||
|
|
||||||
client.delete_rule(Name=RULES[0]["Name"])
|
client.delete_rule(Name=RULES[0]["Name"])
|
||||||
rules = client.list_rules()
|
rules = client.list_rules()
|
||||||
assert len(rules["Rules"]) == len(RULES) - 1
|
assert len(rules["Rules"]) == len(RULES) - 1
|
||||||
|
|
||||||
|
|
||||||
|
@mock_events
|
||||||
|
def test_delete_rule_with_targets():
|
||||||
|
# given
|
||||||
|
client = generate_environment()
|
||||||
|
|
||||||
|
# when
|
||||||
|
with pytest.raises(ClientError) as e:
|
||||||
|
client.delete_rule(Name=RULES[0]["Name"])
|
||||||
|
|
||||||
|
# then
|
||||||
|
ex = e.value
|
||||||
|
ex.operation_name.should.equal("DeleteRule")
|
||||||
|
ex.response["ResponseMetadata"]["HTTPStatusCode"].should.equal(400)
|
||||||
|
ex.response["Error"]["Code"].should.contain("ValidationException")
|
||||||
|
ex.response["Error"]["Message"].should.equal(
|
||||||
|
"Rule can't be deleted since it has targets."
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
@mock_events
|
@mock_events
|
||||||
def test_list_targets_by_rule():
|
def test_list_targets_by_rule():
|
||||||
rule_name = get_random_rule()["Name"]
|
rule_name = get_random_rule()["Name"]
|
||||||
@ -940,7 +960,7 @@ def test_create_rule_with_tags():
|
|||||||
|
|
||||||
@mock_events
|
@mock_events
|
||||||
def test_delete_rule_with_tags():
|
def test_delete_rule_with_tags():
|
||||||
client = generate_environment()
|
client = generate_environment(add_targets=False)
|
||||||
rule_name = "test2"
|
rule_name = "test2"
|
||||||
rule_arn = client.describe_rule(Name=rule_name).get("Arn")
|
rule_arn = client.describe_rule(Name=rule_name).get("Arn")
|
||||||
client.delete_rule(Name=rule_name)
|
client.delete_rule(Name=rule_name)
|
||||||
|
Loading…
Reference in New Issue
Block a user