From e8fe43bf880ec760f14a180e416de052cec52b7c 2025-01-22 15:00:46
From: Branko Majic <branko@majic.rs>
Date: 2025-01-22 15:00:46
Subject: [PATCH] MAR-233: Add IPv6 connectivity tests for the web_server role.

---

diff --git a/roles/web_server/molecule/default/molecule.yml b/roles/web_server/molecule/default/molecule.yml
index 481c25637a38f22d43e05d5ea678e8222d341673..7280e8470e86f02f0be4e1a1d18a21e38a4a1c6e 100644
--- a/roles/web_server/molecule/default/molecule.yml
+++ b/roles/web_server/molecule/default/molecule.yml
@@ -20,6 +20,11 @@ platforms:
         ip: 192.168.56.11
         network_name: private_network
         type: static
+      - auto_config: true
+        ip: fd00::192:168:56:11
+        network_name: private_network
+        netmask: 116
+        type: static
 
   - name: parameters-mandatory-bookworm
     groups:
@@ -33,6 +38,11 @@ platforms:
         ip: 192.168.56.21
         network_name: private_network
         type: static
+      - auto_config: true
+        ip: fd00::192:168:56:21
+        network_name: private_network
+        netmask: 116
+        type: static
 
   - name: parameters-optional-bookworm
     groups:
@@ -46,6 +56,11 @@ platforms:
         ip: 192.168.56.22
         network_name: private_network
         type: static
+      - auto_config: true
+        ip: fd00::192:168:56:22
+        network_name: private_network
+        netmask: 116
+        type: static
 
 provisioner:
   name: ansible
diff --git a/roles/web_server/molecule/default/prepare.yml b/roles/web_server/molecule/default/prepare.yml
index 40479c7a738b699d7425dbdb79f43fa7c28396d3..357f781e54638dd31f20d6e06c3fa34934fed0c3 100644
--- a/roles/web_server/molecule/default/prepare.yml
+++ b/roles/web_server/molecule/default/prepare.yml
@@ -74,6 +74,9 @@
         192.168.56.11: "client"
         192.168.56.21: "parameters-mandatory-bookworm"
         192.168.56.22: "parameters-optional-bookworm"
+        fd00::192:168:56:11: "client"
+        fd00::192:168:56:21: "parameters-mandatory-bookworm"
+        fd00::192:168:56:22: "parameters-optional-bookworm"
 
     - name: Install curl for testing redirects and webpage content
       ansible.builtin.apt:
diff --git a/roles/web_server/molecule/default/tests/test_client.py b/roles/web_server/molecule/default/tests/test_client.py
index 1a1955c595721759ccab012c607504a7f045af3f..5ed942f8d5c94c92de3f7020fc1da3093dccb678 100644
--- a/roles/web_server/molecule/default/tests/test_client.py
+++ b/roles/web_server/molecule/default/tests/test_client.py
@@ -13,13 +13,14 @@ testinfra_hosts = testinfra.utils.ansible_runner.AnsibleRunner(
     os.environ['MOLECULE_INVENTORY_FILE']).get_hosts('parameters-*')
 )
 @pytest.mark.parametrize('port', [80, 443])
-def test_connectivity(host, server, port):
+@pytest.mark.parametrize('ip_protocol', [4, 6])
+def test_connectivity(host, server, port, ip_protocol):
     """
     Tests connectivity to the web server (ports that should be reachable).
     """
 
     with host.sudo():
 
-        scan = host.run('nmap -4 -p %s -oG - %s', str(port), server)
+        scan = host.run('nmap -%s -p %s -oG - %s', str(ip_protocol), str(port), server)
         assert scan.rc == 0
         assert "Ports: %d/open/tcp//" % port in scan.stdout