Add support for attachments in notes
This commit is contained in:
@@ -0,0 +1,82 @@
|
||||
#!/usr/bin/env python
|
||||
import sys
|
||||
import time
|
||||
from nextcloud_mcp_server.client import NextcloudClient
|
||||
|
||||
def main():
|
||||
# Create client
|
||||
client = NextcloudClient.from_env()
|
||||
|
||||
# 1. Create a new test note
|
||||
test_title = "Test Note for Deletion with Attachment"
|
||||
print(f"Creating test note: {test_title}...")
|
||||
note = client.notes_create_note(
|
||||
title=test_title,
|
||||
content="This note will be deleted but its attachment should remain.",
|
||||
category="Test"
|
||||
)
|
||||
note_id = note["id"]
|
||||
print(f"Note created with ID: {note_id}")
|
||||
|
||||
# 2. Attach the existing image to the note
|
||||
print(f"Attaching image to note {note_id}...")
|
||||
with open("sample_image.png", 'rb') as f:
|
||||
image_content = f.read()
|
||||
|
||||
upload_response = client.add_note_attachment(
|
||||
note_id=note_id,
|
||||
filename="deletion_test_image.png",
|
||||
content=image_content,
|
||||
mime_type="image/png"
|
||||
)
|
||||
print(f"Image attached successfully (Status: {upload_response['status_code']}).")
|
||||
|
||||
# 3. Verify the attachment exists
|
||||
print(f"Verifying attachment exists...")
|
||||
content, mime_type = client.get_note_attachment(
|
||||
note_id=note_id,
|
||||
filename="deletion_test_image.png"
|
||||
)
|
||||
print(f"Attachment verified (Size: {len(content)} bytes)")
|
||||
|
||||
# 4. Delete the note
|
||||
print(f"\nDeleting note {note_id}...")
|
||||
response = client.notes_delete_note(note_id=note_id)
|
||||
print(f"Note deleted successfully.")
|
||||
|
||||
# Wait a moment for deletion to process
|
||||
time.sleep(1)
|
||||
|
||||
# 5. Verify the note is gone
|
||||
print("\nVerifying note is deleted...")
|
||||
try:
|
||||
client.notes_get_note(note_id=note_id)
|
||||
print("ERROR: Note still exists!")
|
||||
return 1
|
||||
except Exception as e:
|
||||
print(f"Note confirmed deleted (404 Not Found expected): {e}")
|
||||
|
||||
# 6. Check if attachment still exists (expected behavior)
|
||||
print("\nChecking if attachment still exists (orphaned)...")
|
||||
try:
|
||||
content, mime_type = client.get_note_attachment(
|
||||
note_id=note_id,
|
||||
filename="deletion_test_image.png"
|
||||
)
|
||||
print("EXPECTED BEHAVIOR: Attachment still exists after note deletion!")
|
||||
print(f"Attachment size: {len(content)} bytes")
|
||||
print(f"This matches the documented behavior of Nextcloud Notes.")
|
||||
|
||||
# Save the orphaned attachment to verify
|
||||
output_path = "orphaned_attachment.png"
|
||||
with open(output_path, 'wb') as f:
|
||||
f.write(content)
|
||||
print(f"Saved orphaned attachment to: {output_path}")
|
||||
|
||||
return 0
|
||||
except Exception as e:
|
||||
print(f"Unexpected: Attachment was deleted with note: {e}")
|
||||
return 1
|
||||
|
||||
if __name__ == "__main__":
|
||||
sys.exit(main())
|
||||
Reference in New Issue
Block a user