Something went wrong. Try again.
This repository has no description
Something went wrong. Try again.
2.4 kB · 67 lines
Go
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768package misttriggers
import ( "testing"
"github.com/stretchr/testify/require")
var streamBufferPayloadFull = MistTriggerBody(` stream1 FULL {"track1":{"codec":"h264","kbits":1000,"keys":{"B":"1"},"fpks":30,"height":720,"width":1280},"jitter":420}`)
var streamBufferPayloadIssues = MistTriggerBody(` stream1 RECOVER {"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"]}`)
var streamBufferPayloadInvalid = MistTriggerBody(` stream1 FULL {"track1":{},"notatrack":{"codec":2}}`)
var streamBufferPayloadEmpty = MistTriggerBody(` stream1 EMPTY`)
func TestItCanParseAValidStreamBufferPayload(t *testing.T) { p, err := ParseStreamBufferPayload(streamBufferPayloadFull) require.NoError(t, err) require.Equal(t, p.StreamName, "stream1") require.Equal(t, p.State, "FULL") require.NotNil(t, p.Details) require.Equal(t, p.Details.Issues, "") require.Len(t, p.Details.Tracks, 1) require.Contains(t, p.Details.Tracks, "track1") require.Equal(t, p.Details.Extra["jitter"], float64(420))}
func TestItCanParseAStreamBufferPayloadWithStreamIssues(t *testing.T) { p, err := ParseStreamBufferPayload(streamBufferPayloadIssues) require.NoError(t, err) require.Equal(t, p.StreamName, "stream1") require.Equal(t, p.State, "RECOVER") require.NotNil(t, p.Details) require.Equal(t, p.Details.HumanIssues, []string{"Stream is feeling under the weather"}) require.Contains(t, p.Details.Issues, "unfavorable meteorological phenomenon") require.Len(t, p.Details.Tracks, 1) require.Contains(t, p.Details.Tracks, "track1")}
func TestItCanParseAValidStreamBufferPayloadWithEmptyState(t *testing.T) { p, err := ParseStreamBufferPayload(streamBufferPayloadEmpty) require.NoError(t, err) require.Equal(t, p.StreamName, "stream1") require.Equal(t, p.State, "EMPTY") require.Nil(t, p.Details)}
func TestItFailsToParseAnInvalidStreamBufferPayload(t *testing.T) { _, err := ParseStreamBufferPayload(streamBufferPayloadInvalid) require.Error(t, err) require.Contains(t, err.Error(), "cannot unmarshal number into Go struct field TrackDetails.codec of type string")}