Allow anonymous share links in public mode

This commit is contained in:
2026-05-05 02:47:18 +00:00
parent 9b9d3e1cc1
commit d5b77932ea
3 changed files with 76 additions and 7 deletions
+24
View File
@@ -115,6 +115,12 @@ def setup_storage(tmp_path: Path):
mode="rw",
share_paths=["docs"],
)
share_anon = config.Token(
key="share_anon_123",
kind="share",
mode="ro",
share_paths=["docs"],
)
config.config = config.Config(
path=tmp_path,
listen=":0",
@@ -124,6 +130,7 @@ def setup_storage(tmp_path: Path):
"test_token_123": token,
"share_ro_123": share_ro,
"share_rw_123": share_rw,
"share_anon_123": share_anon,
},
)
watching.state.root = []
@@ -285,3 +292,20 @@ async def test_share_token_rw_allows_writes_in_scope_only(client):
"/files/secret.txt", headers=_basic_auth("token", "share_rw_123")
)
assert res.status_code == 404
@pytest.mark.asyncio
async def test_anonymous_share_token_requires_public_mode(client):
config.config.public = True
_, res = await client.get(
"/files/docs/a.txt", headers=_basic_auth("token", "share_anon_123")
)
assert res.status_code == 200
assert res.body == b"A"
config.config.public = False
_, res = await client.get(
"/files/docs/a.txt", headers=_basic_auth("token", "share_anon_123")
)
assert res.status_code == 401
+15
View File
@@ -215,3 +215,18 @@ async def test_create_share_token(client):
share_tokens = [t for t in res.json["tokens"] if t.get("kind") == "share"]
assert len(share_tokens) == 1
assert share_tokens[0]["mode"] == "ro"
@pytest.mark.asyncio
async def test_create_share_token_public_anonymous(client):
config.config = msgspec.structs.replace(config.config, public=True)
_, res = await client.post(
"/api/share-tokens",
json={"paths": ["hello.txt"], "mode": "ro", "name": "public-share"},
)
assert res.status_code == 200
data = res.json
assert data["kind"] == "share"
assert data["username"] == ""
assert data["sso_user_id"] == ""