mirror of
https://github.com/netbox-community/netbox.git
synced 2025-07-16 04:02:52 -06:00
* Correctly reject invalid falsy local context data. * move tests
This commit is contained in:
parent
2266a8af67
commit
19d1282683
@ -200,7 +200,7 @@ class ConfigContextModel(models.Model):
|
|||||||
super().clean()
|
super().clean()
|
||||||
|
|
||||||
# Verify that JSON data is provided as an object
|
# Verify that JSON data is provided as an object
|
||||||
if self.local_context_data and type(self.local_context_data) is not dict:
|
if self.local_context_data is not None and type(self.local_context_data) is not dict:
|
||||||
raise ValidationError(
|
raise ValidationError(
|
||||||
{'local_context_data': _('JSON data must be in object form. Example:') + ' {"foo": 123}'}
|
{'local_context_data': _('JSON data must be in object form. Example:') + ' {"foo": 123}'}
|
||||||
)
|
)
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
from django.forms import ValidationError
|
||||||
from django.test import TestCase
|
from django.test import TestCase
|
||||||
|
|
||||||
from core.models import ObjectType
|
from core.models import ObjectType
|
||||||
@ -478,3 +479,30 @@ class ConfigContextTest(TestCase):
|
|||||||
annotated_queryset = Device.objects.filter(name=device.name).annotate_config_context_data()
|
annotated_queryset = Device.objects.filter(name=device.name).annotate_config_context_data()
|
||||||
self.assertEqual(ConfigContext.objects.get_for_object(device).count(), 2)
|
self.assertEqual(ConfigContext.objects.get_for_object(device).count(), 2)
|
||||||
self.assertEqual(device.get_config_context(), annotated_queryset[0].get_config_context())
|
self.assertEqual(device.get_config_context(), annotated_queryset[0].get_config_context())
|
||||||
|
|
||||||
|
def test_valid_local_context_data(self):
|
||||||
|
device = Device.objects.first()
|
||||||
|
device.local_context_data = None
|
||||||
|
device.clean()
|
||||||
|
|
||||||
|
device.local_context_data = {"foo": "bar"}
|
||||||
|
device.clean()
|
||||||
|
|
||||||
|
def test_invalid_local_context_data(self):
|
||||||
|
device = Device.objects.first()
|
||||||
|
|
||||||
|
device.local_context_data = ""
|
||||||
|
with self.assertRaises(ValidationError):
|
||||||
|
device.clean()
|
||||||
|
|
||||||
|
device.local_context_data = 0
|
||||||
|
with self.assertRaises(ValidationError):
|
||||||
|
device.clean()
|
||||||
|
|
||||||
|
device.local_context_data = False
|
||||||
|
with self.assertRaises(ValidationError):
|
||||||
|
device.clean()
|
||||||
|
|
||||||
|
device.local_context_data = 'foo'
|
||||||
|
with self.assertRaises(ValidationError):
|
||||||
|
device.clean()
|
||||||
|
Loading…
Reference in New Issue
Block a user