]> review.fuel-infra Code Review - openstack-build/neutron-build.git/commitdiff
Fixing ICMP type and code validation
authorRoey Chen <roeyc@vmware.com>
Fri, 24 Jul 2015 18:17:19 +0000 (11:17 -0700)
committerRoey Chen <roeyc@vmware.com>
Tue, 4 Aug 2015 07:01:12 +0000 (07:01 +0000)
The case where type is not specifed (None) but the code is '0' will not
result in an error, as it should.

APIImpact

Closes-Bug: #1480966
Change-Id: I878b13ec46a93947765227c40282efa9a7e02ca8

neutron/db/securitygroups_db.py
neutron/tests/unit/extensions/test_securitygroup.py

index 49b4f0913c4f87d86bfff8f6007cd9f5130740fa..bc5ad3a42bcbfc52093d0845b3b566ff32adb38c 100644 (file)
@@ -441,7 +441,7 @@ class SecurityGroupDbMixin(ext_sg.SecurityGroupPluginBase):
                     raise ext_sg.SecurityGroupInvalidIcmpValue(
                         field=field, attr=attr, value=rule[attr])
             if (rule['port_range_min'] is None and
-                    rule['port_range_max']):
+                    rule['port_range_max'] is not None):
                 raise ext_sg.SecurityGroupMissingIcmpType(
                     value=rule['port_range_max'])
 
index 44e816ba027f1e892c5f782e53cbdaf7961e91f3..7ff4c2b20c724b14eecf426887cb343276f227ec 100644 (file)
@@ -1029,12 +1029,14 @@ class TestSecurityGroups(SecurityGroupDBTestCase):
         with self.security_group(name, description) as sg:
             security_group_id = sg['security_group']['id']
             with self.security_group_rule(security_group_id):
-                rule = self._build_security_group_rule(
-                    sg['security_group']['id'], 'ingress',
-                    const.PROTO_NAME_ICMP, None, '2')
-                res = self._create_security_group_rule(self.fmt, rule)
-                self.deserialize(self.fmt, res)
-                self.assertEqual(res.status_int, webob.exc.HTTPBadRequest.code)
+                for code in ['2', '0']:
+                    rule = self._build_security_group_rule(
+                        sg['security_group']['id'], 'ingress',
+                        const.PROTO_NAME_ICMP, None, code)
+                    res = self._create_security_group_rule(self.fmt, rule)
+                    self.deserialize(self.fmt, res)
+                    self.assertEqual(res.status_int,
+                                     webob.exc.HTTPBadRequest.code)
 
     def test_list_ports_security_group(self):
         with self.network() as n: