Skip to content

Commit 2416c89

Browse files
committed
Reset smoke idempotence state
Clear the Fedify harness inbox idempotence keys when the smoke test reset endpoint is called. This keeps repeated Sharkey follow/unfollow scenarios from being filtered as duplicate activities after the visible test inbox has already been cleared. Fixes #749 Assisted-by: Codex:gpt-5.5
1 parent 9071ca0 commit 2416c89

2 files changed

Lines changed: 12 additions & 1 deletion

File tree

test/smoke/harness/backdoor.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import type { Federation } from "@fedify/fedify/federation";
22
import { Create, Follow, Note, Undo } from "@fedify/vocab";
3+
import { resetFederationTestState } from "./federation.ts";
34
import { store } from "./store.ts";
45

56
function json(data: unknown, status = 200): Response {
@@ -80,6 +81,7 @@ export async function handleBackdoor(
8081
if (url.pathname === "/_test/reset" && request.method === "POST") {
8182
store.clear();
8283
recipientCache.clear();
84+
await resetFederationTestState();
8385
return json({ ok: true });
8486
}
8587

test/smoke/harness/federation.ts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,23 @@ const ORIGIN = Deno.env.get("HARNESS_ORIGIN") ??
77
"http://fedify-harness:3001";
88

99
const rsaKeyPair = await generateCryptoKeyPair("RSASSA-PKCS1-v1_5");
10+
const kv = new MemoryKvStore();
1011

1112
const federation = createFederation<void>({
12-
kv: new MemoryKvStore(),
13+
kv,
1314
origin: ORIGIN,
1415
allowPrivateAddress: true,
1516
skipSignatureVerification: !Deno.env.get("STRICT_MODE"),
1617
});
1718

19+
export async function resetFederationTestState(): Promise<void> {
20+
const keys = [];
21+
for await (const entry of kv.list(["_fedify", "activityIdempotence"])) {
22+
keys.push(entry.key);
23+
}
24+
await Promise.all(keys.map((key) => kv.delete(key)));
25+
}
26+
1827
federation
1928
.setActorDispatcher("/users/{identifier}", async (ctx, identifier) => {
2029
if (identifier !== "testuser") return null;

0 commit comments

Comments
 (0)