chore: import upstream snapshot with attribution
Integ / changes (push) Has been skipped
Pre-commit / pre-commit (push) Failing after 1s
CLI exit codes / changes (push) Has been skipped
Test (Install) / changes (push) Has been skipped
Test (Python) / changes (push) Has been skipped
Test (TypeScript) / changes (push) Has been skipped
CLI exit codes / cli-gate (push) Has been cancelled
Test (Install) / test-install-gate (push) Has been cancelled
Integ / integ-gate (push) Has been cancelled
Test (Python) / test-python-gate (push) Has been cancelled
Test (TypeScript) / test-typescript-gate (push) Has been cancelled
Test (Install) / python-minimal (3.12) (push) Has been cancelled
Test (Install) / python-minimal (3.11) (push) Has been cancelled
Test (Install) / python-extra (agno, mirage.agents.agno) (push) Has been cancelled
Test (Install) / python-extra (chroma, mirage.resource.chroma) (push) Has been cancelled
Test (Install) / python-extra (pdf, mirage.core.filetype.pdf) (push) Has been cancelled
Integ / integ (push) Has been cancelled
Integ / integ-database (push) Has been cancelled
Integ / integ-database-ts (push) Has been cancelled
Integ / integ-data (push) Has been cancelled
Integ / integ-ssh (push) Has been cancelled
Integ / integ-ssh-ts (push) Has been cancelled
Test (Python) / audit (push) Has been cancelled
Test (TypeScript) / test (push) Has been cancelled
Test (TypeScript) / python-fs-shim (push) Has been cancelled
CLI exit codes / Python CLI (push) Has been cancelled
CLI exit codes / TypeScript CLI (push) Has been cancelled
CLI exit codes / Cross-language snapshot interop (push) Has been cancelled
Test (Python) / test (push) Has been cancelled
Test (Python) / import-isolation (deepagents, openai, mirage.agents.openai_agents) (push) Has been cancelled
Test (Python) / import-isolation (deepagents, pydantic-ai, mirage.agents.pydantic_ai) (push) Has been cancelled
Integ / integ-ts (push) Has been cancelled
Integ / integ-fuse (push) Has been cancelled
Test (Install) / python-extra (databricks, mirage.resource.databricks_volume) (push) Has been cancelled
Test (Install) / python-extra (deepagents, mirage.agents.langchain) (push) Has been cancelled
Test (Install) / python-extra (email, mirage.resource.email) (push) Has been cancelled
Test (Install) / python-extra (fuse, mirage.fuse.mount) (push) Has been cancelled
Test (Install) / python-extra (hdf5, mirage.core.filetype.hdf5) (push) Has been cancelled
Test (Install) / python-extra (hf, mirage.resource.hf_buckets) (push) Has been cancelled
Test (Install) / python-extra (lancedb, mirage.resource.lancedb) (push) Has been cancelled
Test (Install) / python-extra (langfuse, mirage.resource.langfuse) (push) Has been cancelled
Test (Install) / python-extra (mongodb, mirage.resource.mongodb) (push) Has been cancelled
Test (Install) / python-extra (nextcloud, mirage.resource.nextcloud) (push) Has been cancelled
Test (Install) / python-extra (openai, mirage.agents.openai_agents) (push) Has been cancelled
Test (Install) / python-extra (openhands, mirage.agents.openhands, 3.12) (push) Has been cancelled
Test (Install) / python-extra (parquet, mirage.core.filetype.parquet) (push) Has been cancelled
Test (Install) / python-extra (postgres, mirage.resource.postgres) (push) Has been cancelled
Test (Install) / python-extra (pydantic-ai, mirage.agents.pydantic_ai) (push) Has been cancelled
Test (Install) / python-extra (qdrant, mirage.resource.qdrant) (push) Has been cancelled
Test (Install) / python-extra (redis, mirage.resource.redis) (push) Has been cancelled
Test (Install) / python-extra (s3, mirage.resource.s3) (push) Has been cancelled
Test (Install) / python-extra (ssh, mirage.resource.ssh) (push) Has been cancelled
Test (Install) / ts-minimal (push) Has been cancelled

