Add tests to assert filter validation

Add test cases to pass valid and invalid filters to server.
If a valid filter is passed, assert server returns the correct
list of resources. If an invalid filter is passed, assert
server returns a 400 response.

Change-Id: I2b8baa93a5587fa036a8a8ab124c216d2dba4444
Related-Bug: #1749820
diff --git a/neutron_tempest_plugin/api/base.py b/neutron_tempest_plugin/api/base.py
index 8ec98cd..474f203 100644
--- a/neutron_tempest_plugin/api/base.py
+++ b/neutron_tempest_plugin/api/base.py
@@ -1167,11 +1167,14 @@
             expected_resources[:-1],
             self._extract_resources(body))
 
-    def _test_list_validation_filters(self):
-        validation_args = {
-            'unknown_filter': 'value',
-        }
-        body = self.list_method(**validation_args)
-        resources = self._extract_resources(body)
-        for resource in resources:
-            self.assertIn(resource['name'], self.resource_names)
+    @tutils.requires_ext(extension="filter-validation", service="network")
+    def _test_list_validation_filters(
+            self, validation_args, filter_is_valid=True):
+        if not filter_is_valid:
+            self.assertRaises(lib_exc.BadRequest, self.list_method,
+                              **validation_args)
+        else:
+            body = self.list_method(**validation_args)
+            resources = self._extract_resources(body)
+            for resource in resources:
+                self.assertIn(resource['name'], self.resource_names)
diff --git a/neutron_tempest_plugin/api/test_networks.py b/neutron_tempest_plugin/api/test_networks.py
index c4b3596..63e8ae5 100644
--- a/neutron_tempest_plugin/api/test_networks.py
+++ b/neutron_tempest_plugin/api/test_networks.py
@@ -209,7 +209,8 @@
     def test_list_no_pagination_limit_0(self):
         self._test_list_no_pagination_limit_0()
 
-    @decorators.skip_because(bug="1749820")
     @decorators.idempotent_id('3574ec9b-a8b8-43e3-9c11-98f5875df6a9')
     def test_list_validation_filters(self):
-        self._test_list_validation_filters()
+        self._test_list_validation_filters(self.list_kwargs)
+        self._test_list_validation_filters({
+            'unknown_filter': 'value'}, filter_is_valid=False)
diff --git a/neutron_tempest_plugin/api/test_subnetpools.py b/neutron_tempest_plugin/api/test_subnetpools.py
index 8adbc4c..25d9780 100644
--- a/neutron_tempest_plugin/api/test_subnetpools.py
+++ b/neutron_tempest_plugin/api/test_subnetpools.py
@@ -414,7 +414,8 @@
     def test_list_no_pagination_limit_0(self):
         self._test_list_no_pagination_limit_0()
 
-    @decorators.skip_because(bug="1749820")
     @decorators.idempotent_id('27feb3f8-40f4-4e50-8cd2-7d0096a98682')
     def test_list_validation_filters(self):
-        self._test_list_validation_filters()
+        self._test_list_validation_filters(self.list_kwargs)
+        self._test_list_validation_filters({
+            'unknown_filter': 'value'}, filter_is_valid=False)
diff --git a/neutron_tempest_plugin/api/test_subnets.py b/neutron_tempest_plugin/api/test_subnets.py
index b7a1b21..b8842ab 100644
--- a/neutron_tempest_plugin/api/test_subnets.py
+++ b/neutron_tempest_plugin/api/test_subnets.py
@@ -64,7 +64,8 @@
     def test_list_no_pagination_limit_0(self):
         self._test_list_no_pagination_limit_0()
 
-    @decorators.skip_because(bug="1749820")
     @decorators.idempotent_id('c0f9280b-9d81-4728-a967-6be22659d4c8')
     def test_list_validation_filters(self):
-        self._test_list_validation_filters()
+        self._test_list_validation_filters(self.list_kwargs)
+        self._test_list_validation_filters({
+            'unknown_filter': 'value'}, filter_is_valid=False)