Live video on the AT Protocol
79
fork

Configure Feed

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

at v0.9.0 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}