Alpha/Tests/delegation: add double registration test
Emptied and then recredited between the two self-delegations.
This commit is contained in:
parent
1b6eca4d89
commit
9ee7cf18fd
@ -882,7 +882,7 @@ let valid_delegate_registration_switch_delegation_credit_debit amount () =
|
|||||||
Assert.equal_pkh ~loc:__LOC__ orig_delegate delegate_pkh
|
Assert.equal_pkh ~loc:__LOC__ orig_delegate delegate_pkh
|
||||||
|
|
||||||
(** C- a second self-delegation should raise an `Active_delegate` error *)
|
(** C- a second self-delegation should raise an `Active_delegate` error *)
|
||||||
(* with implicit contract with some credits *)
|
(* with implicit contract with some credit *)
|
||||||
let double_registration () =
|
let double_registration () =
|
||||||
Context.init 1 >>=? fun (b, bootstrap_contracts) ->
|
Context.init 1 >>=? fun (b, bootstrap_contracts) ->
|
||||||
Incremental.begin_construction b >>=? fun i ->
|
Incremental.begin_construction b >>=? fun i ->
|
||||||
@ -932,6 +932,37 @@ let double_registration_when_empty () =
|
|||||||
| Delegate_storage.Active_delegate -> true
|
| Delegate_storage.Active_delegate -> true
|
||||||
| _ -> false)
|
| _ -> false)
|
||||||
|
|
||||||
|
(* with implicit contract emptied then recredited after first self-delegation *)
|
||||||
|
let double_registration_when_recredited () =
|
||||||
|
Context.init 1 >>=? fun (b, bootstrap_contracts) ->
|
||||||
|
Incremental.begin_construction b >>=? fun i ->
|
||||||
|
let bootstrap = List.hd bootstrap_contracts in
|
||||||
|
let account = Account.new_account () in
|
||||||
|
let pkh = Account.(account.pkh) in
|
||||||
|
let impl_contract = Contract.implicit_contract pkh in
|
||||||
|
(* credit 1μꜩ+ check balance *)
|
||||||
|
Op.transaction (I i) bootstrap impl_contract Tez.one_mutez >>=? fun create_contract ->
|
||||||
|
Incremental.add_operation i create_contract >>=? fun i ->
|
||||||
|
Assert.balance_is ~loc:__LOC__ (I i) impl_contract Tez.one_mutez >>=? fun _ ->
|
||||||
|
(* self delegation *)
|
||||||
|
Op.delegation (I i) impl_contract (Some pkh) >>=? fun self_delegation ->
|
||||||
|
Incremental.add_operation i self_delegation >>=? fun i ->
|
||||||
|
(* empty the delegate account *)
|
||||||
|
Op.transaction (I i) impl_contract bootstrap Tez.one_mutez >>=? fun empty_contract ->
|
||||||
|
Incremental.add_operation i empty_contract >>=? fun i ->
|
||||||
|
Assert.balance_is ~loc:__LOC__ (I i) impl_contract Tez.zero >>=? fun _ ->
|
||||||
|
(* credit 1μꜩ+ check balance *)
|
||||||
|
Op.transaction (I i) bootstrap impl_contract Tez.one_mutez >>=? fun create_contract ->
|
||||||
|
Incremental.add_operation i create_contract >>=? fun i ->
|
||||||
|
Assert.balance_is ~loc:__LOC__ (I i) impl_contract Tez.one_mutez >>=? fun _ ->
|
||||||
|
(* second self-delegation *)
|
||||||
|
Op.delegation (I i) impl_contract (Some pkh) >>=? fun second_registration ->
|
||||||
|
Incremental.add_operation i second_registration >>= fun err ->
|
||||||
|
|
||||||
|
Assert.proto_error ~loc:__LOC__ err (function
|
||||||
|
| Delegate_storage.Active_delegate -> true
|
||||||
|
| _ -> false)
|
||||||
|
|
||||||
let tests_delegate_registration =
|
let tests_delegate_registration =
|
||||||
[
|
[
|
||||||
(*** unregistered delegate key: no self-delegation ***)
|
(*** unregistered delegate key: no self-delegation ***)
|
||||||
@ -1012,6 +1043,7 @@ let tests_delegate_registration =
|
|||||||
(*** double registration ***)
|
(*** double registration ***)
|
||||||
Test.tztest "double registration" `Quick double_registration ;
|
Test.tztest "double registration" `Quick double_registration ;
|
||||||
Test.tztest "double registration when delegate account is emptied" `Quick double_registration_when_empty ;
|
Test.tztest "double registration when delegate account is emptied" `Quick double_registration_when_empty ;
|
||||||
|
Test.tztest "double registration when delegate account is emptied and then recredited" `Quick double_registration_when_recredited ;
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user