Refactor code and testcase of gvnfmres
[vfc/gvnfm/vnfres.git] / res / res / resources / tests.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 from django.test import TestCase, Client
15 from rest_framework import status
16
17 from res.pub.database.models import NfInstModel, StorageInstModel, VmInstModel, FlavourInstModel, NetworkInstModel, \
18     SubNetworkInstModel, CPInstModel
19
20
21 class ResourceTest(TestCase):
22     def setUp(self):
23         self.client = Client()
24         self.nf_inst_id = "01"
25         NfInstModel.objects.all().delete()
26         self.test_data = {
27             "vnfInstanceId": u'1',
28             "vnfInstanceName": 'VNF1',
29             "vnfInstanceDescription": None,
30             "onboardedVnfPkgInfoId": None,
31             "vnfdId": None,
32             "vnfdVersion": None,
33             "vnfSoftwareVersion": None,
34             "vnfProvider": None,
35             "vnfProductName": None,
36             "vnfConfigurableProperties": {None},
37             "instantiationState": None,
38             "instantiatedVnfInfo": {
39                 "flavourId": None,
40                 "vnfState": None,
41                 "scaleStatus": [],
42                 "extCpInfo": [],
43                 "extVirtualLink": [],
44                 "monitoringParameters": {},
45                 "localizationLanguage": None,
46                 "vimInfo": [],
47                 "vnfcResourceInfo": [],
48                 "virtualLinkResourceInfo": [],
49                 "virtualStorageResourceInfo": [
50                     {
51                         "virtualStorageInstanceId": "s02",
52                         "virtualStorageDescId": "desc01",
53                         "storageResource": {
54                             "vimId": "vim01",
55                             "resourceId": "resource01"
56                         }
57                     }
58
59                 ]
60             },
61             "metadata": None,
62             "extensions": None
63         }
64         self.vms_data = {
65             "resp_data": [{
66                 "vmid": u"vm0",
67                 "vimid": u"vim0",
68                 "resouceid": u"res0",
69                 "insttype": 0,
70                 "instid": u"01",
71                 "vmname": u"v1",
72                 "operationalstate": None,
73                 "zoneid": None,
74                 "tenant": None,
75                 "hostid": None,
76                 "detailinfo": None,
77                 "is_predefined": 0
78             }]
79         }
80         self.flavors_data = {
81             "resp_data": [{
82                 "flavourid": "fla0",
83                 "name": "fname0",
84                 "vcpu": "cpu0",
85                 "memory": "mem0",
86                 "extraspecs": "ext0",
87                 "instid": "01",
88                 "tenant": None,
89                 "vmid": "vm0",
90                 "create_time": None
91             }]
92         }
93         self.networks_data = {
94             "resp_data": [{
95                 "networkid": "net0",
96                 "vimid": "vim0",
97                 "resouceid": "res0",
98                 "insttype": 0,
99                 "instid": "01",
100                 "name": "net_name0"
101                 # "tenant": None
102             }]
103         }
104         self.subnets_data = {
105             "resp_data": [{
106                 "subnetworkid": "sub0",
107                 "vimid": "vim0",
108                 "resouceid": "res0",
109                 "networkid": "net0",
110                 "insttype": 0,
111                 "instid": "01",
112                 "name": "sub_name0",
113                 "cidr": "cidr0"
114             }]
115         }
116         self.cps_data = {
117             "resp_data": [{
118                 "cpinstanceid": "cp0",
119                 "cpdid": "cpd0",
120                 "cpinstancename": "cpinstname0",
121                 "vlinstanceid": "vlinst0",
122                 "ownertype": 0,
123                 "ownerid": "01",
124                 "relatedtype": 0
125             }]
126         }
127         self.volumes_data = {
128             "resp_data": [{
129                 "storageid": "st0",
130                 "vimid": "vim0",
131                 "resouceid": "res0",
132                 "insttype": 0,
133                 "instid": "01",
134                 "storagetype": "stype0",
135                 "size": "0",
136                 "disktype": "disk0"
137             }]
138         }
139
140     def tearDown(self):
141         pass
142         
143     def test_get_vnf(self):
144         vnf_inst_id = "1"
145         NfInstModel(nfinstid=vnf_inst_id, nf_name='VNF1').save()
146         StorageInstModel(storageid='s02', vimid='vim01', resouceid='resource01', insttype=1,
147                          instid=vnf_inst_id, storageDesc='desc01').save()
148         response = self.client.get("/openoapi/vnfres/v1/vnfs/%s" % vnf_inst_id)
149         self.failUnlessEqual(status.HTTP_200_OK, response.status_code)
150         self.assertEqual(self.test_data, response.data)
151
152     def test_get_vnfs(self):
153         for i in range(1, 5):
154             NfInstModel(nfinstid='%s' % i, nf_name='VNF%s' % i).save()
155             StorageInstModel(storageid='s0%s' % i, vimid='vim0%s' % i, resouceid='resource0%s' % i,
156                              insttype=1, instid='%s' % i, storageDesc='desc%s' % i).save()
157         response = self.client.get("/openoapi/vnfres/v1/vnfs")
158         self.failUnlessEqual(status.HTTP_200_OK, response.status_code)
159         # self.assertEqual(self.test_data, response.data)
160
161     def test_get_vms(self):
162         NfInstModel(nfinstid='%s' % '01', nf_name='VFS%s' % '01').save()
163         nfinst = NfInstModel.objects.get(pk='01')
164         for i in range(1):
165             VmInstModel(vmid='vm%s' % i, vimid='vim%s' % i, resouceid='res%s' % i,
166                         instid='%s' % nfinst.nfinstid, insttype=0, vmname='v1').save()
167         response = self.client.get("/openoapi/vnfres/v1/%s/vms" % nfinst.nfinstid)
168         self.failUnlessEqual(status.HTTP_200_OK, response.status_code)
169         self.assertEqual(self.vms_data, response.data)
170
171     def test_get_flavors(self):
172         NfInstModel(nfinstid='%s' % '01', nf_name='VFS%s' % '01').save()
173         nfinst = NfInstModel.objects.get(pk='01')
174         for i in range(1):
175             FlavourInstModel(flavourid='fla%s' % i, name='fname%s' % i, vcpu='cpu%s' % i,
176                              instid='%s' % nfinst.nfinstid, memory='mem%s' % i,
177                              extraspecs='ext%s' % i, vmid='vm%s' % i).save()
178         response = self.client.get("/openoapi/vnfres/v1/%s/flavors" % nfinst.nfinstid)
179         self.failUnlessEqual(status.HTTP_200_OK, response.status_code)
180         self.assertEqual(self.flavors_data, response.data)
181
182     def test_get_networks(self):
183         for i in range(1):
184             NetworkInstModel(networkid='net%s' % i, name='net_name%s' % i, vimid='vim%s' % i,
185                              instid='%s' % self.nf_inst_id, resouceid='res%s' % i, insttype='%d' % i).save()
186         response = self.client.get("/openoapi/vnfres/v1/%s/networks" % self.nf_inst_id)
187         self.failUnlessEqual(status.HTTP_200_OK, response.status_code)
188         self.assertEqual(self.networks_data, response.data)
189
190     def test_get_subnets(self):
191         for i in range(1):
192             SubNetworkInstModel(subnetworkid="sub%s" % i, vimid='vim%s' % i, resouceid='res%s' % i,
193                                 networkid='net%s' % i, insttype='%d' % i, instid='%s' % self.nf_inst_id,
194                                 name='sub_name%s' % i, cidr="cidr%s" % i).save()
195         response = self.client.get("/openoapi/vnfres/v1/%s/subnets" % self.nf_inst_id)
196         self.failUnlessEqual(status.HTTP_200_OK, response.status_code)
197         self.assertEqual(self.subnets_data, response.data)
198
199     def test_get_cps(self):
200         for i in range(1):
201             CPInstModel(cpinstanceid="cp%s" % i, cpdid='cpd%s' % i, cpinstancename='cpinstname%s' % i,
202                         vlinstanceid='vlinst%s' % i, ownertype='%d' % i, ownerid='%s' % self.nf_inst_id,
203                         relatedtype='%d' % i).save()
204         response = self.client.get("/openoapi/vnfres/v1/%s/cps" % self.nf_inst_id)
205         self.failUnlessEqual(status.HTTP_200_OK, response.status_code)
206         self.assertEqual(self.cps_data, response.data)
207
208     def test_get_volumes(self):
209         for i in range(1):
210             StorageInstModel(storageid="st%s" % i, vimid='vim%s' % i, resouceid='res%s' % i, insttype='%d' % i,
211                              instid='%s' % self.nf_inst_id, storagetype='stype%s' % i, size='%s' % i,
212                              disktype='disk%s' % i).save()
213         response = self.client.get("/openoapi/vnfres/v1/%s/volumes" % self.nf_inst_id)
214         self.failUnlessEqual(status.HTTP_200_OK, response.status_code)
215         self.assertEqual(self.volumes_data, response.data)
216
217     def test_swagger_ok(self):
218         resp = self.client.get("/openoapi/vnfres/v1/swagger.json", format='json')
219         self.assertEqual(resp.status_code, status.HTTP_200_OK)