Преглед изворни кода

Add wireless_lans to InterfaceSerializer; extend tests

jeremystretch пре 4 година
родитељ
комит
96cde7d4af
3 измењених фајлова са 28 додато и 2 уклоњено
  1. 9 2
      netbox/dcim/api/serializers.py
  2. 10 0
      netbox/dcim/tests/test_api.py
  3. 9 0
      netbox/dcim/tests/test_views.py

+ 9 - 2
netbox/dcim/api/serializers.py

@@ -17,8 +17,9 @@ from tenancy.api.nested_serializers import NestedTenantSerializer
 from users.api.nested_serializers import NestedUserSerializer
 from users.api.nested_serializers import NestedUserSerializer
 from utilities.api import get_serializer_for_model
 from utilities.api import get_serializer_for_model
 from virtualization.api.nested_serializers import NestedClusterSerializer
 from virtualization.api.nested_serializers import NestedClusterSerializer
-from wireless.api.nested_serializers import NestedWirelessLinkSerializer
+from wireless.api.nested_serializers import NestedWirelessLANSerializer, NestedWirelessLinkSerializer
 from wireless.choices import *
 from wireless.choices import *
+from wireless.models import WirelessLAN
 from .nested_serializers import *
 from .nested_serializers import *
 
 
 
 
@@ -628,6 +629,12 @@ class InterfaceSerializer(PrimaryModelSerializer, LinkTerminationSerializer, Con
     )
     )
     cable = NestedCableSerializer(read_only=True)
     cable = NestedCableSerializer(read_only=True)
     wireless_link = NestedWirelessLinkSerializer(read_only=True)
     wireless_link = NestedWirelessLinkSerializer(read_only=True)
+    wireless_lans = SerializedPKRelatedField(
+        queryset=WirelessLAN.objects.all(),
+        serializer=NestedWirelessLANSerializer,
+        required=False,
+        many=True
+    )
     count_ipaddresses = serializers.IntegerField(read_only=True)
     count_ipaddresses = serializers.IntegerField(read_only=True)
 
 
     class Meta:
     class Meta:
@@ -636,7 +643,7 @@ class InterfaceSerializer(PrimaryModelSerializer, LinkTerminationSerializer, Con
             'id', 'url', 'display', 'device', 'name', 'label', 'type', 'enabled', 'parent', 'bridge', 'lag', 'mtu',
             'id', 'url', 'display', 'device', 'name', 'label', 'type', 'enabled', 'parent', 'bridge', 'lag', 'mtu',
             'mac_address', 'wwn', 'mgmt_only', 'description', 'mode', 'rf_role', 'rf_channel', 'rf_channel_frequency',
             'mac_address', 'wwn', 'mgmt_only', 'description', 'mode', 'rf_role', 'rf_channel', 'rf_channel_frequency',
             'rf_channel_width', 'tx_power', 'untagged_vlan', 'tagged_vlans', 'mark_connected', 'cable', 'wireless_link',
             'rf_channel_width', 'tx_power', 'untagged_vlan', 'tagged_vlans', 'mark_connected', 'cable', 'wireless_link',
-            'link_peer', 'link_peer_type', 'connected_endpoint', 'connected_endpoint_type',
+            'link_peer', 'link_peer_type', 'wireless_lans', 'connected_endpoint', 'connected_endpoint_type',
             'connected_endpoint_reachable', 'tags', 'custom_fields', 'created', 'last_updated', 'count_ipaddresses',
             'connected_endpoint_reachable', 'tags', 'custom_fields', 'created', 'last_updated', 'count_ipaddresses',
             '_occupied',
             '_occupied',
         ]
         ]

+ 10 - 0
netbox/dcim/tests/test_api.py

@@ -9,6 +9,7 @@ from dcim.models import *
 from ipam.models import ASN, RIR, VLAN
 from ipam.models import ASN, RIR, VLAN
 from utilities.testing import APITestCase, APIViewTestCases
 from utilities.testing import APITestCase, APIViewTestCases
 from virtualization.models import Cluster, ClusterType
 from virtualization.models import Cluster, ClusterType
+from wireless.models import WirelessLAN
 
 
 
 
 class AppTest(APITestCase):
 class AppTest(APITestCase):
@@ -1202,6 +1203,12 @@ class InterfaceTest(Mixins.ComponentTraceMixin, APIViewTestCases.APIViewTestCase
         )
         )
         VLAN.objects.bulk_create(vlans)
         VLAN.objects.bulk_create(vlans)
 
 
