diff --git a/patrole_tempest_plugin/tests/api/network/test_address_scope_rbac.py b/patrole_tempest_plugin/tests/api/network/test_address_scope_rbac.py
index 6cdeccd..ad0a1d4 100644
--- a/patrole_tempest_plugin/tests/api/network/test_address_scope_rbac.py
+++ b/patrole_tempest_plugin/tests/api/network/test_address_scope_rbac.py
@@ -137,3 +137,18 @@
         address_scope = self._create_address_scope()
         with self.rbac_utils.override_role(self):
             self.ntp_client.delete_address_scope(address_scope['id'])
+
+    @rbac_rule_validation.action(service="neutron",
+                                 rules=["get_address_scope"])
+    @decorators.idempotent_id('c093fd34-96ee-4abe-8fa5-916dc29653e3')
+    def test_list_address_scopes(self):
+        """List Address Scopes
+
+        RBAC test for the neutron ``list_address_scopes`` function and
+        the ``get_address_scope`` policy
+        """
+        admin_resource_id = self._create_address_scope()['id']
+        with (self.rbac_utils.override_role_and_validate_list(
+                self, admin_resource_id=admin_resource_id)) as ctx:
+            ctx.resources = self.ntp_client.list_address_scopes(
+                id=admin_resource_id)["address_scopes"]
diff --git a/patrole_tempest_plugin/tests/api/network/test_agents_rbac.py b/patrole_tempest_plugin/tests/api/network/test_agents_rbac.py
index c2b23f2..fe5f5a1 100644
--- a/patrole_tempest_plugin/tests/api/network/test_agents_rbac.py
+++ b/patrole_tempest_plugin/tests/api/network/test_agents_rbac.py
@@ -65,6 +65,20 @@
             self.agents_client.update_agent(agent_id=self.agent['id'],
                                             agent=agent_status)
 
+    @decorators.idempotent_id('f7a085e2-71b1-4d39-be3e-fea4bc10ccb8')
+    @rbac_rule_validation.action(service="neutron", rules=["get_agent"])
+    def test_list_agents(self):
+        """List agents test.
+
+        RBAC test for the neutron ``list_agents`` function and
+        the ``get_agent`` policy
+        """
+        admin_resource_id = self.agent['id']
+        with (self.rbac_utils.override_role_and_validate_list(
+                self, admin_resource_id=admin_resource_id)) as ctx:
+            ctx.resources = self.agents_client.list_agents(
+                id=admin_resource_id)["agents"]
+
 
 class L3AgentSchedulerRbacTest(base.BaseNetworkRbacTest):
 
diff --git a/patrole_tempest_plugin/tests/api/network/test_dscp_marking_rule_rbac.py b/patrole_tempest_plugin/tests/api/network/test_dscp_marking_rule_rbac.py
index e03de74..bdc2a7c 100644
--- a/patrole_tempest_plugin/tests/api/network/test_dscp_marking_rule_rbac.py
+++ b/patrole_tempest_plugin/tests/api/network/test_dscp_marking_rule_rbac.py
@@ -104,3 +104,18 @@
 
         with self.rbac_utils.override_role(self):
             self.ntp_client.delete_dscp_marking_rule(self.policy_id, rule_id)
+
+    @decorators.idempotent_id('c012fd4f-3a3e-4af4-9075-dd3e170daecd')
+    @rbac_rule_validation.action(service="neutron",
+                                 rules=["get_policy_dscp_marking_rule"])
+    def test_list_policy_dscp_marking_rules(self):
+        """List policy_dscp_marking_rules.
+
+        RBAC test for the neutron ``list_dscp_marking_rules`` function and
+        the ``get_policy_dscp_marking_rule`` policy
+        """
+        admin_resource_id = self.create_policy_dscp_marking_rule()
+        with (self.rbac_utils.override_role_and_validate_list(
+                self, admin_resource_id=admin_resource_id)) as ctx:
+            ctx.resources = self.ntp_client.list_dscp_marking_rules(
+                policy_id=self.policy_id)["dscp_marking_rules"]
diff --git a/patrole_tempest_plugin/tests/api/network/test_floating_ips_rbac.py b/patrole_tempest_plugin/tests/api/network/test_floating_ips_rbac.py
index 336490a..89772d9 100644
--- a/patrole_tempest_plugin/tests/api/network/test_floating_ips_rbac.py
+++ b/patrole_tempest_plugin/tests/api/network/test_floating_ips_rbac.py
@@ -130,3 +130,17 @@
         with self.rbac_utils.override_role(self):
             # Delete the floating IP
             self.floating_ips_client.delete_floatingip(floating_ip['id'])
