100 lines
2.3 KiB
Go
100 lines
2.3 KiB
Go
package session
|
|
|
|
import (
|
|
"bytes"
|
|
"fmt"
|
|
"testing"
|
|
|
|
"github.com/schollz/croc/v5/internal/buffer"
|
|
"github.com/schollz/croc/v5/pkg/session/common"
|
|
"github.com/schollz/croc/v5/pkg/session/receiver"
|
|
"github.com/schollz/croc/v5/pkg/session/sender"
|
|
"github.com/schollz/croc/v5/pkg/utils"
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
// Tests
|
|
|
|
func Test_CreateReceiverSession(t *testing.T) {
|
|
assert := assert.New(t)
|
|
stream := &bytes.Buffer{}
|
|
|
|
sess := receiver.NewWith(receiver.Config{
|
|
Stream: stream,
|
|
})
|
|
assert.NotNil(sess)
|
|
}
|
|
|
|
func Test_TransferSmallMessage(t *testing.T) {
|
|
assert := assert.New(t)
|
|
|
|
// Create client receiver
|
|
clientStream := &buffer.Buffer{}
|
|
clientSDPProvider := &buffer.Buffer{}
|
|
clientSDPOutput := &buffer.Buffer{}
|
|
clientConfig := receiver.Config{
|
|
Stream: clientStream,
|
|
Configuration: common.Configuration{
|
|
SDPProvider: clientSDPProvider,
|
|
SDPOutput: clientSDPOutput,
|
|
},
|
|
}
|
|
clientSession := receiver.NewWith(clientConfig)
|
|
assert.NotNil(clientSession)
|
|
|
|
// Create sender
|
|
senderStream := &buffer.Buffer{}
|
|
senderSDPProvider := &buffer.Buffer{}
|
|
senderSDPOutput := &buffer.Buffer{}
|
|
n, err := senderStream.WriteString("Hello World!\n")
|
|
assert.Nil(err)
|
|
assert.Equal(13, n) // Len "Hello World\n"
|
|
senderConfig := sender.Config{
|
|
Stream: senderStream,
|
|
Configuration: common.Configuration{
|
|
SDPProvider: senderSDPProvider,
|
|
SDPOutput: senderSDPOutput,
|
|
},
|
|
}
|
|
senderSession := sender.NewWith(senderConfig)
|
|
assert.NotNil(senderSession)
|
|
|
|
senderDone := make(chan struct{})
|
|
go func() {
|
|
defer close(senderDone)
|
|
err := senderSession.Start()
|
|
assert.Nil(err)
|
|
}()
|
|
|
|
// Get SDP from sender and send it to the client
|
|
sdp, err := utils.MustReadStream(senderSDPOutput)
|
|
assert.Nil(err)
|
|
fmt.Printf("READ SDP -> %s\n", sdp)
|
|
sdp += "\n"
|
|
n, err = clientSDPProvider.WriteString(sdp)
|
|
assert.Nil(err)
|
|
assert.Equal(len(sdp), n)
|
|
|
|
clientDone := make(chan struct{})
|
|
go func() {
|
|
defer close(clientDone)
|
|
err := clientSession.Start()
|
|
assert.Nil(err)
|
|
}()
|
|
|
|
// Get SDP from client and send it to the sender
|
|
sdp, err = utils.MustReadStream(clientSDPOutput)
|
|
assert.Nil(err)
|
|
n, err = senderSDPProvider.WriteString(sdp)
|
|
assert.Nil(err)
|
|
assert.Equal(len(sdp), n)
|
|
|
|
fmt.Println("Waiting for everyone to be done...")
|
|
<-senderDone
|
|
<-clientDone
|
|
|
|
msg, err := clientStream.ReadString('\n')
|
|
assert.Nil(err)
|
|
assert.Equal("Hello World!\n", msg)
|
|
}
|