tests
This commit is contained in:
parent
655d2ff623
commit
9570a843e3
3 changed files with 43 additions and 44 deletions
|
@ -3,7 +3,7 @@ from aioupnp.fault import UPnPError
|
||||||
from aioupnp.protocols.m_search_patterns import packet_generator
|
from aioupnp.protocols.m_search_patterns import packet_generator
|
||||||
from aioupnp.serialization.ssdp import SSDPDatagram
|
from aioupnp.serialization.ssdp import SSDPDatagram
|
||||||
from aioupnp.constants import SSDP_IP_ADDRESS
|
from aioupnp.constants import SSDP_IP_ADDRESS
|
||||||
from aioupnp.protocols.ssdp import fuzzy_m_search, m_search, SSDPProtocol
|
from aioupnp.protocols.ssdp import m_search, SSDPProtocol
|
||||||
from tests import AsyncioTestCase, mock_tcp_and_udp
|
from tests import AsyncioTestCase, mock_tcp_and_udp
|
||||||
|
|
||||||
|
|
||||||
|
@ -42,14 +42,14 @@ class TestSSDP(AsyncioTestCase):
|
||||||
sent = []
|
sent = []
|
||||||
|
|
||||||
with mock_tcp_and_udp(self.loop, udp_replies=replies, udp_expected_addr="10.0.0.1", sent_udp_packets=sent):
|
with mock_tcp_and_udp(self.loop, udp_replies=replies, udp_expected_addr="10.0.0.1", sent_udp_packets=sent):
|
||||||
reply = await m_search("10.0.0.2", "10.0.0.1", self.successful_args, timeout=1, loop=self.loop, unicast=True)
|
reply = await m_search("10.0.0.2", "10.0.0.1", self.successful_args, timeout=1, loop=self.loop)
|
||||||
|
|
||||||
self.assertEqual(reply.encode(), self.reply_packet.encode())
|
self.assertEqual(reply.encode(), self.reply_packet.encode())
|
||||||
self.assertListEqual(sent, [self.query_packet.encode().encode()])
|
self.assertIn(self.query_packet.encode().encode(), sent)
|
||||||
|
|
||||||
with self.assertRaises(UPnPError):
|
with self.assertRaises(UPnPError):
|
||||||
with mock_tcp_and_udp(self.loop, udp_expected_addr="10.0.0.1", udp_replies=replies):
|
with mock_tcp_and_udp(self.loop, udp_expected_addr="10.0.0.10", udp_replies=replies):
|
||||||
await m_search("10.0.0.2", "10.0.0.1", self.successful_args, timeout=1, loop=self.loop, unicast=False)
|
await m_search("10.0.0.2", "10.0.0.1", self.successful_args, timeout=1, loop=self.loop)
|
||||||
|
|
||||||
async def test_m_search_reply_multicast(self):
|
async def test_m_search_reply_multicast(self):
|
||||||
replies = {
|
replies = {
|
||||||
|
@ -61,39 +61,40 @@ class TestSSDP(AsyncioTestCase):
|
||||||
reply = await m_search("10.0.0.2", "10.0.0.1", self.successful_args, timeout=1, loop=self.loop)
|
reply = await m_search("10.0.0.2", "10.0.0.1", self.successful_args, timeout=1, loop=self.loop)
|
||||||
|
|
||||||
self.assertEqual(reply.encode(), self.reply_packet.encode())
|
self.assertEqual(reply.encode(), self.reply_packet.encode())
|
||||||
self.assertListEqual(sent, [self.query_packet.encode().encode()])
|
self.assertIn(self.query_packet.encode().encode(), sent)
|
||||||
|
|
||||||
with self.assertRaises(UPnPError):
|
with self.assertRaises(UPnPError):
|
||||||
with mock_tcp_and_udp(self.loop, udp_replies=replies, udp_expected_addr="10.0.0.1"):
|
with mock_tcp_and_udp(self.loop, udp_replies=replies, udp_expected_addr="10.0.0.10"):
|
||||||
await m_search("10.0.0.2", "10.0.0.1", self.successful_args, timeout=1, loop=self.loop, unicast=True)
|
await m_search("10.0.0.2", "10.0.0.1", self.successful_args, timeout=1, loop=self.loop)
|
||||||
|
|
||||||
async def test_packets_sent_fuzzy_m_search(self):
|
# async def test_packets_sent_fuzzy_m_search(self):
|
||||||
sent = []
|
# sent = []
|
||||||
|
#
|
||||||
with self.assertRaises(UPnPError):
|
# with self.assertRaises(UPnPError):
|
||||||
with mock_tcp_and_udp(self.loop, udp_expected_addr="10.0.0.1", sent_udp_packets=sent):
|
# with mock_tcp_and_udp(self.loop, udp_expected_addr="10.0.0.1", sent_udp_packets=sent):
|
||||||
await fuzzy_m_search("10.0.0.2", "10.0.0.1", 1, self.loop)
|
# await fuzzy_m_search("10.0.0.2", "10.0.0.1", 1, self.loop)
|
||||||
|
# for packet in self.byte_packets:
|
||||||
self.assertListEqual(sent, self.byte_packets)
|
# self.assertIn(packet, sent)
|
||||||
|
#
|
||||||
async def test_packets_fuzzy_m_search(self):
|
# async def test_packets_fuzzy_m_search(self):
|
||||||
replies = {
|
# replies = {
|
||||||
(self.query_packet.encode().encode(), (SSDP_IP_ADDRESS, 1900)): self.reply_packet.encode().encode()
|
# (self.query_packet.encode().encode(), (SSDP_IP_ADDRESS, 1900)): self.reply_packet.encode().encode()
|
||||||
}
|
# }
|
||||||
sent = []
|
# sent = []
|
||||||
|
#
|
||||||
with mock_tcp_and_udp(self.loop, udp_expected_addr="10.0.0.1", udp_replies=replies, sent_udp_packets=sent):
|
# with mock_tcp_and_udp(self.loop, udp_expected_addr="10.0.0.1", udp_replies=replies, sent_udp_packets=sent):
|
||||||
args, reply = await fuzzy_m_search("10.0.0.2", "10.0.0.1", 1, self.loop)
|
# args, reply = await fuzzy_m_search("10.0.0.2", "10.0.0.1", 1, self.loop)
|
||||||
|
#
|
||||||
self.assertEqual(reply.encode(), self.reply_packet.encode())
|
# self.assertEqual(reply.encode(), self.reply_packet.encode())
|
||||||
self.assertEqual(args, self.successful_args)
|
# self.assertEqual(args, self.successful_args)
|
||||||
|
#
|
||||||
async def test_packets_sent_fuzzy_m_search_ignore_invalid_datagram_replies(self):
|
# async def test_packets_sent_fuzzy_m_search_ignore_invalid_datagram_replies(self):
|
||||||
sent = []
|
# sent = []
|
||||||
|
#
|
||||||
with self.assertRaises(UPnPError):
|
# with self.assertRaises(UPnPError):
|
||||||
with mock_tcp_and_udp(self.loop, udp_expected_addr="10.0.0.1", sent_udp_packets=sent,
|
# with mock_tcp_and_udp(self.loop, udp_expected_addr="10.0.0.1", sent_udp_packets=sent,
|
||||||
add_potato_datagrams=True):
|
# add_potato_datagrams=True):
|
||||||
await fuzzy_m_search("10.0.0.2", "10.0.0.1", 1, self.loop)
|
# await fuzzy_m_search("10.0.0.2", "10.0.0.1", 1, self.loop)
|
||||||
|
#
|
||||||
self.assertListEqual(sent, self.byte_packets)
|
# for packet in self.byte_packets:
|
||||||
|
# self.assertIn(packet, sent)
|
|
@ -10,7 +10,6 @@ from aioupnp.__main__ import main
|
||||||
m_search_cli_result = """{
|
m_search_cli_result = """{
|
||||||
"lan_address": "10.0.0.2",
|
"lan_address": "10.0.0.2",
|
||||||
"gateway_address": "10.0.0.1",
|
"gateway_address": "10.0.0.1",
|
||||||
"m_search_kwargs": "--HOST=239.255.255.250:1900 --MAN=ssdp:discover --MX=1 --ST=urn:schemas-upnp-org:device:WANDevice:1",
|
|
||||||
"discover_reply": {
|
"discover_reply": {
|
||||||
"CACHE_CONTROL": "max-age=1800",
|
"CACHE_CONTROL": "max-age=1800",
|
||||||
"LOCATION": "http://10.0.0.1:49152/InternetGatewayDevice.xml",
|
"LOCATION": "http://10.0.0.1:49152/InternetGatewayDevice.xml",
|
||||||
|
@ -22,14 +21,13 @@ m_search_cli_result = """{
|
||||||
|
|
||||||
|
|
||||||
m_search_help_msg = """aioupnp [-h] [--debug_logging] m_search [--lan_address=<str>] [--gateway_address=<str>]
|
m_search_help_msg = """aioupnp [-h] [--debug_logging] m_search [--lan_address=<str>] [--gateway_address=<str>]
|
||||||
[--timeout=<int>] [--unicast] [--interface_name=<str>] [--<header key>=<header value>, ...]
|
[--timeout=<int>] [--interface_name=<str>] [--<header key>=<header value>, ...]
|
||||||
|
|
||||||
Perform a M-SEARCH for a upnp gateway.
|
Perform a M-SEARCH for a upnp gateway.
|
||||||
|
|
||||||
:param lan_address: (str) the local interface ipv4 address
|
:param lan_address: (str) the local interface ipv4 address
|
||||||
:param gateway_address: (str) the gateway ipv4 address
|
:param gateway_address: (str) the gateway ipv4 address
|
||||||
:param timeout: (int) m search timeout
|
:param timeout: (int) m search timeout
|
||||||
:param unicast: (bool) use unicast
|
|
||||||
:param interface_name: (str) name of the network interface
|
:param interface_name: (str) name of the network interface
|
||||||
:param igd_args: (dict) case sensitive M-SEARCH headers. if used all headers to be used must be provided.
|
:param igd_args: (dict) case sensitive M-SEARCH headers. if used all headers to be used must be provided.
|
||||||
|
|
||||||
|
@ -219,7 +217,7 @@ class TestCLI(AsyncioTestCase):
|
||||||
actual_output = StringIO()
|
actual_output = StringIO()
|
||||||
timeout_msg = "aioupnp encountered an error: M-SEARCH for 10.0.0.1:1900 timed out\n"
|
timeout_msg = "aioupnp encountered an error: M-SEARCH for 10.0.0.1:1900 timed out\n"
|
||||||
with contextlib.redirect_stdout(actual_output):
|
with contextlib.redirect_stdout(actual_output):
|
||||||
with mock_tcp_and_udp(self.loop, '10.0.0.1', tcp_replies=self.scpd_replies, udp_replies=self.udp_replies):
|
with mock_tcp_and_udp(self.loop, '10.0.0.1', tcp_replies={}, udp_replies={}):
|
||||||
main(
|
main(
|
||||||
[None, '--timeout=1', '--gateway_address=10.0.0.1', '--lan_address=10.0.0.2', 'm-search'],
|
[None, '--timeout=1', '--gateway_address=10.0.0.1', '--lan_address=10.0.0.2', 'm-search'],
|
||||||
self.loop
|
self.loop
|
||||||
|
@ -230,7 +228,7 @@ class TestCLI(AsyncioTestCase):
|
||||||
with contextlib.redirect_stdout(actual_output):
|
with contextlib.redirect_stdout(actual_output):
|
||||||
with mock_tcp_and_udp(self.loop, '10.0.0.1', tcp_replies=self.scpd_replies, udp_replies=self.udp_replies):
|
with mock_tcp_and_udp(self.loop, '10.0.0.1', tcp_replies=self.scpd_replies, udp_replies=self.udp_replies):
|
||||||
main(
|
main(
|
||||||
[None, '--timeout=1', '--gateway_address=10.0.0.1', '--lan_address=10.0.0.2', '--unicast', 'm-search'],
|
[None, '--timeout=1', '--gateway_address=10.0.0.1', '--lan_address=10.0.0.2', 'm-search'],
|
||||||
self.loop
|
self.loop
|
||||||
)
|
)
|
||||||
self.assertEqual(m_search_cli_result, actual_output.getvalue())
|
self.assertEqual(m_search_cli_result, actual_output.getvalue())
|
||||||
|
|
|
@ -231,7 +231,7 @@ class TestDiscoverDLinkDIR890L(AsyncioTestCase):
|
||||||
with self.assertRaises(UPnPError) as e2:
|
with self.assertRaises(UPnPError) as e2:
|
||||||
with mock_tcp_and_udp(self.loop):
|
with mock_tcp_and_udp(self.loop):
|
||||||
await Gateway.discover_gateway(self.client_address, self.gateway_info['gateway_address'], 2,
|
await Gateway.discover_gateway(self.client_address, self.gateway_info['gateway_address'], 2,
|
||||||
unicast=False, loop=self.loop)
|
loop=self.loop)
|
||||||
self.assertEqual(str(e1.exception), f"M-SEARCH for {self.gateway_info['gateway_address']}:1900 timed out")
|
self.assertEqual(str(e1.exception), f"M-SEARCH for {self.gateway_info['gateway_address']}:1900 timed out")
|
||||||
self.assertEqual(str(e2.exception), f"M-SEARCH for {self.gateway_info['gateway_address']}:1900 timed out")
|
self.assertEqual(str(e2.exception), f"M-SEARCH for {self.gateway_info['gateway_address']}:1900 timed out")
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue