← Files Codex Tasks (Internal/CCA)ARCHIVED FILE

tests/test_codex_tasks_plugin.py

3.26 KB · Oct 2, 2026 · 00:09 UTC

↓ Download file

from __future__ import annotations

import json
import re
import unittest
from pathlib import Path

PLUGIN_ROOT = Path(__file__).resolve().parent.parent
MARKETPLACE_ROOT = PLUGIN_ROOT.parents[1]
CODEX_TASKS_APP_ID = "connector_openai_codex_tasks"


class CodexTasksPluginTests(unittest.TestCase):
    def test_plugin_binds_the_required_codex_tasks_connector(self) -> None:
        manifest = json.loads(
            (PLUGIN_ROOT / ".codex-plugin/plugin.json").read_text(encoding="utf-8")
        )
        app_manifest = json.loads((PLUGIN_ROOT / ".app.json").read_text(encoding="utf-8"))

        self.assertEqual(manifest["name"], "codex-tasks")
        self.assertEqual(manifest["skills"], "./skills/")
        self.assertEqual(manifest["apps"], "./.app.json")
        self.assertNotIn("mcpServers", manifest)
        self.assertEqual(manifest["interface"]["displayName"], "Codex Tasks (Internal/CCA)")
        self.assertIn("CCA remote-task adapter", manifest["interface"]["longDescription"])
        self.assertEqual(
            app_manifest,
            {"apps": {"codex_tasks": {"id": CODEX_TASKS_APP_ID, "required": True}}},
        )

    def test_catalog_is_manually_available_with_connector_managed_access(self) -> None:
        marketplace = json.loads((MARKETPLACE_ROOT / "marketplace.json").read_text("utf-8"))

        self.assertEqual(
            [entry for entry in marketplace["plugins"] if entry["name"] == "codex-tasks"],
            [
                {
                    "name": "codex-tasks",
                    "source": {
                        "source": "local",
                        "path": "./plugins/codex-tasks",
                    },
                    "policy": {
                        "installation": "AVAILABLE",
                        "authentication": "ON_USE",
                    },
                    "category": "Productivity",
                }
            ],
        )

    def test_creation_skill_example_is_a_valid_minimal_request(self) -> None:
        skill = (PLUGIN_ROOT / "skills/create-codex-task/SKILL.md").read_text(encoding="utf-8")

        example = re.search(r"```json\s*(.*?)\s*```", skill, re.DOTALL)
        self.assertIsNotNone(example)
        assert example is not None
        request = json.loads(example.group(1))

        self.assertEqual(
            set(request),
            {"thread_start_params", "turn_start_params"},
        )
        self.assertEqual(
            set(request["thread_start_params"]),
            {"approvalPolicy", "approvalsReviewer", "sandbox", "environments"},
        )
        self.assertEqual(request["thread_start_params"]["approvalPolicy"], "on-request")
        self.assertEqual(request["thread_start_params"]["approvalsReviewer"], "auto_review")
        self.assertEqual(request["thread_start_params"]["sandbox"], "workspace-write")
        self.assertEqual(
            set(request["thread_start_params"]["environments"][0]),
            {"environmentId", "cwd"},
        )
        self.assertEqual(set(request["turn_start_params"]), {"input"})

    def test_plugin_contains_only_the_creation_skill(self) -> None:
        self.assertEqual(
            [path.name for path in (PLUGIN_ROOT / "skills").iterdir() if path.is_dir()],
            ["create-codex-task"],
        )


if __name__ == "__main__":
    unittest.main()

SHA-256: 157da8dc301f4e0140537c9e4f18911fd88bf2bb8f884d150deaa79065feadda