This commit is contained in:
wehub-resource-sync
2026-07-13 12:30:44 +08:00
commit bcbd1bdb22
5748 changed files with 562488 additions and 0 deletions
@@ -0,0 +1,106 @@
import pytest
from aioresponses import CallbackResult, aioresponses
from mirage.accessor.onedrive import OneDriveAccessor, OneDriveConfig
from mirage.core.onedrive.create import create
from mirage.core.onedrive.exists import exists
from mirage.core.onedrive.mkdir import mkdir
from mirage.core.onedrive.rename import rename
from mirage.core.onedrive.rm import rm_r
from mirage.core.onedrive.rmdir import rmdir
from mirage.core.onedrive.unlink import unlink
from mirage.types import PathSpec
def _accessor(**kw) -> OneDriveAccessor:
return OneDriveAccessor(OneDriveConfig(access_token="tok", **kw))
_BASE = "https://graph.microsoft.com/v1.0/me/drive"
@pytest.mark.asyncio
async def test_mkdir_posts_folder_to_parent_children():
body = {}
def _cb(url, **kwargs):
body.update(kwargs.get("json") or {})
return CallbackResult(status=201, payload={"id": "F"})
with aioresponses() as m:
m.post(_BASE + "/root:/a:/children", callback=_cb)
await mkdir(_accessor(), PathSpec.from_str_path("/a/b"))
assert body["name"] == "b"
assert "folder" in body
@pytest.mark.asyncio
async def test_create_puts_empty_content():
captured = {}
def _cb(url, **kwargs):
captured["body"] = kwargs.get("data")
return CallbackResult(status=201, payload={"id": "X"})
with aioresponses() as m:
m.put(_BASE + "/root:/a.txt:/content", callback=_cb)
await create(_accessor(), PathSpec.from_str_path("/a.txt"))
assert captured["body"] in (b"", None)
@pytest.mark.asyncio
async def test_unlink_deletes_item():
with aioresponses() as m:
m.delete(_BASE + "/root:/a.txt", status=204)
await unlink(_accessor(), PathSpec.from_str_path("/a.txt"))
@pytest.mark.asyncio
async def test_rmdir_deletes_folder():
with aioresponses() as m:
m.delete(_BASE + "/root:/docs", status=204)
await rmdir(_accessor(), PathSpec.from_str_path("/docs"))
@pytest.mark.asyncio
async def test_rm_r_deletes_tree():
with aioresponses() as m:
m.delete(_BASE + "/root:/docs", status=204)
await rm_r(_accessor(), PathSpec.from_str_path("/docs"))
@pytest.mark.asyncio
async def test_rename_patches_name():
body = {}
def _cb(url, **kwargs):
body.update(kwargs.get("json") or {})
return CallbackResult(status=200, payload={"id": "X", "name": "b.txt"})
with aioresponses() as m:
m.patch(_BASE + "/root:/a.txt", callback=_cb)
await rename(_accessor(), PathSpec.from_str_path("/a.txt"),
PathSpec.from_str_path("/b.txt"))
assert body["name"] == "b.txt"
@pytest.mark.asyncio
async def test_exists_true_and_false():
with aioresponses() as m:
m.get(_BASE + "/root:/a.txt",
payload={
"id": "X",
"name": "a.txt",
"file": {}
})
assert await exists(_accessor(),
PathSpec.from_str_path("/a.txt")) is True
with aioresponses() as m:
m.get(_BASE + "/root:/missing.txt",
status=404,
payload={"error": {
"code": "itemNotFound",
"message": "no"
}})
assert await exists(_accessor(),
PathSpec.from_str_path("/missing.txt")) is False