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(all(feature = "js", target_arch = "wasm32"))]
15use wasm_bindgen::prelude::*;
16
17#[cfg(all(feature = "js", target_arch = "wasm32"))]
19#[cfg_attr(feature = "js", wasm_bindgen)]
20impl SDK {
21 #[cfg_attr(feature = "js", wasm_bindgen(js_name = "make_deploy"))]
33 #[deprecated(note = "prefer 'make_transaction'")]
34 #[allow(deprecated)]
35 #[cfg(feature = "js")]
36 pub fn make_deploy_js_alias(
37 &self,
38 deploy_params: DeployStrParams,
39 session_params: SessionStrParams,
40 payment_params: PaymentStrParams,
41 ) -> Result<Deploy, JsError> {
42 let result = make_deploy(deploy_params, session_params, payment_params);
43 match result {
44 Ok(data) => Ok(data),
45 Err(err) => {
46 let err = &format!("Error occurred with {err:?}");
47 Err(JsError::new(err))
48 }
49 }
50 }
51}
52
53impl SDK {
54 #[deprecated(note = "prefer 'make_transaction'")]
66 #[allow(deprecated)]
67 pub fn make_deploy(
68 &self,
69 deploy_params: DeployStrParams,
70 session_params: SessionStrParams,
71 payment_params: PaymentStrParams,
72 ) -> Result<Deploy, Box<SdkError>> {
73 make_deploy(deploy_params, session_params, payment_params)
74 }
75}
76
77#[deprecated(note = "prefer 'make_transaction'")]
79#[allow(deprecated)]
80pub(crate) fn make_deploy(
81 deploy_params: DeployStrParams,
82 session_params: SessionStrParams,
83 payment_params: PaymentStrParams,
84) -> Result<Deploy, Box<SdkError>> {
85 client_make_deploy(
87 "",
88 deploy_str_params_to_casper_client(&deploy_params),
89 session_str_params_to_casper_client(&session_params),
90 payment_str_params_to_casper_client(&payment_params),
91 false,
92 )
93 .map(Into::into)
94 .map_err(|e| Box::new(SdkError::from(e)))
95}
96
97#[cfg(test)]
98#[allow(deprecated)]
99mod tests {
100
101 use super::*;
102 use crate::helpers::public_key_from_secret_key;
103 use sdk_tests::{
104 config::{ENTRYPOINT_MINT, PAYMENT_AMOUNT},
105 tests::helpers::{get_network_constants, get_user_secret_key},
106 };
107
108 #[tokio::test]
109 async fn test_make_deploy_with_valid_params() {
110 let sdk = SDK::new(None, None, None);
112 let (_, _, _, _, chain_name) = get_network_constants();
113 let secret_key = get_user_secret_key(None).unwrap();
114 let account = public_key_from_secret_key(&secret_key).unwrap();
115
116 let deploy_params =
117 DeployStrParams::new(&chain_name, &account, Some(secret_key), None, None, None);
118 let session_params = SessionStrParams::default();
119 session_params.set_session_hash(
120 "hash-cfa781f5eb69c3eee952c2944ce9670a049f88c5e46b83fb5881ebe13fb98e6d",
121 );
122 session_params.set_session_entry_point(ENTRYPOINT_MINT);
123 let payment_params = PaymentStrParams::default();
124 payment_params.set_payment_amount(PAYMENT_AMOUNT);
125
126 let result = sdk.make_deploy(deploy_params, session_params, payment_params);
128
129 assert!(result.is_ok());
131 }
132
133 #[tokio::test]
134 async fn test_make_deploy_with_valid_params_without_secret_key() {
135 let sdk = SDK::new(None, None, None);
137 let (_, _, _, _, chain_name) = get_network_constants();
138 let secret_key = get_user_secret_key(None).unwrap();
139 let account = public_key_from_secret_key(&secret_key).unwrap();
140
141 let deploy_params = DeployStrParams::new(&chain_name, &account, None, None, None, None);
142 let session_params = SessionStrParams::default();
143 session_params.set_session_hash(
144 "hash-cfa781f5eb69c3eee952c2944ce9670a049f88c5e46b83fb5881ebe13fb98e6d",
145 );
146 session_params.set_session_entry_point(ENTRYPOINT_MINT);
147 let payment_params = PaymentStrParams::default();
148 payment_params.set_payment_amount(PAYMENT_AMOUNT);
149
150 let result = sdk.make_deploy(deploy_params, session_params, payment_params);
152
153 assert!(result.is_ok());
155 }
156
157 #[tokio::test]
158 async fn test_make_deploy_with_invalid_params() {
159 let sdk = SDK::new(None, None, None);
161 let (_, _, _, _, chain_name) = get_network_constants();
162 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\"]";
163 let secret_key = get_user_secret_key(None).unwrap();
164 let account = public_key_from_secret_key(&secret_key).unwrap();
165
166 let deploy_params =
167 DeployStrParams::new(&chain_name, &account, Some(secret_key), None, None, None);
168 let session_params = SessionStrParams::default();
169 session_params.set_session_hash(
170 "hash-cfa781f5eb69c3eee952c2944ce9670a049f88c5e46b83fb5881ebe13fb98e6d",
171 );
172 session_params.set_session_entry_point(ENTRYPOINT_MINT);
173 let payment_params = PaymentStrParams::default();
174 payment_params.set_payment_amount(""); let result = sdk.make_deploy(deploy_params, session_params, payment_params);
178
179 assert!(result.is_err());
181
182 let err_string = result.err().unwrap().to_string();
183 assert!(err_string.contains(error_message));
184 }
185}