+
+    @rbac_rule_validation.action(service="neutron", rules=["get_floatingip"])
+    @decorators.idempotent_id('824965e3-8be8-46e2-be64-0d793533ad20')
+    def test_list_floating_ips(self):
+        """List Floating IPs.
+
+        RBAC test for the neutron ``list_floatingips`` function and
+        the ``get_floatingip`` policy
+        """
+        admin_resource_id = self._create_floatingip()['id']
+        with (self.rbac_utils.override_role_and_validate_list(
+                self, admin_resource_id=admin_resource_id)) as ctx:
+            ctx.resources = self.floating_ips_client.list_floatingips(
+                id=admin_resource_id)["floatingips"]
diff --git a/patrole_tempest_plugin/tests/api/network/test_metering_label_rules_rbac.py b/patrole_tempest_plugin/tests/api/network/test_metering_label_rules_rbac.py
index bf49053..6673201 100644
--- a/patrole_tempest_plugin/tests/api/network/test_metering_label_rules_rbac.py
+++ b/patrole_tempest_plugin/tests/api/network/test_metering_label_rules_rbac.py
@@ -101,3 +101,20 @@
         with self.rbac_utils.override_role(self):
             self.metering_label_rules_client.delete_metering_label_rule(
                 label_rule['id'])
+
+    @rbac_rule_validation.action(service="neutron",
+                                 rules=["get_metering_label_rule"])
+    @decorators.idempotent_id('eaaf9eb5-ee53-4b6b-a4d3-a721dd39bc40')
+    def test_list_metering_label_rules(self):
+        """List metering label rules.
+
+        RBAC test for the neutron ``list_metering_label_rules`` function and
+        the ``get_metering_label_rule`` policy
+        """
+        admin_resource_id = self._create_metering_label_rule(self.label)['id']
+        with (self.rbac_utils.override_role_and_validate_list(
+                self, admin_resource_id=admin_resource_id)) as ctx:
+            ctx.resources = (
+                self.metering_label_rules_client.
+                list_metering_label_rules(id=admin_resource_id)
+                ["metering_label_rules"])
diff --git a/patrole_tempest_plugin/tests/api/network/test_metering_labels_rbac.py b/patrole_tempest_plugin/tests/api/network/test_metering_labels_rbac.py
index ed6e316..bac55d1 100644
--- a/patrole_tempest_plugin/tests/api/network/test_metering_labels_rbac.py
+++ b/patrole_tempest_plugin/tests/api/network/test_metering_labels_rbac.py
@@ -83,3 +83,20 @@
         label = self._create_metering_label()
         with self.rbac_utils.override_role(self):
             self.metering_labels_client.delete_metering_label(label['id'])
+
+    @rbac_rule_validation.action(service="neutron",
+                                 rules=["get_metering_label"])
+    @decorators.idempotent_id('d60d72b0-cb8f-44db-b10b-5092fa01cb0e')
+    def test_list_metering_labels(self):
+        """List metering label.
+
+        RBAC test for the neutron ``list_metering_labels`` function and
+        the ``get_metering_label`` policy
+        """
+        admin_resource_id = self._create_metering_label()['id']
+        with (self.rbac_utils.override_role_and_validate_list(
+                self, admin_resource_id=admin_resource_id)) as ctx:
+            ctx.resources = (
+                self.metering_labels_client.
+                list_metering_labels(id=admin_resource_id)
+                ["metering_labels"])
diff --git a/patrole_tempest_plugin/tests/api/network/test_networks_rbac.py b/patrole_tempest_plugin/tests/api/network/test_networks_rbac.py
index b39489a..d98febd 100644
--- a/patrole_tempest_plugin/tests/api/network/test_networks_rbac.py
+++ b/patrole_tempest_plugin/tests/api/network/test_networks_rbac.py
@@ -457,3 +457,18 @@
         with self.rbac_utils.override_role(self):
             self.networks_client.list_dhcp_agents_on_hosting_network(
                 self.network['id'])
