diff options
Diffstat (limited to 'tests/test_aai_pnf.py')
-rw-r--r-- | tests/test_aai_pnf.py | 140 |
1 files changed, 140 insertions, 0 deletions
diff --git a/tests/test_aai_pnf.py b/tests/test_aai_pnf.py new file mode 100644 index 0000000..32e9ea7 --- /dev/null +++ b/tests/test_aai_pnf.py @@ -0,0 +1,140 @@ +# 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.aai.business import PnfInstance, pnf +from onapsdk.exceptions import ResourceNotFound +# from onapsdk.so.deletion import NetworkDeletionRequest + + +PNF_INSTANCE = { + "pnf-name": "blablabla", + "pnf-id": "546b282b-2ff7-41a4-9329-55c9a2888477", + "equip-type": "pnf", + "equip-vendor": "PNF", + "equip-model": "Simulated Device", + "orchestration-status": "Active", + "ipaddress-v4-oam": "172.30.1.6", + "sw-version": "2.3.5", + "in-maint":False, + "serial-number": "123", + "ipaddress-v6-oam": "0:0:0:0:0:ffff:a0a:011", + "resource-version": "1610142659380", + "nf-role": "sdn controller", + "model-customization-id": "137ce8e8-bee9-465f-b7e1-0c006f10b443", + "model-invariant-id": "2ca7ea68-cf61-449c-a733-8122bcac1f9a", + "model-version-id": "da467f24-a26d-4620-b185-e1afa1d365ac", + "relationship-list": { + "relationship":[ + { + "related-to":"service-instance", + "relationship-label":"org.onap.relationships.inventory.ComposedOf", + "related-link":"/aai/v21/business/customers/customer/test/service-subscriptions/service-subscription/test/service-instances/service-instance/4c3ab996-afdb-4956-9c4d-038b4eed3db1", + "relationship-data":[ + { + "relationship-key":"customer.global-customer-id", + "relationship-value":"test" + }, + { + "relationship-key":"service-subscription.service-type", + "relationship-value":"test" + }, + { + "relationship-key":"service-instance.service-instance-id", + "relationship-value":"4c3ab996-afdb-4956-9c4d-038b4eed3db1" + } + ], + "related-to-property":[ + { + "property-key":"service-instance.service-instance-name", + "property-value":"blablabla" + } + ] + } + ] + } +} + + +COUNT = { + "results":[ + { + "pnf":12 + } + ] +} + + +def test_create_pnf_instance_from_api_response(): + service_instance = mock.MagicMock() + pnf_instance = PnfInstance.create_from_api_response( + PNF_INSTANCE, + service_instance + ) + assert pnf_instance.pnf_name == "blablabla" + assert pnf_instance.pnf_id == "546b282b-2ff7-41a4-9329-55c9a2888477" + assert pnf_instance.equip_type == "pnf" + assert pnf_instance.equip_vendor == "PNF" + assert pnf_instance.equip_model == "Simulated Device" + assert pnf_instance.orchestration_status == "Active" + assert pnf_instance.ipaddress_v4_oam == "172.30.1.6" + assert pnf_instance.sw_version == "2.3.5" + assert pnf_instance.in_maint == False + assert pnf_instance.serial_number == "123" + assert pnf_instance.ipaddress_v6_oam == "0:0:0:0:0:ffff:a0a:011" + assert pnf_instance.resource_version == "1610142659380" + assert pnf_instance.nf_role == "sdn controller" + assert pnf_instance.model_customization_id == "137ce8e8-bee9-465f-b7e1-0c006f10b443" + assert pnf_instance.model_invariant_id == "2ca7ea68-cf61-449c-a733-8122bcac1f9a" + assert pnf_instance.model_version_id == "da467f24-a26d-4620-b185-e1afa1d365ac" + + assert pnf_instance.url.endswith(pnf_instance.pnf_name) + + +@mock.patch.object(PnfInstance, "send_message") +def test_delete_pnf_instance(mock_send_message): + pnf = PnfInstance(mock.MagicMock, "test_pnf", False) + pnf.delete() + method, _, address = mock_send_message.call_args[0] + assert method == "DELETE" + assert address == f"{pnf.url}?resource-version={pnf.resource_version}" + + +def test_pnf_instance_pnf(): + service_instance = mock.MagicMock() + pnf_instance = PnfInstance.create_from_api_response( + PNF_INSTANCE, + service_instance + ) + + assert pnf_instance._pnf is None + service_instance.sdc_service.pnfs = [] + with pytest.raises(ResourceNotFound) as exc: + pnf_instance.pnf + assert exc.type == ResourceNotFound + assert pnf_instance._pnf is None + + pnf = mock.MagicMock() + pnf.model_version_id = "da467f24-a26d-4620-b185-e1afa1d365ac" + service_instance.sdc_service.pnfs = [pnf] + assert pnf == pnf_instance.pnf + assert pnf_instance._pnf is not None + assert pnf_instance.pnf == pnf_instance._pnf + +@mock.patch.object(PnfInstance, "send_message_json") +def test_pnf_count(mock_send_message_json): + mock_send_message_json.return_value = COUNT + assert PnfInstance.count() == 12 |