def test_project_create(tmpdir, controller): """ Test a post on a local servers. The project is not created on the server and should be created automatically. And after make the call """ uuid = str(uuid4()) project = Project() project.setFilesDir(str(tmpdir)) project.setName("test") project.create() mock = controller._http_client.createHTTPQuery assert mock.called args, kwargs = mock.call_args assert args[0] == "POST" assert args[1] == "/projects" assert kwargs["body"] == {"name": "test", "path": str(tmpdir), "grid_size": 75, "drawing_grid_size": 25, "show_grid": False, "snap_to_grid": False, "show_interface_labels": False} args[2]({"project_id": uuid, "name": "test"}) assert project._closed is False
def test_image_in_project(tmpdir): project_dir = tmpdir / "project" / "project-files" os.makedirs(str(project_dir / "images")) project = Project() project.setFilesDir(str(tmpdir / "project")) topology = Topology() topology.project = project with open(str(project_dir / "images" / "1.jpg"), "w+") as f: f.write("AA") image1 = PixmapImageItem(None, "images/1.jpg") topology.addImage(image1) assert image1 in topology._images image2 = PixmapImageItem(None, "images/1.jpg") topology.addImage(image2) assert image1 in topology._images assert image2 in topology._images topology.removeImage(image2) assert os.path.exists(str(project_dir / "images" / "1.jpg")) # If not image use this file delete it topology.removeImage(image1) assert not os.path.exists(str(project_dir / "images" / "1.jpg"))
def test_project_create(tmpdir, controller): """ Test a post on a local servers. The project is not created on the server and should be created automatically. And after make the call """ uuid = str(uuid4()) project = Project() project.setFilesDir(str(tmpdir)) project.setName("test") project.create() mock = controller._http_client.createHTTPQuery assert mock.called args, kwargs = mock.call_args assert args[0] == "POST" assert args[1] == "/projects" assert kwargs["body"] == {"name": "test", "path": str(tmpdir), "show_interface_labels": False} args[2]({"project_id": uuid, "name": "test"}) assert project._closed is False
def test_project_post_non_created_project_local_server(tmpdir, local_server): """ Test a post on a local servers. The project is not created on the server and should be created automaticaly. And after make the call """ uuid = str(uuid4()) project = Project() project.setId(uuid) project.setFilesDir(str(tmpdir)) with patch("gns3.http_client.HTTPClient.createHTTPQuery") as mock: project.post(local_server, "/test", lambda: 0, body={"test": "test"}) args, kwargs = mock.call_args assert args[0] == "POST" assert args[1] == "/projects" assert kwargs["body"] == {"name": "untitled", "temporary": False, "project_id": uuid, "path": str(tmpdir)} args[2]({}, server=local_server) assert len(project._created_servers) == 1 args, kwargs = mock.call_args assert args[0] == "POST" assert args[1] == "/projects/{uuid}/test".format(uuid=uuid) assert kwargs["body"] == {"test": "test"}
def test_image_outside_project(tmpdir): """ By security we do not delete image outside project. This should not append but if someone reuse the image items for something else. """ project_img_dir = tmpdir / "project" / "project-files" / "images" os.makedirs(str(project_img_dir)) project = Project() project.setFilesDir(str(tmpdir / "project")) topology = Topology() topology.project = project with open(str(tmpdir / "1.jpg"), "w+") as f: f.write("AA") image1 = PixmapImageItem(None, str(tmpdir / "1.jpg")) topology.addImage(image1) assert image1 in topology._images topology.removeImage(image1) assert os.path.exists(str(tmpdir / "1.jpg"))
def test_topology_file(tmpdir): project = Project() project.setName("test") project.setFilesDir(str(tmpdir)) assert project.topologyFile() == str(tmpdir / "test.gns3")