Skip to content

Commit 67a81df

Browse files
committed
add mock tests for account and client
1 parent 98b1cb5 commit 67a81df

File tree

7 files changed

+409
-0
lines changed

7 files changed

+409
-0
lines changed

go.work.sum

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:ma
55
github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
66
github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
77
github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc=
8+
github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA=
89
github.com/urfave/cli/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/XcUArI=
910
golang.org/x/telemetry v0.0.0-20240521205824-bda55230c457/go.mod h1:pRgIJT+bRLFKnoM1ldnzKoxTIn14Yxz928LQRYYgIN0=
1011
golang.org/x/term v0.21.0/go.mod h1:ooXLefLobQVslOqselCNF4SxFAaoS6KujMbsGzSDmX0=

node-registrar/client/account.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,10 @@ func (c RegistrarClient) getAccountByPK(pk []byte) (account Account, err error)
158158
}
159159

160160
func (c RegistrarClient) updateAccount(opts []UpdateAccountOpts) (err error) {
161+
err = c.ensureTwinID()
162+
if err != nil {
163+
return errors.Wrap(err, "failed to ensure twin id")
164+
}
161165
url, err := url.JoinPath(c.baseURL, "accounts", fmt.Sprint(c.twinID))
162166
if err != nil {
163167
return errors.Wrap(err, "failed to construct registrar url")

node-registrar/client/account_test.go

Lines changed: 147 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,147 @@
1+
package client
2+
3+
import (
4+
"encoding/base64"
5+
"net/http"
6+
"net/http/httptest"
7+
"net/url"
8+
"testing"
9+
10+
"github.com/stretchr/testify/require"
11+
)
12+
13+
func TestCreateAccount(t *testing.T) {
14+
var request int
15+
var count int
16+
require := require.New(t)
17+
18+
pk, seed, err := aliceKeys()
19+
require.NoError(err)
20+
publicKeyBase64 := base64.StdEncoding.EncodeToString(pk)
21+
account.PublicKey = publicKeyBase64
22+
23+
testServer := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
24+
statusCode, body := accountHandler(r, request, count, require)
25+
w.WriteHeader(statusCode)
26+
_, err := w.Write(body)
27+
require.NoError(err)
28+
count++
29+
}))
30+
defer testServer.Close()
31+
32+
baseURL, err := url.JoinPath(testServer.URL, "v1")
33+
require.NoError(err)
34+
35+
count = 0
36+
request = newClientWithNoAccount
37+
c, err := NewRegistrarClient(baseURL, seed)
38+
require.NoError(err)
39+
40+
t.Run("test create account created successfully", func(t *testing.T) {
41+
count = 0
42+
request = createAccountStatusCreated
43+
result, err := c.CreateAccount(account.Relays, account.RMBEncKey)
44+
require.NoError(err)
45+
require.Equal(account, result)
46+
})
47+
}
48+
49+
func TestUpdateAccount(t *testing.T) {
50+
var request int
51+
var count int
52+
require := require.New(t)
53+
54+
pk, seed, err := aliceKeys()
55+
require.NoError(err)
56+
publicKeyBase64 := base64.StdEncoding.EncodeToString(pk)
57+
account.PublicKey = publicKeyBase64
58+
59+
testServer := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
60+
statusCode, body := accountHandler(r, request, count, require)
61+
w.WriteHeader(statusCode)
62+
_, err := w.Write(body)
63+
require.NoError(err)
64+
65+
count++
66+
}))
67+
defer testServer.Close()
68+
69+
baseURL, err := url.JoinPath(testServer.URL, "v1")
70+
require.NoError(err)
71+
72+
t.Run("test update account updated successfully", func(t *testing.T) {
73+
count = 0
74+
request = newClientWithAccountNoNode
75+
c, err := NewRegistrarClient(baseURL, seed)
76+
77+
require.NoError(err)
78+
require.Equal(c.twinID, account.TwinID)
79+
require.Equal([]byte(c.keyPair.publicKey), pk)
80+
81+
count = 0
82+
request = updateAccountWithStatusOK
83+
relays := []string{"relay1"}
84+
err = c.UpdateAccount(UpdateAccountWithRelays(relays))
85+
require.NoError(err)
86+
})
87+
88+
t.Run("test update account account not found", func(t *testing.T) {
89+
count = 0
90+
request = newClientWithNoAccount
91+
c, err := NewRegistrarClient(baseURL, seed)
92+
93+
require.NoError(err)
94+
require.Equal([]byte(c.keyPair.publicKey), pk)
95+
96+
count = 0
97+
request = updateAccountWithNoAccount
98+
relays := []string{"relay1"}
99+
err = c.UpdateAccount(UpdateAccountWithRelays(relays))
100+
require.Error(err)
101+
})
102+
}
103+
104+
func TestGetAccount(t *testing.T) {
105+
var request int
106+
var count int
107+
require := require.New(t)
108+
109+
pk, seed, err := aliceKeys()
110+
require.NoError(err)
111+
publicKeyBase64 := base64.StdEncoding.EncodeToString(pk)
112+
account.PublicKey = publicKeyBase64
113+
114+
testServer := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
115+
statusCode, body := accountHandler(r, request, count, require)
116+
w.WriteHeader(statusCode)
117+
_, err := w.Write(body)
118+
require.NoError(err)
119+
count++
120+
}))
121+
defer testServer.Close()
122+
123+
baseURL, err := url.JoinPath(testServer.URL, "v1")
124+
require.NoError(err)
125+
126+
count = 0
127+
request = newClientWithAccountNoNode
128+
c, err := NewRegistrarClient(baseURL, seed)
129+
require.NoError(err)
130+
require.Equal(c.twinID, account.TwinID)
131+
require.Equal([]byte(c.keyPair.publicKey), pk)
132+
133+
t.Run("test get account with id account not found", func(t *testing.T) {
134+
count = 0
135+
request = getAccountWithIDStatusNotFount
136+
_, err := c.GetAccount(account.TwinID)
137+
require.Error(err)
138+
})
139+
140+
t.Run("test update account account not found", func(t *testing.T) {
141+
count = 0
142+
request = getAccountWithIDStatusOK
143+
acc, err := c.GetAccount(account.TwinID)
144+
require.NoError(err)
145+
require.Equal(account, acc)
146+
})
147+
}

