Skip to content

Commit 7626d73

Browse files
improve tests
1 parent 0656ff7 commit 7626d73

File tree

1 file changed

+58
-3
lines changed
  • packages/kos/src/chains/sol

1 file changed

+58
-3
lines changed

Diff for: packages/kos/src/chains/sol/mod.rs

+58-3
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,7 @@ impl Chain for SOL {
109109
#[cfg(test)]
110110
mod test {
111111
use super::*;
112+
use crate::crypto::base64::simple_base64_decode;
112113
use alloc::string::ToString;
113114

114115
#[test]
@@ -182,16 +183,14 @@ mod test {
182183
assert_eq!(decoded.message.header.num_required_signatures, 1);
183184
}
184185

185-
use crate::crypto::base64::simple_base64_decode;
186-
187186
#[test]
188187
fn test_sign_tx_consistent_hash() {
189188
let sol = SOL {};
190189
let mnemonic = "abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about".to_string();
191190
let seed = sol.mnemonic_to_seed(mnemonic, "".to_string()).unwrap();
192191
let pvk = sol.derive(seed, "m/44'/501'/0'/0'/0'".to_string()).unwrap();
193192

194-
let raw_tx = simple_base64_decode("AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAQAGCpo8aHCuuQaPK/nt3I+xmz1XnaQsMfgwmSee08N3zDdHWO9nf7VjXmRzcktw4WtkBVQDTqR6HHs/zYiFPEFdMlR2uAUKvCmGoT5EOvm/TqTTENr0znYcEsWsViKudXw20rGZQgJtALiRcUwlRMT2kZt8QRbvckZEPIiyFe59326vAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACsH4P9uc5VDeldVYzceVRhzPQ3SsaI7BOphAAiCnjaBgMGRm/lIRcy/+ytunLDm+e8jOW7xfcSayxDmzpAAAAAtD/6J/XX9kp0wJsfKVh53ksJqzbfyd1RSzIap7OM5egEedVb8jHAbu50xW7OaBUH/bGy3qP0jlECsc2iVrwTjwbd9uHXZaGT2cvhRs7reawctIXtX1s3kTqM9YV+/wCpheXoR6gYqo7X4aA9Sx2/Qcpf6TpzF6ddVuj771s5eWQFBgAFAua+AQAGAAkDRJEGAAAAAAAIBQMAEwkECZPxe2T0hK52/wgYCQACAwgTAQcIDxELAAIDDgoNDAkSEhAFI+UXy5d6460qAQAAABlkAAH4LgEAAAAAAMGtCQAAAAAAKwAFCQMDAAABCQEP5d+hcffknhCj1qkbVbtXFKZDtelOHlry/os01b5PsgXi4ePoyQXn5ODlRQ==").unwrap();
193+
let raw_tx = create_test_transaction();
195194
let tx1 = Transaction {
196195
raw_data: raw_tx.clone(),
197196
tx_hash: vec![],
@@ -213,4 +212,60 @@ mod test {
213212
assert_eq!(result1.signature, result2.signature);
214213
assert_eq!(result1.tx_hash, result2.tx_hash);
215214
}
215+
216+
#[test]
217+
fn test_sign_tx_legacy() {
218+
let sol = SOL {};
219+
let mnemonic = "abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about".to_string();
220+
let seed = sol.mnemonic_to_seed(mnemonic, "".to_string()).unwrap();
221+
let pvk = sol.derive(seed, "m/44'/501'/0'/0'/0'".to_string()).unwrap();
222+
223+
let raw_tx = simple_base64_decode("AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAIEmjxocK65Bo8r+e3cj7GbPVedpCwx+DCZJ57Tw3fMN0e5dTAYLc651CwBwFga8GLJTsriJc/FAP3GlbhfEGOidAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwZGb+UhFzL/7K26csOb57yM5bvF9xJrLEObOkAAAACg2vm5+lhfRud/PKY6hEMgdKkQ8I7jtpxDFjknIKRXGQMDAAUCSQIAAAMACQOAlpgAAAAAAAICAAEUAgAAAAEAAAAAAAAAsmBySL6HLBg=").unwrap();
224+
225+
let tx1 = Transaction {
226+
raw_data: raw_tx.clone(),
227+
tx_hash: vec![],
228+
signature: vec![],
229+
options: Option::None,
230+
};
231+
232+
let result = sol.sign_tx(pvk.clone(), tx1).unwrap();
233+
234+
// Same transaction signed with same key should produce same signature and hash
235+
assert_eq!(hex::encode(&result.signature), "b079c666c9ff53bb26d7606d10131ebbc8d398dac9fd1285d5138bbdd521758d7a6b6bdb2876730637704eb1511f3f7d842343b9e406bb3e3583d6588949a904");
236+
}
237+
238+
#[test]
239+
fn test_sign_tx_v0() {
240+
let sol = SOL {};
241+
let mnemonic = "abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about".to_string();
242+
let seed = sol.mnemonic_to_seed(mnemonic, "".to_string()).unwrap();
243+
let pvk = sol.derive(seed, "m/44'/501'/0'/0'/0'".to_string()).unwrap();
244+
245+
let raw_tx = simple_base64_decode("AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAQAGCpo8aHCuuQaPK/nt3I+xmz1XnaQsMfgwmSee08N3zDdHWO9nf7VjXmRzcktw4WtkBVQDTqR6HHs/zYiFPEFdMlR2uAUKvCmGoT5EOvm/TqTTENr0znYcEsWsViKudXw20rGZQgJtALiRcUwlRMT2kZt8QRbvckZEPIiyFe59326vAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACsH4P9uc5VDeldVYzceVRhzPQ3SsaI7BOphAAiCnjaBgMGRm/lIRcy/+ytunLDm+e8jOW7xfcSayxDmzpAAAAAtD/6J/XX9kp0wJsfKVh53ksJqzbfyd1RSzIap7OM5egEedVb8jHAbu50xW7OaBUH/bGy3qP0jlECsc2iVrwTjwbd9uHXZaGT2cvhRs7reawctIXtX1s3kTqM9YV+/wCpheXoR6gYqo7X4aA9Sx2/Qcpf6TpzF6ddVuj771s5eWQFBgAFAua+AQAGAAkDRJEGAAAAAAAIBQMAEwkECZPxe2T0hK52/wgYCQACAwgTAQcIDxELAAIDDgoNDAkSEhAFI+UXy5d6460qAQAAABlkAAH4LgEAAAAAAMGtCQAAAAAAKwAFCQMDAAABCQEP5d+hcffknhCj1qkbVbtXFKZDtelOHlry/os01b5PsgXi4ePoyQXn5ODlRQ==").unwrap();
246+
let tx1 = Transaction {
247+
raw_data: raw_tx.clone(),
248+
tx_hash: vec![],
249+
signature: vec![],
250+
options: Option::None,
251+
};
252+
253+
let result = sol.sign_tx(pvk.clone(), tx1).unwrap();
254+
// Same transaction signed with same key should produce same signature and hash
255+
assert_eq!(hex::encode(&result.signature), "40098643a37209b2e0984c2f55872ccf150c44a1100a16a985b1bc04b13c31f9d9d1b070229241df5aaa21af22e0e4f88b6371106766fd95096b67f1066f8701");
256+
}
257+
258+
#[test]
259+
fn test_sign_message() {
260+
let sol = SOL {};
261+
let mnemonic = "abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about".to_string();
262+
let seed = sol.mnemonic_to_seed(mnemonic, "".to_string()).unwrap();
263+
let pvk = sol.derive(seed, "m/44'/501'/0'/0'/0'".to_string()).unwrap();
264+
265+
let message = "Hello, World!".as_bytes().to_vec();
266+
let result = sol.sign_message(pvk.clone(), message.into()).unwrap();
267+
268+
// Same transaction signed with same key should produce same signature and hash
269+
assert_eq!(hex::encode(&result), "e8ebd3bf665fe5b57e421c477fa4187ef5f1275ddc8dbf693dd684a0164f11aef22bb98416e2e765d39dbb38451d8996fea135baa9e9fd13890286e8be0e8200");
270+
}
216271
}

0 commit comments

Comments
 (0)