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

107 lines
3.3 KiB
Python

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