@@ -70,9 +70,13 @@ def test_tool_ctx_no_access_token(monkeypatch):
7070 pass
7171
7272
73- def test_tool_ctx_revoked_pat (db , monkeypatch ):
73+ def test_tool_ctx_revoked_pat (db , monkeypatch , engine ):
7474 """_tool_ctx raises ToolError when resolve_token returns None (revoked/expired PAT)."""
75- from fourdpocket .mcp import server
75+ import fourdpocket .db .session as db_module
76+
77+ # Patch get_engine so _tool_ctx() uses the test engine
78+ original_get_engine = db_module .get_engine
79+ db_module .get_engine = lambda : engine
7680
7781 # Create a valid user
7882 user_obj = User (
@@ -94,17 +98,25 @@ def fake_get_token():
9498 def fake_resolve (db_session , token_str ):
9599 return None # Simulates revoked/expired token
96100
101+ from fourdpocket .mcp import server as server_module
102+
97103 monkeypatch .setattr ("fourdpocket.mcp.server.get_access_token" , fake_get_token )
98104 monkeypatch .setattr ("fourdpocket.mcp.server.resolve_token" , fake_resolve )
99105
100- with pytest .raises (server .tools_mod .ToolError , match = "revoked|expired" ):
101- with server ._tool_ctx ():
106+ with pytest .raises (server_module .tools_mod .ToolError , match = "revoked|expired" ):
107+ with server_module ._tool_ctx ():
102108 pass
103109
110+ db_module .get_engine = original_get_engine
104111
105- def test_tool_ctx_inactive_user (db , monkeypatch ):
112+
113+ def test_tool_ctx_inactive_user (db , monkeypatch , engine ):
106114 """_tool_ctx raises ToolError when the resolved user is inactive."""
107- from fourdpocket .mcp import server
115+ import fourdpocket .db .session as db_module
116+ from fourdpocket .mcp import server as server_module
117+
118+ original_get_engine = db_module .get_engine
119+ db_module .get_engine = lambda : engine
108120
109121 # Create an inactive user with a PAT
110122 inactive_user = User (
@@ -145,14 +157,20 @@ def fake_resolve(db_session, token_str):
145157 monkeypatch .setattr ("fourdpocket.mcp.server.get_access_token" , fake_get_token )
146158 monkeypatch .setattr ("fourdpocket.mcp.server.resolve_token" , fake_resolve )
147159
148- with pytest .raises (server .tools_mod .ToolError , match = "disabled" ):
149- with server ._tool_ctx ():
160+ with pytest .raises (server_module .tools_mod .ToolError , match = "disabled" ):
161+ with server_module ._tool_ctx ():
150162 pass
151163
164+ db_module .get_engine = original_get_engine
165+
152166
153- def test_tool_ctx_deleted_user (db , monkeypatch ):
167+ def test_tool_ctx_deleted_user (db , monkeypatch , engine ):
154168 """_tool_ctx raises ToolError when the resolved user no longer exists in DB."""
155- from fourdpocket .mcp import server
169+ import fourdpocket .db .session as db_module
170+ from fourdpocket .mcp import server as server_module
171+
172+ original_get_engine = db_module .get_engine
173+ db_module .get_engine = lambda : engine
156174
157175 # Create a user, then delete them (simulate user_id points to nothing)
158176 ghost_user = User (
@@ -197,10 +215,12 @@ def fake_resolve(db_session, token_str):
197215 monkeypatch .setattr ("fourdpocket.mcp.server.get_access_token" , fake_get_token )
198216 monkeypatch .setattr ("fourdpocket.mcp.server.resolve_token" , fake_resolve )
199217
200- with pytest .raises (server .tools_mod .ToolError , match = "disabled" ):
201- with server ._tool_ctx ():
218+ with pytest .raises (server_module .tools_mod .ToolError , match = "disabled" ):
219+ with server_module ._tool_ctx ():
202220 pass
203221
222+ db_module .get_engine = original_get_engine
223+
204224
205225# ─── Tool call wrapper ───────────────────────────────────────────────────────
206226
0 commit comments