diff --git a/neutron_tempest_plugin/scenario/test_internal_dns.py b/neutron_tempest_plugin/scenario/test_internal_dns.py
index e9f7823..692bb70 100644
--- a/neutron_tempest_plugin/scenario/test_internal_dns.py
+++ b/neutron_tempest_plugin/scenario/test_internal_dns.py
@@ -139,38 +139,46 @@
 
     @utils.requires_ext(extension="dns-integration", service="network")
     @decorators.idempotent_id('db5e612f-f17f-4974-b5f1-9fe89f4a6fc9')
-    def test_create_port_with_dns_name(self):
+    def test_create_and_update_port_with_dns_name(self):
         """Test creation of port with correct internal dns-name (hostname)."""
 
-        # 1) Create network and subnet.
-        # 2) Create a port with dns-name.
-        # 3) Verify that correct port initial dns-name (as VM name)
-        #    were queried from openstack API.
-        # 4) Boot a VM with predefined port.
-        # 5) Validate hostname configured in VM is same as VM's name.
+        # 1) Create resources: network, subnet, etc.
+        # 2) Create a port with wrong dns-name (not as VM name).
+        # 3) Verify that wrong port initial dns-name.
+        #    was queried from openstack API.
+        # 4) Update the port with correct dns-name (as VM name).
+        # 5) Boot a VM with corrected predefined port.
+        # 6) Verify that correct port dns-name
+        #    was queried from openstack API.
+        # 7) Validate hostname configured on VM is same as VM's name.
 
         # NOTE: VM's hostname has to be the same as VM's name
         #       when a VM is created, it is a known limitation.
         #       Therefore VM's dns-name/hostname is checked to be as VM's name.
 
-        vm_name = self._rand_name('vm')
+        vm_correct_name = self._rand_name('vm')
+        vm_wrong_name = self._rand_name('bazinga')
         # create resources
         network = self.create_network(name=self._rand_name('network'))
         subnet = self.create_subnet(network, name=self._rand_name('subnet'))
         self.create_router_interface(self.router['id'], subnet['id'])
-        # create port with dns-name (as VM name)
+        # create port with wrong dns-name (not as VM name)
         dns_port = self.create_port(network,
-                                    dns_name=vm_name,
+                                    dns_name=vm_wrong_name,
                                     security_groups=[self.secgroup['id']],
                                     name=self._rand_name('port'))
-        # validate dns port initial hostname from API
-        self._validate_port_dns_details(vm_name, dns_port)
-        # create VM with predefined dns-name on port
-        vm_1 = self.create_server(name=vm_name,
+        # validate dns port with wrong initial hostname from API
+        self._validate_port_dns_details(vm_wrong_name, dns_port)
+        # update port with correct dns-name (as VM name)
+        dns_port = self.update_port(dns_port, dns_name=vm_correct_name)
+        # create VM with correct predefined dns-name on port
+        vm_1 = self.create_server(name=vm_correct_name,
                                   networks=[{'port': dns_port['id']}],
                                   **self.vm_kwargs)
-        # validate hostname configured in VM is same as VM's name.
+        # validate dns port with correct changed hostname using API
+        self._validate_port_dns_details(vm_correct_name, dns_port)
+        # validate hostname configured on VM is same as VM's name.
         vm_1['fip'] = self.create_floatingip(port=dns_port)
         vm_1['ssh_client'] = self._create_ssh_client(
             vm_1['fip']['floating_ip_address'])
-        self._validate_ssh_dns_details(vm_name, vm_1['ssh_client'])
+        self._validate_ssh_dns_details(vm_correct_name, vm_1['ssh_client'])
