50 lines
1.5 KiB
Python
50 lines
1.5 KiB
Python
import subprocess
|
|
import sys
|
|
import unittest
|
|
from pathlib import Path
|
|
|
|
|
|
ROOT = Path(__file__).resolve().parents[1]
|
|
SKILL = ROOT / "skills" / "redmine-communicator"
|
|
SETUP = SKILL / "scripts" / "setup_redmcp.py"
|
|
|
|
|
|
class RedmineCommunicatorSkillTest(unittest.TestCase):
|
|
def test_skill_files_exist_and_reference_redmcp_safety_rules(self):
|
|
skill_md = (SKILL / "SKILL.md").read_text()
|
|
reference = (SKILL / "references" / "redmcp-tools.md").read_text()
|
|
|
|
self.assertIn("redmine-communicator", skill_md)
|
|
self.assertIn("redMCP", skill_md)
|
|
self.assertIn("send_helpdesk_email=true", skill_md)
|
|
self.assertIn("redmine_send_helpdesk_response", reference)
|
|
self.assertIn("customer-visible", reference)
|
|
|
|
def test_setup_script_dry_run_prints_stdio_config(self):
|
|
result = subprocess.run(
|
|
[
|
|
sys.executable,
|
|
str(SETUP),
|
|
"--redmine-url",
|
|
"http://redmine.example.test",
|
|
"--redmine-api-key",
|
|
"secret-key",
|
|
"--transport",
|
|
"stdio",
|
|
],
|
|
cwd=ROOT,
|
|
universal_newlines=True,
|
|
stdout=subprocess.PIPE,
|
|
stderr=subprocess.PIPE,
|
|
check=False,
|
|
)
|
|
|
|
self.assertEqual(0, result.returncode, result.stderr)
|
|
self.assertIn("mode=dry-run", result.stdout)
|
|
self.assertIn("redmcp-server.php", result.stdout)
|
|
self.assertNotIn("secret-key", result.stdout)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|