mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2025-04-23 00:12:25 +02:00
101 lines
3.8 KiB
Python
101 lines
3.8 KiB
Python
import os
|
|
import sys
|
|
import tempfile
|
|
import shutil
|
|
import unittest
|
|
|
|
# Adjust the PYTHONPATH to include the lookup_plugins folder from the docker-portfolio role.
|
|
sys.path.insert(0, os.path.join(os.path.dirname(__file__), '../../roles/docker-portfolio/lookup_plugins'))
|
|
|
|
from docker_cards import LookupModule
|
|
|
|
class TestDockerCardsLookup(unittest.TestCase):
|
|
def setUp(self):
|
|
# Create a temporary directory to simulate the roles directory.
|
|
self.test_roles_dir = tempfile.mkdtemp(prefix="test_roles_")
|
|
# Create a sample role "docker-portfolio".
|
|
self.role_name = "docker-portfolio"
|
|
self.role_dir = os.path.join(self.test_roles_dir, self.role_name)
|
|
os.makedirs(os.path.join(self.role_dir, "meta"))
|
|
|
|
# Create a sample README.md with a H1 line for the title.
|
|
readme_path = os.path.join(self.role_dir, "README.md")
|
|
with open(readme_path, "w", encoding="utf-8") as f:
|
|
f.write("# Portfolio Application\nThis is a sample portfolio role.")
|
|
|
|
# Create a sample meta/main.yml in the meta folder.
|
|
meta_main_path = os.path.join(self.role_dir, "meta", "main.yml")
|
|
meta_yaml = """
|
|
galaxy_info:
|
|
description: "A role for deploying a portfolio application."
|
|
logo:
|
|
class: fa-solid fa-briefcase
|
|
"""
|
|
with open(meta_main_path, "w", encoding="utf-8") as f:
|
|
f.write(meta_yaml)
|
|
|
|
def tearDown(self):
|
|
# Remove the temporary roles directory after the test.
|
|
shutil.rmtree(self.test_roles_dir)
|
|
|
|
def test_lookup_when_group_includes_application_id(self):
|
|
# Instantiate the LookupModule.
|
|
lookup_module = LookupModule()
|
|
# Define dummy variables including group_names that contain the application_id "portfolio".
|
|
fake_variables = {
|
|
"domains": {"portfolio": "myportfolio.com"},
|
|
"applications": {
|
|
"portfolio": {
|
|
"features": {
|
|
"iframe": True
|
|
}
|
|
}
|
|
},
|
|
"group_names": ["portfolio"]
|
|
}
|
|
result = lookup_module.run([self.test_roles_dir], variables=fake_variables)
|
|
|
|
# The result is a list containing one list of card dictionaries.
|
|
self.assertIsInstance(result, list)
|
|
self.assertEqual(len(result), 1)
|
|
|
|
cards = result[0]
|
|
self.assertIsInstance(cards, list)
|
|
# Since "portfolio" is in group_names, one card should be present.
|
|
self.assertEqual(len(cards), 1)
|
|
|
|
card = cards[0]
|
|
self.assertEqual(card["title"], "Portfolio Application")
|
|
self.assertEqual(card["text"], "A role for deploying a portfolio application.")
|
|
self.assertEqual(card["icon"]["class"], "fa-solid fa-briefcase")
|
|
self.assertEqual(card["url"], "https://myportfolio.com")
|
|
self.assertTrue(card["iframe"])
|
|
|
|
def test_lookup_when_group_excludes_application_id(self):
|
|
# Instantiate the LookupModule.
|
|
lookup_module = LookupModule()
|
|
# Set fake variables with group_names that do NOT include the application_id "portfolio".
|
|
fake_variables = {
|
|
"domains": {"portfolio": "myportfolio.com"},
|
|
"applications": {
|
|
"portfolio": {
|
|
"features": {
|
|
"iframe": True
|
|
}
|
|
}
|
|
},
|
|
"group_names": [] # Not including "portfolio"
|
|
}
|
|
result = lookup_module.run([self.test_roles_dir], variables=fake_variables)
|
|
|
|
# Since the application_id is not in group_names, no card should be added.
|
|
self.assertIsInstance(result, list)
|
|
self.assertEqual(len(result), 1)
|
|
|
|
cards = result[0]
|
|
self.assertIsInstance(cards, list)
|
|
self.assertEqual(len(cards), 0)
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|