+        wireless_lans = (
+            WirelessLAN(ssid='WLAN1'),
+            WirelessLAN(ssid='WLAN2'),
+        )
+        WirelessLAN.objects.bulk_create(wireless_lans)
+
         cls.create_data = [
         cls.create_data = [
             {
             {
                 'device': device.pk,
                 'device': device.pk,
@@ -1211,6 +1218,7 @@ class InterfaceTest(Mixins.ComponentTraceMixin, APIViewTestCases.APIViewTestCase
                 'tx_power': 10,
                 'tx_power': 10,
                 'tagged_vlans': [vlans[0].pk, vlans[1].pk],
                 'tagged_vlans': [vlans[0].pk, vlans[1].pk],
                 'untagged_vlan': vlans[2].pk,
                 'untagged_vlan': vlans[2].pk,
+                'wireless_lans': [wireless_lans[0].pk, wireless_lans[1].pk],
             },
             },
             {
             {
                 'device': device.pk,
                 'device': device.pk,
@@ -1221,6 +1229,7 @@ class InterfaceTest(Mixins.ComponentTraceMixin, APIViewTestCases.APIViewTestCase
                 'tx_power': 10,
                 'tx_power': 10,
                 'tagged_vlans': [vlans[0].pk, vlans[1].pk],
                 'tagged_vlans': [vlans[0].pk, vlans[1].pk],
                 'untagged_vlan': vlans[2].pk,
                 'untagged_vlan': vlans[2].pk,
+                'wireless_lans': [wireless_lans[0].pk, wireless_lans[1].pk],
             },
             },
             {
             {
                 'device': device.pk,
                 'device': device.pk,
@@ -1231,6 +1240,7 @@ class InterfaceTest(Mixins.ComponentTraceMixin, APIViewTestCases.APIViewTestCase
                 'tx_power': 10,
                 'tx_power': 10,
                 'tagged_vlans': [vlans[0].pk, vlans[1].pk],
                 'tagged_vlans': [vlans[0].pk, vlans[1].pk],
                 'untagged_vlan': vlans[2].pk,
                 'untagged_vlan': vlans[2].pk,
+                'wireless_lans': [wireless_lans[0].pk, wireless_lans[1].pk],
             },
             },
         ]
         ]
 
 

+ 9 - 0
netbox/dcim/tests/test_views.py

@@ -14,6 +14,7 @@ from dcim.models import *
 from ipam.models import ASN, RIR, VLAN
 from ipam.models import ASN, RIR, VLAN
 from tenancy.models import Tenant
 from tenancy.models import Tenant
 from utilities.testing import ViewTestCases, create_tags, create_test_device
 from utilities.testing import ViewTestCases, create_tags, create_test_device
+from wireless.models import WirelessLAN
 
 
 
 
 class RegionTestCase(ViewTestCases.OrganizationalObjectViewTestCase):
 class RegionTestCase(ViewTestCases.OrganizationalObjectViewTestCase):
@@ -1602,6 +1603,12 @@ class InterfaceTestCase(ViewTestCases.DeviceComponentViewTestCase):
         )
         )
         VLAN.objects.bulk_create(vlans)
         VLAN.objects.bulk_create(vlans)
 
 
+        wireless_lans = (
+            WirelessLAN(ssid='WLAN1'),
+            WirelessLAN(ssid='WLAN2'),
+        )
+        WirelessLAN.objects.bulk_create(wireless_lans)
+
         tags = create_tags('Alpha', 'Bravo', 'Charlie')
         tags = create_tags('Alpha', 'Bravo', 'Charlie')
 
 
         cls.form_data = {
         cls.form_data = {
@@ -1620,6 +1627,7 @@ class InterfaceTestCase(ViewTestCases.DeviceComponentViewTestCase):
             'tx_power': 10,
             'tx_power': 10,
             'untagged_vlan': vlans[0].pk,
             'untagged_vlan': vlans[0].pk,
             'tagged_vlans': [v.pk for v in vlans[1:4]],
             'tagged_vlans': [v.pk for v in vlans[1:4]],
+            'wireless_lans': [wireless_lans[0].pk, wireless_lans[1].pk],
             'tags': [t.pk for t in tags],
             'tags': [t.pk for t in tags],
         }
         }
 
 
@@ -1638,6 +1646,7 @@ class InterfaceTestCase(ViewTestCases.DeviceComponentViewTestCase):
             'mode': InterfaceModeChoices.MODE_TAGGED,
             'mode': InterfaceModeChoices.MODE_TAGGED,
             'untagged_vlan': vlans[0].pk,
             'untagged_vlan': vlans[0].pk,
             'tagged_vlans': [v.pk for v in vlans[1:4]],
             'tagged_vlans': [v.pk for v in vlans[1:4]],
+            'wireless_lans': [wireless_lans[0].pk, wireless_lans[1].pk],
             'tags': [t.pk for t in tags],
             'tags': [t.pk for t in tags],
         }
         }