mirror of
https://github.com/datarhei/core.git
synced 2025-12-24 13:07:56 +08:00
68 lines
2.3 KiB
Go
68 lines
2.3 KiB
Go
package url
|
|
|
|
import (
|
|
"net/url"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestParse(t *testing.T) {
|
|
srturl := "srt://127.0.0.1:6000?mode=caller&passphrase=foobar&streamid=" + url.QueryEscape("#!:m=publish,r=123456,token=bla")
|
|
|
|
u, err := Parse(srturl)
|
|
require.NoError(t, err)
|
|
|
|
require.Equal(t, "srt", u.Scheme)
|
|
require.Equal(t, "127.0.0.1:6000", u.Host)
|
|
require.Equal(t, "#!:m=publish,r=123456,token=bla", u.StreamId)
|
|
|
|
si, err := u.StreamInfo()
|
|
require.NoError(t, err)
|
|
require.Equal(t, "publish", si.Mode)
|
|
require.Equal(t, "123456", si.Resource)
|
|
require.Equal(t, "bla", si.Token)
|
|
|
|
require.Equal(t, srturl, u.String())
|
|
|
|
srturl = "srt://127.0.0.1:6000?mode=caller&passphrase=foobar&streamid=" + url.QueryEscape("123456,mode:publish,token:bla")
|
|
|
|
u, err = Parse(srturl)
|
|
require.NoError(t, err)
|
|
|
|
require.Equal(t, "srt", u.Scheme)
|
|
require.Equal(t, "127.0.0.1:6000", u.Host)
|
|
require.Equal(t, "123456,mode:publish,token:bla", u.StreamId)
|
|
|
|
si, err = u.StreamInfo()
|
|
require.NoError(t, err)
|
|
require.Equal(t, "publish", si.Mode)
|
|
require.Equal(t, "123456", si.Resource)
|
|
require.Equal(t, "bla", si.Token)
|
|
|
|
require.Equal(t, srturl, u.String())
|
|
}
|
|
|
|
func TestParseStreamId(t *testing.T) {
|
|
streamids := map[string]StreamInfo{
|
|
"": {Mode: "request"},
|
|
"bla": {Mode: "request", Resource: "bla"},
|
|
"bla,token=foobar": {Mode: "request", Resource: "bla,token=foobar"},
|
|
"bla,token:foobar": {Mode: "request", Resource: "bla", Token: "foobar"},
|
|
"bla,token:foobar,mode:publish": {Mode: "publish", Resource: "bla", Token: "foobar"},
|
|
"#!:": {Mode: "request"},
|
|
"#!:key=value": {Mode: "request"},
|
|
"#!:m=publish": {Mode: "publish"},
|
|
"#!:r=123456789": {Mode: "request", Resource: "123456789"},
|
|
"#!:token=foobar": {Mode: "request", Token: "foobar"},
|
|
"#!:token=foo,bar": {Mode: "request", Token: "foo"},
|
|
"#!:m=publish,r=123456789,token=foobar": {Mode: "publish", Resource: "123456789", Token: "foobar"},
|
|
}
|
|
|
|
for streamid, wantsi := range streamids {
|
|
si, err := ParseStreamId(streamid)
|
|
require.NoError(t, err)
|
|
require.Equal(t, wantsi, si, streamid)
|
|
}
|
|
}
|