1
0
Fork 0
mirror of https://github.com/retspen/webvirtcloud synced 2026-11-08 19:26:48 +00:00
webvirtcloud/instances/tests/test_audit_rows.py
catborise 764cbb3c43 chore: remove code nothing uses
Each was checked with git grep across every tracked file (templates, JS,
shell, unit files and the extensionless console daemons) and for
dynamic use (URL names, template names, registries):

- vrtManager: host_is_up, is_kvm_supported, get_emulators,
  get_file_extensions, both get_network_forward, get_snapshots,
  get_storages_images, get_os_type, get_host_arch, the get_pretty_* trio
  and, in util, is_kvm_available, randomMAC, get_max_vcpus, compareMAC,
  pretty_mem, pretty_bytes and validate_uuid; with them the port
  constants only host_is_up read. Some were reached only by their tests,
  which go too.
- The flavor edit page: nothing linked to it; flavors are created and
  deleted on the Flavors page and edited through the API.
- computes.validate_name, UserForm.identity_has_errors, the has_perm
  template tag, the ALLOW_EMPTY_PASSWORD setting nothing reads,
  hidePleaseWaitDialog, default_app_config (ignored since Django 4.1)
  and the Python < 3.6 lines of secret_generator.py.
2026-11-06 10:53:37 +03:00

74 lines
3.7 KiB
Python

"""VM page owner changes and flavor changes write rows on the Logs page."""
from accounts.models import UserInstance
from appsettings.models import AppSettings
from computes.models import Compute
from django.contrib.auth import get_user_model
from django.test import TestCase
from django.urls import reverse
from instances.models import Instance
from logs.models import Logs
def rows():
return list(Logs.objects.order_by("id").values_list("message", "success"))
class VMOwnerRowTests(TestCase):
def setUp(self):
self.client.force_login(get_user_model().objects.create_superuser("audit-admin", "audit@example.com", "pw"))
self.bob = get_user_model().objects.create_user("bob")
self.carol = get_user_model().objects.create_user("carol")
compute = Compute.objects.create(name="c1", hostname="127.0.0.1", login="", password="", type=4)
self.vm = Instance.objects.create(compute=compute, name="vm", uuid="77777777-7777-7777-7777-777777777777")
Logs.objects.all().delete() # the login's row
def test_vm_page_owners(self):
add = reverse("instances:add_owner", args=[self.vm.pk])
self.client.post(add, {"user_id": self.bob.pk})
self.client.post(add, {"user_id": self.bob.pk}) # already an owner: nothing changed
AppSettings.objects.filter(key="ALLOW_INSTANCE_MULTIPLE_OWNER").update(value="False")
self.client.post(add, {"user_id": self.carol.pk})
self.assertFalse(UserInstance.objects.filter(user=self.carol).exists())
ui = UserInstance.objects.get(user=self.bob)
self.client.post(reverse("accounts:user_instance_delete", args=[ui.pk]))
self.assertEqual(rows(), [
("VM vm: add owner bob", True),
("VM vm: add owner carol: only one owner is allowed", False),
("VM vm: remove owner bob", True),
])
shown = [log["message"] for log in self.client.get(reverse("vm_logs", args=[self.vm.pk])).json()]
self.assertCountEqual(shown, [m for m, _ in rows()])
class FlavorRowTests(TestCase):
def setUp(self):
self.admin = get_user_model().objects.create_superuser("audit-admin", "audit@example.com", "pw")
self.client.force_login(self.admin)
Logs.objects.all().delete() # the login's row
def test_flavor_web_and_api(self):
from instances.models import Flavor
from rest_framework.test import APIClient
data = {"label": "tiny-a", "memory": 512, "vcpu": 1, "disk": 10}
self.client.post(reverse("instances:flavor_create"), data)
flavor = Flavor.objects.get(label="tiny-a")
self.client.post(reverse("instances:flavor_delete", args=[flavor.pk]))
self.assertFalse(Flavor.objects.filter(label="tiny-a").exists())
api = APIClient()
api.force_authenticate(self.admin)
data = {"label": "huge-a", "memory": 4096, "vcpu": 4, "disk": 40}
self.assertEqual(api.post(reverse("instance-flavor-list"), data, format="json").status_code, 201)
detail = reverse("instance-flavor-detail", args=[Flavor.objects.get(label="huge-a").pk])
self.assertEqual(api.patch(detail, {"vcpu": 8}, format="json").status_code, 200)
self.assertEqual(api.put(detail, {**data, "vcpu": 8, "memory": 8192}, format="json").status_code, 200)
self.assertEqual(Flavor.objects.get(label="huge-a").memory, 8192)
self.assertEqual(api.delete(detail).status_code, 204)
self.assertFalse(Flavor.objects.filter(label="huge-a").exists())
self.assertEqual([m for m, _ in rows()], [
"Flavor tiny-a: add", "Flavor tiny-a: delete",
"Flavor huge-a: add", "Flavor huge-a: change vcpu", "Flavor huge-a: change memory", "Flavor huge-a: delete",
])