2018-10-08 04:30:13 +02:00
|
|
|
# from twisted.internet import reactor, defer
|
|
|
|
# from twisted.trial import unittest
|
|
|
|
# from aioupnp.constants import SSDP_PORT, SSDP_IP_ADDRESS
|
|
|
|
# from aioupnp.upnp import UPnP
|
|
|
|
# from aioupnp.mocks import MockReactor, MockSSDPServiceGatewayProtocol, get_device_test_case
|
|
|
|
#
|
|
|
|
#
|
|
|
|
# class TestDevice(unittest.TestCase):
|
|
|
|
# manufacturer, model = "Cisco", "CGA4131COM"
|
|
|
|
#
|
|
|
|
# device = get_device_test_case(manufacturer, model)
|
|
|
|
# router_address = device.device_dict['router_address']
|
|
|
|
# client_address = device.device_dict['client_address']
|
|
|
|
# expected_devices = device.device_dict['expected_devices']
|
|
|
|
# packets_rx = device.device_dict['ssdp']['received']
|
|
|
|
# packets_tx = device.device_dict['ssdp']['sent']
|
|
|
|
# expected_available_commands = device.device_dict['commands']['available']
|
|
|
|
# scdp_packets = device.device_dict['scpd']
|
|
|
|
#
|
|
|
|
# def setUp(self):
|
|
|
|
# fake_reactor = MockReactor(self.client_address, self.scdp_packets)
|
|
|
|
# reactor.listenMulticast = fake_reactor.listenMulticast
|
|
|
|
# self.reactor = reactor
|
|
|
|
# server_protocol = MockSSDPServiceGatewayProtocol(
|
|
|
|
# self.client_address, self.router_address, self.packets_rx, self.packets_tx
|
|
|
|
# )
|
|
|
|
# self.server_port = self.reactor.listenMulticast(SSDP_PORT, server_protocol, interface=self.router_address)
|
|
|
|
# self.server_port.transport.joinGroup(SSDP_IP_ADDRESS, interface=self.router_address)
|
|
|
|
#
|
|
|
|
# self.upnp = UPnP(
|
|
|
|
# self.reactor, debug_ssdp=True, router_ip=self.router_address,
|
|
|
|
# lan_ip=self.client_address, iface_name='mock'
|
|
|
|
# )
|
|
|
|
#
|
|
|
|
# def tearDown(self):
|
|
|
|
# self.upnp.sspd_factory.disconnect()
|
|
|
|
# self.server_port.stopListening()
|
|
|
|
#
|
|
|
|
#
|
|
|
|
# class TestSSDP(TestDevice):
|
|
|
|
# @defer.inlineCallbacks
|
|
|
|
# def test_discover_device(self):
|
|
|
|
# result = yield self.upnp.m_search(self.router_address, timeout=1)
|
|
|
|
# self.assertEqual(len(self.expected_devices), len(result))
|
|
|
|
# self.assertEqual(len(result), 1)
|
|
|
|
# self.assertDictEqual(self.expected_devices[0], result[0])
|
|
|
|
#
|
|
|
|
#
|
|
|
|
# class TestSCPD(TestDevice):
|
|
|
|
# @defer.inlineCallbacks
|
|
|
|
# def setUp(self):
|
|
|
|
# fake_reactor = MockReactor(self.client_address, self.scdp_packets)
|
|
|
|
# reactor.listenMulticast = fake_reactor.listenMulticast
|
|
|
|
# reactor.connectTCP = fake_reactor.connectTCP
|
|
|
|
# self.reactor = reactor
|
|
|
|
# server_protocol = MockSSDPServiceGatewayProtocol(
|
|
|
|
# self.client_address, self.router_address, self.packets_rx, self.packets_tx
|
|
|
|
# )
|
|
|
|
# self.server_port = self.reactor.listenMulticast(SSDP_PORT, server_protocol, interface=self.router_address)
|
|
|
|
# self.server_port.transport.joinGroup(SSDP_IP_ADDRESS, interface=self.router_address)
|
|
|
|
#
|
|
|
|
# self.upnp = UPnP(
|
|
|
|
# self.reactor, debug_ssdp=True, router_ip=self.router_address,
|
|
|
|
# lan_ip=self.client_address, iface_name='mock'
|
|
|
|
# )
|
|
|
|
# yield self.upnp.discover()
|
|
|
|
#
|
|
|
|
# def test_parse_available_commands(self):
|
|
|
|
# self.assertDictEqual(self.expected_available_commands, self.upnp.gateway.debug_commands()['available'])
|
|
|
|
#
|
|
|
|
# def test_parse_gateway(self):
|
|
|
|
# self.assertDictEqual(self.device.device_dict['gateway_dict'], self.upnp.gateway.as_dict())
|
|
|
|
#
|
|
|
|
# @defer.inlineCallbacks
|
|
|
|
# def test_commands(self):
|
|
|
|
# method, args, expected = self.device.device_dict['soap'][0]
|
|
|
|
# command1 = getattr(self.upnp, method)
|
|
|
|
# result = yield command1(*tuple(args))
|
|
|
|
# self.assertEqual(result, expected)
|
|
|
|
#
|
|
|
|
# method, args, expected = self.device.device_dict['soap'][1]
|
|
|
|
# command2 = getattr(self.upnp, method)
|
|
|
|
# result = yield command2(*tuple(args))
|
|
|
|
# result = [[i for i in r] for r in result]
|
|
|
|
# self.assertListEqual(result, expected)
|
|
|
|
#
|
|
|
|
# method, args, expected = self.device.device_dict['soap'][2]
|
|
|
|
# command3 = getattr(self.upnp, method)
|
|
|
|
# result = yield command3(*tuple(args))
|
|
|
|
# self.assertEqual(result, expected)
|
|
|
|
#
|
|
|
|
# method, args, expected = self.device.device_dict['soap'][3]
|
|
|
|
# command4 = getattr(self.upnp, method)
|
|
|
|
# result = yield command4(*tuple(args))
|
|
|
|
# result = [r for r in result]
|
|
|
|
# self.assertEqual(result, expected)
|
|
|
|
#
|
|
|
|
# method, args, expected = self.device.device_dict['soap'][4]
|
|
|
|
# command5 = getattr(self.upnp, method)
|
|
|
|
# result = yield command5(*tuple(args))
|
|
|
|
# self.assertEqual(result, expected)
|
|
|
|
#
|
|
|
|
#
|
|
|
|
# class TestDDWRTSSDP(TestSSDP):
|
|
|
|
# manufacturer, model = "DD-WRT", "router"
|
|
|
|
#
|
|
|
|
#
|
|
|
|
# class TestDDWRTSCPD(TestSCPD):
|
|
|
|
# manufacturer, model = "DD-WRT", "router"
|
|
|
|
#
|
|
|
|
#
|
|
|
|
# class TestMiniUPnPMiniUPnPd(TestSSDP):
|
|
|
|
# manufacturer, model = "MiniUPnP", "MiniUPnPd"
|
|
|
|
#
|
|
|
|
#
|
|
|
|
# class TestMiniUPnPMiniUPnPdSCPD(TestSCPD):
|
|
|
|
# manufacturer, model = "MiniUPnP", "MiniUPnPd"
|