+
+    @rbac_rule_validation.action(service="neutron", rules=["get_network"])
+    @decorators.idempotent_id('53d6d826-ec9a-4407-9362-b474187fae6d')
+    def test_list_networks(self):
+        """List Networks
+
+        RBAC test for the neutron ``list_networks`` function and
+        the ``get_network`` policy
+        """
+
+        admin_resource_id = self.network['id']
+        with (self.rbac_utils.override_role_and_validate_list(
+                self, admin_resource_id=admin_resource_id)) as ctx:
+            ctx.resources = self.networks_client.list_networks(
+                id=admin_resource_id)["networks"]
diff --git a/patrole_tempest_plugin/tests/api/network/test_ports_rbac.py b/patrole_tempest_plugin/tests/api/network/test_ports_rbac.py
index dd3537f..a5e4be6 100644
--- a/patrole_tempest_plugin/tests/api/network/test_ports_rbac.py
+++ b/patrole_tempest_plugin/tests/api/network/test_ports_rbac.py
@@ -388,3 +388,17 @@
         port = self.create_port(self.network)
         with self.rbac_utils.override_role(self):
             self.ports_client.delete_port(port['id'])
+
+    @rbac_rule_validation.action(service="neutron", rules=["get_port"])
+    @decorators.idempotent_id('877ea70d-b000-4af4-9322-0a76b47b7890')
+    def test_list_ports(self):
+        """List Ports
+
+        RBAC test for the neutron ``list_ports`` function and
+        the ``get_port`` policy
+        """
+        admin_resource_id = self.port['id']
+        with (self.rbac_utils.override_role_and_validate_list(
+                self, admin_resource_id=admin_resource_id)) as ctx:
+            ctx.resources = self.ports_client.list_ports(
+                id=admin_resource_id)["ports"]
diff --git a/patrole_tempest_plugin/tests/api/network/test_qos_rbac.py b/patrole_tempest_plugin/tests/api/network/test_qos_rbac.py
index 3fcb7e4..95a1456 100644
--- a/patrole_tempest_plugin/tests/api/network/test_qos_rbac.py
+++ b/patrole_tempest_plugin/tests/api/network/test_qos_rbac.py
@@ -98,3 +98,17 @@
         policy = self.create_policy()
         with self.rbac_utils.override_role(self):
             self.ntp_client.delete_qos_policy(policy['id'])
+
+    @rbac_rule_validation.action(service="neutron", rules=["get_policy"])
+    @decorators.idempotent_id('e84cec88-8478-4787-b603-5fcdd8ed7bd5')
+    def test_list_policies(self):
+        """List Policies Test
+
+        RBAC test for the neutron ``list_qos_policies`` function and
+        the ``get_policy``
+        """
+        admin_resource_id = self.create_policy()['id']
+        with (self.rbac_utils.override_role_and_validate_list(
+                self, admin_resource_id=admin_resource_id)) as ctx:
+            ctx.resources = self.ntp_client.list_qos_policies(
+                id=admin_resource_id)["policies"]
diff --git a/patrole_tempest_plugin/tests/api/network/test_rbac_policies_rbac.py b/patrole_tempest_plugin/tests/api/network/test_rbac_policies_rbac.py
index 2123eb3..599cab7 100644
--- a/patrole_tempest_plugin/tests/api/network/test_rbac_policies_rbac.py
+++ b/patrole_tempest_plugin/tests/api/network/test_rbac_policies_rbac.py
@@ -109,3 +109,18 @@
 
         with self.rbac_utils.override_role(self):
             self.ntp_client.delete_rbac_policy(policy_id)
+
+    @decorators.idempotent_id('5337d95a-2e75-47bb-a0ea-0a082be930bf')
+    @rbac_rule_validation.action(service="neutron", rules=["get_rbac_policy"])
+    def test_list_rbac_policies(self):
+        """List RBAC policies.
+
+        RBAC test for the neutron ``list_rbac_policies`` function and
+        the ``get_rbac_policy`` policy
+        """
+        admin_resource_id = self.create_rbac_policy(self.tenant_id,
+                                                    self.network_id)
+        with (self.rbac_utils.override_role_and_validate_list(
+                self, admin_resource_id=admin_resource_id)) as ctx:
+            ctx.resources = self.ntp_client.list_rbac_policies(
+                id=admin_resource_id)["rbac_policies"]
diff --git a/patrole_tempest_plugin/tests/api/network/test_routers_rbac.py b/patrole_tempest_plugin/tests/api/network/test_routers_rbac.py
index 399ad47..e253b1e 100644
--- a/patrole_tempest_plugin/tests/api/network/test_routers_rbac.py
+++ b/patrole_tempest_plugin/tests/api/network/test_routers_rbac.py
@@ -401,3 +401,18 @@
             self.routers_client.remove_router_interface(
                 router['id'],
                 subnet_id=subnet['id'])
