From 984f60e850c8bff6124380fda40987ef49c1c33a Mon Sep 17 00:00:00 2001 From: berZKerk Date: Thu, 14 Aug 2025 13:38:17 +0200 Subject: [PATCH 1/2] Update subgraph.test.ts --- packages/data/tests/subgraph.test.ts | 79 ++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) diff --git a/packages/data/tests/subgraph.test.ts b/packages/data/tests/subgraph.test.ts index 9d0be0f26..4fa0e2b2d 100644 --- a/packages/data/tests/subgraph.test.ts +++ b/packages/data/tests/subgraph.test.ts @@ -342,6 +342,50 @@ describe("SemaphoreSubgraph", () => { ] }) }) + + it("Should exclude members with zero identityCommitment when getting group with members", async () => { + requestMocked.mockImplementationOnce(() => + Promise.resolve({ + groups: [ + { + id: "1", + merkleTree: { + depth: 20, + size: 3, + root: "2" + }, + admin: "0x7bcd6f009471e9974a77086a69289d16eadba286", + members: [ + { + identityCommitment: "20" + }, + { + identityCommitment: "17" + } + ] + } + ] + }) + ) + + const expectedValue = await semaphore.getGroup("1", { members: true }) + + expect(expectedValue).toBeDefined() + expect(expectedValue.members).toBeDefined() + expect(Array.isArray(expectedValue.members)).toBeTruthy() + expect(expectedValue.members).toHaveLength(2) + expect(expectedValue.members).toContain("20") + expect(expectedValue.members).toContain("17") + expect(expectedValue.members).not.toContain("0") + + // Verify that the GraphQL query includes the filter for non-zero identityCommitment + expect(requestMocked).toHaveBeenCalledWith( + expect.any(String), + expect.objectContaining({ + data: expect.stringContaining('members(where: { identityCommitment_not: \\"0\\" }, orderBy: index)') + }) + ) + }) }) describe("# getGroupMembers", () => { @@ -382,6 +426,41 @@ describe("SemaphoreSubgraph", () => { const fun = () => semaphore.getGroupMembers(1 as any) await expect(fun).rejects.toThrow("Parameter 'groupId' is not a string") }) + + it("Should exclude members with zero identityCommitment (removed members)", async () => { + requestMocked.mockImplementationOnce(() => + Promise.resolve({ + groups: [ + { + id: "1", + merkleTree: { + depth: 20, + size: 3, + root: "2" + }, + admin: "0x7bcd6f009471e9974a77086a69289d16eadba286", + members: [ + { + identityCommitment: "20" + }, + { + identityCommitment: "17" + } + ] + } + ] + }) + ) + + const expectedValue = await semaphore.getGroupMembers("1") + + expect(expectedValue).toBeDefined() + expect(Array.isArray(expectedValue)).toBeTruthy() + expect(expectedValue).toHaveLength(2) + expect(expectedValue).toContain("20") + expect(expectedValue).toContain("17") + expect(expectedValue).not.toContain("0") + }) }) describe("# getGroupValidatedProofs", () => { From 8317b2ddabcc78f6a82e458fe1334aecc2c4cf19 Mon Sep 17 00:00:00 2001 From: berZKerk Date: Thu, 14 Aug 2025 13:39:10 +0200 Subject: [PATCH 2/2] Update subgraph.ts --- packages/data/src/subgraph.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/data/src/subgraph.ts b/packages/data/src/subgraph.ts index 096240205..3bb9e8344 100644 --- a/packages/data/src/subgraph.ts +++ b/packages/data/src/subgraph.ts @@ -122,7 +122,7 @@ export default class SemaphoreSubgraph { admin ${ members === true - ? `members(orderBy: index) { + ? `members(where: { identityCommitment_not: "0" }, orderBy: index) { identityCommitment }` : "" @@ -186,7 +186,7 @@ export default class SemaphoreSubgraph { admin ${ members === true - ? `members(orderBy: index) { + ? `members(where: { identityCommitment_not: "0" }, orderBy: index) { identityCommitment }` : ""