From 2698b7614b6585d904153052ee996c238cc68a10 Mon Sep 17 00:00:00 2001 From: Tyera Eulberg Date: Thu, 17 Jan 2019 09:49:16 -0700 Subject: [PATCH] Add wallet deploy unit tests, incl program test fixture --- wallet/src/wallet.rs | 36 +++++++++++++++++++++++++++++++++- wallet/tests/fixtures/noop.so | Bin 0 -> 4440 bytes 2 files changed, 35 insertions(+), 1 deletion(-) create mode 100755 wallet/tests/fixtures/noop.so diff --git a/wallet/src/wallet.rs b/wallet/src/wallet.rs index ca5912981c..5f0a372b12 100644 --- a/wallet/src/wallet.rs +++ b/wallet/src/wallet.rs @@ -797,7 +797,7 @@ mod tests { use solana_sdk::signature::{gen_keypair_file, read_keypair, read_pkcs8, Keypair, KeypairUtil}; use std::fs; use std::net::{Ipv4Addr, SocketAddr}; - use std::path::Path; + use std::path::{Path, PathBuf}; #[test] fn test_wallet_config_drone_addr() { @@ -1307,6 +1307,40 @@ mod tests { assert!(process_command(&config).is_err()); } + #[test] + fn test_wallet_deploy() { + let mut pathbuf = PathBuf::from(env!("CARGO_MANIFEST_DIR")); + pathbuf.push("tests"); + pathbuf.push("fixtures"); + pathbuf.push("noop"); + pathbuf.set_extension("so"); + + // Success case + let mut config = WalletConfig::default(); + config.rpc_client = Some(RpcClient::new("succeeds".to_string())); + + config.command = WalletCommand::Deploy(pathbuf.to_str().unwrap().to_string()); + let result = process_command(&config); + assert!(result.is_ok()); + let json: Value = serde_json::from_str(&result.unwrap()).unwrap(); + let program_id = json + .as_object() + .unwrap() + .get("programId") + .unwrap() + .as_str() + .unwrap(); + let program_id_vec = bs58::decode(program_id).into_vec().unwrap(); + assert_eq!(program_id_vec.len(), mem::size_of::()); + + // Failure cases + config.rpc_client = Some(RpcClient::new("airdrop".to_string())); + assert!(process_command(&config).is_err()); + + config.command = WalletCommand::Deploy("bad/file/location.so".to_string()); + assert!(process_command(&config).is_err()); + } + fn tmp_file_path(name: &str) -> String { use std::env; let out_dir = env::var("OUT_DIR").unwrap_or_else(|_| "target".to_string()); diff --git a/wallet/tests/fixtures/noop.so b/wallet/tests/fixtures/noop.so new file mode 100755 index 0000000000000000000000000000000000000000..17ea5290910bc7499fc260f32dd7c6554e8fa850 GIT binary patch literal 4440 zcmb_fK}=j_5dOEc(poDOMUkZX;t8Adu^?=B@dCA)qT7m1No=Bl$G*qz3i}@HJ_0Xm zq8v1h@qmdY#FHGXc&x%b9?GBWn}5EU`Dgx_ zdH?_RlQ*+(9ZMvXj5hVRLaxEU2-EJTc>-iarBxd|Q{_XJ>~Z_+Ik!Vs#?5|2KP z!*AmW;!V0quo5bE#{fr@sdiE@>8&=xg`Ol<)t{$HH#q*CeIoK1#B%^6%8|Ursi^ie z4iG^ep=!^L<|o=P0>Y6BUN0c0R696CpOHhJyV{=Bcn!?-I_GKKiG;Zh;dMu=t9DRM z!nE3RPy3DIn8Iq$eT_#>S{t;(oTDg^i%(upNQY+ zHrHvL^4yiUssoEQs6KhF!;;kFThhZg{(7u9sGlSbTq(uCGOznB{6y>2$I&C| zCV7m<{cFqhIDfD&tmj>((QWEudEZK%r**!ien++657&0}dx3dvZ_!6he+%0Ek@ao# zBlSl+_j9yP{U&{O?nMX)#tHRvGrnw#_@W=^z0QNo0{uG2DS4FqMH`!Xol@r+TvpY% z7E5BcqG8qH5Pjr(>5`t*7tbw>_*@>J821D1uLg5OzCjSijbd)rDtN_wAskj0tZR#< zX|HSrGuAs^(O6~q zlgz)&l&?YNlzOmF>)&C0KAzQ<7&bK@K6whncrTgbIRIMWxZO^uaDxq+-v^M+ax@T>g#1h!S{$#E5Gbt-vNq)x1-X0{|JA};P(vvEZ|agCFOFiT-y6Kf(nO`F(@e8-aK+-MFVK9FOp827i+Mi`+8!4TIk^_$iK0?C%)- zIL9aQ9fSWg77tGE8~pn*e_C$v>6ky1uNi!A%%7GU{4$?E7$3^f9DnQvW|T)g;Rotv zi~cOUqgFP1*-G0chK0pxI~SDtpyM3hxiIHUSNi7WTpL8z^iVpJ zax-q~wSI3pGn8~Q{ex~gnaO0lWGa;#n3?fXGXn$et8thAn`3Q{t3UPG78hb)Bw#0U zM&tW}gU*G7T8(cE@E$FN)i`gOg~uz5OMeM|p79aRo8SYC?-=V0i$3RF^e-_!W#Df! zeg!ue8}I3PLaiBoZ!*4W=ua`Oi>l}J$TPlyMU0Ivael0=`9DBJK1^DjD-qzW&Y_h< zaAk+ya;WTbK$nRd`A(^rQ#MR0QHf|+R(9TBv`N)@xvPbE0alnv^kGYzx= zR|(CCD!iQFUb3?`NbLTk%3ivZoNUs5<_DM#GQG$&%``)l)dtvXh|m;~i|XMA>*VE| z*G8|7y&-vgT#DtzpOnAB3kuyb`bf@4@r$1SH=KzHHp7yCPG zFVrHl<}o1t8P<8jzhYv)%?d*0dqZA-v6ub74z`#Zv6t@wp}p)#>`gifa@