Live video on the AT Protocol
at eli/fix-gitlab 67 lines 2.4 kB view raw
1package misttriggers 2 3import ( 4 "testing" 5 6 "github.com/stretchr/testify/require" 7) 8 9var streamBufferPayloadFull = MistTriggerBody(` 10 stream1 11 FULL 12 {"track1":{"codec":"h264","kbits":1000,"keys":{"B":"1"},"fpks":30,"height":720,"width":1280},"jitter":420}`) 13 14var streamBufferPayloadIssues = MistTriggerBody(` 15 stream1 16 RECOVER 17 {"track1":{"codec":"h264","kbits":1000,"keys":{"B":"1"},"fpks":30,"height":720,"width":1280},"issues":"The aqueous linear entity, in a manner pertaining to its metaphorical state of existence, appears to be experiencing an ostensibly suboptimal condition that is reminiscent of an individual's disposition when subjected to an unfavorable meteorological phenomenon","human_issues":["Stream is feeling under the weather"]} 18`) 19 20var streamBufferPayloadInvalid = MistTriggerBody(` 21 stream1 22 FULL 23 {"track1":{},"notatrack":{"codec":2}} 24`) 25 26var streamBufferPayloadEmpty = MistTriggerBody(` 27 stream1 28 EMPTY 29`) 30 31func TestItCanParseAValidStreamBufferPayload(t *testing.T) { 32 p, err := ParseStreamBufferPayload(streamBufferPayloadFull) 33 require.NoError(t, err) 34 require.Equal(t, p.StreamName, "stream1") 35 require.Equal(t, p.State, "FULL") 36 require.NotNil(t, p.Details) 37 require.Equal(t, p.Details.Issues, "") 38 require.Len(t, p.Details.Tracks, 1) 39 require.Contains(t, p.Details.Tracks, "track1") 40 require.Equal(t, p.Details.Extra["jitter"], float64(420)) 41} 42 43func TestItCanParseAStreamBufferPayloadWithStreamIssues(t *testing.T) { 44 p, err := ParseStreamBufferPayload(streamBufferPayloadIssues) 45 require.NoError(t, err) 46 require.Equal(t, p.StreamName, "stream1") 47 require.Equal(t, p.State, "RECOVER") 48 require.NotNil(t, p.Details) 49 require.Equal(t, p.Details.HumanIssues, []string{"Stream is feeling under the weather"}) 50 require.Contains(t, p.Details.Issues, "unfavorable meteorological phenomenon") 51 require.Len(t, p.Details.Tracks, 1) 52 require.Contains(t, p.Details.Tracks, "track1") 53} 54 55func TestItCanParseAValidStreamBufferPayloadWithEmptyState(t *testing.T) { 56 p, err := ParseStreamBufferPayload(streamBufferPayloadEmpty) 57 require.NoError(t, err) 58 require.Equal(t, p.StreamName, "stream1") 59 require.Equal(t, p.State, "EMPTY") 60 require.Nil(t, p.Details) 61} 62 63func TestItFailsToParseAnInvalidStreamBufferPayload(t *testing.T) { 64 _, err := ParseStreamBufferPayload(streamBufferPayloadInvalid) 65 require.Error(t, err) 66 require.Contains(t, err.Error(), "cannot unmarshal number into Go struct field TrackDetails.codec of type string") 67}