Skip to content

Commit 6d5243b

Browse files
committed
Add unit test for AllowedPublicKeys
1 parent 377bc66 commit 6d5243b

File tree

1 file changed

+87
-0
lines changed

1 file changed

+87
-0
lines changed

src/core/core_test.go

Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,27 @@ func GetLoggerWithPrefix(prefix string, verbose bool) *log.Logger {
2525
return l
2626
}
2727

28+
func require_NoError(t *testing.T, err error) {
29+
t.Helper()
30+
if err != nil {
31+
t.Fatal(err)
32+
}
33+
}
34+
35+
func require_Equal[T comparable](t *testing.T, a, b T) {
36+
t.Helper()
37+
if a != b {
38+
t.Fatalf("%v != %v", a, b)
39+
}
40+
}
41+
42+
func require_True(t *testing.T, a bool) {
43+
t.Helper()
44+
if !a {
45+
t.Fatal("expected true")
46+
}
47+
}
48+
2849
// CreateAndConnectTwo creates two nodes. nodeB connects to nodeA.
2950
// Verbosity flag is passed to logger.
3051
func CreateAndConnectTwo(t testing.TB, verbose bool) (nodeA *Core, nodeB *Core) {
@@ -201,3 +222,69 @@ func BenchmarkCore_Start_Transfer(b *testing.B) {
201222
}
202223
<-done
203224
}
225+
226+
func TestAllowedPublicKeys(t *testing.T) {
227+
logger := GetLoggerWithPrefix("", false)
228+
cfgA, cfgB := config.GenerateConfig(), config.GenerateConfig()
229+
require_NoError(t, cfgA.GenerateSelfSignedCertificate())
230+
require_NoError(t, cfgB.GenerateSelfSignedCertificate())
231+
232+
nodeA, err := New(cfgA.Certificate, logger, AllowedPublicKey("abcdef"))
233+
require_NoError(t, err)
234+
defer nodeA.Stop()
235+
236+
nodeB, err := New(cfgB.Certificate, logger)
237+
require_NoError(t, err)
238+
defer nodeB.Stop()
239+
240+
u, err := url.Parse("tcp://localhost:0")
241+
require_NoError(t, err)
242+
243+
l, err := nodeA.Listen(u, "")
244+
require_NoError(t, err)
245+
246+
u, err = url.Parse("tcp://" + l.Addr().String())
247+
require_NoError(t, err)
248+
249+
require_NoError(t, nodeB.AddPeer(u, ""))
250+
251+
time.Sleep(time.Second)
252+
253+
peers := nodeB.GetPeers()
254+
require_Equal(t, len(peers), 1)
255+
require_True(t, !peers[0].Up)
256+
require_True(t, peers[0].LastError != nil)
257+
}
258+
259+
func TestAllowedPublicKeysLocal(t *testing.T) {
260+
logger := GetLoggerWithPrefix("", false)
261+
cfgA, cfgB := config.GenerateConfig(), config.GenerateConfig()
262+
require_NoError(t, cfgA.GenerateSelfSignedCertificate())
263+
require_NoError(t, cfgB.GenerateSelfSignedCertificate())
264+
265+
nodeA, err := New(cfgA.Certificate, logger, AllowedPublicKey("abcdef"))
266+
require_NoError(t, err)
267+
defer nodeA.Stop()
268+
269+
nodeB, err := New(cfgB.Certificate, logger)
270+
require_NoError(t, err)
271+
defer nodeB.Stop()
272+
273+
u, err := url.Parse("tcp://localhost:0")
274+
require_NoError(t, err)
275+
276+
l, err := nodeA.ListenLocal(u, "")
277+
require_NoError(t, err)
278+
279+
u, err = url.Parse("tcp://" + l.Addr().String())
280+
require_NoError(t, err)
281+
282+
require_NoError(t, nodeB.AddPeer(u, ""))
283+
284+
time.Sleep(time.Second)
285+
286+
peers := nodeB.GetPeers()
287+
require_Equal(t, len(peers), 1)
288+
require_True(t, peers[0].Up)
289+
require_True(t, peers[0].LastError == nil)
290+
}

0 commit comments

Comments
 (0)