Something went wrong. Try again.
This repository has no description
Something went wrong. Try again.
3.2 kB · 95 lines
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596package misttriggers
import ( "bytes" "context" "fmt" "net/http" "net/http/httptest" "testing"
"github.com/stretchr/testify/require" "stream.place/streamplace/pkg/config")
var pushRewritePayload = MistTriggerBody(` rtmp://127.0.0.1:1935/live/c447-3l8v-1vmz-ej5t 127.0.0.1 c447-3l8v-1vmz-ej5t`)
var pushRewritePayloadInvalid = MistTriggerBody(` rtmp://127.0.0.1:1935/live/c447-3l8v-1vmz-ej5t`)
var pushRewritePayloadBadURL = MistTriggerBody(` http://hostname with spaces.com 127.0.0.1 c447-3l8v-1vmz-ej5t`)
func TestItCanParseAValidPushRewritePayload(t *testing.T) { p, err := ParsePushRewritePayload(pushRewritePayload) require.NoError(t, err) require.Equal(t, p.FullURL, "rtmp://127.0.0.1:1935/live/c447-3l8v-1vmz-ej5t") require.Equal(t, p.URL.String(), "rtmp://127.0.0.1:1935/live/c447-3l8v-1vmz-ej5t") require.Equal(t, p.Hostname, "127.0.0.1") require.Equal(t, p.StreamName, "c447-3l8v-1vmz-ej5t")}
func TestItCanRejectABadPushRewritePayload(t *testing.T) { _, err := ParsePushRewritePayload(pushRewritePayloadInvalid) require.Error(t, err) _, err = ParsePushRewritePayload(pushRewritePayloadBadURL) require.Error(t, err)}
func doPushRewriteRequest(t *testing.T, payload MistTriggerBody, cb func(ctx context.Context, prp *PushRewritePayload) (string, error)) *httptest.ResponseRecorder { broker := NewTriggerBroker() broker.OnPushRewrite(cb) d := NewMistCallbackHandlersCollection(&config.CLI{}, broker) req, err := http.NewRequest("POST", "/trigger", bytes.NewBuffer([]byte(payload))) require.NoError(t, err) rr := httptest.NewRecorder() d.TriggerPushRewrite(context.Background(), rr, req, payload) return rr}
func TestPushRewriteCanHandlePushRewriteRequests(t *testing.T) { rr := doPushRewriteRequest(t, pushRewritePayload, func(ctx context.Context, prp *PushRewritePayload) (string, error) { require.Equal(t, prp.StreamName, "c447-3l8v-1vmz-ej5t") return "funky-stream", nil }) require.Equal(t, rr.Result().StatusCode, 200) require.Equal(t, rr.Body.String(), "funky-stream")}
func TestPushRewriteCanRejectPushRewriteRequests(t *testing.T) { rr := doPushRewriteRequest(t, pushRewritePayload, func(ctx context.Context, prp *PushRewritePayload) (string, error) { // Proper way to reject Mist return "", nil }) require.Equal(t, rr.Result().StatusCode, 200) require.Equal(t, rr.Body.String(), "")}
func TestPushRewriteCanHandleFailureToHandle(t *testing.T) { rr := doPushRewriteRequest(t, pushRewritePayload, func(ctx context.Context, prp *PushRewritePayload) (string, error) { return "", fmt.Errorf("something went wrong") }) require.Equal(t, rr.Result().StatusCode, 500)}
func TestPushRewriteCanErrorPushRewriteRequests(t *testing.T) { rr := doPushRewriteRequest(t, pushRewritePayloadBadURL, func(ctx context.Context, prp *PushRewritePayload) (string, error) { require.Fail(t, "test should be failing before it gets to me") return "", nil }) require.Equal(t, rr.Result().StatusCode, 400)
rr = doPushRewriteRequest(t, pushRewritePayloadInvalid, func(ctx context.Context, prp *PushRewritePayload) (string, error) { require.Fail(t, "test should be failing before it gets to me") return "", nil }) require.Equal(t, rr.Result().StatusCode, 400)}