Skip to content

Commit c5102cb

Browse files
committed
Merge branch 'main' into liquidity-orderbook-develop
2 parents 69f8c7b + 40ece0a commit c5102cb

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

76 files changed

+124
-134
lines changed
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.

contracts/admin/src/contract.rs

Lines changed: 5 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,18 @@
11
use shade_protocol::{
22
admin::{
3-
errors::unauthorized_super,
4-
AdminAuthStatus,
5-
AdminsResponse,
6-
ConfigResponse,
7-
ExecuteMsg,
8-
InstantiateMsg,
9-
PermissionsResponse,
10-
QueryMsg,
3+
errors::unauthorized_super, AdminAuthStatus, AdminsResponse, ConfigResponse, ExecuteMsg,
4+
InstantiateMsg, PermissionsResponse, QueryMsg,
115
},
126
c_std::{
13-
shd_entry_point,
14-
to_binary,
15-
Addr,
16-
Deps,
17-
DepsMut,
18-
Env,
19-
MessageInfo,
20-
QueryResponse,
21-
Response,
22-
StdResult,
23-
Storage,
7+
shd_entry_point, to_binary, Addr, Deps, DepsMut, Env, MessageInfo, QueryResponse, Response,
8+
StdResult, Storage,
249
},
2510
utils::pad_handle_result,
2611
};
2712

2813
use crate::{
2914
execute::{
30-
try_self_destruct,
31-
try_toggle_status,
32-
try_transfer_super,
33-
try_update_registry,
15+
try_self_destruct, try_toggle_status, try_transfer_super, try_update_registry,
3416
try_update_registry_bulk,
3517
},
3618
query::query_validate_permission,

contracts/admin/src/execute.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1+
use crate::shared::{validate_permissions, ADMINS, PERMISSIONS, STATUS, SUPER};
12
use shade_protocol::admin::errors::{no_permission, unregistered_admin};
2-
use shade_protocol::c_std::{DepsMut, Response, Storage, Api, Addr, StdResult};
3-
use shade_protocol::admin::{RegistryAction, AdminAuthStatus};
4-
use crate::shared::{STATUS, ADMINS, PERMISSIONS, SUPER, validate_permissions};
3+
use shade_protocol::admin::{AdminAuthStatus, RegistryAction};
4+
use shade_protocol::c_std::{Addr, Api, DepsMut, Response, StdResult, Storage};
55

66
/// Performs one registry update. Cannot be run during a shutdown.
77
pub fn try_update_registry(
@@ -164,4 +164,4 @@ fn verify_registered(admins: &[Addr], user: &Addr) -> StdResult<()> {
164164
return Err(no_permission(user.as_str()));
165165
}
166166
Ok(())
167-
}
167+
}

contracts/admin/src/shared.rs

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
use shade_protocol::c_std::Addr;
2-
use shade_protocol::{admin::{AdminAuthStatus, errors::invalid_permission_format}, c_std::StdResult};
3-
use shade_protocol::utils::storage::plus::{Map, Item};
2+
use shade_protocol::utils::storage::plus::{Item, Map};
3+
use shade_protocol::{
4+
admin::{errors::invalid_permission_format, AdminAuthStatus},
5+
c_std::StdResult,
6+
};
47

58
/// Maps user to permissions for which they have user.
69
pub const PERMISSIONS: Map<&Addr, Vec<String>> = Map::new("permissions");
@@ -20,17 +23,13 @@ pub fn validate_permissions(permissions: &[String]) -> StdResult<()> {
2023

2124
pub fn is_valid_permission(permission: &str) -> StdResult<()> {
2225
if permission.len() <= 10 {
23-
return Err(invalid_permission_format(
24-
permission
25-
));
26+
return Err(invalid_permission_format(permission));
2627
}
2728
let valid_chars = permission.bytes().all(|byte| {
2829
(b'A'..=b'Z').contains(&byte) || (b'0'..=b'9').contains(&byte) || b'_'.eq(&byte)
2930
});
3031
if !valid_chars {
31-
return Err(invalid_permission_format(
32-
permission
33-
));
32+
return Err(invalid_permission_format(permission));
3433
}
3534
Ok(())
36-
}
35+
}

contracts/admin/src/test.rs

