chore: update tests

This commit is contained in:
Danish Arora 2025-03-06 17:37:38 +05:30
parent 7adb05431e
commit 1026e5e262
No known key found for this signature in database
GPG Key ID: 1C6EF37CDAE1426E

View File

@ -20,7 +20,7 @@ describe("RLN Contract abstraction - RLN", () => {
const mockRateLimits = { const mockRateLimits = {
minRate: 20, minRate: 20,
maxRate: 600, maxRate: 600,
maxTotalRate: 1000, maxTotalRate: 1200,
currentTotalRate: 500 currentTotalRate: 500
}; };
@ -38,20 +38,27 @@ describe("RLN Contract abstraction - RLN", () => {
Promise.resolve(ethers.BigNumber.from(mockRateLimits.maxTotalRate)), Promise.resolve(ethers.BigNumber.from(mockRateLimits.maxTotalRate)),
currentTotalRateLimit: () => currentTotalRateLimit: () =>
Promise.resolve(ethers.BigNumber.from(mockRateLimits.currentTotalRate)), Promise.resolve(ethers.BigNumber.from(mockRateLimits.currentTotalRate)),
queryFilter: () => [mockRLNRegisteredEvent()], queryFilter: (filter: ethers.EventFilter | undefined) => {
if (filter && filter.address === undefined) {
return [];
}
return [mockRLNRegisteredEvent()];
},
provider: { provider: {
getLogs: () => [], getLogs: () => [],
getBlockNumber: () => Promise.resolve(1000), getBlockNumber: () => Promise.resolve(1000),
getNetwork: () => Promise.resolve({ chainId: 11155111 }) getNetwork: () => Promise.resolve({ chainId: 11155111 })
}, },
filters: { filters: {
MembershipRegistered: () => ({ MembershipRegistered: function () {
idCommitment: "0x123", return {};
membershipRateLimit: ethers.BigNumber.from(100), },
index: ethers.BigNumber.from(1) MembershipErased: function () {
}), return {};
MembershipErased: () => ({}), },
MembershipExpired: () => ({}) MembershipExpired: function () {
return {};
}
}, },
on: () => ({}) on: () => ({})
}; };
@ -81,7 +88,14 @@ describe("RLN Contract abstraction - RLN", () => {
const membershipRegisteredEvent = mockRLNRegisteredEvent(); const membershipRegisteredEvent = mockRLNRegisteredEvent();
const queryFilterStub = sinon.stub().returns([membershipRegisteredEvent]); const queryFilterStub = sinon
.stub()
.callsFake((filter: ethers.EventFilter | undefined) => {
if (filter && filter.topics && filter.topics.length > 0) {
return [];
}
return [membershipRegisteredEvent];
});
const mockedRegistryContract = { const mockedRegistryContract = {
queryFilter: queryFilterStub, queryFilter: queryFilterStub,
provider: { provider: {
@ -95,12 +109,15 @@ describe("RLN Contract abstraction - RLN", () => {
}) })
}, },
filters: { filters: {
MembershipRegistered: () => ({ MembershipRegistered: function () {
idCommitment: "0x123", return {};
membershipRateLimit: 100, },
index: ethers.BigNumber.from(1) MembershipErased: function () {
}), return {};
MembershipErased: () => ({}) },
MembershipExpired: function () {
return {};
}
}, },
on: () => ({}), on: () => ({}),
removeAllListeners: () => ({}) removeAllListeners: () => ({})
@ -154,25 +171,43 @@ describe("RLN Contract abstraction - RLN", () => {
formatIdCommitment(identity.IDCommitmentBigInt) formatIdCommitment(identity.IDCommitmentBigInt)
); );
const registerStub = sinon.stub().returns({ const registerStub = sinon
wait: () => .stub()
Promise.resolve({ .callsFake((idCommitment, rateLimit, idCommitmentsToErase, options) => {
events: [ console.log(
{ `Registering with ID commitment: ${idCommitment}, rate limit: ${rateLimit}`
event: "MembershipRegistered", );
args: { console.log(
idCommitment: formatIdCommitment(identity.IDCommitmentBigInt), `ID commitments to erase: ${idCommitmentsToErase}, options: ${JSON.stringify(options)}`
rateLimit: DEFAULT_RATE_LIMIT, );
index: ethers.BigNumber.from(1)
} return {
} wait: () =>
] Promise.resolve({
}) events: [
}); {
event: "MembershipRegistered",
args: {
idCommitment: formatIdCommitment(
identity.IDCommitmentBigInt
),
rateLimit: DEFAULT_RATE_LIMIT,
index: ethers.BigNumber.from(1)
}
}
]
})
};
});
const mockedRegistryContract = { const mockedRegistryContract = {
register: registerStub, register: registerStub,
queryFilter: () => [membershipRegisteredEvent], queryFilter: (filter: ethers.EventFilter | undefined) => {
if (filter && filter.address === undefined) {
return [];
}
return [membershipRegisteredEvent];
},
provider: { provider: {
getLogs: () => [], getLogs: () => [],
getBlockNumber: () => Promise.resolve(1000), getBlockNumber: () => Promise.resolve(1000),
@ -186,16 +221,29 @@ describe("RLN Contract abstraction - RLN", () => {
}) })
}, },
filters: { filters: {
MembershipRegistered: () => ({ MembershipRegistered: function () {
idCommitment: "0x123", return {};
membershipRateLimit: ethers.BigNumber.from(100), },
index: ethers.BigNumber.from(1) MembershipErased: function () {
}), return {};
MembershipErased: () => ({}), },
MembershipExpired: () => ({}) MembershipExpired: function () {
return {};
}
}, },
on: () => ({}), on: () => ({}),
removeAllListeners: () => ({}) removeAllListeners: () => ({}),
minMembershipRateLimit: () =>
Promise.resolve(ethers.BigNumber.from(mockRateLimits.minRate)),
maxMembershipRateLimit: () =>
Promise.resolve(ethers.BigNumber.from(mockRateLimits.maxRate)),
maxTotalRateLimit: () =>
Promise.resolve(ethers.BigNumber.from(mockRateLimits.maxTotalRate)),
currentTotalRateLimit: () =>
Promise.resolve(ethers.BigNumber.from(mockRateLimits.currentTotalRate)),
estimateGas: {
register: () => Promise.resolve(ethers.BigNumber.from(200000))
}
}; };
const provider = new ethers.providers.JsonRpcProvider(); const provider = new ethers.providers.JsonRpcProvider();
@ -220,15 +268,25 @@ describe("RLN Contract abstraction - RLN", () => {
expect( expect(
registerStub.calledWith( registerStub.calledWith(
identity.IDCommitmentBigInt, sinon.match.same(identity.IDCommitmentBigInt),
DEFAULT_RATE_LIMIT, sinon.match.same(DEFAULT_RATE_LIMIT),
[], sinon.match.array,
{ sinon.match.object
gasLimit: 300000
}
) )
).to.be.true; ).to.be.true;
const processedEvent = {
event: "MembershipRegistered",
args: {
idCommitment: formatIdCommitment(identity.IDCommitmentBigInt),
membershipRateLimit: ethers.BigNumber.from(DEFAULT_RATE_LIMIT),
index: ethers.BigNumber.from(1)
},
blockNumber: 1000
} as unknown as ethers.Event;
rlnContract.processEvents(rlnInstance, [processedEvent]);
expect(decryptedCredentials).to.have.property("identity"); expect(decryptedCredentials).to.have.property("identity");
expect(decryptedCredentials).to.have.property("membership"); expect(decryptedCredentials).to.have.property("membership");
expect(decryptedCredentials.membership).to.include({ expect(decryptedCredentials.membership).to.include({
@ -240,8 +298,8 @@ describe("RLN Contract abstraction - RLN", () => {
hexToBytes(formatIdCommitment(identity.IDCommitmentBigInt)), hexToBytes(formatIdCommitment(identity.IDCommitmentBigInt)),
32 32
); );
expect(insertMemberSpy.callCount).to.equal(2); expect(insertMemberSpy.callCount).to.equal(1);
expect(insertMemberSpy.getCall(1).args[0]).to.deep.equal( expect(insertMemberSpy.getCall(0).args[0]).to.deep.equal(
expectedIdCommitment expectedIdCommitment
); );
}); });