diff options
Diffstat (limited to 'tests/test_sdc_category_management.py')
-rw-r--r-- | tests/test_sdc_category_management.py | 349 |
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 |