Fix add policy missing rule issue

In firewalls/workflows.py retrieve 'rule' instead of 'firewall_rules'
from AddPolciy post message. In test_add_policy_post, we need to
ensure 'firewall_policy_id' field is not set before added to policy.

Change-Id: I5f9ff81f42f4f8c7ce5c638c9074cc2dec4e1434
Closes-Bug: #1231235
This commit is contained in:
KC Wang 2013-09-16 11:24:04 -07:00 committed by Akihiro MOTOKI
parent e7fa1da5b9
commit 37f2916b33
2 changed files with 17 additions and 2 deletions

View File

@ -264,6 +264,21 @@ class FirewallTests(test.TestCase):
'shared': policy.shared,
'audited': policy.audited
}
post_data = {'name': policy.name,
'description': policy.description,
'rule': policy.firewall_rules,
'shared': policy.shared,
'audited': policy.audited
}
# NOTE: SelectRulesAction.populate_rule_choices() lists rule not
# associated with any policy. We need to ensure that rules specified
# in policy.firewall_rules in post_data (above) are not associated
# with any policy. Test data in neutron_data is data in a stable state,
# so we need to modify here.
for rule in rules:
if rule.id in policy.firewall_rules:
rule.firewall_policy_id = rule.policy = None
api.fwaas.rules_list(
IsA(http.HttpRequest), tenant_id=tenant_id).AndReturn(rules)
api.fwaas.policy_create(
@ -271,7 +286,7 @@ class FirewallTests(test.TestCase):
self.mox.ReplayAll()
res = self.client.post(reverse(self.ADDPOLICY_PATH), form_data)
res = self.client.post(reverse(self.ADDPOLICY_PATH), post_data)
self.assertNoFormErrors(res)
self.assertRedirectsNoFollow(res, str(self.INDEX_URL))

View File

@ -170,7 +170,7 @@ class SelectRulesStep(workflows.Step):
def contribute(self, data, context):
if data:
rules = self.workflow.request.POST.getlist("firewall_rules")
rules = self.workflow.request.POST.getlist("rule")
if rules:
rules = [r for r in rules if r != '']
context['firewall_rules'] = rules