示例#1
0
        public void CreatePlayRequest_ValidProperties()
        {
            var factory = new RtspRequestMessageFactory(FakeUri, UserAgent);

            RtspRequestMessage request = factory.CreatePlayRequest();

            Assert.AreEqual(RtspMethod.PLAY, request.Method);
            Assert.AreEqual(FakeUri, request.ConnectionUri);
            Assert.AreEqual(UserAgent, request.UserAgent);
        }
示例#2
0
        public void CreateGetParameterRequest_ValidProperties()
        {
            var factory = new RtspRequestMessageFactory(FakeUri, UserAgent);

            RtspRequestMessage request = factory.CreateGetParameterRequest();

            Assert.AreEqual(RtspMethod.GET_PARAMETER, request.Method);
            Assert.AreEqual(FakeUri, request.ConnectionUri);
            Assert.AreEqual(UserAgent, request.UserAgent);
        }
示例#3
0
        public void EnsureCSeqIncreasesAfterEveryCreatedRequest()
        {
            var factory = new RtspRequestMessageFactory(FakeUri, null);

            RtspRequestMessage request1 = factory.CreateOptionsRequest();
            RtspRequestMessage request2 = factory.CreateDescribeRequest();

            Assert.AreEqual(1u, request1.CSeq);
            Assert.AreEqual(2u, request2.CSeq);
        }
示例#4
0
        public void CreatePlayRequest_ContentBaseAndSessionAreSet_ValidProperties()
        {
            var factory = new RtspRequestMessageFactory(FakeUri, UserAgent)
            {
                SessionId   = "testSessionId",
                ContentBase = new Uri("http://127.0.0.1/base")
            };

            RtspRequestMessage request = factory.CreatePlayRequest();

            Assert.AreEqual(factory.SessionId, request.Headers.Get("Session"));
            Assert.AreEqual(factory.ContentBase, request.ConnectionUri);
        }
示例#5
0
        public void CreateSetupUdpUnicastRequest_ValidProperties()
        {
            const string testTrackName = "testTrack";
            var          factory       = new RtspRequestMessageFactory(FakeUri, UserAgent);

            RtspRequestMessage request = factory.CreateSetupUdpUnicastRequest(testTrackName, 1, 2);

            Assert.AreEqual(RtspMethod.SETUP, request.Method);
            Assert.AreEqual(FakeUri + "testTrack", request.ConnectionUri.ToString());
            Assert.AreEqual(UserAgent, request.UserAgent);
            string transportHeaderValue = request.Headers.Get("Transport");

            Assert.IsTrue(transportHeaderValue.Contains("unicast"));
            Assert.IsTrue(transportHeaderValue.Contains($"{1}-{2}"));
        }
        public async Task EnsureExecuteRequest_TestRequestAndFakeResponse_ReturnsRtspResponseMessage(
            bool checkAuthorized)
        {
            const string optionsResponse = "RTSP/1.0 200 OK\r\n" +
                                           "CSeq: 1\r\n" +
                                           "Public: DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE\r\n\r\n";

            const string unauthResponse = "RTSP/1.0 401 Unauthorized\r\n" +
                                          "WWW-AUTHENTICATE: Basic realm=\"testRealm\"\r\n" +
                                          "CSeq: 1\r\n\r\n";

            var uri       = new Uri("rtsp://*****:*****@127.0.0.1");
            var conParams = new ConnectionParameters(uri);
            var factory   = new RtspRequestMessageFactory(uri, null);
            var client    = new RtspTransportClientFake(conParams, request =>
            {
                if (!checkAuthorized)
                {
                    return(optionsResponse);
                }

                if (request.IndexOf("Authorization", StringComparison.InvariantCultureIgnoreCase) == -1)
                {
                    return(unauthResponse);
                }

                return(optionsResponse);
            });

            var optionsRequest = factory.CreateOptionsRequest();
            RtspResponseMessage responseMessage =
                await client.EnsureExecuteRequest(optionsRequest, CancellationToken.None);

            Assert.AreEqual(RtspStatusCode.Ok, responseMessage.StatusCode);
            Assert.IsNotNull(responseMessage.Headers.Get("PUBLIC"));
        }