@@ -463,9 +463,62 @@ describe("Semaphore", () => {
463463
464464 const proof = await generateProof ( identity , group , message , group . root , merkleTreeDepth )
465465
466- return { semaphoreContract, groupId, proof }
466+ return { semaphoreContract, groupId, proof, accountAddresses }
467467 }
468468
469+ it ( "Should insert members,remove member,update member and verifyProof" , async ( ) => {
470+ const { semaphoreContract, accountAddresses } = await loadFixture ( deployValidateProofFixture )
471+
472+ const identity = new Identity ( "0" )
473+ const members = Array . from ( { length : 3 } , ( _ , i ) => new Identity ( i . toString ( ) ) ) . map (
474+ ( { commitment } ) => commitment
475+ )
476+ const group = new Group ( members )
477+
478+ // Create a group and add 3 members.
479+ await semaphoreContract [ "createGroup(address)" ] ( accountAddresses [ 0 ] )
480+
481+ const groupId = 2
482+
483+ // Adding members to group
484+
485+ await semaphoreContract . addMembers ( groupId , members )
486+
487+ // Remove the third member.
488+ {
489+ group . removeMember ( 2 )
490+ const { siblings } = group . generateMerkleProof ( 2 )
491+
492+ await semaphoreContract . removeMember ( groupId , members [ 2 ] , siblings )
493+ }
494+
495+ // Update the second member.
496+ {
497+ group . updateMember ( 1 , members [ 2 ] )
498+ const { siblings } = group . generateMerkleProof ( 1 )
499+
500+ await semaphoreContract . updateMember ( groupId , members [ 1 ] , members [ 2 ] , siblings )
501+ }
502+
503+ // Validate a proof.
504+
505+ const proof = await generateProof ( identity , group , 42 , group . root )
506+
507+ const transaction = await semaphoreContract . validateProof ( groupId , proof )
508+
509+ await expect ( transaction )
510+ . to . emit ( semaphoreContract , "ProofValidated" )
511+ . withArgs (
512+ groupId ,
513+ proof . merkleTreeDepth ,
514+ proof . merkleTreeRoot ,
515+ proof . nullifier ,
516+ proof . message ,
517+ proof . merkleTreeRoot ,
518+ proof . points
519+ )
520+ } )
521+
469522 it ( "Should throw an exception if the proof is not valid" , async ( ) => {
470523 const { semaphoreContract, groupId, proof } = await loadFixture ( deployValidateProofFixture )
471524
0 commit comments