improve code coverage rate after vfclcm upgraded from python2 to python3
[vfc/gvnfm/vnflcm.git] / lcm / lcm / nf / tests / test_delete_vnf.py
1 # Copyright 2017 ZTE Corporation.
2 #
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
6 #
7 #         http://www.apache.org/licenses/LICENSE-2.0
8 #
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.
14
15 import mock
16 from django.test import TestCase, Client
17 from rest_framework import status
18
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
31
32
33 class TestNFTerminate(TestCase):
34     def setUp(self):
35         self.client = Client()
36         StorageInstModel.objects.create(
37             storageid="1",
38             vimid="1",
39             resourceid="11",
40             insttype=0,
41             instid="1111",
42             is_predefined=1
43         )
44         NetworkInstModel.objects.create(
45             networkid='1',
46             vimid='1',
47             resourceid='1',
48             name='pnet_network',
49             is_predefined=1,
50             tenant='admin',
51             insttype=0,
52             instid='1111'
53         )
54         SubNetworkInstModel.objects.create(
55             subnetworkid='1',
56             vimid='1',
57             resourceid='1',
58             networkid='1',
59             is_predefined=1,
60             name='sub_pnet',
61             tenant='admin',
62             insttype=0,
63             instid='1111'
64         )
65         PortInstModel.objects.create(
66             portid='1',
67             networkid='1',
68             subnetworkid='1',
69             vimid='1',
70             resourceid='1',
71             is_predefined=1,
72             name='aaa_pnet_cp',
73             tenant='admin',
74             insttype=0,
75             instid='1111'
76         )
77         FlavourInstModel.objects.create(
78             flavourid="1",
79             vimid="1",
80             resourceid="11",
81             instid="1111",
82             is_predefined=1
83         )
84         VmInstModel.objects.create(
85             vmid="1",
86             vimid="1",
87             resourceid="11",
88             insttype=0,
89             instid="1111",
90             vmname="test_01",
91             is_predefined=1,
92             operationalstate=1
93         )
94         NfvoRegInfoModel.objects.create(
95             nfvoid='1111',
96             vnfminstid='11111',
97             apiurl='1'
98         )
99
100     def tearDown(self):
101         VmInstModel.objects.all().delete()
102         NetworkInstModel.objects.all().delete()
103         SubNetworkInstModel.objects.all().delete()
104         PortInstModel.objects.all().delete()
105
106     def assert_job_result(self, job_id, job_progress, job_detail):
107         jobs = JobStatusModel.objects.filter(
108             jobid=job_id,
109             progress=job_progress,
110             descp=job_detail
111         )
112         self.assertEqual(1, len(jobs))
113
114     def test_delete_vnf_identifier(self):
115         NfInstModel.objects.create(
116             nfinstid='1111',
117             nf_name='2222',
118             package_id='todo',
119             version='',
120             vendor='',
121             netype='',
122             vnfd_model='',
123             status='NOT_INSTANTIATED',
124             nf_desc='',
125             vnfdid='',
126             vnfSoftwareVersion='',
127             vnfConfigurableProperties='todo',
128             localizationLanguage='EN_US',
129             create_time=now_time()
130         )
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)
134
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)
138
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)