#!/usr/bin/env python # # Copyright (C) 2016 GNS3 Technologies Inc. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . import pytest import uuid import aiohttp from unittest.mock import MagicMock from gns3server.controller import Controller from gns3server.controller.hypervisor import Hypervisor from gns3server.controller.project import Project from gns3server.config import Config def test_isEnabled(controller): Config.instance().set("Server", "controller", False) assert not controller.isEnabled() Config.instance().set("Server", "controller", True) assert controller.isEnabled() def test_addHypervisor(controller): hypervisor1 = Hypervisor("test1") controller.addHypervisor(hypervisor1) assert len(controller.hypervisors) == 1 controller.addHypervisor(Hypervisor("test1")) assert len(controller.hypervisors) == 1 controller.addHypervisor(Hypervisor("test2")) assert len(controller.hypervisors) == 2 def test_addProject(controller, async_run): uuid1 = str(uuid.uuid4()) project1 = Project(project_id=uuid1) uuid2 = str(uuid.uuid4()) async_run(controller.addProject(project1)) assert len(controller.projects) == 1 async_run(controller.addProject(Project(project_id=uuid1))) assert len(controller.projects) == 1 async_run(controller.addProject(Project(project_id=uuid2))) assert len(controller.projects) == 2 def test_removeProject(controller, async_run): uuid1 = str(uuid.uuid4()) project1 = Project(project_id=uuid1) async_run(controller.addProject(project1)) assert len(controller.projects) == 1 controller.removeProject(project1) assert len(controller.projects) == 0 def test_addProject_with_hypervisor(controller, async_run): uuid1 = str(uuid.uuid4()) project1 = Project(project_id=uuid1) hypervisor = Hypervisor("test1") hypervisor.post = MagicMock() controller.addHypervisor(hypervisor) async_run(controller.addProject(project1)) hypervisor.post.assert_called_with("/projects", project1) def test_getProject(controller, async_run): uuid1 = str(uuid.uuid4()) project = Project(project_id=uuid1) async_run(controller.addProject(project)) assert controller.getProject(uuid1) == project with pytest.raises(aiohttp.web.HTTPNotFound): assert controller.getProject("dsdssd")