Live video on the AT Protocol
1package iroh_streamplace
2
3import (
4 "testing"
5
6 "github.com/stretchr/testify/assert"
7
8 iroh "stream.place/streamplace/pkg/iroh/generated/iroh_streamplace"
9)
10
11type Message struct {
12 topic string
13 data []byte
14}
15
16type TestHandler struct {
17 messages chan Message
18}
19
20func (handler TestHandler) HandleData(topic string, data []byte) {
21 handler.messages <- Message{topic, data}
22}
23
24func TestBasicRoundtrip(t *testing.T) {
25 ep1, err := iroh.NewEndpoint()
26 assert.Nil(t, err)
27 sender, err := iroh.NewSender(ep1)
28 assert.NoError(t, err.AsError())
29
30 messages := make(chan Message, 5)
31 handler := TestHandler{messages: messages}
32
33 ep2, err := iroh.NewEndpoint()
34 assert.NoError(t, err.AsError())
35 receiver, err := iroh.NewReceiver(ep2, &handler)
36 assert.NoError(t, err.AsError())
37
38 senderAddr := sender.NodeAddr()
39 senderId := senderAddr.NodeId()
40
41 // subscribe
42 err = receiver.Subscribe(senderId, "foo")
43 assert.NoError(t, err.AsError())
44
45 // send a few messages
46 for i := range 5 {
47 err = sender.Send("foo", []byte{byte(i), 0, 0, 0})
48 assert.NoError(t, err.AsError())
49 }
50
51 // make sure the receiver got them
52 for i := range 5 {
53 msg := <-messages
54 assert.Equal(t, msg.topic, "foo")
55 assert.Equal(t, msg.data, []byte{byte(i), 0, 0, 0})
56 }
57}