aboutsummaryrefslogtreecommitdiffstats
path: root/app/test/event_based_scan/test_port_add.py
diff options
context:
space:
mode:
Diffstat (limited to 'app/test/event_based_scan/test_port_add.py')
-rw-r--r--app/test/event_based_scan/test_port_add.py75
1 files changed, 75 insertions, 0 deletions
diff --git a/app/test/event_based_scan/test_port_add.py b/app/test/event_based_scan/test_port_add.py
new file mode 100644
index 0000000..8bf2553
--- /dev/null
+++ b/app/test/event_based_scan/test_port_add.py
@@ -0,0 +1,75 @@
+###############################################################################
+# Copyright (c) 2017 Koren Lev (Cisco Systems), Yaron Yogev (Cisco Systems) #
+# and others #
+# #
+# All rights reserved. This program and the accompanying materials #
+# are made available under the terms of the Apache License, Version 2.0 #
+# which accompanies this distribution, and is available at #
+# http://www.apache.org/licenses/LICENSE-2.0 #
+###############################################################################
+from unittest.mock import MagicMock
+
+from discover.events.event_port_add import EventPortAdd
+from discover.fetchers.api.api_fetch_host_instances import ApiFetchHostInstances
+from discover.fetchers.cli.cli_fetch_instance_vnics import CliFetchInstanceVnics
+from discover.find_links_for_instance_vnics import FindLinksForInstanceVnics
+from discover.find_links_for_vedges import FindLinksForVedges
+from discover.scanner import Scanner
+from test.event_based_scan.test_data.event_payload_port_add import EVENT_PAYLOAD_PORT_INSTANCE_ADD, NETWORK_DOC, \
+ INSTANCE_DOC, INSTANCES_ROOT, VNIC_DOCS, INSTANCE_DOCS
+from test.event_based_scan.test_event import TestEvent
+
+
+class TestPortAdd(TestEvent):
+ def test_handle_port_add(self):
+ self.values = EVENT_PAYLOAD_PORT_INSTANCE_ADD
+ self.payload = self.values['payload']
+ self.port = self.payload['port']
+ self.port_id = self.port['id']
+ self.item_ids.append(self.port_id)
+
+ # prepare data for test
+ self.set_item(NETWORK_DOC)
+ self.set_item(INSTANCE_DOC)
+ self.set_item(INSTANCES_ROOT)
+ self.item_ids.append(VNIC_DOCS[0]['id'])
+
+ # mock methods
+ original_get_instance = ApiFetchHostInstances.get
+ ApiFetchHostInstances.get = MagicMock(return_value=INSTANCE_DOCS)
+
+ original_get_vnic = CliFetchInstanceVnics.get
+ CliFetchInstanceVnics.get = MagicMock(return_value=VNIC_DOCS)
+
+ original_find_link_instance = FindLinksForInstanceVnics.add_links
+ original_find_link_vedge = FindLinksForVedges.add_links
+ original_scan = Scanner.scan_cliques
+
+ FindLinksForInstanceVnics.add_links = MagicMock(return_value=None)
+ FindLinksForVedges.add_links = MagicMock(return_value=None)
+ Scanner.scan_cliques = MagicMock(return_value=None)
+
+ # add network document
+ EventPortAdd().handle(self.env, self.values)
+
+ # check network document
+ port_document = self.inv.get_by_id(self.env, self.port_id)
+ self.assertIsNotNone(port_document)
+ self.assertEqual(port_document["name"], self.port['name'])
+
+ instance = self.inv.get_by_id(self.env, INSTANCE_DOC['id'])
+ self.assertEqual(instance["network_info"][0]['devname'],
+ INSTANCE_DOCS[0]["network_info"][0]['devname'])
+ self.assertEqual(instance["network_info"],
+ INSTANCE_DOCS[0]["network_info"])
+ self.assertEqual(instance["network"], INSTANCE_DOCS[0]["network"])
+
+ vnic = self.inv.get_by_field(self.env, 'vnic', 'mac_address',
+ self.port['mac_address'])
+ self.assertIsNotNone(vnic)
+
+ FindLinksForVedges.add_links = original_find_link_vedge
+ FindLinksForInstanceVnics.add_links = original_find_link_instance
+ Scanner.scan_cliques = original_scan
+ CliFetchInstanceVnics.get = original_get_vnic
+ ApiFetchHostInstances.get = original_get_instance