Live video on the AT Protocol
79
fork

Configure Feed

Select the types of activity you want to include in your feed.

at eli/detox-testing-github 72 lines 1.5 kB view raw
1package rtcrec 2 3import ( 4 "io" 5 "os" 6 "testing" 7 "time" 8 9 "github.com/fxamacker/cbor/v2" 10 "github.com/stretchr/testify/require" 11) 12 13func TestWebRTCRecording(t *testing.T) { 14 // Create a temporary file for testing 15 tmpfile, err := os.CreateTemp("", "webrtc-recording-test-*") 16 require.NoError(t, err) 17 18 // Create recorder stream writing to temp file 19 recorder, err := MakeWebRTCEncoder(tmpfile) 20 require.NoError(t, err) 21 22 // Test recording an offer event 23 offerEvent := WebRTCEvent{ 24 Offer: &Offer{ 25 SDPOffer: "test-offer", 26 }, 27 Time: time.Now().UTC(), 28 } 29 recorder.Event(offerEvent) 30 31 // Test recording an answer event 32 answerEvent := WebRTCEvent{ 33 CreateAnswer: &CreateAnswer{ 34 SDPAnswer: "test-answer", 35 }, 36 Time: time.Now().UTC(), 37 } 38 recorder.Event(answerEvent) 39 40 // err = recorder.Close() 41 // require.NoError(t, err) 42 err = tmpfile.Close() 43 require.NoError(t, err) 44 45 tmpfile, err = os.Open(tmpfile.Name()) 46 require.NoError(t, err) 47 defer tmpfile.Close() 48 49 dec := cbor.NewDecoder(tmpfile) 50 51 evs := []WebRTCEvent{} 52 err = nil 53 for err == nil { 54 var ev WebRTCEvent 55 err = dec.Decode(&ev) 56 if err == nil { 57 evs = append(evs, ev) 58 } 59 } 60 61 require.ErrorIs(t, err, io.EOF) 62 63 off, ok := evs[0].Detail().(*Offer) 64 require.True(t, ok) 65 ans, ok := evs[1].Detail().(*CreateAnswer) 66 require.True(t, ok) 67 68 require.Equal(t, 2, len(evs)) 69 require.Equal(t, off.SDPOffer, offerEvent.Offer.SDPOffer) 70 require.Equal(t, ans.SDPAnswer, answerEvent.CreateAnswer.SDPAnswer) 71 72}