Normalize malformed nested Gitea activity metadata #96
|
|
@ -42,10 +42,26 @@ async def activity_events() -> list[dict]:
|
||||||
events = await fetch(f"users/{user['login']}/activities/feeds?limit=20")
|
events = await fetch(f"users/{user['login']}/activities/feeds?limit=20")
|
||||||
return [
|
return [
|
||||||
{
|
{
|
||||||
"type": event.get("op_type", "activity"),
|
"type": (
|
||||||
"actor": event.get("act_user") or {},
|
event.get("op_type")
|
||||||
"repo": event.get("repo") or {},
|
if isinstance(event.get("op_type"), str) and event.get("op_type")
|
||||||
"created_at": event.get("created", ""),
|
else "activity"
|
||||||
|
),
|
||||||
|
"actor": (
|
||||||
|
event.get("act_user")
|
||||||
|
if isinstance(event.get("act_user"), dict)
|
||||||
|
else {}
|
||||||
|
),
|
||||||
|
"repo": (
|
||||||
|
event.get("repo")
|
||||||
|
if isinstance(event.get("repo"), dict)
|
||||||
|
else {}
|
||||||
|
),
|
||||||
|
"created_at": (
|
||||||
|
event.get("created")
|
||||||
|
if isinstance(event.get("created"), str)
|
||||||
|
else ""
|
||||||
|
),
|
||||||
}
|
}
|
||||||
for event in (events or [])
|
for event in (events or [])
|
||||||
if isinstance(event, dict)
|
if isinstance(event, dict)
|
||||||
|
|
|
||||||
|
|
@ -162,3 +162,27 @@ async def test_activity_events_normalizes_null_feed_payload(monkeypatch):
|
||||||
monkeypatch.setattr(gitea_proxy, "fetch", fake_fetch)
|
monkeypatch.setattr(gitea_proxy, "fetch", fake_fetch)
|
||||||
|
|
||||||
assert await gitea_proxy.activity_events() == []
|
assert await gitea_proxy.activity_events() == []
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.anyio
|
||||||
|
async def test_activity_events_normalizes_malformed_nested_metadata(monkeypatch):
|
||||||
|
async def fake_current_user():
|
||||||
|
return {"login": "timmy"}
|
||||||
|
|
||||||
|
async def fake_fetch(path):
|
||||||
|
return [{
|
||||||
|
"op_type": None,
|
||||||
|
"act_user": "unknown",
|
||||||
|
"repo": None,
|
||||||
|
"created": None,
|
||||||
|
}]
|
||||||
|
|
||||||
|
monkeypatch.setattr(gitea_proxy, "current_user", fake_current_user)
|
||||||
|
monkeypatch.setattr(gitea_proxy, "fetch", fake_fetch)
|
||||||
|
|
||||||
|
assert await gitea_proxy.activity_events() == [{
|
||||||
|
"type": "activity",
|
||||||
|
"actor": {},
|
||||||
|
"repo": {},
|
||||||
|
"created_at": "",
|
||||||
|
}]
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user