blob: 22e0f433ccfd7a92285f5009feac9c41cafd2aa5 [file] [log] [blame]
% Regression tests on Windows only for Scapy
# More information at http://www.secdev.org/projects/UTscapy/
+ Configuration
= Imports
from unittest import mock
############
############
+ Mechanics tests
= Automaton - Test select_objects edge cases
assert select_objects([ObjectPipe()], 0) == []
assert select_objects([ObjectPipe()], 1) == []
a = ObjectPipe()
a.send("test")
assert select_objects([a], 0) == [a]
############
############
+ Windows arch unit tests
= Test network_name
iface = conf.iface
assert network_name(iface.name) == iface.network_name
assert network_name(iface.description) == iface.network_name
assert network_name(iface.network_name) == iface.network_name
= dev_from_networkname
from scapy.config import conf
assert dev_from_networkname(conf.iface.network_name).guid == conf.iface.guid
= test pcap_service_status
~ npcap_service
from scapy.arch.windows import pcap_service_status
status = pcap_service_status()
assert status
= test get_if_list
from scapy.interfaces import get_if_list
print(get_if_list())
assert all(x.startswith(r"\Device\NPF_") for x in get_if_list())
= test pcap_service_stop
~ appveyor_only require_gui npcap_service
from scapy.arch.windows import pcap_service_stop
pcap_service_stop()
assert pcap_service_status() == False
= test pcap_service_start
~ appveyor_only require_gui npcap_service
from scapy.arch.windows import pcap_service_start
pcap_service_start()
assert pcap_service_status() == True
= Test auto-pcap start UI
@mock.patch("scapy.arch.windows.get_windows_if_list")
def _test_autostart_ui(mocked_getiflist):
mocked_getiflist.side_effect = lambda: []
conf.ifaces.reload()
assert all(x.index < 0 for x in conf.ifaces.data.values())
try:
old_ifaces = conf.ifaces.data.copy()
_test_autostart_ui()
finally:
conf.ifaces.data = old_ifaces
######### Native mode ###########
+ Test Windows Native sockets
= Set up native mode
conf.use_pcap = False
conf.route.resync()
conf.ifaces.reload()
assert conf.use_pcap == False
= Ping
~ netaccess needs_root
def _test():
with conf.L3socket() as a:
answer = a.sr1(IP(dst="1.1.1.1", ttl=128)/ICMP()/"abcdefghijklmnopqrstuvwabcdefghi", timeout=2)
answer.show()
assert ICMP in answer
retry_test(_test)
= DNS lookup
~ netaccess needs_root
def _test():
answer = sr1(IP(dst="8.8.8.8")/UDP()/DNS(rd=1, qd=DNSQR(qname="www.google.com")), timeout=2)
answer.show()
assert DNS in answer
assert answer.qd.qname == b'www.google.com.'
retry_test(_test)
= Leave native mode
conf.use_pcap = True
conf.route.resync()
conf.ifaces.reload()
assert conf.use_pcap == True