Lines changed: 95 additions & 83 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,10 @@
1-
use crate::{
2-
shared::is_valid_permission,
3-
};
1+
use crate::shared::is_valid_permission;
42
use rstest::*;
53
use shade_multi_test::multi::admin::Admin;
64
use shade_protocol::{
75
admin::{
8-
AdminAuthStatus,
9-
AdminsResponse,
10-
ConfigResponse,
11-
ExecuteMsg,
12-
InstantiateMsg,
13-
PermissionsResponse,
14-
QueryMsg,
15-
RegistryAction,
16-
ValidateAdminPermissionResponse,
6+
AdminAuthStatus, AdminsResponse, ConfigResponse, ExecuteMsg, InstantiateMsg,
7+
PermissionsResponse, QueryMsg, RegistryAction, ValidateAdminPermissionResponse,
178
},
189
c_std::Addr,
1910
multi_test::App,
@@ -43,51 +34,80 @@ fn test_is_valid_permission(#[case] permission: String, #[case] is_valid: bool)
4334
#[case(AdminAuthStatus::Maintenance, vec![true, true, true, false, true, true, true])]
4435
#[case(AdminAuthStatus::Shutdown, vec![false, false, false, false, false, false, true])]
4536
fn test_status(#[case] status: AdminAuthStatus, #[case] expect_success: Vec<bool>) {
46-
//init
47-
let mut chain: App = App::default();
48-
let contract = InstantiateMsg { super_admin: None }
49-
.test_init(
50-
Admin::default(),
51-
&mut chain,
52-
Addr::unchecked("admin"),
53-
"admin_contract",
54-
&[],
55-
)
56-
.unwrap();
57-
//set state
58-
ExecuteMsg::ToggleStatus { new_status: status }.test_exec(&contract, &mut chain, Addr::unchecked("admin"), &[]).unwrap();
59-
60-
//register 'super' as admin
61-
let action = RegistryAction::RegisterAdmin { user: "super".to_string() };
62-
let result = ExecuteMsg::UpdateRegistry { action: action.clone() }.test_exec(&contract, &mut chain, Addr::unchecked("admin"), &[]);
63-
assert_eq!(&result.is_ok(), expect_success.get(0).unwrap());
64-
65-
//test bulk update
66-
let actions = vec![action.clone()];
67-
let result = ExecuteMsg::UpdateRegistryBulk { actions }.test_exec(&contract, &mut chain, Addr::unchecked("admin"), &[]);
68-
assert_eq!(&result.is_ok(), expect_success.get(1).unwrap());
69-
70-
//set super admin to 'super'
71-
let result = ExecuteMsg::TransferSuper { new_super: "super".to_string() }.test_exec(&contract, &mut chain, Addr::unchecked("admin"), &[]);
72-
assert_eq!(&result.is_ok(), expect_success.get(2).unwrap());
73-
74-
//register 'admin' as admin without being the super user
75-
let action = RegistryAction::RegisterAdmin { user: "admin".to_string() };
76-
let result = ExecuteMsg::UpdateRegistry { action: action.clone() }.test_exec(&contract, &mut chain, Addr::unchecked("admin"), &[]);
77-
assert_eq!(&result.is_ok(), expect_success.get(3).unwrap());
78-
79-
//register admin as admin with correct permissions
80-
let action = RegistryAction::RegisterAdmin { user: "admin".to_string() };
81-
let result = ExecuteMsg::UpdateRegistry { action: action.clone() }.test_exec(&contract, &mut chain, Addr::unchecked("super"), &[]);
82-
assert_eq!(&result.is_ok(), expect_success.get(4).unwrap());
83-
84-
//set super admin to 'admin'
85-
let result = ExecuteMsg::TransferSuper { new_super: "admin".to_string() }.test_exec(&contract, &mut chain, Addr::unchecked("super"), &[]);
86-
assert_eq!(&result.is_ok(), expect_success.get(5).unwrap());
87-
88-
//self destruct
89-
let result = ExecuteMsg::SelfDestruct { }.test_exec(&contract, &mut chain, Addr::unchecked("admin"), &[]);
90-
assert_eq!(&result.is_ok(), expect_success.get(6).unwrap());
37+
//init
38+
let mut chain: App = App::default();
39+
let contract = InstantiateMsg { super_admin: None }
40+
.test_init(
41+
Admin::default(),
42+
&mut chain,
43+
Addr::unchecked("admin"),
44+
"admin_contract",
45+
&[],
46+
)
47+
.unwrap();
48+
//set state
49+
ExecuteMsg::ToggleStatus { new_status: status }
50+
.test_exec(&contract, &mut chain, Addr::unchecked("admin"), &[])
51+
.unwrap();
52+
53+
//register 'super' as admin
54+
let action = RegistryAction::RegisterAdmin {
55+
user: "super".to_string(),
56+
};
57+
let result = ExecuteMsg::UpdateRegistry {
58+
action: action.clone(),
59+
}
60+
.test_exec(&contract, &mut chain, Addr::unchecked("admin"), &[]);
61+
assert_eq!(&result.is_ok(), expect_success.get(0).unwrap());
62+
63+
//test bulk update
64+
let actions = vec![action.clone()];
65+
let result = ExecuteMsg::UpdateRegistryBulk { actions }.test_exec(
66+
&contract,
67+
&mut chain,
68+
Addr::unchecked("admin"),
69+
&[],
70+
);
71+
assert_eq!(&result.is_ok(), expect_success.get(1).unwrap());
72+
73+
//set super admin to 'super'
74+
let result = ExecuteMsg::TransferSuper {
75+
new_super: "super".to_string(),
76+
}
77+
.test_exec(&contract, &mut chain, Addr::unchecked("admin"), &[]);
78+
assert_eq!(&result.is_ok(), expect_success.get(2).unwrap());
79+
80+
//register 'admin' as admin without being the super user
81+
let action = RegistryAction::RegisterAdmin {
82+
user: "admin".to_string(),
83+
};
84+
let result = ExecuteMsg::UpdateRegistry {
85+
action: action.clone(),
86+
}
87+
.test_exec(&contract, &mut chain, Addr::unchecked("admin"), &[]);
88+
assert_eq!(&result.is_ok(), expect_success.get(3).unwrap());
89+
90+
//register admin as admin with correct permissions
91+
let action = RegistryAction::RegisterAdmin {
92+
user: "admin".to_string(),
93+
};
94+
let result = ExecuteMsg::UpdateRegistry {
95+
action: action.clone(),
96+
}
97+
.test_exec(&contract, &mut chain, Addr::unchecked("super"), &[]);
98+
assert_eq!(&result.is_ok(), expect_success.get(4).unwrap());
99+
100+
//set super admin to 'admin'
101+
let result = ExecuteMsg::TransferSuper {
102+
new_super: "admin".to_string(),
103+
}
104+
.test_exec(&contract, &mut chain, Addr::unchecked("super"), &[]);
105+
assert_eq!(&result.is_ok(), expect_success.get(5).unwrap());
106+
107+
//self destruct
108+
let result =
109+
ExecuteMsg::SelfDestruct {}.test_exec(&contract, &mut chain, Addr::unchecked("admin"), &[]);
110+
assert_eq!(&result.is_ok(), expect_success.get(6).unwrap());
91111
}
92112

93113
#[rstest]
@@ -235,19 +255,15 @@ fn test_permissions(
235255
}
236256

237257
// Check that only super admin chan do this
238-
assert!(
239-
ExecuteMsg::UpdateRegistryBulk {
240-
actions: actions.clone()
241-
}
242-
.test_exec(&admin, &mut chain, Addr::unchecked("user"), &[])
243-
.is_err()
244-
);
258+
assert!(ExecuteMsg::UpdateRegistryBulk {
259+
actions: actions.clone()
260+
}
261+
.test_exec(&admin, &mut chain, Addr::unchecked("user"), &[])
262+
.is_err());
245263

246-
assert!(
247-
ExecuteMsg::UpdateRegistryBulk { actions }
248-
.test_exec(&admin, &mut chain, Addr::unchecked("admin"), &[])
249-
.is_ok()
250-
);
264+
assert!(ExecuteMsg::UpdateRegistryBulk { actions }
265+
.test_exec(&admin, &mut chain, Addr::unchecked("admin"), &[])
266+
.is_ok());
251267

252268
// Confirm that all permissions are set
253269
for permission in permissions.iter() {
@@ -282,21 +298,17 @@ fn test_permissions(
282298
})
283299
.collect();
284300

285-
assert!(
286-
ExecuteMsg::UpdateRegistryBulk {
287-
actions: revoke_actions.clone()
288-
}
289-
.test_exec(&admin, &mut chain, Addr::unchecked("user"), &[])
290-
.is_err()
291-
);
301+
assert!(ExecuteMsg::UpdateRegistryBulk {
302+
actions: revoke_actions.clone()
303+
}
304+
.test_exec(&admin, &mut chain, Addr::unchecked("user"), &[])
305+
.is_err());
292306

293-
assert!(
294-
ExecuteMsg::UpdateRegistryBulk {
295-
actions: revoke_actions
296-
}
297-
.test_exec(&admin, &mut chain, Addr::unchecked("admin"), &[])
298-
.is_ok()
299-
);
307+
assert!(ExecuteMsg::UpdateRegistryBulk {
308+
actions: revoke_actions
309+
}
310+
.test_exec(&admin, &mut chain, Addr::unchecked("admin"), &[])
311+
.is_ok());
300312

301313
for permission in permissions.iter() {
302314
// Check that the permissions are correctly returned

makefile

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,22 +13,19 @@ rm ./$(1).wasm
1313
endef
1414

1515
CONTRACTS = \
16-
airdrop governance \
17-
treasury treasury_manager scrt_staking rewards_emission \
18-
oracle snip20 query_auth sky peg_stability admin\
19-
mock_band mock_secretswap_pair mock_sienna_pair mock_adapter\
20-
mock_stkd_derivative basic_staking snip20_migration lp_shdswap stkd_scrt\
16+
airdrop treasury treasury_manager scrt_staking \
17+
snip20 query_auth admin \
18+
mock_sienna_pair mock_adapter \
19+
mock_stkd_derivative basic_staking snip20_migration stkd_scrt \
2120
snip20_derivative
2221

23-
PACKAGES = \
24-
shade_protocol contract_harness cosmwasm_math_compat \
25-
network_integration network_tester secretcli
22+
PACKAGES = shade_protocol contract_harness cosmwasm_math_compat
2623

2724
release: setup
2825
${build-release}
2926
@$(MAKE) compress_all
3027

31-
dao: treasury treasury_manager scrt_staking rewards_emission
28+
dao: treasury treasury_manager scrt_staking
3229

3330
compress_all: setup
3431
@$(MAKE) $(addprefix compress-,$(CONTRACTS))

packages/multi_test/Cargo.toml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ lb_factory = ["dep:lb_factory"]
2424
#mock_band= ["dep:mock_band"]
2525
mock_stkd = ["dep:mock_stkd"]
2626
mock_sienna = ["dep:mock_sienna"]
27-
governance = ["dep:governance"]
27+
# governance = ["dep:governance"]
2828
# snip20_staking = ["dep:spip_stkd_0"]
2929
# scrt_staking = ["dep:scrt_staking"]
3030
# bonds = ["dep:bonds"]
@@ -36,7 +36,7 @@ treasury_manager = ["dep:treasury_manager"]
3636
stkd_scrt = ["dep:stkd_scrt"]
3737
dao = ["mock_adapter", "treasury", "treasury_manager", "snip20"]
3838
# shade-oracles = ["dep:shade-oracles"]
39-
peg_stability = ["dep:peg_stability"]
39+
# peg_stability = ["dep:peg_stability"]
4040
snip20_migration = ["dep:snip20_migration"]
4141

4242
[dependencies]
@@ -50,7 +50,7 @@ lb_factory = { version = "0.1.0", path = "../../contracts/liquidity_book/lb_fact
5050
#mint = { version = "0.1.0", path = "../../contracts/mint", optional = true }
5151
#oracle = { version = "0.1.0", path = "../../contracts/oracle", optional = true }
5252
#mock_band = { version = "0.1.0", path = "../../contracts/mock_band", optional = true }
53-
governance = { version = "0.1.0", path = "../../contracts/governance", optional = true }
53+
# governance = { version = "0.1.0", path = "../../contracts/governance", optional = true }
5454
basic_staking = { version = "0.1.0", path = "../../contracts/basic_staking", optional = true }
5555
# spip_stkd_0 = { version = "0.1.0", path = "../../contracts/snip20_staking", optional = true }
5656
# bonds = { version = "0.1.0", path = "../../contracts/bonds", optional = true }
@@ -61,7 +61,7 @@ scrt_staking = { version = "0.1.0", path = "../../contracts/dao/scrt_staking", o
6161
treasury = { version = "0.1.0", path = "../../contracts/dao/treasury", optional = true }
6262
treasury_manager = { version = "0.1.0", path = "../../contracts/dao/treasury_manager", optional = true }
6363
admin = { version = "0.2.0", path = "../../contracts/admin", optional = true }
64-
peg_stability = { version = "0.1.0", path = "../../contracts/peg_stability", optional = true }
64+
# peg_stability = { version = "0.1.0", path = "../../contracts/peg_stability", optional = true }
6565
mock_stkd = { version = "0.1.0", package = "mock_stkd_derivative", path = "../../contracts/mock/mock_stkd_derivative", optional = true }
6666
mock_sienna = { version = "0.1.0", package = "mock_sienna_pair", path = "../../contracts/mock/mock_sienna_pair", optional = true }
6767
snip20_migration = { version = "0.1.0", path = "../../contracts/snip20_migration", optional = true }

packages/shade_protocol/Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,8 +75,8 @@ scrt_staking = ["adapter", "treasury"]
7575
stkd_scrt = ["adapter"]
7676
treasury = ["adapter", "dao-utils"]
7777
treasury_manager = ["adapter"]
78-
rewards_emission = ["adapter"]
79-
lp_shdswap = ["interface"]
78+
# rewards_emission = ["adapter"]
79+
# lp_shdswap = ["interface"]
8080
adapter = ["interface"]
8181
manager = ["interface"]
8282
snip20 = ["query_auth_impl", "dep:base64"]

0 commit comments

Comments
 (0)