From aa094b21e52adbd341a0b7f3e0b83cdfc707076d Mon Sep 17 00:00:00 2001 From: aler9 <46489434+aler9@users.noreply.github.com> Date: Sun, 21 Mar 2021 09:06:26 +0100 Subject: [PATCH] add CSeq tests --- serverconn_test.go | 75 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) diff --git a/serverconn_test.go b/serverconn_test.go index ed94a585..ebc2b9ea 100644 --- a/serverconn_test.go +++ b/serverconn_test.go @@ -374,6 +374,81 @@ func TestServerConnPublishReadHighLevel(t *testing.T) { } } +func TestServerConnCSeq(t *testing.T) { + s, err := Serve("127.0.0.1:8554") + require.NoError(t, err) + defer s.Close() + + serverDone := make(chan struct{}) + defer func() { <-serverDone }() + go func() { + defer close(serverDone) + + conn, err := s.Accept() + require.NoError(t, err) + defer conn.Close() + + <-conn.Read(ServerConnReadHandlers{}) + }() + + conn, err := net.Dial("tcp", "localhost:8554") + require.NoError(t, err) + defer conn.Close() + bconn := bufio.NewReadWriter(bufio.NewReader(conn), bufio.NewWriter(conn)) + + err = base.Request{ + Method: base.Options, + URL: base.MustParseURL("rtsp://localhost:8554/"), + Header: base.Header{ + "CSeq": base.HeaderValue{"5"}, + }, + }.Write(bconn.Writer) + require.NoError(t, err) + + var res base.Response + err = res.Read(bconn.Reader) + require.NoError(t, err) + require.Equal(t, base.StatusOK, res.StatusCode) + + require.Equal(t, base.HeaderValue{"5"}, res.Header["CSeq"]) +} + +func TestServerConnCSeqNo(t *testing.T) { + s, err := Serve("127.0.0.1:8554") + require.NoError(t, err) + defer s.Close() + + serverDone := make(chan struct{}) + defer func() { <-serverDone }() + go func() { + defer close(serverDone) + + conn, err := s.Accept() + require.NoError(t, err) + defer conn.Close() + + err = <-conn.Read(ServerConnReadHandlers{}) + require.Equal(t, "CSeq is missing", err.Error()) + }() + + conn, err := net.Dial("tcp", "localhost:8554") + require.NoError(t, err) + defer conn.Close() + bconn := bufio.NewReadWriter(bufio.NewReader(conn), bufio.NewWriter(conn)) + + err = base.Request{ + Method: base.Options, + URL: base.MustParseURL("rtsp://localhost:8554/"), + Header: base.Header{}, + }.Write(bconn.Writer) + require.NoError(t, err) + + var res base.Response + err = res.Read(bconn.Reader) + require.NoError(t, err) + require.Equal(t, base.StatusBadRequest, res.StatusCode) +} + func TestServerConnTeardownResponse(t *testing.T) { s, err := Serve("127.0.0.1:8554") require.NoError(t, err)