diff --git a/tenant/commands/init.py b/tenant/commands/init.py index a3f526d..a2a9b5a 100644 --- a/tenant/commands/init.py +++ b/tenant/commands/init.py @@ -11,7 +11,7 @@ def execute(args): tenant_name = args.tenant_name target_directory = args.target - tenant_directory = os.path.join(target_directory, "tenants", tenant_name) + tenant_directory = os.path.join(target_directory, tenant_name) # Check if the tenant directory already exists if os.path.exists(tenant_directory): @@ -29,4 +29,18 @@ def execute(args): os.makedirs(kubernetes_directory) os.makedirs(certificates_directory) + # Create symbolic links for *.tf files + source_tf_dir = os.path.join(target_directory, "terraform") + target_tf_dir = os.path.join(tenant_directory, "terraform") + + for filename in os.listdir(source_tf_dir): + if filename.endswith(".tf"): + source_path = os.path.join(source_tf_dir, filename) + target_path = os.path.join(target_tf_dir, filename) + # Ensure the source path is correct before creating the symbolic link + if os.path.exists(source_path): + relative_path = os.path.relpath(source_path, target_tf_dir) + os.symlink(relative_path, target_path) + else: + print(f"Warning: Source file '{filename}' not found in '{source_tf_dir}'.") print(f"Tenant '{tenant_name}' initialized in '{tenant_directory}' with GitSync password provided.") diff --git a/tests/__init__.py b/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/tests/test_init.py b/tests/test_init.py new file mode 100644 index 0000000..ede21c6 --- /dev/null +++ b/tests/test_init.py @@ -0,0 +1,46 @@ +# tests/test_init.py +import os +import unittest +from unittest.mock import patch +from argparse import Namespace # Import Namespace for creating args object +from tenant.commands import init + +class TestInitCommand(unittest.TestCase): + def setUp(self): + # Set up any necessary configurations or resources + pass + + def tearDown(self): + # Clean up after the test + pass + + @patch("tenant.commands.init.get_secure_password", return_value="mocked_password") + def test_init_command(self, mock_input): + tenant_name = "test-tenant" + target_directory = "/tmp/test" + + # Ensure the tenant directory doesn't exist before running the test + tenant_directory = os.path.join(target_directory, "tenants", tenant_name) + if os.path.exists(tenant_directory): + os.rmdir(tenant_directory) + + # Create an args object + args = Namespace(command="init", tenant_name=tenant_name, target=target_directory) + + # Call the init command with the args object + init.execute(args) + + # Verify that the tenant directory has been created + self.assertTrue(os.path.exists(tenant_directory)) + self.assertTrue(os.path.exists(os.path.join(tenant_directory, "terraform"))) + self.assertTrue(os.path.exists(os.path.join(tenant_directory, "kubernetes"))) + self.assertTrue(os.path.exists(os.path.join(tenant_directory, "certificates"))) + + # Clean up: Remove the created tenant directory + os.rmdir(os.path.join(tenant_directory, "terraform")) + os.rmdir(os.path.join(tenant_directory, "kubernetes")) + os.rmdir(os.path.join(tenant_directory, "certificates")) + os.rmdir(tenant_directory) + +if __name__ == "__main__": + unittest.main()