Code development platform for open source projects from the European Union institutions

Skip to content
Snippets Groups Projects
Commit 5776aaa0 authored by Magdalena GOMEZ's avatar Magdalena GOMEZ
Browse files

Merge branch 'webhook-settings-ui-tests' into 'main'

:white_check_mark: Webhook settings ui tests

See merge request !31
parents 1e45de1b e6a3ac56
No related branches found
No related tags found
1 merge request!31✅ Webhook settings ui tests
Pipeline #259658 passed
# Generated by Django 4.2.16 on 2025-01-23 12:30
import django.core.validators
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('netbox_sys_plugin', '0004_alter_domainnames_domain_names'),
]
operations = [
migrations.AlterField(
model_name='webhooksettings',
name='payload_url',
field=models.CharField(max_length=500, validators=[django.core.validators.URLValidator(schemes=['http', 'https'])]),
),
]
......@@ -3,16 +3,17 @@
from django.urls import reverse
from django.db import models
from django.utils.translation import gettext_lazy as _
from django.core.validators import URLValidator
from netbox.models import NetBoxModel
class WebhookSettings(NetBoxModel):
"""Webhook settings config definition class"""
payload_url = models.CharField(
max_length=500,
verbose_name=_('URL'),
validators=[URLValidator(schemes=["http", "https"])],
help_text=_(
"This URL will be called using the HTTP POST when the webhook is called."
)
......
......@@ -7,7 +7,7 @@ from virtualization.models import ClusterType
from netbox_sys_plugin.models import VirtualMachineType
from ..base import BaseAPITestCase
class VmMachineTypeApiTestCase(BaseAPITestCase):
class VitualMachineTypeApiTestCase(BaseAPITestCase):
"""Test suite for VmMachineType API"""
model = VirtualMachineType
brief_fields = ["virtual_machine_type_name","virtual_machine_type_desc","assigned_object_id", "assigned_object_type"]
......
......@@ -5,11 +5,11 @@ from users.models import ObjectPermission
from virtualization.models import ClusterType
from netbox_sys_plugin.models import VirtualMachineType
from netbox_sys_plugin.forms import VmTypeForm
from .. base import BaseModelViewTestCase
from ..base import BaseModelViewTestCase
class VmMachineTypeFormTestCase(
class VirtualMachineTypeFormTestCase(
BaseModelViewTestCase,
):
"""VM Machine Type Test Case Class"""
......@@ -27,11 +27,11 @@ class VmMachineTypeFormTestCase(
cluster_type1 = ClusterType.objects.create(name="Test ClusterType1", slug="ClusterType1")
cluster_type2 = ClusterType.objects.create(name="Test ClusterType2", slug="ClusterType2")
vmMachineType1 = VirtualMachineType.objects.create(virtual_machine_type_name='vm_type_name1',
virtual_machine_type1 = VirtualMachineType.objects.create(virtual_machine_type_name='vm_type_name1',
virtual_machine_type_desc='vm_type_desc_1',
assigned_object_type=cluster_type_content_type,
assigned_object_id=cluster_type1.pk)
vmMachineType2 = VirtualMachineType.objects.create(virtual_machine_type_name='vm_type_name2',
virtual_machine_type2 = VirtualMachineType.objects.create(virtual_machine_type_name='vm_type_name2',
virtual_machine_type_desc='vm_type_desc_2',
assigned_object_type=cluster_type_content_type,
assigned_object_id=cluster_type2.pk)
......@@ -49,8 +49,8 @@ class VmMachineTypeFormTestCase(
cls.csv_update_data = (
"id,virtual_machine_type_name","virtual_machine_type_desc","assigned_object_type","assigned_object_id\n"
f"{vmMachineType1.pk},vm_type_new_name1,vm_type_desc_new,{cluster_type_content_type.pk},{cluster_type1.pk}\n"
f"{vmMachineType2.pk},vm_type_new_name2,vm_type_desc_new2,{cluster_type_content_type.pk},{cluster_type2.pk}\n"
f"{virtual_machine_type1.pk},vm_type_new_name1,vm_type_desc_new,{cluster_type_content_type.pk},{cluster_type1.pk}\n"
f"{virtual_machine_type2.pk},vm_type_new_name2,vm_type_desc_new2,{cluster_type_content_type.pk},{cluster_type2.pk}\n"
)
def test_create_already_existing_vm_type(self):
......
"""Webhook Settings Test Case Class"""
from django.contrib.contenttypes.models import ContentType
from users.models import ObjectPermission
from netbox_sys_plugin.models import WebhookSettings
from netbox_sys_plugin.forms import WebhookSettingsForm
from ..base import BaseModelViewTestCase
class WebhookSettingsFormTestCase(
BaseModelViewTestCase,
):
"""Webhook Settings Test Case Class"""
model = WebhookSettings
form = WebhookSettingsForm
def test_create_valid_webhook_settings(self):
"""Create a valid webhook settings"""
form = WebhookSettingsForm(data= {
"payload_url": "https://www.test.com",
"http_content_type": "test http content type"
})
self.assertTrue(form.is_valid())
# Setup object permissions for the test user
obj_perm = ObjectPermission(
name='Test permission',
actions=['add', 'change']
)
obj_perm.save()
obj_perm.users.add(self.user) # pylint: disable=no-member
obj_perm.object_types.add(ContentType.objects.get_for_model(self.model)) # pylint: disable=no-member
def test_invalid_webhook_settings_format(self):
"""
Test invalid webhook settings invalid format.
"""
# pylint: disable=W0201
# Set up valid form data
self.invalid_valid_form_data = {
"payload_url": "https://www.test.com",
"http_content_type": "test http content type"
}
#Invalid payload url
invalid_form_data = self.invalid_valid_form_data.copy()
invalid_form_data["payload_url"] = "Invalid" # Invalid format
form = self.form(data=invalid_form_data)
self.assertFalse(form.is_valid())
self.assertIn(
"Enter a valid URL.",
form.errors.get("payload_url", []),
)
#Missing payload url
invalid_form_data = self.invalid_valid_form_data.copy()
invalid_form_data["payload_url"] = None # Invalid format
form = self.form(data=invalid_form_data)
self.assertFalse(form.is_valid())
self.assertIn(
"This field is required.",
form.errors.get("payload_url", []),
)
#Missing http content type
invalid_form_data = self.invalid_valid_form_data.copy()
invalid_form_data["http_content_type"] = None # Invalid format
form = self.form(data=invalid_form_data)
self.assertFalse(form.is_valid())
self.assertIn(
"This field is required.",
form.errors.get("http_content_type", []),
)
def test_create_more_than_one_webhook_settings(self):
"""Test the creation of 2 webhook settings"""
# pylint: disable=W0201
self.vmMachineType1 = WebhookSettings.objects.create(
payload_url='https://www.test.com',
http_content_type='test http content type')
form = WebhookSettingsForm(data= {
"payload_url": "https://www.test2.com",
"http_content_type": "test http content type 2"
})
self.assertFalse(form.is_valid())
# Setup object permissions for the test user
obj_perm = ObjectPermission(
name='Test permission',
actions=['add', 'change']
)
obj_perm.save()
obj_perm.users.add(self.user) # pylint: disable=no-member
obj_perm.object_types.add(ContentType.objects.get_for_model(self.model)) # pylint: disable=no-member
self.assertIn(
"You can only have one webbook setting",
form.errors.get("__all__",[])
)
def tearDown(self) -> None:# pylint: disable=invalid-name
"""Method called immediately after the test method has been called and the result recorded."""
WebhookSettings.objects.all().delete()
super().tearDown()
......@@ -193,7 +193,6 @@ class WebhookSettingsListView(generic.ObjectListView):
queryset = models.WebhookSettings.objects.all()
table = tables.WebhookSettingsTable
filterset_form = forms.WebhookSettingsFilterForm
class WebhookSettingsEditView(generic.ObjectEditView):
"""
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment