Additional test cases for port forwardings API

This patch adds 2 additional test cases to API tests for
port forwardings:
1. Attempt to delete Floating IP used already by port forwarding -
   this should returns Conflict error,
2. Try to associate port forwarding to Neutron's port which is
   already associated with another Floating IP - this should raise
   Conflict error.

Depends-On: https://review.opendev.org/666235
Change-Id: I8b036068645f9d0277cde66b027a22273d9b1c41
diff --git a/neutron_tempest_plugin/api/test_port_forwardings.py b/neutron_tempest_plugin/api/test_port_forwardings.py
index 5abc8bb..82c3a34 100644
--- a/neutron_tempest_plugin/api/test_port_forwardings.py
+++ b/neutron_tempest_plugin/api/test_port_forwardings.py
@@ -76,12 +76,22 @@
         self.assertEqual(port['fixed_ips'][0]['ip_address'],
                          pf['internal_ip_address'])
 
+        # Now lets try to remove Floating IP with existing port forwarding,
+        # this should fails
+        self.assertRaises(exceptions.Conflict,
+                          self.delete_floatingip, fip)
+
         # Delete port forwarding
         self.client.delete_port_forwarding(fip['id'], pf['id'])
         self.assertRaises(exceptions.NotFound,
                           self.client.get_port_forwarding,
                           fip['id'], pf['id'])
 
+        # Now Floating IP should be deleted properly
+        self.delete_floatingip(fip)
+        self.assertRaises(exceptions.NotFound,
+                          self.client.get_floatingip, fip['id'])
+
     @decorators.idempotent_id('aa842070-39ef-4b09-9df9-e723934f96f8')
     @utils.requires_ext(extension="expose-port-forwarding-in-fip",
                         service="network")
@@ -170,3 +180,17 @@
             internal_ip_address=port['fixed_ips'][0]['ip_address'],
             internal_port=1111, external_port=2222,
             protocol="tcp")
+
+    @decorators.idempotent_id('4ca72d40-93e4-485f-a876-76caf33c1fe6')
+    def test_associate_port_forwarding_to_port_with_fip(self):
+        port = self.create_port(self.network)
+        self.create_floatingip(port=port)
+        fip_for_pf = self.create_floatingip()
+        self.assertRaises(
+            exceptions.Conflict,
+            self.create_port_forwarding,
+            fip_for_pf['id'],
+            internal_port_id=port['id'],
+            internal_ip_address=port['fixed_ips'][0]['ip_address'],
+            internal_port=1111, external_port=2222,
+            protocol="tcp")