+
+    @rbac_rule_validation.action(service="neutron", rules=["get_router"])
+    @decorators.idempotent_id('86816700-12d1-4173-a50f-34bd137f47e6')
+    def test_list_routers(self):
+        """List Routers
+
+        RBAC test for the neutron ``get_router policy`` and
+        the ``get_router`` policy
+        """
+
+        admin_resource_id = self.router['id']
+        with (self.rbac_utils.override_role_and_validate_list(
+                self, admin_resource_id=admin_resource_id)) as ctx:
+            ctx.resources = self.routers_client.list_routers(
+                id=admin_resource_id)["routers"]
diff --git a/patrole_tempest_plugin/tests/api/network/test_security_groups_rbac.py b/patrole_tempest_plugin/tests/api/network/test_security_groups_rbac.py
index e9fa018..750ba3d 100644
--- a/patrole_tempest_plugin/tests/api/network/test_security_groups_rbac.py
+++ b/patrole_tempest_plugin/tests/api/network/test_security_groups_rbac.py
@@ -119,14 +119,16 @@
                                  rules=["get_security_group"])
     @decorators.idempotent_id('fbaf8d96-ed3e-49af-b24c-5fb44f05bbb7')
     def test_list_security_groups(self):
+        """List Security Groups
 
-        with self.rbac_utils.override_role(self):
-            security_groups = self.security_groups_client.\
-                list_security_groups()
-
-        # Neutron may return an empty list if access is denied.
-        if not security_groups['security_groups']:
-            raise rbac_exceptions.RbacEmptyResponseBody()
+        RBAC test for the neutron ``list_security_groups`` function and
+        the ``get_security_group`` policy
+        """
+        admin_resource_id = self.secgroup['id']
+        with (self.rbac_utils.override_role_and_validate_list(
+                self, admin_resource_id=admin_resource_id)) as ctx:
+            ctx.resources = self.security_groups_client.list_security_groups(
+                id=admin_resource_id)["security_groups"]
 
     @rbac_rule_validation.action(service="neutron",
                                  rules=["create_security_group_rule"])
diff --git a/patrole_tempest_plugin/tests/api/network/test_segments_rbac.py b/patrole_tempest_plugin/tests/api/network/test_segments_rbac.py
index 0b58649..a85b4d5 100644
--- a/patrole_tempest_plugin/tests/api/network/test_segments_rbac.py
+++ b/patrole_tempest_plugin/tests/api/network/test_segments_rbac.py
@@ -120,3 +120,17 @@
 
         with self.rbac_utils.override_role(self):
             self.ntp_client.delete_segment(segment['segment']['id'])
+
+    @decorators.idempotent_id('d68a0578-36ae-435e-8aaa-508ee96bdfae')
+    @rbac_rule_validation.action(service="neutron", rules=["get_segment"])
+    def test_list_segments(self):
+        """List segments.
+
+        RBAC test for the neutron ``list_segments`` function and
+        the``get_segment`` policy
+        """
+        admin_resource_id = self.create_segment(self.network)['segment']['id']
+        with (self.rbac_utils.override_role_and_validate_list(
+                self, admin_resource_id=admin_resource_id)) as ctx:
+            ctx.resources = self.ntp_client.list_segments(
+                id=admin_resource_id)["segments"]
diff --git a/patrole_tempest_plugin/tests/api/network/test_subnetpools_rbac.py b/patrole_tempest_plugin/tests/api/network/test_subnetpools_rbac.py
index bc6b923..3daeff1 100644
--- a/patrole_tempest_plugin/tests/api/network/test_subnetpools_rbac.py
+++ b/patrole_tempest_plugin/tests/api/network/test_subnetpools_rbac.py
@@ -164,3 +164,17 @@
         subnetpool = self._create_subnetpool()
         with self.rbac_utils.override_role(self):
             self.subnetpools_client.delete_subnetpool(subnetpool['id'])
