Skip to content

Commit fcacc64

Browse files
committed
feat: add test
1 parent b5f8306 commit fcacc64

File tree

3 files changed

+55
-12
lines changed

3 files changed

+55
-12
lines changed
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package worx_aggregator
2+
3+
import (
4+
"std"
5+
)
6+
7+
var adminAddr std.Address
8+
9+
func assertIsAdmin() {
10+
if std.PrevRealm().Addr() != adminAddr {
11+
panic("restricted area")
12+
}
13+
}
14+
15+
func setAdminAddress(address std.Address) {
16+
adminAddr = address
17+
}
18+
19+
func SetAdminAddress(address std.Address) {
20+
assertIsAdmin()
21+
setAdminAddress(address)
22+
}

examples/gno.land/r/demo/teritori/worx_aggregator/worx.gno

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,16 @@ import (
88
)
99

1010
var (
11-
admin std.Address
12-
registeredProviders avl.Tree
13-
worxByAddress avl.Tree
11+
registeredProviders *avl.Tree
12+
worxByAddress *avl.Tree
1413
)
1514

15+
func init() {
16+
registeredProviders = avl.NewTree()
17+
worxByAddress = avl.NewTree()
18+
setAdminAddress(std.PrevRealm().Addr())
19+
}
20+
1621
func Push(hours int, metadata string, addr std.Address, points int, timestamp int64) {
1722
assertRegistered(addr)
1823

@@ -35,9 +40,9 @@ func getKeeper(addr std.Address) *worx.WorxKeeper {
3540
}
3641

3742
func RegisterDataProvider(addr std.Address) {
38-
assertAdmin()
43+
assertIsAdmin()
3944
_, ok := registeredProviders.Get(string(addr))
40-
if !ok {
45+
if ok {
4146
panic("Data provider already registered")
4247
}
4348
registeredProviders.Set(string(addr), 0)
@@ -50,9 +55,3 @@ func assertRegistered(addr std.Address) {
5055
panic("caller realm is not registered as provider")
5156
}
5257
}
53-
54-
func assertAdmin() {
55-
if std.PrevRealm().Addr() != admin {
56-
panic("unathorized")
57-
}
58-
}
Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
11
package worx_aggregator
22

33
import (
4+
"std"
45
"testing"
6+
7+
"gno.land/p/demo/avl"
58
"gno.land/p/demo/testutils"
69
)
710

8-
func TestPushCallerNotRegistered(t * testing.T){
11+
func TestPushCallerNotRegistered(t *testing.T) {
912
user1 := testutils.TestAddress("user1")
1013
defer func() {
1114
if v := recover(); v == nil {
@@ -14,3 +17,22 @@ func TestPushCallerNotRegistered(t * testing.T){
1417
}()
1518
Push(1, "", user1, 3, 10)
1619
}
20+
21+
func TestHappyPath(t *testing.T) {
22+
registeredProviders = avl.NewTree()
23+
worxByAddress = avl.NewTree()
24+
25+
realm := testutils.TestAddress("realm")
26+
admin := testutils.TestAddress("admin")
27+
user1 := testutils.TestAddress("user1")
28+
29+
setAdminAddress(admin)
30+
31+
std.TestSetOrigCaller(admin)
32+
33+
RegisterDataProvider(realm)
34+
35+
std.TestSetOrigCaller(realm)
36+
37+
Push(1, "", user1, 3, 10)
38+
}

0 commit comments

Comments
 (0)