Jayant Krishnamurthy 2 år sedan
förälder
incheckning
7daa3b3e86

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 547 - 89
target_chains/solana/Cargo.lock


+ 5 - 0
target_chains/solana/programs/solana-receiver/Cargo.toml

@@ -20,7 +20,12 @@ anchor-lang = "0.26.0"
 wormhole-core = { git = "https://github.com/guibescos/wormhole", branch = "reisen/sdk-solana"}
 wormhole-solana = { git = "https://github.com/guibescos/wormhole", branch = "reisen/sdk-solana"}
 pyth-wormhole-attester-sdk = { path = "../../../../wormhole_attester/sdk/rust" }
+solana-program = "1.15.2"
 
 [dev-dependencies]
 pyth-sdk = "0.5.0"
 pyth-sdk-solana = "0.1.0"
+solana-program-test = "=1.15.2"
+solana-sdk = "=1.15.2"
+tokio = "1.14.1"
+bincode = "1.3.3"

+ 1 - 1
target_chains/solana/programs/solana-receiver/src/tests/mod.rs

@@ -1,2 +1,2 @@
 mod simulator;
-mod test_update_price;
+mod test_update_price;

+ 11 - 0
target_chains/solana/programs/solana-receiver/src/tests/simulator.rs

@@ -376,3 +376,14 @@ impl PythSimulator {
 pub fn copy_keypair(keypair: &Keypair) -> Keypair {
     Keypair::from_bytes(&keypair.to_bytes()).unwrap()
 }
+
+/// Generate discriminator to be able to call anchor program's ix
+/// * `namespace` - "global" for instructions
+/// * `name` - name of ix to call CASE-SENSITIVE
+pub fn sighash(namespace: &str, name: &str) -> [u8; 8] {
+    let preimage = format!("{namespace}:{name}");
+
+    let mut sighash = [0u8; 8];
+    sighash.copy_from_slice(&hashv(&[preimage.as_bytes()]).to_bytes()[..8]);
+    sighash
+}

+ 3 - 10
target_chains/solana/programs/solana-receiver/src/tests/test_update_price.rs

@@ -1,4 +1,3 @@
-include!(concat!(env!("IDL_FILE")));
 use pyth_solana_receiver::PythSolanaReceiver;
 use solana_program_test::processor;
 
@@ -20,20 +19,14 @@ async fn test_add_price() {
 
     let mut sim = PythSimulator::new().await;
 
-    let instruction_data = pyth_solana_receiver::update_price(vec![]).try_to_vec().unwrap();
+    let instruction_data = vec![crate::sighash("global", "update_price")];
+
     let instruction = solana_sdk::instruction::Instruction {
         program_id,
         accounts: vec![],
         data: instruction_data,
     };
 
-
-    anchor_client::program(sim.program_id);
-
-    // let discriminator = InstructionData::data("pyth_solana_receiver:update_price");
-
-    pyth_solana_receiver::update_price
-
     let instruction = Instruction::new_with_bytes(sim.program_id, &discriminator, vec![]);
 
     let result = sim.process_ix(instruction, &vec![], &sim.genesis_keypair.insecure_clone()).await.unwrap();
@@ -66,4 +59,4 @@ fn mock_attestation() {
         last_attested_publish_time: (0xdeadbeeffadedeafu64) as i64,
     };
 }
-*/
+*/

Vissa filer visades inte eftersom för många filer har ändrats