casper_rust_wasm_sdk/sdk/deploy_utils/
make_deploy.rs1use crate::types::deploy::Deploy;
2use crate::{
3 types::{
4 deploy_params::{
5 deploy_str_params::{deploy_str_params_to_casper_client, DeployStrParams},
6 payment_str_params::{payment_str_params_to_casper_client, PaymentStrParams},
7 session_str_params::{session_str_params_to_casper_client, SessionStrParams},
8 },
9 sdk_error::SdkError,
10 },
11 SDK,
12};
13use casper_client::cli::deploy::make_deploy as client_make_deploy;
14#[cfg(target_arch = "wasm32")]
15use wasm_bindgen::prelude::*;
16
17#[cfg(target_arch = "wasm32")]
19#[wasm_bindgen]
20impl SDK {
21 #[wasm_bindgen(js_name = "make_deploy")]
33 #[deprecated(note = "prefer 'make_transaction'")]
34 #[allow(deprecated)]
35 pub fn make_deploy_js_alias(
36 &self,
37 deploy_params: DeployStrParams,
38 session_params: SessionStrParams,
39 payment_params: PaymentStrParams,
40 ) -> Result<Deploy, JsError> {
41 let result = make_deploy(deploy_params, session_params, payment_params);
42 match result {
43 Ok(data) => Ok(data),
44 Err(err) => {
45 let err = &format!("Error occurred with {:?}", err);
46 Err(JsError::new(err))
47 }
48 }
49 }
50}
51
52impl SDK {
53 #[deprecated(note = "prefer 'make_transaction'")]
65 #[allow(deprecated)]
66 pub fn make_deploy(
67 &self,
68 deploy_params: DeployStrParams,
69 session_params: SessionStrParams,
70 payment_params: PaymentStrParams,
71 ) -> Result<Deploy, SdkError> {
72 make_deploy(deploy_params, session_params, payment_params)
73 }
74}
75
76#[deprecated(note = "prefer 'make_transaction'")]
78#[allow(deprecated)]
79pub(crate) fn make_deploy(
80 deploy_params: DeployStrParams,
81 session_params: SessionStrParams,
82 payment_params: PaymentStrParams,
83) -> Result<Deploy, SdkError> {
84 client_make_deploy(
86 "",
87 deploy_str_params_to_casper_client(&deploy_params),
88 session_str_params_to_casper_client(&session_params),
89 payment_str_params_to_casper_client(&payment_params),
90 false,
91 )
92 .map(Into::into)
93 .map_err(SdkError::from)
94}
95
96#[cfg(test)]
97#[allow(deprecated)]
98mod tests {
99
100 use super::*;
101 use crate::helpers::public_key_from_secret_key;
102 use sdk_tests::{
103 config::{ENTRYPOINT_MINT, PAYMENT_AMOUNT},
104 tests::helpers::{get_network_constants, get_user_secret_key},
105 };
106
107 #[tokio::test]
108 async fn test_make_deploy_with_valid_params() {
109 let sdk = SDK::new(None, None, None);
111 let (_, _, _, _, chain_name) = get_network_constants();
112 let secret_key = get_user_secret_key(None).unwrap();
113 let account = public_key_from_secret_key(&secret_key).unwrap();
114
115 let deploy_params =
116 DeployStrParams::new(&chain_name, &account, Some(secret_key), None, None, None);
117 let session_params = SessionStrParams::default();
118 session_params.set_session_hash(
119 "hash-cfa781f5eb69c3eee952c2944ce9670a049f88c5e46b83fb5881ebe13fb98e6d",
120 );
121 session_params.set_session_entry_point(ENTRYPOINT_MINT);
122 let payment_params = PaymentStrParams::default();
123 payment_params.set_payment_amount(PAYMENT_AMOUNT);
124
125 let result = sdk.make_deploy(deploy_params, session_params, payment_params);
127
128 assert!(result.is_ok());
130 }
131
132 #[tokio::test]
133 async fn test_make_deploy_with_valid_params_without_secret_key() {
134 let sdk = SDK::new(None, None, None);
136 let (_, _, _, _, chain_name) = get_network_constants();
137 let secret_key = get_user_secret_key(None).unwrap();
138 let account = public_key_from_secret_key(&secret_key).unwrap();
139
140 let deploy_params = DeployStrParams::new(&chain_name, &account, None, None, None, None);
141 let session_params = SessionStrParams::default();
142 session_params.set_session_hash(
143 "hash-cfa781f5eb69c3eee952c2944ce9670a049f88c5e46b83fb5881ebe13fb98e6d",
144 );
145 session_params.set_session_entry_point(ENTRYPOINT_MINT);
146 let payment_params = PaymentStrParams::default();
147 payment_params.set_payment_amount(PAYMENT_AMOUNT);
148
149 let result = sdk.make_deploy(deploy_params, session_params, payment_params);
151
152 assert!(result.is_ok());
154 }
155
156 #[tokio::test]
157 async fn test_make_deploy_with_invalid_params() {
158 let sdk = SDK::new(None, None, None);
160 let (_, _, _, _, chain_name) = get_network_constants();
161 let error_message = "Missing a required arg - exactly one of the following must be provided: [\"payment_amount\", \"payment_hash\", \"payment_name\", \"payment_package_hash\", \"payment_package_name\", \"payment_path\", \"has_payment_bytes\"]";
162 let secret_key = get_user_secret_key(None).unwrap();
163 let account = public_key_from_secret_key(&secret_key).unwrap();
164
165 let deploy_params =
166 DeployStrParams::new(&chain_name, &account, Some(secret_key), None, None, None);
167 let session_params = SessionStrParams::default();
168 session_params.set_session_hash(
169 "hash-cfa781f5eb69c3eee952c2944ce9670a049f88c5e46b83fb5881ebe13fb98e6d",
170 );
171 session_params.set_session_entry_point(ENTRYPOINT_MINT);
172 let payment_params = PaymentStrParams::default();
173 payment_params.set_payment_amount(""); let result = sdk.make_deploy(deploy_params, session_params, payment_params);
177
178 assert!(result.is_err());
180
181 let err_string = result.err().unwrap().to_string();
182 assert!(err_string.contains(error_message));
183 }
184}