diff options
Diffstat (limited to 'tests/test_aai_service_subscription.py')
-rw-r--r-- | tests/test_aai_service_subscription.py | 191 |
1 files changed, 191 insertions, 0 deletions
diff --git a/tests/test_aai_service_subscription.py b/tests/test_aai_service_subscription.py new file mode 100644 index 0000000..3c7eb91 --- /dev/null +++ b/tests/test_aai_service_subscription.py @@ -0,0 +1,191 @@ +# 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 + +from onapsdk.aai.business import Customer, ServiceSubscription, ServiceInstance +from onapsdk.aai.cloud_infrastructure import CloudRegion + + +SERVICE_INSTANCES = { + "service-instance":[ + { + "service-instance-id":"5410bf79-2aa3-450e-a324-ec5630dc18cf", + "service-instance-name":"test", + "environment-context":"General_Revenue-Bearing", + "workload-context":"Production", + "model-invariant-id":"2a51a89b-6f94-4417-8831-c468fb30ed02", + "model-version-id":"92a82807-b483-4579-86b1-c79b1286aab4", + "resource-version":"1589457727708", + "orchestration-status":"Active", + "relationship-list":{ + "relationship":[ + { + "related-to":"owning-entity", + "relationship-label":"org.onap.relationships.inventory.BelongsTo", + "related-link":"/aai/v16/business/owning-entities/owning-entity/ff6c945f-89ab-4f14-bafd-0cdd6eac791a", + "relationship-data":[ + { + "relationship-key":"owning-entity.owning-entity-id", + "relationship-value":"ff6c945f-89ab-4f14-bafd-0cdd6eac791a" + } + ] + }, + { + "related-to":"project", + "relationship-label":"org.onap.relationships.inventory.Uses", + "related-link":"/aai/v16/business/projects/project/python_onap_sdk_project", + "relationship-data":[ + { + "relationship-key":"project.project-name", + "relationship-value":"python_onap_sdk_project" + } + ] + } + ] + } + } + ] +} + + +MULTIPLE_CLOUD_REGIONS_AND_TENATS_RELATIONSHIP = { + "relationship":[ + { + "related-to":"tenant", + "relationship-label":"org.onap.relationships.inventory.Uses", + "related-link":"/aai/v19/cloud-infrastructure/cloud-regions/cloud-region/DT/RegionOne/tenants/tenant/8fa33ca96caa4172aeeeefd1dbf5c715", + "relationship-data":[ + { + "relationship-key":"cloud-region.cloud-owner", + "relationship-value":"DT" + }, + { + "relationship-key":"cloud-region.cloud-region-id", + "relationship-value":"RegionOne" + }, + { + "relationship-key":"tenant.tenant-id", + "relationship-value":"8fa33ca96caa4172aeeeefd1dbf5c715" + } + ], + "related-to-property":[ + { + "property-key":"tenant.tenant-name", + "property-value":"ci-onap-master-vnfs" + } + ] + }, + { + "related-to":"tenant", + "relationship-label":"org.onap.relationships.inventory.Uses", + "related-link":"/aai/v19/cloud-infrastructure/cloud-regions/cloud-region/test_cloud_owner/test_cloud_region_id/tenants/tenant/1234", + "relationship-data":[ + { + "relationship-key":"cloud-region.cloud-owner", + "relationship-value":"test_cloud_owner" + }, + { + "relationship-key":"cloud-region.cloud-region-id", + "relationship-value":"test_cloud_region_id" + }, + { + "relationship-key":"tenant.tenant-id", + "relationship-value":"1234" + } + ], + "related-to-property":[ + { + "property-key":"tenant.tenant-name", + "property-value":"test_tenant" + } + ] + } + ] +} + + +COUNT = { + "results":[ + { + "service-subscription":1 + } + ] +} + + +@mock.patch.object(ServiceSubscription, "send_message_json") +def test_get_service_instance_by_filter_parameter(mock_send_message_json): + """Test Service Subscription get_service_instance_by_filter_parameter method""" + customer = Customer("generic", "generic", "INFRA") + service_subscription = ServiceSubscription(customer=customer, + service_type="test_service_type", + resource_version="test_resource_version") + mock_send_message_json.return_value = SERVICE_INSTANCES + service_instance = service_subscription._get_service_instance_by_filter_parameter(filter_parameter_name="service-instance-id", filter_parameter_value="5410bf79-2aa3-450e-a324-ec5630dc18cf") + assert service_instance.instance_name == "test" + assert service_instance.instance_id == "5410bf79-2aa3-450e-a324-ec5630dc18cf" + + +@mock.patch.object(ServiceSubscription, "_get_service_instance_by_filter_parameter") +def test_get_service_instance_by_id(mock_get): + """Test Service Subscription get_service_instance_by_id method""" + service_subscription = ServiceSubscription(customer=None, + service_type="test_service_type", + resource_version="test_resource_version") + mock_get.return_value = ServiceInstance(service_subscription="ServiceSubscription", + instance_id="5410bf79-2aa3-450e-a324-ec5630dc18cf") + service_instance = service_subscription.get_service_instance_by_id(service_instance_id="5410bf79-2aa3-450e-a324-ec5630dc18cf") + assert service_instance.instance_id == "5410bf79-2aa3-450e-a324-ec5630dc18cf" + + +@mock.patch.object(ServiceSubscription, "_get_service_instance_by_filter_parameter") +def test_get_service_instance_by_name(mock_get): + """Test Service Subscription get_service_instance_by_name method""" + service_subscription = ServiceSubscription(customer=None, + service_type="test_service_type", + resource_version="test_resource_version") + mock_get.return_value = ServiceInstance(service_subscription="ServiceSubscription", + instance_id="5410bf79-2aa3-450e-a324-ec5630dc18cf", + instance_name="test") + service_instance = service_subscription.get_service_instance_by_name(service_instance_name="test") + assert service_instance.instance_name == "test" + + +@mock.patch.object(ServiceSubscription, "send_message_json") +@mock.patch.object(CloudRegion, "get_by_id") +def test_cloud_regions(mock_cloud_region_get_by_id, mock_send_message_json): + """Test service subscription `cloud_regions` property""" + service_subscription = ServiceSubscription(customer=mock.MagicMock(), + service_type="test_service_type", + resource_version="test_resource_version") + mock_send_message_json.return_value = MULTIPLE_CLOUD_REGIONS_AND_TENATS_RELATIONSHIP + assert len(list(service_subscription.cloud_regions)) == 2 + assert len(mock_cloud_region_get_by_id.mock_calls) == 2 + + +@mock.patch.object(ServiceSubscription, "send_message_json") +@mock.patch.object(CloudRegion, "get_by_id") +@mock.patch.object(CloudRegion, "get_tenant") +def test_tenants(mock_cloud_region_get_tenant, mock_cloud_region_get_by_id, mock_send_message_json): + """Test service subscription `tenants` property""" + service_subscription = ServiceSubscription(customer=mock.MagicMock(), + service_type="test_service_type", + resource_version="test_resource_version") + mock_send_message_json.return_value = MULTIPLE_CLOUD_REGIONS_AND_TENATS_RELATIONSHIP + assert len(list(service_subscription.tenants)) == 2 + +@mock.patch.object(ServiceSubscription, "send_message_json") +def test_service_subscription_count(mock_send_message_json): + mock_send_message_json.return_value = COUNT + assert ServiceSubscription.count(customer=mock.MagicMock()) == 1 |