aboutsummaryrefslogtreecommitdiffstats
path: root/tests/test_sdc_category_management.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_sdc_category_management.py')
-rw-r--r--tests/test_sdc_category_management.py349
1 files changed, 349 insertions, 0 deletions
diff --git a/tests/test_sdc_category_management.py b/tests/test_sdc_category_management.py
new file mode 100644
index 0000000..59ca5f5
--- /dev/null
+++ b/tests/test_sdc_category_management.py
@@ -0,0 +1,349 @@
+"""Test SdcElement module."""
+# Copyright 2022 Orange, Deutsche Telekom AG
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+from unittest import mock
+
+import pytest
+from onapsdk.exceptions import APIError, ResourceNotFound
+
+from onapsdk.sdc.category_management import ResourceCategory, ServiceCategory
+
+
+CATEGORIES = {
+ "categories": {
+ 'resourceCategories': [
+ {
+ 'name': 'Network L4+',
+ 'normalizedName': 'network l4+',
+ 'uniqueId': 'resourceNewCategory.network l4+',
+ 'icons': None,
+ 'subcategories': [
+ {
+ 'name': 'Common Network Resources',
+ 'normalizedName': 'common network resources',
+ 'uniqueId': 'resourceNewCategory.network l4+.common network resources',
+ 'icons': ['network'],
+ 'groupings': None,
+ 'version': None,
+ 'ownerId': None,
+ 'empty': False,
+ 'type': None
+ }
+ ],
+ 'version': None,
+ 'ownerId': None,
+ 'empty': False,
+ 'type': None
+ },
+ {
+ 'name': 'Network L2-3',
+ 'normalizedName': 'network l2-3',
+ 'uniqueId': 'resourceNewCategory.network l2-3',
+ 'icons': None,
+ 'subcategories': [
+ {
+ 'name': 'Router',
+ 'normalizedName': 'router',
+ 'uniqueId': 'resourceNewCategory.network l2-3.router',
+ 'icons': ['router', 'vRouter'],
+ 'groupings': None,
+ 'version': None,
+ 'ownerId': None,
+ 'empty': False,
+ 'type': None
+ },
+ {
+ 'name': 'LAN Connectors',
+ 'normalizedName': 'lan connectors',
+ 'uniqueId': 'resourceNewCategory.network l2-3.lan connectors',
+ 'icons': ['network', 'connector', 'port'],
+ 'groupings': None,
+ 'version': None,
+ 'ownerId': None,
+ 'empty': False,
+ 'type': None
+ },
+ {
+ 'name': 'Infrastructure',
+ 'normalizedName': 'infrastructure',
+ 'uniqueId': 'resourceNewCategory.network l2-3.infrastructure',
+ 'icons': ['ucpe'],
+ 'groupings': None,
+ 'version': None,
+ 'ownerId': None,
+ 'empty': False,
+ 'type': None
+ },
+ {
+ 'name': 'Gateway',
+ 'normalizedName': 'gateway',
+ 'uniqueId': 'resourceNewCategory.network l2-3.gateway',
+ 'icons': ['gateway'],
+ 'groupings': None,
+ 'version': None,
+ 'ownerId': None,
+ 'empty': False,
+ 'type': None
+ },
+ {
+ 'name': 'WAN Connectors',
+ 'normalizedName': 'wan connectors',
+ 'uniqueId': 'resourceNewCategory.network l2-3.wan connectors',
+ 'icons': ['network', 'connector', 'port'],
+ 'groupings': None,
+ 'version': None,
+ 'ownerId': None,
+ 'empty': False,
+ 'type': None
+ }
+ ],
+ 'version': None,
+ 'ownerId': None,
+ 'empty': False,
+ 'type': None
+ },
+ {
+ 'name': 'Network Connectivity',
+ 'normalizedName': 'network connectivity',
+ 'uniqueId': 'resourceNewCategory.network connectivity',
+ 'icons': None,
+ 'subcategories': [
+ {
+ 'name': 'Connection Points',
+ 'normalizedName': 'connection points',
+ 'uniqueId': 'resourceNewCategory.network connectivity.connection points',
+ 'icons': ['cp'],
+ 'groupings': None,
+ 'version': None,
+ 'ownerId': None,
+ 'empty': False,
+ 'type': None
+ },
+ {
+ 'name': 'Virtual Links',
+ 'normalizedName': 'virtual links',
+ 'uniqueId': 'resourceNewCategory.network connectivity.virtual links',
+ 'icons': ['vl'],
+ 'groupings': None,
+ 'version': None,
+ 'ownerId': None,
+ 'empty': False,
+ 'type': None
+ }
+ ],
+ 'version': None,
+ 'ownerId': None,
+ 'empty': False,
+ 'type': None
+ },
+ {
+ 'name': 'Configuration',
+ 'normalizedName': 'configuration',
+ 'uniqueId': 'resourceNewCategory.configuration',
+ 'icons': None,
+ 'subcategories': None,
+ 'version': None,
+ 'ownerId': None,
+ 'empty': False,
+ 'type': None
+ },
+ ],
+ 'serviceCategories': [
+ {
+ 'name': 'Partner Domain Service',
+ 'normalizedName': 'partner domain service',
+ 'uniqueId': 'serviceNewCategory.partner domain service',
+ 'icons': ['partner_domain_service'],
+ 'subcategories': None,
+ 'version': None,
+ 'ownerId': None,
+ 'empty': False,
+ 'type': None
+ },
+ {
+ 'name': 'Mobility',
+ 'normalizedName': 'mobility',
+ 'uniqueId': 'serviceNewCategory.mobility',
+ 'icons': ['mobility'],
+ 'subcategories': None,
+ 'version': None,
+ 'ownerId': None,
+ 'empty': False,
+ 'type': None
+ },
+ {
+ 'name': 'VoIP Call Control',
+ 'normalizedName': 'voip call control',
+ 'uniqueId': 'serviceNewCategory.voip call control',
+ 'icons': ['call_controll'],
+ 'subcategories': None,
+ 'version': None,
+ 'ownerId': None,
+ 'empty': False,
+ 'type': None
+ },
+ {
+ 'name': 'E2E Service',
+ 'normalizedName': 'e2e service',
+ 'uniqueId': 'serviceNewCategory.e2e service',
+ 'icons': ['network_l_1-3'],
+ 'subcategories': None,
+ 'version': None,
+ 'ownerId': None,
+ 'empty': False,
+ 'type': None
+ },
+ {
+ 'name': 'Network L4+',
+ 'normalizedName': 'network l4+',
+ 'uniqueId': 'serviceNewCategory.network l4+',
+ 'icons': ['network_l_4'],
+ 'subcategories': None,
+ 'version': None,
+ 'ownerId': None,
+ 'empty': False,
+ 'type': None
+ },
+ {
+ 'name': 'Network L1-3',
+ 'normalizedName': 'network l1-3',
+ 'uniqueId': 'serviceNewCategory.network l1-3',
+ 'icons': ['network_l_1-3'],
+ 'subcategories': None,
+ 'version': None,
+ 'ownerId': None,
+ 'empty': False,
+ 'type': None
+ },
+ {
+ 'name': 'Network Service',
+ 'normalizedName': 'network service',
+ 'uniqueId': 'serviceNewCategory.network service',
+ 'icons': ['network_l_1-3'],
+ 'subcategories': None,
+ 'version': None,
+ 'ownerId': None,
+ 'empty': False,
+ 'type': None
+ },
+ ],
+ 'productCategories': []
+ }
+}
+
+
+@mock.patch.object(ResourceCategory, "send_message_json")
+def test_resource_category_exists(mock_send_message_json):
+
+ rc = ResourceCategory(name="test_name")
+ mock_send_message_json.return_value = {}
+ assert not rc.exists()
+ mock_send_message_json.return_value = CATEGORIES
+ assert not rc.exists()
+ rc = ResourceCategory(name="Network Connectivity")
+ assert rc.exists()
+
+@mock.patch.object(ResourceCategory, "send_message_json")
+def test_resource_category_get(mock_send_message_json):
+
+ mock_send_message_json.return_value = CATEGORIES
+ rc = ResourceCategory.get(name="Network Connectivity")
+ assert rc.name == "Network Connectivity"
+ assert rc.normalized_name == "network connectivity"
+ assert rc.unique_id == "resourceNewCategory.network connectivity"
+ assert not rc.icons
+ assert not rc.version
+ assert not rc.owner_id
+ assert not rc.empty
+ assert not rc.type
+ assert len(rc.subcategories) == 2
+
+ with pytest.raises(ResourceNotFound):
+ ResourceCategory.get(name="Network Connectivity", subcategory="Toto")
+ rc = ResourceCategory.get(name="Network Connectivity", subcategory="Connection Points")
+ assert rc.name == "Network Connectivity"
+ assert rc.normalized_name == "network connectivity"
+ assert rc.unique_id == "resourceNewCategory.network connectivity"
+ assert not rc.icons
+ assert not rc.version
+ assert not rc.owner_id
+ assert not rc.empty
+ assert not rc.type
+ assert len(rc.subcategories) == 1
+
+ mock_send_message_json.side_effect = APIError
+ with pytest.raises(ResourceNotFound):
+ ResourceCategory.get(name="Network Connectivity")
+
+ mock_send_message_json.side_effect = KeyError
+ with pytest.raises(ResourceNotFound):
+ ResourceCategory.get(name="Network Connectivity")
+
+@mock.patch.object(ResourceCategory, "send_message_json")
+def test_resource_category_create(mock_send_message_json):
+
+ mock_send_message_json.return_value = CATEGORIES
+ rc = ResourceCategory.create(name="Network Connectivity")
+ assert rc.name == "Network Connectivity"
+ assert rc.normalized_name == "network connectivity"
+ assert rc.unique_id == "resourceNewCategory.network connectivity"
+ assert not rc.icons
+ assert not rc.version
+ assert not rc.owner_id
+ assert not rc.empty
+ assert not rc.type
+ ResourceCategory.create(name="New category")
+
+@mock.patch.object(ServiceCategory, "send_message_json")
+def test_service_category_exists(mock_send_message_json):
+
+ sc = ServiceCategory(name="test_name")
+ mock_send_message_json.return_value = CATEGORIES
+ assert not sc.exists()
+ sc = ServiceCategory(name="Partner Domain Service")
+ assert sc.exists()
+ mock_send_message_json.side_effect = APIError
+ assert not sc.exists()
+ mock_send_message_json.side_effect = KeyError
+ assert not sc.exists()
+
+@mock.patch.object(ServiceCategory, "send_message_json")
+def test_service_category_get(mock_send_message_json):
+
+ mock_send_message_json.return_value = {}
+ with pytest.raises(ResourceNotFound):
+ ServiceCategory.get(name="Partner Domain Service")
+ mock_send_message_json.return_value = CATEGORIES
+ sc = ServiceCategory.get(name="Partner Domain Service")
+ assert sc.name == "Partner Domain Service"
+ assert sc.normalized_name == "partner domain service"
+ assert sc.unique_id == "serviceNewCategory.partner domain service"
+ assert not sc.version
+ assert not sc.owner_id
+ assert not sc.empty
+ assert not sc.type
+
+@mock.patch.object(ServiceCategory, "send_message_json")
+def test_service_category_create(mock_send_message_json):
+
+ mock_send_message_json.return_value = CATEGORIES
+ sc = ServiceCategory.create(name="Partner Domain Service")
+ assert sc.name == "Partner Domain Service"
+ assert sc.normalized_name == "partner domain service"
+ assert sc.unique_id == "serviceNewCategory.partner domain service"
+ assert not sc.version
+ assert not sc.owner_id
+ assert not sc.empty
+ assert not sc.type
+ ServiceCategory.create(name="New category") \ No newline at end of file