@@ -23,7 +23,6 @@ def test_bacnet_integration():
23
23
test_config ["mqtt" ] = dict (device_id = "THUNDERBIRD-2" )
24
24
test_config ["bacnet" ] = dict (ip = None , port = None , interface = None )
25
25
test_config ["udmi" ] = {"discovery" : dict (ipv4 = False ,vendor = False ,ether = False ,bacnet = True )}
26
-
27
26
# Container for storing all discovery messages
28
27
messages = []
29
28
@@ -53,15 +52,53 @@ def test_bacnet_integration():
53
52
print (message .to_json ())
54
53
print ("----" )
55
54
56
- return
57
- assert False , "failing so messages are printed to terminal"
58
-
59
- expected_ethmacs = set (d ["ether" ] for d in docker_config .values ())
60
- seen_ethmac_toplevel = set (m .families ["ether" ].addr for m in messages if "ether" in m .families )
61
55
62
- expected_bacnet_ids = set (str (d ["bacnet_id" ]) for d in docker_config .values ())
56
+
57
+ expected_bacnet_ids = set (["1" ])
63
58
seen_bacnet_ids_toplevel = set (m .addr for m in messages if m .family == "bacnet" )
64
59
65
- # subset because passive scan will find the gateway and device itself
66
- assert seen_ethmac_toplevel == expected_ethmacs + 2
67
60
assert expected_bacnet_ids == seen_bacnet_ids_toplevel
61
+
62
+
63
+ def test_nmap ():
64
+
65
+ # This is the "config.json" which is passed to `main.py` typically
66
+ test_config = collections .defaultdict ()
67
+ test_config ["mqtt" ] = dict (device_id = "THUNDERBIRD-2" )
68
+ test_config ["mqtt" ] = dict (device_id = "THUNDERBIRD-2" )
69
+ test_config ["bacnet" ] = dict (ip = None , port = None , interface = None )
70
+ test_config ["udmi" ] = {"discovery" : dict (ipv4 = False ,vendor = False ,ether = True ,bacnet = False )}
71
+ test_config ["nmap" ] = dict (targets = ["192.168.12.1" ])
72
+
73
+ # Container for storing all discovery messages
74
+ messages = []
75
+
76
+ with (
77
+ mock .patch .object (
78
+ udmi .core .UDMICore , "publish_discovery" , new = messages .append
79
+ ) as published_discovery ,
80
+ ):
81
+ mock_mqtt_client = mock .MagicMock ()
82
+ udmi_client = udmi .core .UDMICore (publisher = mock_mqtt_client , topic_prefix = "notneeded" , config = test_config )
83
+
84
+ # Start discovery
85
+ udmi_client .config_handler (
86
+ json .dumps ({
87
+ "timestamp" : timestamp_now (),
88
+ "discovery" : {
89
+ "families" : {
90
+ "ether" : {"generation" : timestamp_now ()}
91
+ }
92
+ },
93
+ })
94
+ )
95
+
96
+ time .sleep (30 )
97
+
98
+ print (len (messages ))
99
+ for message in messages :
100
+ print (message .to_json ())
101
+ print ("----" )
102
+
103
+
104
+ assert False , "failing so messages are printed to terminal"
0 commit comments