feat: add Gemini skill integration and multi-user AI setup
This commit is contained in:
93
test_ai_setup.py
Normal file
93
test_ai_setup.py
Normal file
@@ -0,0 +1,93 @@
|
||||
import os
|
||||
import tempfile
|
||||
import unittest
|
||||
from pathlib import Path
|
||||
|
||||
from core import claude_setup as cs
|
||||
|
||||
|
||||
class AISetupTests(unittest.TestCase):
|
||||
def setUp(self):
|
||||
self._old_target = os.environ.get("SERVER_MANAGER_TARGET_HOME")
|
||||
self._old_all = os.environ.get("SERVER_MANAGER_INSTALL_ALL_USERS")
|
||||
self._old_iter = cs._iter_all_user_homes
|
||||
self._old_platform = cs.sys.platform
|
||||
|
||||
def tearDown(self):
|
||||
if self._old_target is None:
|
||||
os.environ.pop("SERVER_MANAGER_TARGET_HOME", None)
|
||||
else:
|
||||
os.environ["SERVER_MANAGER_TARGET_HOME"] = self._old_target
|
||||
|
||||
if self._old_all is None:
|
||||
os.environ.pop("SERVER_MANAGER_INSTALL_ALL_USERS", None)
|
||||
else:
|
||||
os.environ["SERVER_MANAGER_INSTALL_ALL_USERS"] = self._old_all
|
||||
|
||||
cs._iter_all_user_homes = self._old_iter
|
||||
cs.sys.platform = self._old_platform
|
||||
|
||||
def test_single_target_installers_create_expected_files(self):
|
||||
with tempfile.TemporaryDirectory() as tmp:
|
||||
os.environ["SERVER_MANAGER_TARGET_HOME"] = tmp
|
||||
|
||||
cs.install_ssh_script()
|
||||
cs.install_claude_skill()
|
||||
cs.install_codex_skill()
|
||||
cs.install_gemini_skill()
|
||||
cs.install_global_claude_md()
|
||||
cs.install_global_gemini_md()
|
||||
|
||||
self.assertTrue(Path(tmp, ".server-connections", "ssh.py").exists())
|
||||
self.assertTrue(Path(tmp, ".server-connections", "encryption.py").exists())
|
||||
self.assertTrue(Path(tmp, ".claude", "commands", "ssh.md").exists())
|
||||
self.assertTrue(Path(tmp, ".codex", "skills", "server-manager", "SKILL.md").exists())
|
||||
self.assertTrue(Path(tmp, ".gemini", "skills", "server-manager", "SKILL.md").exists())
|
||||
self.assertTrue(Path(tmp, ".server-connections", "codex-ssh").exists())
|
||||
self.assertTrue(Path(tmp, ".server-connections", "gemini-ssh").exists())
|
||||
self.assertTrue(Path(tmp, ".claude", "CLAUDE.md").exists())
|
||||
self.assertTrue(Path(tmp, ".gemini", "GEMINI.md").exists())
|
||||
self.assertFalse(Path(tmp, ".agents", "skills", "server-manager").exists())
|
||||
|
||||
status = cs.check_status()
|
||||
self.assertTrue(status["claude_skill_installed"])
|
||||
self.assertTrue(status["codex_skill_installed"])
|
||||
self.assertTrue(status["gemini_skill_installed"])
|
||||
self.assertTrue(status["codex_wrapper_installed"])
|
||||
self.assertTrue(status["gemini_wrapper_installed"])
|
||||
|
||||
def test_install_all_users_mode_installs_into_each_home_and_skips_ssh_key(self):
|
||||
with tempfile.TemporaryDirectory() as base:
|
||||
home1 = Path(base, "user1")
|
||||
home2 = Path(base, "user2")
|
||||
home1.mkdir()
|
||||
home2.mkdir()
|
||||
|
||||
os.environ["SERVER_MANAGER_INSTALL_ALL_USERS"] = "1"
|
||||
cs._iter_all_user_homes = lambda: [str(home1), str(home2)]
|
||||
|
||||
results = cs.install_all()
|
||||
|
||||
self.assertIn("INFO: SSH key generation skipped", "\n".join(results))
|
||||
self.assertTrue(Path(home1, ".codex", "skills", "server-manager", "SKILL.md").exists())
|
||||
self.assertTrue(Path(home1, ".gemini", "skills", "server-manager", "SKILL.md").exists())
|
||||
self.assertTrue(Path(home2, ".codex", "skills", "server-manager", "SKILL.md").exists())
|
||||
self.assertTrue(Path(home2, ".gemini", "skills", "server-manager", "SKILL.md").exists())
|
||||
self.assertFalse(Path(home1, ".ssh", "id_ed25519").exists())
|
||||
self.assertFalse(Path(home2, ".ssh", "id_ed25519").exists())
|
||||
|
||||
def test_windows_wrapper_names_are_generated_with_cmd_suffix(self):
|
||||
with tempfile.TemporaryDirectory() as tmp:
|
||||
os.environ["SERVER_MANAGER_TARGET_HOME"] = tmp
|
||||
cs.sys.platform = "win32"
|
||||
|
||||
cs.install_ssh_script()
|
||||
cs.install_codex_skill()
|
||||
cs.install_gemini_skill()
|
||||
|
||||
self.assertTrue(Path(tmp, ".server-connections", "codex-ssh.cmd").exists())
|
||||
self.assertTrue(Path(tmp, ".server-connections", "gemini-ssh.cmd").exists())
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user