@@ -463,9 +463,62 @@ describe("Semaphore", () => {
463
463
464
464
const proof = await generateProof ( identity , group , message , group . root , merkleTreeDepth )
465
465
466
- return { semaphoreContract, groupId, proof }
466
+ return { semaphoreContract, groupId, proof, accountAddresses }
467
467
}
468
468
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
+
469
522
it ( "Should throw an exception if the proof is not valid" , async ( ) => {
470
523
const { semaphoreContract, groupId, proof } = await loadFixture ( deployValidateProofFixture )
471
524
0 commit comments