mirror of
https://github.com/GNS3/gns3-server.git
synced 2026-10-12 21:45:41 +03:00
controller_host is recorded on the mounted compute sub-application when the controller queries the compute capabilities; the test relied on another test having made that call first and failed when run on its own. Set the state directly in the test.
70 lines
3.0 KiB
Python
70 lines
3.0 KiB
Python
#
|
|
# Copyright (C) 2020 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 <http://www.gnu.org/licenses/>.
|
|
|
|
import pytest
|
|
from fastapi import FastAPI, status
|
|
from httpx import AsyncClient
|
|
from starlette.routing import Mount
|
|
|
|
from gns3server.version import __version__
|
|
|
|
pytestmark = pytest.mark.asyncio
|
|
|
|
|
|
class TestVersionRoutes:
|
|
async def test_version_output(self, app: FastAPI, client: AsyncClient) -> None:
|
|
|
|
# controller_host is recorded on the mounted compute sub-application
|
|
# when the controller queries the compute capabilities. Set it
|
|
# directly so this test does not depend on another test having made
|
|
# that call first (it failed when run on its own).
|
|
for route in app.routes:
|
|
if isinstance(route, Mount) and route.name == "compute":
|
|
route.app.state.controller_host = "127.0.0.1"
|
|
|
|
response = await client.get(app.url_path_for("get_version"))
|
|
assert response.status_code == status.HTTP_200_OK
|
|
assert response.json() == {"controller_host": "127.0.0.1", "local": False, "version": __version__}
|
|
|
|
async def test_version_input(self, app: FastAPI, client: AsyncClient) -> None:
|
|
|
|
params = {"version": __version__}
|
|
response = await client.post(app.url_path_for("check_version"), json=params)
|
|
assert response.status_code == status.HTTP_200_OK
|
|
assert response.json() == {"version": __version__}
|
|
|
|
async def test_version_invalid_input(self, app: FastAPI, client: AsyncClient) -> None:
|
|
|
|
params = {"version": "0.4.2"}
|
|
response = await client.post(app.url_path_for("check_version"), json=params)
|
|
assert response.status_code == status.HTTP_409_CONFLICT
|
|
assert response.json() == {
|
|
"message": f"Client version 0.4.2 is not the same as server version {__version__}",
|
|
"code": "conflict",
|
|
}
|
|
|
|
async def test_version_invalid_input_schema(self, app: FastAPI, client: AsyncClient) -> None:
|
|
|
|
params = {"version": "0.4.2", "bla": "blu"}
|
|
response = await client.post(app.url_path_for("check_version"), json=params)
|
|
assert response.status_code == status.HTTP_409_CONFLICT
|
|
|
|
async def test_version_invalid_json(self, app: FastAPI, client: AsyncClient) -> None:
|
|
|
|
params = "BOUM"
|
|
response = await client.post(app.url_path_for("check_version"), json=params)
|
|
assert response.status_code == status.HTTP_422_UNPROCESSABLE_CONTENT
|