starknet_devnet_server/
restrictive_mode.rs1pub static DEFAULT_RESTRICTED_JSON_RPC_METHODS: &[&str] = &[
2 "devnet_mint",
3 "devnet_load",
4 "devnet_restart",
5 "devnet_createBlock",
6 "devnet_abortBlocks",
7 "devnet_impersonateAccount",
8 "devnet_autoImpersonate",
9 "devnet_getPredeployedAccounts",
10];
11
12pub(crate) fn is_json_rpc_method_restricted<T: AsRef<str>, U: AsRef<str>>(
13 json_rpc_method: T,
14 restricted_methods: &[U],
15) -> bool {
16 restricted_methods.iter().any(|method| method.as_ref() == json_rpc_method.as_ref())
17}
18
19#[cfg(test)]
20mod tests {
21 use super::DEFAULT_RESTRICTED_JSON_RPC_METHODS;
22 use crate::api::models::JsonRpcRequest;
23 use crate::restrictive_mode::is_json_rpc_method_restricted;
24 #[test]
25 fn test_provided_method_is_restricted() {
26 assert_is_restricted("devnet_mint", DEFAULT_RESTRICTED_JSON_RPC_METHODS);
27 assert_is_restricted("devnet_impersonateAccount", DEFAULT_RESTRICTED_JSON_RPC_METHODS);
28 assert_is_restricted(
29 "devnet_mint",
30 &["devnet_abortBlocks", "devnet_CreateBlocks", "devnet_mint"],
31 );
32 }
33
34 #[test]
35 fn test_provided_method_is_not_restricted() {
36 assert_is_not_restricted("devnet_getConfig", DEFAULT_RESTRICTED_JSON_RPC_METHODS);
37 assert_is_not_restricted("devnet_getAccountBalance", DEFAULT_RESTRICTED_JSON_RPC_METHODS);
38 }
39
40 #[test]
41 fn test_default_restricted_exist() {
42 let json_rpc_methods = JsonRpcRequest::all_variants_serde_renames();
43 for method in DEFAULT_RESTRICTED_JSON_RPC_METHODS {
44 assert!(json_rpc_methods.contains(&method.to_string()));
45 }
46 }
47
48 fn assert_is_restricted(method: &str, restricted_methods: &[&str]) {
49 assert!(is_json_rpc_method_restricted(method, restricted_methods));
50 }
51
52 fn assert_is_not_restricted(method: &str, restricted_methods: &[&str]) {
53 assert!(!is_json_rpc_method_restricted(method, restricted_methods));
54 }
55}