-
Notifications
You must be signed in to change notification settings - Fork 1.5k
Expand file tree
/
Copy pathtest_scenario_session_setup_e2e.py
More file actions
71 lines (60 loc) · 2.38 KB
/
Copy pathtest_scenario_session_setup_e2e.py
File metadata and controls
71 lines (60 loc) · 2.38 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
"""Scenario-parity E2Es for session setup ordering."""
from __future__ import annotations
import asyncio
import pytest
from copilot.session import PermissionHandler
from copilot.session_events import SessionStartData
from ._scenario_fake_cli import create_scenario_client, read_scenario_capture
from .testharness import E2ETestContext
pytestmark = pytest.mark.asyncio(loop_scope="module")
class TestScenarioSessionSetup:
async def test_should_route_subscribed_session_start_for_preallocated_session_id(
self,
ctx: E2ETestContext,
):
client, _capture_path = create_scenario_client(ctx, "preallocated-event")
start_events = []
session_start_received = asyncio.Event()
def on_event(event) -> None:
if isinstance(event.data, SessionStartData):
start_events.append(event)
session_start_received.set()
try:
session = await client.create_session(
session_id="scenario-session",
on_event=on_event,
on_permission_request=PermissionHandler.approve_all,
)
try:
await asyncio.wait_for(session_start_received.wait(), timeout=5)
assert session.session_id == "scenario-session"
assert len(start_events) == 1
assert start_events[0].data.session_id == "scenario-session"
assert start_events[0].data.producer == "scenario-fake-cli"
finally:
await session.disconnect()
finally:
await client.stop()
async def test_should_create_then_reload_mcp_in_order(
self,
ctx: E2ETestContext,
):
client, capture_path = create_scenario_client(ctx, "send")
try:
session = await client.create_session(
session_id="scenario-session",
on_permission_request=PermissionHandler.approve_all,
)
try:
await session.rpc.mcp.reload()
assert [
request["method"] for request in read_scenario_capture(capture_path)["requests"]
] == [
"connect",
"session.create",
"session.mcp.reload",
]
finally:
await session.disconnect()
finally:
await client.stop()