예제 #1
0
        public void Publisher_SearchResponse_NoResponseToBlankSearchTarget()
        {
            var rootDevice = CreateValidRootDevice();

            var server = new MockCommsServer();
            using (var publisher = new TestDevicePublisher(server))
            {
                publisher.AddDevice(rootDevice);

                ReceivedUdpData searchRequest = GetSearchRequestMessage(String.Empty);

                server.MockReceiveMessage(searchRequest);
                server.WaitForMockMessage(1500);

                var searchResponses = GetSentMessages(server.SentMessages);
                Assert.AreEqual(0, searchResponses.Count());
            }
        }
예제 #2
0
        public void Publisher_SearchResponse_NoResponseWithMissngMXHeader()
        {
            var rootDevice = CreateValidRootDevice();

            var server = new MockCommsServer();
            using (var publisher = new TestDevicePublisher(server))
            {
                publisher.SupportPnpRootDevice = false;
                publisher.AddDevice(rootDevice);

                ReceivedUdpData searchRequest = GetSearchRequestMessageWithoutMXHeader(SsdpConstants.UpnpDeviceTypeRootDevice);

                server.MockReceiveMessage(searchRequest);
                server.WaitForMockMessage(1500);

                var searchResponses = GetSentMessages(server.SentMessages);
                Assert.AreEqual(0, searchResponses.Count());
            }
        }
예제 #3
0
        public void Publisher_SearchResponse_DoesNotRespondToRequestWithEmptyMXHeaderIfPnpSupportDisabled()
        {
            var rootDevice = CreateValidRootDevice();
            var parentDevice = CreateValidEmbeddedDevice(rootDevice);
            rootDevice.AddDevice(parentDevice);
            var childDevice = CreateValidEmbeddedDevice(rootDevice);
            parentDevice.AddDevice(childDevice);

            var server = new MockCommsServer();
            using (var publisher = new TestDevicePublisher(server))
            {
                publisher.SupportPnpRootDevice = false;
                publisher.AddDevice(rootDevice);

                ReceivedUdpData searchRequest = GetSearchRequestMessageWithCustomMXHeader(childDevice.Udn, String.Empty);
                server.MockReceiveMessage(searchRequest);
                server.MockReceiveMessage(searchRequest);
                server.WaitForMockMessage(1500);
                System.Threading.Thread.Sleep(500);

                var searchResponses = GetSentMessages(server.SentMessages);
                var uuidResponses = GetResponses(searchResponses, childDevice.Udn);
                Assert.AreEqual(0, uuidResponses.Count());
            }
        }
예제 #4
0
        public void Publisher_SearchResponse_IgnoresDuplicateSearchRequest()
        {
            var rootDevice = CreateValidRootDevice();

            var server = new MockCommsServer();
            using (var publisher = new TestDevicePublisher(server))
            {
                publisher.SupportPnpRootDevice = false;
                publisher.AddDevice(rootDevice);

                ReceivedUdpData searchRequest = GetSearchRequestMessage(SsdpConstants.UpnpDeviceTypeRootDevice);

                server.MockReceiveMessage(searchRequest);
                server.MockReceiveMessage(searchRequest);
                server.WaitForMockMessage(1500);
                System.Threading.Thread.Sleep(500);

                var searchResponses = GetSentMessages(server.SentMessages);
                Assert.AreEqual(0, searchResponses.Where((r) => !r.IsSuccessStatusCode).Count());
                Assert.IsTrue(GetResponses(searchResponses, SsdpConstants.UpnpDeviceTypeRootDevice).Count() == 1);
            }
        }
예제 #5
0
        public void Publisher_SearchResponse_AddCustomHeaders()
        {
            var rootDevice = CreateValidRootDevice();

            var testHeader = new CustomHttpHeader("machinename", Environment.MachineName);
            rootDevice.CustomResponseHeaders.Add(testHeader);

            var server = new MockCommsServer();
            using (var publisher = new TestDevicePublisher(server))
            {
                publisher.SupportPnpRootDevice = false;
                publisher.AddDevice(rootDevice);

                ReceivedUdpData searchRequest = GetSearchRequestMessage(SsdpConstants.UpnpDeviceTypeRootDevice);

                server.MockReceiveMessage(searchRequest);
                server.WaitForMockMessage(1500);

                var searchResponses = GetSentMessages(server.SentMessages);

                Assert.AreEqual(0, searchResponses.Where((r) => !r.IsSuccessStatusCode).Count());
                Assert.IsTrue(GetResponses(searchResponses, SsdpConstants.UpnpDeviceTypeRootDevice).Count() >= 1);
                Assert.IsTrue(GetResponses(searchResponses, SsdpConstants.PnpDeviceTypeRootDevice).Count() == 0);
                Assert.IsTrue(GetResponses(searchResponses, rootDevice.Udn).Count() >= 1);
                Assert.IsTrue(GetResponses(searchResponses, rootDevice.FullDeviceType).Count() >= 1);
                Assert.AreEqual(0, searchResponses.Where((r) => !r.Headers.GetValues("USN").First().StartsWith(rootDevice.Udn)).Count());
                Assert.AreEqual(0, searchResponses.Where((r) => !r.Headers.GetValues(testHeader.Name).First().StartsWith(testHeader.Value)).Count());
            }
        }
