mirror of
https://github.com/bluenviron/mediamtx.git
synced 2025-12-19 17:50:03 -08:00
Reply with "status": "ok" in case of success, and with "status": "error" in case of error. This makes the API more accessible and user friendly.
112 lines
2.7 KiB
Go
112 lines
2.7 KiB
Go
package api //nolint:revive
|
|
|
|
import (
|
|
"net/http"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/bluenviron/mediamtx/internal/conf"
|
|
"github.com/bluenviron/mediamtx/internal/defs"
|
|
"github.com/bluenviron/mediamtx/internal/servers/hls"
|
|
"github.com/bluenviron/mediamtx/internal/test"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
type testHLSServer struct {
|
|
muxers map[string]*defs.APIHLSMuxer
|
|
}
|
|
|
|
func (s *testHLSServer) APIMuxersList() (*defs.APIHLSMuxerList, error) {
|
|
items := make([]*defs.APIHLSMuxer, 0, len(s.muxers))
|
|
for _, muxer := range s.muxers {
|
|
items = append(items, muxer)
|
|
}
|
|
return &defs.APIHLSMuxerList{Items: items}, nil
|
|
}
|
|
|
|
func (s *testHLSServer) APIMuxersGet(name string) (*defs.APIHLSMuxer, error) {
|
|
muxer, ok := s.muxers[name]
|
|
if !ok {
|
|
return nil, hls.ErrMuxerNotFound
|
|
}
|
|
return muxer, nil
|
|
}
|
|
|
|
func TestHLSMuxersList(t *testing.T) {
|
|
now := time.Now()
|
|
hlsServer := &testHLSServer{
|
|
muxers: map[string]*defs.APIHLSMuxer{
|
|
"test1": {
|
|
Path: "test1",
|
|
Created: now,
|
|
LastRequest: now.Add(5 * time.Second),
|
|
BytesSent: 1234,
|
|
},
|
|
"test2": {
|
|
Path: "test2",
|
|
Created: now.Add(time.Minute),
|
|
LastRequest: now.Add(time.Minute + 10*time.Second),
|
|
BytesSent: 5678,
|
|
},
|
|
},
|
|
}
|
|
|
|
api := API{
|
|
Address: "localhost:9997",
|
|
ReadTimeout: conf.Duration(10 * time.Second),
|
|
WriteTimeout: conf.Duration(10 * time.Second),
|
|
AuthManager: test.NilAuthManager,
|
|
HLSServer: hlsServer,
|
|
Parent: &testParent{},
|
|
}
|
|
err := api.Initialize()
|
|
require.NoError(t, err)
|
|
defer api.Close()
|
|
|
|
tr := &http.Transport{}
|
|
defer tr.CloseIdleConnections()
|
|
hc := &http.Client{Transport: tr}
|
|
|
|
var out defs.APIHLSMuxerList
|
|
httpRequest(t, hc, http.MethodGet, "http://localhost:9997/v3/hlsmuxers/list", nil, &out)
|
|
|
|
require.Equal(t, 2, out.ItemCount)
|
|
require.Equal(t, 1, out.PageCount)
|
|
require.Len(t, out.Items, 2)
|
|
}
|
|
|
|
func TestHLSMuxersGet(t *testing.T) {
|
|
now := time.Now()
|
|
hlsServer := &testHLSServer{
|
|
muxers: map[string]*defs.APIHLSMuxer{
|
|
"mypath": {
|
|
Path: "mypath",
|
|
Created: now,
|
|
LastRequest: now.Add(5 * time.Second),
|
|
BytesSent: 9999,
|
|
},
|
|
},
|
|
}
|
|
|
|
api := API{
|
|
Address: "localhost:9997",
|
|
ReadTimeout: conf.Duration(10 * time.Second),
|
|
WriteTimeout: conf.Duration(10 * time.Second),
|
|
AuthManager: test.NilAuthManager,
|
|
HLSServer: hlsServer,
|
|
Parent: &testParent{},
|
|
}
|
|
err := api.Initialize()
|
|
require.NoError(t, err)
|
|
defer api.Close()
|
|
|
|
tr := &http.Transport{}
|
|
defer tr.CloseIdleConnections()
|
|
hc := &http.Client{Transport: tr}
|
|
|
|
var out defs.APIHLSMuxer
|
|
httpRequest(t, hc, http.MethodGet, "http://localhost:9997/v3/hlsmuxers/get/mypath", nil, &out)
|
|
|
|
require.Equal(t, "mypath", out.Path)
|
|
require.Equal(t, uint64(9999), out.BytesSent)
|
|
}
|