cla_test.gno
2.18 Kb · 95 lines
1package cla
2
3import (
4 "testing"
5
6 "gno.land/p/moul/addrset"
7 "gno.land/p/nt/uassert/v0"
8)
9
10// cur is a zero-value realm used as a placeholder when forwarding to
11// uassert/urequire dispatch helpers that gained an `rlm realm` param.
12// These tests pass `func()` callbacks (no crossing inside the callback),
13// so rlm is ignored — a nil realm here is safe.
14var cur realm
15
16const (
17 testHash1 = "abc123def456"
18 testHash2 = "xyz789uvw012"
19 testUser1 = "g1user1address1234567890"
20 testUser2 = "g1user2address0987654321"
21)
22
23func resetState() {
24 signatures = addrset.Set{}
25 requiredHash = ""
26 claURL = ""
27}
28
29func TestSign(cur realm, t *testing.T) {
30 resetState()
31
32 setRequiredHash(testHash1)
33
34 testing.SetRealm(testing.NewUserRealm(testUser1))
35 Sign(cross(cur), testHash1)
36
37 uassert.True(t, HasValidSignature(address(testUser1)))
38}
39
40func TestSign_WrongHash(cur realm, t *testing.T) {
41 resetState()
42
43 setRequiredHash(testHash1)
44
45 testing.SetRealm(testing.NewUserRealm(testUser1))
46 uassert.AbortsWithMessage(t, cur, "hash does not match required CLA hash", func() {
47 Sign(cross(cur), testHash2)
48 })
49
50 uassert.False(t, HasValidSignature(address(testUser1)))
51}
52
53func TestHasValidSignature_Disabled(t *testing.T) {
54 resetState()
55
56 uassert.Equal(t, "", requiredHash)
57 uassert.True(t, HasValidSignature(address(testUser1)))
58 uassert.True(t, HasValidSignature(address(testUser2)))
59}
60
61func TestHasValidSignature_Valid(cur realm, t *testing.T) {
62 resetState()
63
64 setRequiredHash(testHash1)
65
66 testing.SetRealm(testing.NewUserRealm(testUser1))
67 Sign(cross(cur), testHash1)
68
69 uassert.True(t, HasValidSignature(address(testUser1)))
70}
71
72func TestHasValidSignature_NotSigned(t *testing.T) {
73 resetState()
74
75 setRequiredHash(testHash1)
76
77 uassert.False(t, HasValidSignature(address(testUser1)))
78}
79
80func TestSetRequiredHash_ResetsSignatures(cur realm, t *testing.T) {
81 resetState()
82
83 setRequiredHash(testHash1)
84
85 testing.SetRealm(testing.NewUserRealm(testUser1))
86 Sign(cross(cur), testHash1)
87 uassert.True(t, HasValidSignature(address(testUser1)))
88 uassert.Equal(t, 1, signatures.Size())
89
90 // Update hash - should reset signatures
91 setRequiredHash(testHash2)
92
93 uassert.False(t, HasValidSignature(address(testUser1)))
94 uassert.Equal(t, 0, signatures.Size())
95}