1 # Copyright 2017 ZTE Corporation.
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.
16 from django.test import TestCase, Client
17 from rest_framework import status
19 from lcm.pub.database.models import NfInstModel
20 from lcm.pub.database.models import JobStatusModel
21 from lcm.pub.database.models import VmInstModel
22 from lcm.pub.database.models import NetworkInstModel
23 from lcm.pub.database.models import SubNetworkInstModel
24 from lcm.pub.database.models import PortInstModel
25 from lcm.pub.database.models import FlavourInstModel
26 from lcm.pub.database.models import StorageInstModel
27 from lcm.pub.database.models import NfvoRegInfoModel
28 from lcm.pub.utils.timeutil import now_time
29 from lcm.nf.biz.delete_vnf import DeleteVnf
30 from lcm.pub.exceptions import NFLCMException
33 class TestNFTerminate(TestCase):
35 self.client = Client()
36 StorageInstModel.objects.create(
44 NetworkInstModel.objects.create(
54 SubNetworkInstModel.objects.create(
65 PortInstModel.objects.create(
77 FlavourInstModel.objects.create(
84 VmInstModel.objects.create(
94 NfvoRegInfoModel.objects.create(
101 VmInstModel.objects.all().delete()
102 NetworkInstModel.objects.all().delete()
103 SubNetworkInstModel.objects.all().delete()
104 PortInstModel.objects.all().delete()
106 def assert_job_result(self, job_id, job_progress, job_detail):
107 jobs = JobStatusModel.objects.filter(
109 progress=job_progress,
112 self.assertEqual(1, len(jobs))
114 def test_delete_vnf_identifier(self):
115 NfInstModel.objects.create(
123 status='NOT_INSTANTIATED',
126 vnfSoftwareVersion='',
127 vnfConfigurableProperties='todo',
128 localizationLanguage='EN_US',
129 create_time=now_time()
131 response = self.client.delete("/api/vnflcm/v1/vnf_instances/1111")
132 self.assertEqual(status.HTTP_204_NO_CONTENT, response.status_code)
133 self.assertEqual(None, response.data)
135 def test_delete_vnf_identifier_when_vnf_not_exist(self):
136 response = self.client.delete("/api/vnflcm/v1/vnf_instances/1111")
137 self.assertEqual(status.HTTP_204_NO_CONTENT, response.status_code)
139 @mock.patch.object(DeleteVnf, 'do_biz')
140 def test_delete_vnf_inner_error(self, mock_DeleteVnf_do_biz):
141 mock_DeleteVnf_do_biz.side_effect = NFLCMException('Boom!')
142 response = self.client.delete("/api/vnflcm/v1/vnf_instances/1234")
143 self.assertEqual(status.HTTP_500_INTERNAL_SERVER_ERROR, response.status_code)