node-registrar/client/client_test.go

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
package client
2+
3+
import (
4+
"encoding/base64"
5+
"net/http"
6+
"net/http/httptest"
7+
"net/url"
8+
"testing"
9+
10+
"github.com/stretchr/testify/require"
11+
)
12+
13+
func TestNewRegistrarClient(t *testing.T) {
14+
var request int
15+
var count int
16+
require := require.New(t)
17+
18+
pk, seed, err := aliceKeys()
19+
require.NoError(err)
20+
publicKeyBase64 := base64.StdEncoding.EncodeToString(pk)
21+
account.PublicKey = publicKeyBase64
22+
23+
testServer := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
24+
statusCode, body := accountHandler(r, request, count, require)
25+
w.WriteHeader(statusCode)
26+
_, err := w.Write(body)
27+
require.NoError(err)
28+
count++
29+
}))
30+
defer testServer.Close()
31+
32+
baseURL, err := url.JoinPath(testServer.URL, "v1")
33+
require.NoError(err)
34+
35+
t.Run("test new registrar client with no account", func(t *testing.T) {
36+
count = 0
37+
request = newClientWithNoAccount
38+
c, err := NewRegistrarClient(baseURL, seed)
39+
require.NoError(err)
40+
require.Equal(c.twinID, uint64(0))
41+
require.Equal(c.nodeID, uint64(0))
42+
require.Equal([]byte(c.keyPair.publicKey), pk)
43+
})
44+
45+
t.Run("test new registrar client with account and no node", func(t *testing.T) {
46+
count = 0
47+
request = newClientWithAccountNoNode
48+
c, err := NewRegistrarClient(baseURL, seed)
49+
require.NoError(err)
50+
require.Equal(c.twinID, account.TwinID)
51+
require.Equal(c.nodeID, uint64(0))
52+
require.Equal([]byte(c.keyPair.publicKey), pk)
53+
})
54+
t.Run("test new registrar client with no account", func(t *testing.T) {
55+
count = 0
56+
request = newClientWithAccountAndNode
57+
c, err := NewRegistrarClient(baseURL, seed)
58+
require.NoError(err)
59+
require.Equal(c.twinID, account.TwinID)
60+
require.Equal(c.nodeID, uint64(1))
61+
require.Equal([]byte(c.keyPair.publicKey), pk)
62+
})
63+
}

0 commit comments

Comments
 (0)