from __future__ import annotations import pytest from app.approval.feishu_client import FeishuApprovalClient from app.core.exceptions import AppException @pytest.mark.asyncio async def test_ensure_subscribed_treats_subscription_exists_as_idempotent( monkeypatch, ) -> None: client = FeishuApprovalClient( app_id="cli_subscribe_exists_test", app_secret="secret", ) approval_code = "APPROVAL-CODE-ALREADY-SUBSCRIBED" FeishuApprovalClient._subscribed.discard((client.app_id, approval_code)) calls: list[dict[str, object]] = [] async def _fake_request( self, method, path, *, json_body=None, data=None, files=None, timeout=30, benign_error_codes=None, ): calls.append({ "method": method, "path": path, "benign_error_codes": benign_error_codes, }) raise AppException( code="FEISHU_API_ERROR", message="Feishu API error 1390007: subscription existed", status_code=502, ) monkeypatch.setattr(FeishuApprovalClient, "_request", _fake_request) await client.ensure_subscribed(approval_code) await client.ensure_subscribed(approval_code) assert calls == [{ "method": "POST", "path": f"/approval/v4/approvals/{approval_code}/subscribe", "benign_error_codes": {1390007}, }] assert (client.app_id, approval_code) in FeishuApprovalClient._subscribed