示例#1
0
    def test_remove_mapping(self, *_):
        mapper = IGDPortMapper()

        obj = object()
        mapper.upnp.deleteportmapping.return_value = obj

        assert mapper.remove_mapping(40102, 40102) is obj
示例#2
0
    def test_available(self, *_):
        mapper = IGDPortMapper()

        assert mapper._available is None
        assert not mapper.available

        mapper._available = False
        assert not mapper.available

        mapper._available = True
        assert mapper.available
示例#3
0
    def test_network(self, *_):
        mapper = IGDPortMapper()
        keys = [
            'local_ip_address', 'external_ip_address', 'connection_type',
            'status_info'
        ]

        network = mapper.network
        assert all(key in network for key in keys)
示例#4
0
    def test_mapping_exists_failure(self, *_):
        mapper = IGDPortMapper()

        mapper.get_mapping = Mock(return_value=None)

        assert not mapper._mapping_exists(40102, 40102, protocol='TCP')
        assert not mapper._mapping_exists(40102, 40102, protocol='UDP')
        assert not mapper._mapping_exists(40102, 40112, protocol='TCP')

        mapper.get_mapping = Mock(return_value=Exception)

        assert not mapper._mapping_exists(40102, 40102, protocol='TCP')
        assert not mapper._mapping_exists(40102, 40102, protocol='UDP')
        assert not mapper._mapping_exists(40102, 40112, protocol='TCP')
示例#5
0
文件: mapper.py 项目: U0001F3A2/golem
    def __init__(self, mappers=None):
        from golem.network.upnp.igd import IGDPortMapper

        self._mappers = mappers or [IGDPortMapper()]
        self._active_mapper = None

        self._mapping = {'TCP': dict(), 'UDP': dict()}
        self._network = {
            'local_ip_address': None,
            'external_ip_address': None,
            'connection_type': None,
            'status_info': None
        }
示例#6
0
    def test_discover(self, *_):
        mapper = IGDPortMapper()

        mapper.upnp.discover.return_value = 0
        with self.assertRaises(RuntimeError):
            mapper.discover()
        assert not mapper.available

        mapper.upnp.discover.return_value = 1
        mapper.discover()
        assert mapper.available
示例#7
0
    def test_create_mapping(self, *_):
        mapping = '10.0.0.10', 40112, 'desc', True, 3600
        mapper = IGDPortMapper()
        mapper._mapping_exists = Mock(return_value=False)

        mapper.upnp.addanyportmapping.side_effect = Exception
        mapper.upnp.addportmapping.return_value = 41102
        mapper.upnp.getspecificportmapping = lambda x, *_: \
            None if x == 41102 else mapping

        assert mapper.create_mapping(40102, 40102) == 41102
        assert mapper.create_mapping(40102, 40112) == 41102
        assert mapper.create_mapping(40102) == 41102

        mapper.upnp.addanyportmapping.side_effect = lambda *_: 45555
        assert mapper.create_mapping(40102, 40102) == 45555
        assert mapper.create_mapping(40102, 40112) == 45555
        assert mapper.create_mapping(40102) == 45555
示例#8
0
    def test_mapping_exists(self, *_):
        def upnp_get_port_mapping(_self, external_port, protocol):
            if external_port == 40112 and protocol == 'TCP':
                return '10.0.0.10', 40102, 'desc', True, 3600
            return '10.0.0.11', 40112, 'desc', True, 3600

        mapper = IGDPortMapper()
        mapper.upnp.lanaddr = '10.0.0.10'
        mapper.upnp.externalipaddress = Mock(return_value='1.2.3.4')
        mapper.upnp.connectiontype = Mock(return_value='')
        mapper.upnp.statusinfo = Mock(return_value='')
        mapper.upnp.getspecificportmapping = MethodType(
            upnp_get_port_mapping, mapper.upnp)

        assert not mapper._mapping_exists(40102, 40102)
        assert not mapper._mapping_exists(40102, 40112, protocol='UDP')
        assert mapper._mapping_exists(40102, 40112, protocol='TCP')
        assert mapper._mapping_exists(40102, 40112)
示例#9
0
    def test_find_free_port(self, *_):
        mapping = '10.0.0.10', 40112, 'desc', True, 3600

        mapper = IGDPortMapper()
        mapper.upnp.getspecificportmapping.return_value = mapping

        with self.assertRaises(RuntimeError):
            mapper._find_free_port(40102, 'TCP')

        mapper.upnp.getspecificportmapping.side_effect = lambda x, *_: \
            None if x == 40112 else mapping

        assert mapper._find_free_port(40102, 'TCP') == 40112

        mapper.upnp.getspecificportmapping.side_effect = lambda x, *_: \
            None if x == 1025 else mapping

        assert mapper._find_free_port(40102, 'TCP') == 1025
示例#10
0
    def test_create_mapping_exists(self, *_):
        mapper = IGDPortMapper()
        mapper._mapping_exists = Mock(return_value=True)

        assert mapper.create_mapping(40102, 40102) == 40102
        assert mapper.create_mapping(40102, 40112) == 40112