def test_basic_topology(tmpdir, async_run, controller): project = Project(name="Test", controller=controller) compute = Compute("my_compute", controller) compute.http_query = MagicMock() with asyncio_patch("gns3server.controller.node.Node.create"): node1 = async_run( project.add_node(compute, "Node 1", str(uuid.uuid4()), node_type="qemu")) node2 = async_run( project.add_node(compute, "Node 2", str(uuid.uuid4()), node_type="qemu")) link = async_run(project.add_link()) async_run(link.add_node(node1, 0, 0)) with asyncio_patch("gns3server.controller.udp_link.UDPLink.create" ) as mock_udp_create: async_run(link.add_node(node2, 0, 0)) drawing = async_run(project.add_drawing(svg="<svg></svg>")) topo = project_to_topology(project) assert len(topo["topology"]["nodes"]) == 2 assert node1.__json__(topology_dump=True) in topo["topology"]["nodes"] assert topo["topology"]["links"][0] == link.__json__(topology_dump=True) assert topo["topology"]["computes"][0] == compute.__json__( topology_dump=True) assert topo["topology"]["drawings"][0] == drawing.__json__( topology_dump=True)
def test_delete_node_delete_link(async_run, controller): """ Delete a node delete all the node connected """ compute = MagicMock() project = Project(controller=controller, name="Test") project.emit_notification = MagicMock() response = MagicMock() response.json = {"console": 2048} compute.post = AsyncioMagicMock(return_value=response) node = async_run( project.add_node(compute, "test", None, node_type="vpcs", properties={"startup_config": "test.cfg"})) link = async_run(project.add_link()) async_run(link.add_node(node, 0, 0)) async_run(project.delete_node(node.id)) assert node.id not in project._nodes assert link.id not in project._links compute.delete.assert_any_call('/projects/{}/vpcs/nodes/{}'.format( project.id, node.id)) project.emit_notification.assert_any_call("node.deleted", node.__json__()) project.emit_notification.assert_any_call("link.deleted", link.__json__())
def test_basic_topology(tmpdir, async_run, controller): project = Project(name="Test", controller=controller) compute = Compute("my_compute", controller) compute.http_query = MagicMock() with asyncio_patch("gns3server.controller.node.Node.create"): node1 = async_run(project.add_node(compute, "Node 1", str(uuid.uuid4()), node_type="qemu")) node2 = async_run(project.add_node(compute, "Node 2", str(uuid.uuid4()), node_type="qemu")) link = async_run(project.add_link()) async_run(link.add_node(node1, 0, 0)) with asyncio_patch("gns3server.controller.udp_link.UDPLink.create") as mock_udp_create: async_run(link.add_node(node2, 0, 0)) drawing = async_run(project.add_drawing(svg="<svg></svg>")) topo = project_to_topology(project) assert len(topo["topology"]["nodes"]) == 2 assert node1.__json__(topology_dump=True) in topo["topology"]["nodes"] assert topo["topology"]["links"][0] == link.__json__(topology_dump=True) assert topo["topology"]["computes"][0] == compute.__json__(topology_dump=True) assert topo["topology"]["drawings"][0] == drawing.__json__(topology_dump=True)
def test_delete_node_delete_link(async_run, controller): """ Delete a node delete all the node connected """ compute = MagicMock() project = Project(controller=controller, name="Test") controller._notification = MagicMock() response = MagicMock() response.json = {"console": 2048} compute.post = AsyncioMagicMock(return_value=response) node = async_run(project.add_node(compute, "test", None, node_type="vpcs", properties={"startup_config": "test.cfg"})) link = async_run(project.add_link()) async_run(link.add_node(node, 0, 0)) async_run(project.delete_node(node.id)) assert node.id not in project._nodes assert link.id not in project._links compute.delete.assert_any_call('/projects/{}/vpcs/nodes/{}'.format(project.id, node.id)) controller.notification.emit.assert_any_call("node.deleted", node.__json__()) controller.notification.emit.assert_any_call("link.deleted", link.__json__())