feat(kpi): expand KPI runtime monitoring, prompt advisory envelopes, and missing field resiliency
This commit is contained in:
@@ -83,6 +83,40 @@ class TestOnboardPipeline(unittest.TestCase):
|
||||
self.assertEqual(res["beneficiary_node"], "646")
|
||||
mock_redeem.assert_called_once_with("testnode", "REDCJ7", timeout=20.0)
|
||||
|
||||
@patch("invite.redeem_invite")
|
||||
@patch("subprocess.run")
|
||||
@patch("invite_handler.send_loopback_notice")
|
||||
def test_finish_onboarding_redemption_failure_with_loopback(self, mock_notice, mock_subproc, mock_redeem):
|
||||
mock_redeem.return_value = {"ok": False, "reason": "already_redeemed", "detail": "Already redeemed"}
|
||||
mock_notice.return_value = True
|
||||
state = OnboardState(
|
||||
node="testnode",
|
||||
email="client@test.com",
|
||||
beneficiary_node="646",
|
||||
invite_code="REDCJ7",
|
||||
stage="auth_active",
|
||||
)
|
||||
|
||||
res = finish_onboarding_redemption(state)
|
||||
self.assertTrue(res["ok"])
|
||||
self.assertEqual(res["status"], "auth_active_redemption_warning")
|
||||
self.assertIn("Redemption failed: already_redeemed", state.detail)
|
||||
mock_notice.assert_called_once()
|
||||
kwargs = mock_notice.call_args.kwargs
|
||||
self.assertEqual(kwargs.get("recipient"), "646")
|
||||
self.assertEqual(kwargs.get("target"), "646 tasks")
|
||||
self.assertIn("already_redeemed", kwargs.get("message", ""))
|
||||
|
||||
|
||||
def test_get_all_connects_fast(self):
|
||||
from onboard_pipeline import get_all_connects
|
||||
connects = get_all_connects(fast=True)
|
||||
self.assertIsInstance(connects, list)
|
||||
self.assertGreaterEqual(len(connects), 6)
|
||||
nodes = {c["node"] for c in connects}
|
||||
for expected in ("muse", "pip", "646", "opm", "dev", "def"):
|
||||
self.assertIn(expected, nodes)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
|
||||
Reference in New Issue
Block a user