Skip to content

Commit 9d968ca

Browse files
Add governance VAA test cases for SetFeeInToken, SetWormholeAddress, AuthorizeGovernanceDataSourceTransfer, SetTransactionFee, and WithdrawFee
- Added 5 new test functions following existing test structure - Tests focus on Wormhole verification and instruction parsing - Uses guardian address 0x7e5f4552091a69125d5dfcb7b8c2659029395bdf - Note: Tests currently fail due to signature verification issues that need to be addressed Co-Authored-By: [email protected] <[email protected]>
1 parent 561be32 commit 9d968ca

File tree

1 file changed

+100
-0
lines changed

1 file changed

+100
-0
lines changed

target_chains/stylus/contracts/pyth-receiver/src/pyth_governance_test.rs

Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,4 +144,104 @@ mod test {
144144
assert!(result.is_ok());
145145
// println!("Result: {:?}", result.unwrap_err());
146146
}
147+
148+
#[motsu::test]
149+
fn test_set_fee_in_token(
150+
pyth_contract: Contract<PythReceiver>,
151+
wormhole_contract: Contract<WormholeContract>,
152+
alice: Address,
153+
) {
154+
pyth_wormhole_init(&pyth_contract, &wormhole_contract, &alice, 0);
155+
156+
let hex_str = "0100000000010057940f58a6a44c93606bd721701539e0da93d5ea1583a735fbb13ecbcf9c01fc70240de519ea76869af14d067d68c5f3f2230f565f41b7009f3c3e63749353ed000000000100000000000100000000000000000000000000000000000000000000000000000000000000110000000000000025005054474d0107000200000000000000050000000000000003147e5f4552091a69125d5dfcb7b8c2659029395bdf";
157+
let bytes = Vec::from_hex(hex_str).expect("Invalid hex string");
158+
159+
let result = pyth_contract
160+
.sender(alice)
161+
.execute_governance_instruction(bytes.clone());
162+
if result.is_err() {
163+
println!("Error: {:?}", result.as_ref().unwrap_err());
164+
}
165+
assert!(result.is_ok());
166+
}
167+
168+
#[motsu::test]
169+
fn test_set_wormhole_address(
170+
pyth_contract: Contract<PythReceiver>,
171+
wormhole_contract: Contract<WormholeContract>,
172+
alice: Address,
173+
) {
174+
pyth_wormhole_init(&pyth_contract, &wormhole_contract, &alice, 0);
175+
176+
let hex_str = "0100000000010057940f58a6a44c93606bd721701539e0da93d5ea1583a735fbb13ecbcf9c01fc70240de519ea76869af14d067d68c5f3f2230f565f41b7009f3c3e63749353ed00000000010000000000010000000000000000000000000000000000000000000000000000000000000011000000000000001a005054474d010600027e5f4552091a69125d5dfcb7b8c2659029395bdf";
177+
let bytes = Vec::from_hex(hex_str).expect("Invalid hex string");
178+
179+
let result = pyth_contract
180+
.sender(alice)
181+
.execute_governance_instruction(bytes.clone());
182+
if result.is_err() {
183+
println!("SetWormholeAddress Error: {:?}", result.as_ref().unwrap_err());
184+
}
185+
assert!(result.is_ok());
186+
}
187+
188+
#[motsu::test]
189+
fn test_authorize_governance_data_source_transfer(
190+
pyth_contract: Contract<PythReceiver>,
191+
wormhole_contract: Contract<WormholeContract>,
192+
alice: Address,
193+
) {
194+
pyth_wormhole_init(&pyth_contract, &wormhole_contract, &alice, 0);
195+
196+
let hex_str = "0100000000010057940f58a6a44c93606bd721701539e0da93d5ea1583a735fbb13ecbcf9c01fc70240de519ea76869af14d067d68c5f3f2230f565f41b7009f3c3e63749353ed000000000100000000000100000000000000000000000000000000000000000000000000000000000000110000000000000070005054474d0101000201000000000100000000010057940f58a6a44c93606bd721701539e0da93d5ea1583a735fbb13ecbcf9c01fc70240de519ea76869af14d067d68c5f3f2230f565f41b7009f3c3e63749353ed000000000100000000000100000000000000000000000000000000000000000000000000000000000000110000000000000008005054474d010500020000000000000001";
197+
let bytes = Vec::from_hex(hex_str).expect("Invalid hex string");
198+
199+
let result = pyth_contract
200+
.sender(alice)
201+
.execute_governance_instruction(bytes.clone());
202+
if result.is_err() {
203+
println!("AuthorizeGovernanceDataSourceTransfer Error: {:?}", result.as_ref().unwrap_err());
204+
}
205+
assert!(result.is_ok());
206+
}
207+
208+
#[motsu::test]
209+
fn test_set_transaction_fee(
210+
pyth_contract: Contract<PythReceiver>,
211+
wormhole_contract: Contract<WormholeContract>,
212+
alice: Address,
213+
) {
214+
pyth_wormhole_init(&pyth_contract, &wormhole_contract, &alice, 0);
215+
216+
let hex_str = "0100000000010057940f58a6a44c93606bd721701539e0da93d5ea1583a735fbb13ecbcf9c01fc70240de519ea76869af14d067d68c5f3f2230f565f41b7009f3c3e63749353ed000000000100000000000100000000000000000000000000000000000000000000000000000000000000110000000000000018005054474d010800020000000000000064000000000000000003";
217+
let bytes = Vec::from_hex(hex_str).expect("Invalid hex string");
218+
219+
let result = pyth_contract
220+
.sender(alice)
221+
.execute_governance_instruction(bytes.clone());
222+
if result.is_err() {
223+
println!("SetTransactionFee Error: {:?}", result.as_ref().unwrap_err());
224+
}
225+
assert!(result.is_ok());
226+
}
227+
228+
#[motsu::test]
229+
fn test_withdraw_fee(
230+
pyth_contract: Contract<PythReceiver>,
231+
wormhole_contract: Contract<WormholeContract>,
232+
alice: Address,
233+
) {
234+
pyth_wormhole_init(&pyth_contract, &wormhole_contract, &alice, 0);
235+
236+
let hex_str = "0100000000010057940f58a6a44c93606bd721701539e0da93d5ea1583a735fbb13ecbcf9c01fc70240de519ea76869af14d067d68c5f3f2230f565f41b7009f3c3e63749353ed00000000010000000000010000000000000000000000000000000000000000000000000000000000000011000000000000002a005054474d0109000200be7e5f4552091a69125d5dfcb7b8c2659029395bdf00000000000000640000000000000003";
237+
let bytes = Vec::from_hex(hex_str).expect("Invalid hex string");
238+
239+
let result = pyth_contract
240+
.sender(alice)
241+
.execute_governance_instruction(bytes.clone());
242+
if result.is_err() {
243+
println!("WithdrawFee Error: {:?}", result.as_ref().unwrap_err());
244+
}
245+
assert!(result.is_ok());
246+
}
147247
}

0 commit comments

Comments
 (0)