tests/test_models.py (3323B)
1 """Tests for ap_scanner.models."""
2
3 from ap_scanner.models import AccessPoint, ActiveScanClient, ActiveScanResult
4
5
6 def test_is_hidden_empty_ssid(hidden_ap):
7 assert hidden_ap.is_hidden is True
8
9
10 def test_is_hidden_normal_ssid(sample_ap):
11 assert sample_ap.is_hidden is False
12
13
14 def test_is_hidden_null_bytes():
15 ap = AccessPoint(
16 bssid="FF:FF:FF:FF:FF:FF", ssid="\x00\x00\x00",
17 channel=1, rssi=-50, encryption="OPN", cipher="--",
18 auth="--", band="2.4GHz", wifi_standard="b",
19 )
20 assert ap.is_hidden is True
21
22
23 def test_is_hidden_whitespace_only():
24 ap = AccessPoint(
25 bssid="FF:FF:FF:FF:FF:FF", ssid=" ",
26 channel=1, rssi=-50, encryption="OPN", cipher="--",
27 auth="--", band="2.4GHz", wifi_standard="b",
28 )
29 assert ap.is_hidden is True
30
31
32 def test_display_ssid_hidden(hidden_ap):
33 assert hidden_ap.display_ssid == "[Hidden]"
34
35
36 def test_display_ssid_normal(sample_ap):
37 assert sample_ap.display_ssid == "TestNetwork"
38
39
40 def test_rssi_display_none():
41 ap = AccessPoint(
42 bssid="FF:FF:FF:FF:FF:FF", ssid="Test",
43 channel=1, rssi=None, encryption="OPN", cipher="--",
44 auth="--", band="2.4GHz", wifi_standard="b",
45 )
46 assert ap.rssi_display == "N/A"
47
48
49 def test_rssi_display_value(sample_ap):
50 assert sample_ap.rssi_display == "-42"
51
52
53 def test_standard_display_empty():
54 ap = AccessPoint(
55 bssid="FF:FF:FF:FF:FF:FF", ssid="Test",
56 channel=1, rssi=-50, encryption="OPN", cipher="--",
57 auth="--", band="2.4GHz", wifi_standard="",
58 )
59 assert ap.standard_display == "--"
60
61
62 def test_standard_display_value(sample_ap):
63 assert sample_ap.standard_display == "b, g, n"
64
65
66 def test_channel_display_bonded(hidden_ap):
67 assert hidden_ap.channel_display == "36+40+44+48"
68
69
70 def test_channel_display_primary():
71 ap = AccessPoint(
72 bssid="FF:FF:FF:FF:FF:FF", ssid="Test",
73 channel=6, rssi=-50, encryption="OPN", cipher="--",
74 auth="--", band="2.4GHz", wifi_standard="b",
75 )
76 assert ap.channel_display == "6"
77
78
79 # --- ActiveScanResult ---
80
81 def test_active_scan_result_defaults():
82 r = ActiveScanResult(bssid="AA:BB:CC:DD:EE:FF", ssid="Test")
83 assert r.connected is False
84 assert r.error == ""
85 assert r.clients == []
86 assert r.gateway_open_ports == []
87 assert r.client_count == 0
88
89
90 def test_active_scan_result_summary_success():
91 r = ActiveScanResult(
92 bssid="AA:BB:CC:DD:EE:FF", ssid="Test",
93 connected=True, assigned_ip="192.168.1.100",
94 gateway_ip="192.168.1.1",
95 clients=[ActiveScanClient(ip="192.168.1.50", mac="AA:AA:AA:AA:AA:AA")],
96 gateway_open_ports=[80, 443],
97 )
98 s = r.summary
99 assert "IP: 192.168.1.100" in s
100 assert "GW: 192.168.1.1" in s
101 assert "Clients: 1" in s
102 assert "80,443" in s
103
104
105 def test_active_scan_result_summary_failed():
106 r = ActiveScanResult(
107 bssid="AA:BB:CC:DD:EE:FF", ssid="Test",
108 error="Connection refused",
109 )
110 assert "Failed:" in r.summary
111 assert "Connection refused" in r.summary
112
113
114 def test_active_scan_result_summary_empty():
115 r = ActiveScanResult(bssid="AA:BB:CC:DD:EE:FF", ssid="Test")
116 assert r.summary == "No data collected"
117
118
119 def test_access_point_active_scan_none(sample_ap):
120 assert sample_ap.active_scan_result is None