@@ -267,6 +267,34 @@ contract PythGovernanceTest is
267
267
assertEq (address (PythGetters (address (pyth)).wormhole ()), newWormhole);
268
268
}
269
269
270
+ function testSetVerifierAddress () public {
271
+ // Deploy a new verifier contract
272
+ address newVerifier = address (setUpWormholeReceiver (1 ));
273
+
274
+ // Create governance VAA to set new verifier address
275
+ bytes memory data = abi.encodePacked (
276
+ MAGIC,
277
+ uint8 (GovernanceModule.Target),
278
+ uint8 (GovernanceAction.SetVerifierAddress),
279
+ TARGET_CHAIN_ID, // Target chain ID
280
+ newVerifier // New verifier address
281
+ );
282
+
283
+ bytes memory vaa = encodeAndSignMessage (
284
+ data,
285
+ TEST_GOVERNANCE_CHAIN_ID,
286
+ TEST_GOVERNANCE_EMITTER,
287
+ 1
288
+ );
289
+
290
+ address oldVerifier = address (PythGetters (address (pyth)).verifier ());
291
+ vm.expectEmit (true , true , true , true );
292
+ emit VerifierAddressSet (oldVerifier, newVerifier);
293
+
294
+ PythGovernance (address (pyth)).executeGovernanceInstruction (vaa);
295
+ assertEq (address (PythGetters (address (pyth)).verifier ()), newVerifier);
296
+ }
297
+
270
298
function testTransferGovernanceDataSource () public {
271
299
uint16 newEmitterChain = 2 ;
272
300
bytes32 newEmitterAddress = 0x0000000000000000000000000000000000000000000000000000000000001111 ;
@@ -706,4 +734,8 @@ contract PythGovernanceTest is
706
734
);
707
735
event TransactionFeeSet (uint oldFee , uint newFee );
708
736
event FeeWithdrawn (address recipient , uint256 fee );
737
+ event VerifierAddressSet (
738
+ address oldVerifierAddress ,
739
+ address newVerifierAddress
740
+ );
709
741
}
0 commit comments