1 # Copyright (c) 2019, CMCC Technologies. Co., Ltd.
3 # Licensed under the Apache License, Version 2.0 (the "License");
4 # you may not use this file except in compliance with the License.
5 # You may obtain a copy of the License at
7 # http://www.apache.org/licenses/LICENSE-2.0
9 # Unless required by applicable law or agreed to in writing, software
10 # distributed under the License is distributed on an "AS IS" BASIS,
11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 # See the License for the specific language governing permissions and
13 # limitations under the License.
17 from django.test import TestCase
20 from genericparser.packages.biz.service_descriptor import ServiceDescriptor
21 from genericparser.packages.const import PKG_STATUS
22 from genericparser.pub.database.models import ServicePackageModel, VnfPackageModel, PnfPackageModel
23 from genericparser.pub.exceptions import PackageNotFoundException
24 from genericparser.pub.utils import toscaparsers
26 logger = logging.getLogger(__name__)
29 class TestServiceDescription(TestCase):
32 self.user_defined_data = {
38 'userDefinedData': self.user_defined_data,
42 "sdwanvpnresource_list": [
44 "sdwanvpn_topology": "",
57 "request_reclassification": False,
60 "management_address": "111111",
69 "vnf_id": "sdwansiteresource",
72 "sdwandevice_type": "",
73 "sdwandevice_class": "PNF",
74 "multi_stage_design": "false",
76 "sdwansite_controlPoint": "",
77 "id": "cd557883-ac4b-462d-aa01-421b5fa606b1",
78 "sdwansite_longitude": "",
79 "sdwansite_latitude": "",
80 "sdwansite_postcode": "",
83 "ecomp_generated_naming": True
85 "sdwansite_emails": "",
88 "sdwansite_address": "",
89 "sdwansite_description": "",
90 "availability_zone_max_count": "1",
96 "type": "org.openecomp.service.EnhanceService",
98 "descriptor_id": "49ee73f4-1e31-4054-b871-eb9b1c29999b",
100 "invariant_id": "5de07996-7ff0-4ec1-b93c-e3a00bb3f207",
101 "name": "Enhance_Service",
105 "category": "E2E Service",
107 "description": "Enhance_Service",
108 "instantiationType": "A-la-carte",
110 "environmentContext": "General_Revenue-Bearing",
111 "serviceEcompNaming": True,
112 "UUID": "49ee73f4-1e31-4054-b871-eb9b1c29999b",
113 "ecompGeneratedNaming": True,
115 "invariantUUID": "5de07996-7ff0-4ec1-b93c-e3a00bb3f207",
117 "name": "Enhance_Service"
121 "category": "E2E Service",
123 "description": "Enhance_Service",
124 "instantiationType": "A-la-carte",
126 "environmentContext": "General_Revenue-Bearing",
127 "serviceEcompNaming": True,
128 "UUID": "49ee73f4-1e31-4054-b871-eb9b1c29999b",
129 "ecompGeneratedNaming": True,
131 "invariantUUID": "5de07996-7ff0-4ec1-b93c-e3a00bb3f207",
133 "name": "Enhance_Service"
136 ServicePackageModel.objects.filter().delete()
141 def test_create(self):
142 result_data = ServiceDescriptor().create(self.data)
143 self.assertIsNotNone(result_data['id'])
144 service_package = ServicePackageModel.objects.filter(servicePackageId=result_data['id'])[0]
145 self.assertIsNotNone(service_package)
146 self.assertEqual(PKG_STATUS.DISABLED, service_package.operationalState)
147 self.assertEqual(PKG_STATUS.CREATED, service_package.onboardingState)
148 self.assertEqual(PKG_STATUS.NOT_IN_USE, service_package.usageState)
150 def test_create_with_csarid(self):
151 csar_id = '0b667470-e6b3-4ee8-8f08-186317a04dc2'
152 result_data = ServiceDescriptor().create(self.data, csar_id)
153 self.assertEqual(csar_id, result_data['id'])
154 service_package = ServicePackageModel.objects.filter(servicePackageId=csar_id)[0]
155 self.assertIsNotNone(service_package)
156 self.assertEqual(PKG_STATUS.DISABLED, service_package.operationalState)
157 self.assertEqual(PKG_STATUS.CREATED, service_package.onboardingState)
158 self.assertEqual(PKG_STATUS.NOT_IN_USE, service_package.usageState)
160 @mock.patch.object(toscaparsers, 'parse_sd')
161 def test_parse_serviced_and_save(self, mock_parse_sd):
162 mock_parse_sd.return_value = json.JSONEncoder().encode(self.sd_data)
163 servcie_desc = ServiceDescriptor()
164 csar_id = '0b667470-e6b3-4ee8-8f08-186317a04dc2'
165 servcie_desc.create(self.data, csar_id)
166 VnfPackageModel(vnfPackageId="1", vnfdId="cd557883-ac4b-462d-aa01-421b5fa606b1").save()
167 PnfPackageModel(pnfPackageId="1", pnfdId="m6000_s").save()
168 local_file_name = "/test.csar"
169 servcie_desc.parse_serviced_and_save(csar_id, local_file_name)
171 service_package = ServicePackageModel.objects.filter(servicePackageId=csar_id)[0]
172 self.assertIsNotNone(service_package)
174 def test_delete_single(self):
175 servcie_desc = ServiceDescriptor()
176 csar_id = '0b667470-e6b3-4ee8-8f08-186317a04dc2'
177 servcie_desc.create(self.data, csar_id)
179 servcie_desc.delete_single(csar_id)
180 self.assertTrue(len(ServicePackageModel.objects.filter(servicePackageId=csar_id)) == 0)
181 self.assertFalse(ServicePackageModel.objects.filter(servicePackageId=csar_id).exists())
183 def test_delete_single_not_exists(self):
186 ServiceDescriptor().delete_single(csar_id)
187 except Exception as e:
188 self.assertTrue(isinstance(e, PackageNotFoundException))
189 self.assertEqual("Service package[8000] not Found.", e.message)