예제 #6
0
        public void Publisher_SearchResponse_SendsGrandchildResponses()
        {
            var rootDevice = CreateValidRootDevice();
            var parentDevice = CreateValidEmbeddedDevice(rootDevice);
            rootDevice.AddDevice(parentDevice);
            var childDevice = CreateValidEmbeddedDevice(rootDevice);
            parentDevice.AddDevice(childDevice);

            var server = new MockCommsServer();
            using (var publisher = new TestDevicePublisher(server))
            {
                publisher.SupportPnpRootDevice = false;
                publisher.AddDevice(rootDevice);

                ReceivedUdpData searchRequest = GetSearchRequestMessage(childDevice.Udn);

                server.MockReceiveMessage(searchRequest);
                server.WaitForMockMessage(1500);
                System.Threading.Thread.Sleep(100);

                var searchResponses = GetSentMessages(server.SentMessages);
                var uuidResponses = GetResponses(searchResponses, childDevice.Udn);
                Assert.AreEqual(1, uuidResponses.Count());
            }
        }
예제 #7
0
        public void Publisher_SearchResponse_RespondsToUdnSearch()
        {
            var rootDevice = CreateValidRootDevice();

            var server = new MockCommsServer();
            using (var publisher = new TestDevicePublisher(server))
            {
                publisher.AddDevice(rootDevice);

                ReceivedUdpData searchRequest = GetSearchRequestMessage(rootDevice.Udn);

                server.MockReceiveMessage(searchRequest);
                server.WaitForMockMessage(1500);
                System.Threading.Thread.Sleep(100);

                var searchResponses = GetSentMessages(server.SentMessages);
                Assert.AreEqual(0, searchResponses.Where((r) => !r.IsSuccessStatusCode).Count());
                Assert.IsTrue(GetResponses(searchResponses, SsdpConstants.UpnpDeviceTypeRootDevice).Count() >= 1);
                Assert.IsTrue(GetResponses(searchResponses, SsdpConstants.PnpDeviceTypeRootDevice).Count() >= 1);
                Assert.IsTrue(GetResponses(searchResponses, rootDevice.Udn).Count() >= 1);
                Assert.IsTrue(GetResponses(searchResponses, rootDevice.FullDeviceType).Count() >= 1);
                Assert.AreEqual(0, searchResponses.Where((r) => !r.Headers.GetValues("USN").First().StartsWith(rootDevice.Udn)).Count());
            }
        }
예제 #8
0
        public void Publisher_SearchResponse_RandomisesMxHeaderGreaterThan120()
        {
            var rootDevice = CreateValidRootDevice();

            var server = new MockCommsServer();
            using (var publisher = new TestDevicePublisher(server))
            {
                publisher.SupportPnpRootDevice = false;
                publisher.AddDevice(rootDevice);

                ReceivedUdpData searchRequest = GetSearchRequestMessageWithCustomMXHeader(rootDevice.Udn, "125");

                server.MockReceiveMessage(searchRequest);
                Assert.IsTrue(server.WaitForMockMessage(120000));
                System.Threading.Thread.Sleep(500);

                var searchResponses = GetSentMessages(server.SentMessages);
                Assert.AreEqual(3, searchResponses.Count());
            }
        }
예제 #9
0
        public void Publisher_SearchResponse_NoResponseWithNonNumericMXHeader()
        {
            var rootDevice = CreateValidRootDevice();

            var server = new MockCommsServer();
            using (var publisher = new TestDevicePublisher(server))
            {
                publisher.SupportPnpRootDevice = false;
                publisher.AddDevice(rootDevice);

                ReceivedUdpData searchRequest = GetSearchRequestMessageWithCustomMXHeader(rootDevice.Udn, "-1");

                server.MockReceiveMessage(searchRequest);
                server.WaitForMockMessage(1500);

                var searchResponses = GetSentMessages(server.SentMessages);
                Assert.AreEqual(0, searchResponses.Count());
            }
        }