def test_update_rule_protocol_to_any_post(self): rule = self.fw_rules.first() api_fwaas.rule_get(IsA(http.HttpRequest), rule.id).AndReturn(rule) data = {'name': 'new name', 'description': 'new desc', 'protocol': None, 'action': 'allow', 'shared': False, 'enabled': True, 'ip_version': rule.ip_version, 'source_ip_address': rule.source_ip_address, 'destination_ip_address': None, 'source_port': None, 'destination_port': rule.destination_port, } api_fwaas.rule_update(IsA(http.HttpRequest), rule.id, **data)\ .AndReturn(rule) self.mox.ReplayAll() form_data = data.copy() form_data['destination_ip_address'] = '' form_data['source_port'] = '' form_data['protocol'] = 'any' res = self.client.post( reverse(self.UPDATERULE_PATH, args=(rule.id,)), form_data) self.assertNoFormErrors(res) self.assertRedirectsNoFollow(res, str(self.INDEX_URL))
def handle(self, request, context): rule_id = self.initial['rule_id'] name_or_id = context.get('name') or rule_id if context['protocol'] == 'ANY': context['protocol'] = None for f in [ 'source_ip_address', 'destination_ip_address', 'source_port', 'destination_port' ]: if not context[f]: context[f] = None try: rule = api_fwaas.rule_update(request, rule_id, **context) msg = _('Rule %s was successfully updated.') % name_or_id messages.success(request, msg) return rule except Exception as e: LOG.error('Failed to update rule %(id)s: %(reason)s', { 'id': rule_id, 'reason': e }) msg = (_('Failed to update rule %(name)s: %(reason)s') % { 'name': name_or_id, 'reason': e }) redirect = reverse(self.failure_url) exceptions.handle(request, msg, redirect=redirect)
def handle(self, request, context): rule_id = self.initial['id'] name_or_id = context.get('name') or rule_id if context['protocol'] == 'any': context['protocol'] = None for f in [ 'source_ip_address', 'destination_ip_address', 'source_port', 'destination_port' ]: if not context[f]: context[f] = None # Remove 'shared' from the context if the user is not allowed to # change this field if self.ignore_shared and 'shared' in context: del context['shared'] try: rule = api_fwaas.rule_update(request, rule_id, **context) msg = _('Rule %s was successfully updated.') % name_or_id messages.success(request, msg) return rule except Exception as e: LOG.error('Failed to update rule %(id)s: %(reason)s', { 'id': rule_id, 'reason': e }) msg = (_('Failed to update rule %(name)s: %(reason)s') % { 'name': name_or_id, 'reason': e }) redirect = reverse(self.failure_url) exceptions.handle(request, msg, redirect=redirect)
def test_rule_update(self): rule = self.fw_rules.first() rule_dict = self.api_fw_rules.first() rule.name = 'new name' rule.description = 'new desc' rule.protocol = 'icmp' rule.action = 'deny' rule.shared = True rule.enabled = False rule_dict['name'] = 'new name' rule_dict['description'] = 'new desc' rule_dict['protocol'] = 'icmp' rule_dict['action'] = 'deny' rule_dict['shared'] = True rule_dict['enabled'] = False form_data = { 'name': rule.name, 'description': rule.description, 'protocol': rule.protocol, 'action': rule.action, 'shared': rule.shared, 'enabled': rule.enabled } form_dict = {'firewall_rule': form_data} ret_dict = {'firewall_rule': rule_dict} neutronclient.update_firewall_rule(rule.id, form_dict).AndReturn(ret_dict) self.mox.ReplayAll() ret_val = api_fwaas.rule_update(self.request, rule.id, **form_data) self.assertIsInstance(ret_val, api_fwaas.Rule) self.assertEqual(rule.name, ret_val.name) self.assertTrue(ret_val.id)