starknet_devnet_server/
restrictive_mode.rs

1pub 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}