From 3b70b4f2174cf85d6e46342ffa3fbe0df21a72b4 Mon Sep 17 00:00:00 2001 From: Julien Duponchelle Date: Mon, 18 Jul 2016 21:30:30 +0200 Subject: [PATCH] Raise an error if you overwrite an existing project --- gns3server/controller/project.py | 7 ++++++- tests/controller/test_project.py | 15 +++++++++++++-- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/gns3server/controller/project.py b/gns3server/controller/project.py index 5fe751ce..7f3c6d4a 100644 --- a/gns3server/controller/project.py +++ b/gns3server/controller/project.py @@ -51,6 +51,12 @@ class Project: self._name = name self._auto_start = False self._status = status + + # Disallow overwrite of existing project + if project_id is None and path is not None: + if os.path.exists(path): + raise aiohttp.web.HTTPForbidden(text="The path {} already exist.".format(path)) + if project_id is None: self._id = str(uuid4()) else: @@ -187,7 +193,6 @@ class Project: return name raise aiohttp.web.HTTPConflict(text="A node name could not be allocated (node limit reached?)") - def has_allocated_node_name(self, name): """ Returns either a node name is already allocated or not. diff --git a/tests/controller/test_project.py b/tests/controller/test_project.py index 07c73746..8b300486 100644 --- a/tests/controller/test_project.py +++ b/tests/controller/test_project.py @@ -56,6 +56,17 @@ def test_path(tmpdir): assert os.path.exists(os.path.join(directory, p.id)) +def test_path_exist(tmpdir): + """ + Should raise an error when you try to owerwrite + an existing project + """ + os.makedirs(str(tmpdir / "demo")) + with pytest.raises(aiohttp.web.HTTPForbidden): + p = Project(name="Test", path=str(tmpdir / "demo")) + + + def test_init_path(tmpdir): p = Project(path=str(tmpdir), project_id=str(uuid4()), name="Test") @@ -69,8 +80,8 @@ def test_changing_path_with_quote_not_allowed(tmpdir): def test_captures_directory(tmpdir): - p = Project(path=str(tmpdir), name="Test") - assert p.captures_directory == str(tmpdir / "project-files" / "captures") + p = Project(path=str(tmpdir / "capturestest"), name="Test") + assert p.captures_directory == str(tmpdir / "capturestest" / "project-files" / "captures") assert os.path.exists(p.captures_directory)