test: Update tests with McpError
This commit is contained in:
@@ -19,7 +19,7 @@ class Note(BaseModel):
|
|||||||
favorite: bool = Field(
|
favorite: bool = Field(
|
||||||
default=False, description="Whether note is marked as favorite"
|
default=False, description="Whether note is marked as favorite"
|
||||||
)
|
)
|
||||||
etag: Optional[str] = Field(None, description="ETag for versioning")
|
etag: str = Field(description="ETag for versioning")
|
||||||
readonly: bool = Field(default=False, description="Whether note is read-only")
|
readonly: bool = Field(default=False, description="Whether note is read-only")
|
||||||
|
|
||||||
@property
|
@property
|
||||||
|
|||||||
@@ -179,7 +179,9 @@ def configure_notes_tools(mcp: FastMCP):
|
|||||||
async def nc_notes_append_content(
|
async def nc_notes_append_content(
|
||||||
note_id: int, content: str, ctx: Context
|
note_id: int, content: str, ctx: Context
|
||||||
) -> AppendContentResponse:
|
) -> AppendContentResponse:
|
||||||
"""Append content to an existing note with a clear separator. The tool automatically adds separators between existing and new content - do not include separators in your content."""
|
"""Append content to an existing note. The tool adds a `\n---\n`
|
||||||
|
between the note and what will be appended."""
|
||||||
|
|
||||||
logger.info("Appending content to note %s", note_id)
|
logger.info("Appending content to note %s", note_id)
|
||||||
client: NextcloudClient = ctx.request_context.lifespan_context.client
|
client: NextcloudClient = ctx.request_context.lifespan_context.client
|
||||||
try:
|
try:
|
||||||
|
|||||||
@@ -334,13 +334,11 @@ async def test_mcp_notes_etag_conflict(
|
|||||||
)
|
)
|
||||||
|
|
||||||
# 4. Verify the update was rejected with a 412 error
|
# 4. Verify the update was rejected with a 412 error
|
||||||
# The MCP framework doesn't set isError=True for ErrorResponse, so check the response content
|
# With McpError, tools now return proper error responses
|
||||||
|
assert conflict_result.isError is True, "Update with stale ETag should fail"
|
||||||
response_content = conflict_result.content[0].text
|
response_content = conflict_result.content[0].text
|
||||||
response_data = json.loads(response_content)
|
assert "modified by someone else" in response_content, (
|
||||||
|
f"Expected conflict error message, got: {response_content}"
|
||||||
assert response_data["success"] is False, "Update with stale ETag should fail"
|
|
||||||
assert "modified by someone else" in response_data["error"], (
|
|
||||||
f"Expected conflict error message, got: {response_data}"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
logger.info("Successfully verified ETag conflict handling via MCP")
|
logger.info("Successfully verified ETag conflict handling via MCP")
|
||||||
|
|||||||
Reference in New Issue
Block a user