+
+    @rbac_rule_validation.action(service="neutron", rules=["get_subnetpool"])
+    @decorators.idempotent_id('f1caf0f6-bde5-11e8-a355-529269fb1459')
+    def test_list_subnetpools(self):
+        """List subnetpools.
+
+        RBAC test for the neutron ``list_subnetpools`` function and
+        the ``get_subnetpool`` policy
+        """
+        admin_resource_id = self._create_subnetpool()['id']
+        with (self.rbac_utils.override_role_and_validate_list(
+                self, admin_resource_id=admin_resource_id)) as ctx:
+            ctx.resources = self.subnetpools_client.list_subnetpools(
+                id=admin_resource_id)["subnetpools"]
diff --git a/patrole_tempest_plugin/tests/api/network/test_subnets_rbac.py b/patrole_tempest_plugin/tests/api/network/test_subnets_rbac.py
index 8fe157a..babb6ad 100644
--- a/patrole_tempest_plugin/tests/api/network/test_subnets_rbac.py
+++ b/patrole_tempest_plugin/tests/api/network/test_subnets_rbac.py
@@ -17,7 +17,6 @@
 from tempest.lib.common.utils import data_utils
 from tempest.lib import decorators
 
-from patrole_tempest_plugin import rbac_exceptions
 from patrole_tempest_plugin import rbac_rule_validation
 from patrole_tempest_plugin.tests.api.network import rbac_base as base
 
@@ -61,19 +60,18 @@
             self.subnets_client.show_subnet(self.subnet['id'])
 
     @decorators.idempotent_id('e2ddc415-5cab-43f4-9b61-166aed65d637')
-    @rbac_rule_validation.action(service="neutron",
-                                 rules=["get_subnet"])
+    @rbac_rule_validation.action(service="neutron", rules=["get_subnet"])
     def test_list_subnets(self):
         """List subnets.
 
-        RBAC test for the neutron "get_subnet" policy
+        RBAC test for the neutron ``list_subnets`` function and
+        the ``get_subnet`` policy
         """
-        with self.rbac_utils.override_role(self):
-            subnets = self.subnets_client.list_subnets()
-
-        # Neutron may return an empty list if access is denied.
-        if not subnets['subnets']:
-            raise rbac_exceptions.RbacEmptyResponseBody()
+        admin_resource_id = self.subnet['id']
+        with (self.rbac_utils.override_role_and_validate_list(
+                self, admin_resource_id=admin_resource_id)) as ctx:
+            ctx.resources = self.subnets_client.list_subnets(
+                id=admin_resource_id)["subnets"]
 
     @decorators.idempotent_id('f36cd821-dd22-4bd0-b43d-110fc4b553eb')
     @rbac_rule_validation.action(service="neutron",
diff --git a/patrole_tempest_plugin/tests/api/network/test_trunks_rbac.py b/patrole_tempest_plugin/tests/api/network/test_trunks_rbac.py
index 80c4157..761820b 100644
--- a/patrole_tempest_plugin/tests/api/network/test_trunks_rbac.py
+++ b/patrole_tempest_plugin/tests/api/network/test_trunks_rbac.py
@@ -84,6 +84,20 @@
         with self.rbac_utils.override_role(self):
             self.ntp_client.delete_trunk(trunk['trunk']['id'])
 
+    @decorators.idempotent_id('047badd1-e4ff-40c5-9929-99ffcb8750a7')
+    @rbac_rule_validation.action(service="neutron", rules=["get_trunk"])
+    def test_list_trunks(self):
+        """Show trunk.
+
+        RBAC test for the neutron ``list_trunks``` function and
+        the ``get_trunk`` policy
+        """
+        admin_resource_id = self.create_trunk(self.port_id)["trunk"]['id']
+        with (self.rbac_utils.override_role_and_validate_list(
+                self, admin_resource_id=admin_resource_id)) as ctx:
+            ctx.resources = self.ntp_client.list_trunks(
+                id=admin_resource_id)["trunks"]
+
 
 class TrunksSubportsExtRbacTest(base.BaseNetworkExtRbacTest):
 
