z_3_prop4_filetest.gno
1.98 Kb · 66 lines
1package main
2
3import (
4 "chain"
5 "chain/runtime"
6 "testing"
7
8 "gno.land/r/gov/dao"
9 daov3init "gno.land/r/gov/dao/v3/init"
10 users "gno.land/r/sys/namereg/v1"
11 susers "gno.land/r/sys/users"
12)
13
14// Test the full governance-driven pause/unpause flow:
15// 1. propose pause via NewSetPausedExecutor(true), vote YES, execute,
16// observe IsPaused() flip to true.
17// 2. propose unpause via NewSetPausedExecutor(false), vote YES, execute,
18// observe IsPaused() flip back to false.
19// 3. Register works again post-unpause.
20var c address = runtime.OriginCaller()
21
22func init() {
23 // Whitelist this realm as a controller so its Register() can reach r/sys/users.
24 testing.SetHeight(0)
25 susers.AddControllerAtGenesis(cross, chain.PackageAddress("gno.land/r/sys/namereg/v1"))
26 testing.SetHeight(123)
27
28 daov3init.InitWithUsers(c)
29}
30
31func main() {
32 testing.SetOriginCaller(c)
33 testing.SetRealm(testing.NewUserRealm(c))
34
35 println("paused before:", users.IsPaused())
36
37 // Propose, vote, execute: pause.
38 dao.MustCreateProposal(cross, users.NewSetPausedExecutor(true))
39 dao.MustVoteOnProposal(cross, dao.VoteRequest{
40 Option: dao.YesVote,
41 ProposalID: dao.ProposalID(0),
42 })
43 dao.ExecuteProposal(cross, dao.ProposalID(0))
44 println("paused after pause prop:", users.IsPaused())
45
46 // Propose, vote, execute: unpause.
47 dao.MustCreateProposal(cross, users.NewSetPausedExecutor(false))
48 dao.MustVoteOnProposal(cross, dao.VoteRequest{
49 Option: dao.YesVote,
50 ProposalID: dao.ProposalID(1),
51 })
52 dao.ExecuteProposal(cross, dao.ProposalID(1))
53 println("paused after unpause prop:", users.IsPaused())
54
55 // Register works again (the pause check inside Register would have
56 // panicked with ErrPaused had the unpause executor not run).
57 users.Register(cross, "nym-alice123")
58 data, _ := susers.ResolveName("nym-alice123")
59 println("registered alice at:", data.Addr())
60}
61
62// Output:
63// paused before: false
64// paused after pause prop: true
65// paused after unpause prop: false
66// registered alice at: g1wymu47drhr0kuq2098m792lytgtj2nyx77yrsm