Removed OrderedDicts for 2.6 and dict.iteritems() calls for 3.3+ compatibility.
This commit is contained in:
parent
db0b494b4f
commit
6c85a85e0d
@ -40,9 +40,14 @@ class Rule(object):
|
|||||||
class EventsBackend(BaseBackend):
|
class EventsBackend(BaseBackend):
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.rules = OrderedDict()
|
self.rules = {}
|
||||||
|
# This array tracks the order in which the rules have been added, since 2.6 doesn't have OrderedDicts
|
||||||
|
self.rules_order = []
|
||||||
self.next_tokens = {}
|
self.next_tokens = {}
|
||||||
|
|
||||||
|
def _get_rule_by_index(self, i):
|
||||||
|
return self.rules.get(self.rules_order[i])
|
||||||
|
|
||||||
def _gen_next_token(self, index):
|
def _gen_next_token(self, index):
|
||||||
token = os.urandom(128).encode('base64')
|
token = os.urandom(128).encode('base64')
|
||||||
self.next_tokens[token] = index
|
self.next_tokens[token] = index
|
||||||
@ -65,6 +70,7 @@ class EventsBackend(BaseBackend):
|
|||||||
return start_index, end_index, new_next_token
|
return start_index, end_index, new_next_token
|
||||||
|
|
||||||
def delete_rule(self, name):
|
def delete_rule(self, name):
|
||||||
|
self.rules_order.pop(self.rules_order.index(name))
|
||||||
return self.rules.pop(name) is not None
|
return self.rules.pop(name) is not None
|
||||||
|
|
||||||
def describe_rule(self, name):
|
def describe_rule(self, name):
|
||||||
@ -84,19 +90,14 @@ class EventsBackend(BaseBackend):
|
|||||||
|
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def generate_presigned_url(self):
|
|
||||||
pass
|
|
||||||
|
|
||||||
def list_rule_names_by_target(self, target_arn, next_token=None, limit=None):
|
def list_rule_names_by_target(self, target_arn, next_token=None, limit=None):
|
||||||
rules_array = self.rules.values()
|
|
||||||
|
|
||||||
matching_rules = []
|
matching_rules = []
|
||||||
return_obj = {}
|
return_obj = {}
|
||||||
|
|
||||||
start_index, end_index, new_next_token = self._process_token_and_limits(len(rules_array), next_token, limit)
|
start_index, end_index, new_next_token = self._process_token_and_limits(len(self.rules), next_token, limit)
|
||||||
|
|
||||||
for i in range(start_index, end_index):
|
for i in range(start_index, end_index):
|
||||||
rule = rules_array[i]
|
rule = self._get_rule_by_index(i)
|
||||||
for target in rule.targets:
|
for target in rule.targets:
|
||||||
if rule.targets[target]['Arn'] == target_arn:
|
if rule.targets[target]['Arn'] == target_arn:
|
||||||
matching_rules.append(rule.name)
|
matching_rules.append(rule.name)
|
||||||
@ -108,8 +109,6 @@ class EventsBackend(BaseBackend):
|
|||||||
return return_obj
|
return return_obj
|
||||||
|
|
||||||
def list_rules(self, prefix=None, next_token=None, limit=None):
|
def list_rules(self, prefix=None, next_token=None, limit=None):
|
||||||
rules_array = self.rules.values()
|
|
||||||
|
|
||||||
match_string = '.*'
|
match_string = '.*'
|
||||||
if prefix is not None:
|
if prefix is not None:
|
||||||
match_string = '^' + prefix + match_string
|
match_string = '^' + prefix + match_string
|
||||||
@ -119,10 +118,10 @@ class EventsBackend(BaseBackend):
|
|||||||
matching_rules = []
|
matching_rules = []
|
||||||
return_obj = {}
|
return_obj = {}
|
||||||
|
|
||||||
start_index, end_index, new_next_token = self._process_token_and_limits(len(rules_array), next_token, limit)
|
start_index, end_index, new_next_token = self._process_token_and_limits(len(self.rules), next_token, limit)
|
||||||
|
|
||||||
for i in range(start_index, end_index):
|
for i in range(start_index, end_index):
|
||||||
rule = rules_array[i]
|
rule = self._get_rule_by_index(i)
|
||||||
if match_regex.match(rule.name):
|
if match_regex.match(rule.name):
|
||||||
matching_rules.append(rule)
|
matching_rules.append(rule)
|
||||||
|
|
||||||
@ -150,14 +149,10 @@ class EventsBackend(BaseBackend):
|
|||||||
|
|
||||||
return return_obj
|
return return_obj
|
||||||
|
|
||||||
def put_events(self):
|
|
||||||
# For the purposes of this mock, there is no backend action for putting an event.
|
|
||||||
# Response module will deal with replying.
|
|
||||||
pass
|
|
||||||
|
|
||||||
def put_rule(self, name, **kwargs):
|
def put_rule(self, name, **kwargs):
|
||||||
rule = Rule(name, **kwargs)
|
rule = Rule(name, **kwargs)
|
||||||
self.rules[rule.name] = rule
|
self.rules[rule.name] = rule
|
||||||
|
self.rules_order.append(rule.name)
|
||||||
return rule.arn
|
return rule.arn
|
||||||
|
|
||||||
def put_targets(self, name, targets):
|
def put_targets(self, name, targets):
|
||||||
|
@ -61,9 +61,9 @@ def generate_environment():
|
|||||||
)
|
)
|
||||||
|
|
||||||
targets = []
|
targets = []
|
||||||
for target, target_attr in TARGETS.iteritems():
|
for target in TARGETS:
|
||||||
if rule['Name'] in target_attr.get('Rules'):
|
if rule['Name'] in TARGETS[target].get('Rules'):
|
||||||
targets.append({'Id': target, 'Arn': target_attr['Arn']})
|
targets.append({'Id': target, 'Arn': TARGETS[target]['Arn']})
|
||||||
|
|
||||||
client.put_targets(Rule=rule['Name'], Targets=targets)
|
client.put_targets(Rule=rule['Name'], Targets=targets)
|
||||||
|
|
||||||
@ -140,8 +140,8 @@ def test_list_targets_by_rule():
|
|||||||
targets = client.list_targets_by_rule(Rule=rule_name)
|
targets = client.list_targets_by_rule(Rule=rule_name)
|
||||||
|
|
||||||
expected_targets = []
|
expected_targets = []
|
||||||
for target, attrs in TARGETS.iteritems():
|
for target in TARGETS:
|
||||||
if rule_name in attrs.get('Rules'):
|
if rule_name in TARGETS[target].get('Rules'):
|
||||||
expected_targets.append(target)
|
expected_targets.append(target)
|
||||||
|
|
||||||
assert(len(targets['Targets']) == len(expected_targets))
|
assert(len(targets['Targets']) == len(expected_targets))
|
||||||
|
Loading…
Reference in New Issue
Block a user