Search Apps Documentation Source Content File Folder Download Copy Actions Download

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}