def test_upnp_discovery_rootdevice(): """Tests the UPnP rootdevice discovery response.""" upnp_responder_protocol = upnp.UPNPResponderProtocol( None, None, "192.0.2.42", 8080) mock_transport = MockTransport() upnp_responder_protocol.transport = mock_transport """Original request emitted by Busch-Jaeger free@home SysAP.""" request = """M-SEARCH * HTTP/1.1 HOST: 239.255.255.250:1900 MAN: "ssdp:discover" MX: 40 ST: upnp:rootdevice """ encoded_request = request.replace("\n", "\r\n").encode("utf-8") upnp_responder_protocol.datagram_received(encoded_request, 1234) expected_response = """HTTP/1.1 200 OK CACHE-CONTROL: max-age=60 EXT: LOCATION: http://192.0.2.42:8080/description.xml SERVER: FreeRTOS/6.0.5, UPnP/1.0, IpBridge/1.16.0 hue-bridgeid: 001788FFFE23BFC2 ST: upnp:rootdevice USN: uuid:2f402f80-da50-11e1-9b23-001788255acc::upnp:rootdevice """ expected_send = expected_response.replace("\n", "\r\n").encode("utf-8") assert mock_transport.sends == [(expected_send, 1234)]
def test_upnp_discovery_basic(self): """Tests the UPnP basic discovery response.""" upnp_responder_protocol = upnp.UPNPResponderProtocol( None, None, "192.0.2.42", 8080) mock_transport = MockTransport() upnp_responder_protocol.transport = mock_transport """Original request emitted by the Hue Bridge v1 app.""" request = """M-SEARCH * HTTP/1.1 HOST:239.255.255.250:1900 ST:ssdp:all Man:"ssdp:discover" MX:3 """ encoded_request = request.replace("\n", "\r\n").encode("utf-8") upnp_responder_protocol.datagram_received(encoded_request, 1234) expected_response = """HTTP/1.1 200 OK CACHE-CONTROL: max-age=60 EXT: LOCATION: http://192.0.2.42:8080/description.xml SERVER: FreeRTOS/6.0.5, UPnP/1.0, IpBridge/1.16.0 hue-bridgeid: 001788FFFE23BFC2 ST: urn:schemas-upnp-org:device:basic:1 USN: uuid:2f402f80-da50-11e1-9b23-001788255acc """ expected_send = expected_response.replace("\n", "\r\n").encode("utf-8") assert mock_transport.sends == [(expected_send, 1234)]
def test_upnp_no_response(): """Tests the UPnP does not response on an invalid request.""" upnp_responder_protocol = upnp.UPNPResponderProtocol( None, None, "192.0.2.42", 8080) mock_transport = MockTransport() upnp_responder_protocol.transport = mock_transport """Original request emitted by the Hue Bridge v1 app.""" request = """INVALID * HTTP/1.1 HOST:239.255.255.250:1900 ST:ssdp:all Man:"ssdp:discover" MX:3 """ encoded_request = request.replace("\n", "\r\n").encode("utf-8") upnp_responder_protocol.datagram_received(encoded_request, 1234) assert mock_transport.sends == []