diff --git a/console/tests.py b/console/tests.py index 83d02d1e..2fc7bfe1 100644 --- a/console/tests.py +++ b/console/tests.py @@ -1,19 +1,27 @@ +# pylint: disable=no-member import importlib.machinery +import importlib.util from pathlib import Path from unittest.mock import MagicMock, patch -from accounts.models import UserInstance -from computes.models import Compute from django.contrib.auth import get_user_model from django.contrib.auth.models import Permission from django.test import TestCase, override_settings from django.urls import reverse -from instances.models import Instance from libvirt import libvirtError +from accounts.models import UserInstance +from computes.models import Compute +from instances.models import Instance + # Dynamically load console/novncd script for testing -NOVNCD_PATH = Path(__file__).resolve().parent / "novncd" -novncd_mod = importlib.machinery.SourceFileLoader("novncd_mod", str(NOVNCD_PATH)).load_module() +NOVNCD_PATH = str(Path(__file__).resolve().parent / "novncd") +_loader = importlib.machinery.SourceFileLoader("novncd_mod", NOVNCD_PATH) +_spec = importlib.util.spec_from_file_location( + "novncd_mod", NOVNCD_PATH, loader=_loader +) +novncd_mod = importlib.util.module_from_spec(_spec) +_loader.exec_module(novncd_mod) class ConsoleViewsTestCase(TestCase): @@ -281,7 +289,6 @@ class ConsoleViewsTestCase(TestCase): ) - class NovncdDaemonLogicTestCase(TestCase): def setUp(self): self.get_parser = novncd_mod.get_parser @@ -296,7 +303,9 @@ class NovncdDaemonLogicTestCase(TestCase): def test_novncd_parser_custom_arguments(self): parser = self.get_parser() - opts = parser.parse_args(["-v", "-d", "-H", "192.168.1.100", "-p", "7070", "-c", "/path/to/cert.pem"]) + opts = parser.parse_args( + ["-v", "-d", "-H", "192.168.1.100", "-p", "7070", "-c", "/path/to/cert.pem"] + ) self.assertTrue(opts.verbose) self.assertTrue(opts.debug) self.assertEqual(opts.host, "192.168.1.100") @@ -305,7 +314,15 @@ class NovncdDaemonLogicTestCase(TestCase): @patch.object(novncd_mod, "get_connection_infos") def test_compatibility_mixin_token_from_cookie(self, mock_get_info): - mock_get_info.return_value = ("host1", 22, "root", 1, "192.168.1.50", 5900, None) + mock_get_info.return_value = ( + "host1", + 22, + "root", + 1, + "192.168.1.50", + 5900, + None, + ) handler = self.CompatibilityMixIn() handler.headers = {"cookie": "other=123; token=1-uuid-from-cookie; test=456"} @@ -322,7 +339,15 @@ class NovncdDaemonLogicTestCase(TestCase): @patch.object(novncd_mod, "get_connection_infos") def test_compatibility_mixin_token_from_query_params(self, mock_get_info): - mock_get_info.return_value = ("host2", 22, "root", 1, "192.168.1.50", 5901, None) + mock_get_info.return_value = ( + "host2", + 22, + "root", + 1, + "192.168.1.50", + 5901, + None, + ) handler = self.CompatibilityMixIn() handler.headers = {} @@ -350,4 +375,6 @@ class NovncdDaemonLogicTestCase(TestCase): mock_get_info.assert_not_called() socket_factory.assert_not_called() - handler.msg.assert_called_with("No console token provided in cookie or query parameters") + handler.msg.assert_called_with( + "No console token provided in cookie or query parameters" + ) diff --git a/console/views.py b/console/views.py index 31df4a5c..1239f6ab 100644 --- a/console/views.py +++ b/console/views.py @@ -1,14 +1,15 @@ # pylint: disable=no-name-in-module,no-member import re -from accounts.models import UserInstance -from appsettings.settings import app_settings +from django.conf import settings from django.http.response import HttpResponseServerError from django.shortcuts import render from django.utils.translation import gettext_lazy as _ -from instances.models import Instance -from django.conf import settings from libvirt import libvirtError + +from accounts.models import UserInstance +from appsettings.settings import app_settings +from instances.models import Instance from vrtManager.instance import wvmInstance @@ -18,18 +19,20 @@ def console(request): :return: """ console_error = None + token = "" + view_type = "lite" + view_only = app_settings.CONSOLE_VIEW_ONLY.lower() + scale = app_settings.CONSOLE_SCALE.lower() + resize_session = app_settings.CONSOLE_RESIZE_SESSION.lower() + clip_viewport = app_settings.CONSOLE_CLIP_VIEWPORT.lower() if request.method == "GET": - token = request.GET.get("token", "") - view_type = request.GET.get("view", "lite") - view_only = request.GET.get("view_only", app_settings.CONSOLE_VIEW_ONLY.lower()) - scale = request.GET.get("scale", app_settings.CONSOLE_SCALE.lower()) - resize_session = request.GET.get( - "resize_session", app_settings.CONSOLE_RESIZE_SESSION.lower() - ) - clip_viewport = request.GET.get( - "clip_viewport", app_settings.CONSOLE_CLIP_VIEWPORT.lower() - ) + token = request.GET.get("token", token) + view_type = request.GET.get("view", view_type) + view_only = request.GET.get("view_only", view_only) + scale = request.GET.get("scale", scale) + resize_session = request.GET.get("resize_session", resize_session) + clip_viewport = request.GET.get("clip_viewport", clip_viewport) try: temptoken = token.split("-", 1)