-
Notifications
You must be signed in to change notification settings - Fork 47
/
Copy pathreset_manager.rs
95 lines (82 loc) · 2.5 KB
/
reset_manager.rs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
use frame_support::{assert_err, assert_ok};
use frame_system::RawOrigin;
use crate::{
mock::{runtime::*, *},
types::PoolStatus,
Error as BondingPalletErrors, Event as BondingPalletEvents, Pools,
};
#[test]
fn changes_manager() {
let curve = get_linear_bonding_curve();
let pool_details = generate_pool_details(
vec![DEFAULT_BONDED_CURRENCY_ID],
curve,
false,
Some(PoolStatus::Active),
Some(ACCOUNT_00),
None,
None,
);
let pool_id = calculate_pool_id(&[DEFAULT_BONDED_CURRENCY_ID]);
ExtBuilder::default()
.with_pools(vec![(pool_id.clone(), pool_details.clone())])
.build()
.execute_with(|| {
let origin = RawOrigin::Signed(ACCOUNT_00).into();
assert_ok!(BondingPallet::reset_manager(origin, pool_id.clone(), Some(ACCOUNT_01)));
System::assert_has_event(
BondingPalletEvents::ManagerUpdated {
id: pool_id.clone(),
manager: Some(ACCOUNT_01),
}
.into(),
);
let new_details = Pools::<Test>::get(&pool_id).unwrap();
assert_eq!(new_details.manager, Some(ACCOUNT_01));
assert_eq!(new_details.owner, pool_details.owner)
})
}
#[test]
fn only_manager_can_change_manager() {
let curve = get_linear_bonding_curve();
let manager = AccountId::new([10u8; 32]);
let pool_details = generate_pool_details(
vec![DEFAULT_BONDED_CURRENCY_ID],
curve,
false,
Some(PoolStatus::Active),
Some(manager.clone()),
None,
Some(ACCOUNT_00),
);
let pool_id = calculate_pool_id(&[DEFAULT_BONDED_CURRENCY_ID]);
ExtBuilder::default()
.with_pools(vec![(pool_id.clone(), pool_details.clone())])
.build()
.execute_with(|| {
let owner_origin = RawOrigin::Signed(ACCOUNT_00).into();
let other_origin = RawOrigin::Signed(ACCOUNT_01).into();
assert_err!(
BondingPallet::reset_manager(owner_origin, pool_id.clone(), Some(ACCOUNT_00)),
BondingPalletErrors::<Test>::NoPermission
);
assert_err!(
BondingPallet::reset_manager(other_origin, pool_id.clone(), Some(ACCOUNT_00)),
BondingPalletErrors::<Test>::NoPermission
);
let new_details = Pools::<Test>::get(&pool_id).unwrap();
assert_eq!(new_details.manager, Some(manager));
})
}
#[test]
fn cant_change_manager_if_pool_nonexistent() {
let pool_id = calculate_pool_id(&[DEFAULT_BONDED_CURRENCY_ID]);
ExtBuilder::default().build().execute_with(|| {
let origin = RawOrigin::Signed(ACCOUNT_00).into();
assert!(Pools::<Test>::get(&pool_id).is_none());
assert_err!(
BondingPallet::reset_manager(origin, pool_id.clone(), Some(ACCOUNT_00)),
BondingPalletErrors::<Test>::PoolUnknown
);
})
}