Modify code and models of gvnfm vnfres
[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                 "vmInfo": [],
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                 "tenant": None,
74                 "is_predefined": 0,
75                 "security_groups": 'sec0',
76                 "flavor_id": 'flavor0',
77                 "availability_zone": 'ava0',
78                 "server_group": 'server0',
79                 "volume_array": 'volume0',
80                 "metadata": 'meta0',
81                 "nic_array": 'nic0'
82             }]
83         }
84         self.flavors_data = {
85             "resp_data": [{
86                 "flavourid": "fla0",
87                 "name": "fname0",
88                 "vcpu": 0,
89                 "memory": 0,
90                 "extraspecs": "ext0",
91                 "instid": "01",
92                 "tenant": None,
93                 "vimid": "vim0",
94                 "resouceid": 'res0',
95                 "create_time": None
96             }]
97         }
98         self.networks_data = {
99             "resp_data": [{
100                 "networkid": "net0",
101                 "vimid": "vim0",
102                 "resouceid": "res0",
103                 "insttype": 0,
104                 "instid": "01",
105                 "name": "net_name0"
106                 # "tenant": None
107             }]
108         }
109         self.subnets_data = {
110             "resp_data": [{
111                 "subnetworkid": "sub0",
112                 "vimid": "vim0",
113                 "resouceid": "res0",
114                 "networkid": "net0",
115                 "insttype": 0,
116                 "instid": "01",
117                 "name": "sub_name0",
118                 "cidr": "cidr0"
119             }]
120         }
121         self.cps_data = {
122             "resp_data": [{
123                 "cpinstanceid": "cp0",
124                 "cpdid": "cpd0",
125                 "cpinstancename": "cpinstname0",
126                 "vlinstanceid": "vlinst0",
127                 "ownertype": 0,
128                 "ownerid": "01",
129                 "relatedtype": 0
130             }]
131         }
132
133         self.volumes_data = {
134             "resp_data": [{
135                 "storageid": "st0",
136                 "vimid": "vim0",
137                 "resouceid": "res0",
138                 "insttype": 0,
139                 "instid": "01",
140                 "storagetype": "stype0",
141                 "size": "0"
142             }]
143         }
144
145     def tearDown(self):
146         pass
147         
148     def test_get_vnf(self):
149         vnf_inst_id = "1"
150         NfInstModel(nfinstid=vnf_inst_id, nf_name='VNF1').save()
151         StorageInstModel(storageid='s02', vimid='vim01', resouceid='resource01', insttype=1,\
152                          instid=vnf_inst_id, storagetype='desc01', size='ten').save()
153         response = self.client.get("/openoapi/vnfres/v1/vnfs/%s" % vnf_inst_id)
154         self.failUnlessEqual(status.HTTP_200_OK, response.status_code)
155         self.assertEqual(self.test_data, response.data)
156
157
158     def test_get_vnfs(self):
159         for i in range(1):
160             NfInstModel(nfinstid='%s' % i, nf_name='VNF%s' % i).save()
161             StorageInstModel(storageid='s0%s' % i, vimid='vim0%s' % i, resouceid='resource0%s' % i, insttype=1, instid='%s' % i, storagetype='desc%s' % i, size='ten').save()
162         response = self.client.get("/openoapi/vnfres/v1/vnfs")
163         self.failUnlessEqual(status.HTTP_200_OK, response.status_code)
164         # self.assertEqual(self.test_data, response.data)
165
166     def test_get_vms(self):
167         NfInstModel(nfinstid='%s' % '01', nf_name='VFS%s' % '01').save()
168         nfInst = NfInstModel.objects.get(pk='01')
169         for i in range(1):
170             VmInstModel(vmid='vm%s' % i, vimid='vim%s' % i, resouceid='res%s' % i, instid='%s' % nfInst.nfinstid, insttype=0, vmname='v1', nic_array='nic%s' % i, metadata='meta%s' % i, volume_array='volume%s' % i, server_group='server%s' % i, availability_zone='ava%s' %i, flavor_id='flavor%s' % i, security_groups='sec%s' % i).save()
171         response = self.client.get("/openoapi/vnfres/v1/%s/vms" % nfInst.nfinstid)
172         self.failUnlessEqual(status.HTTP_200_OK, response.status_code)
173         self.assertEqual(self.vms_data, response.data)
174
175     def test_get_flavors(self):
176         NfInstModel(nfinstid='%s' % '01', nf_name='VFS%s' % '01').save()
177         nfInst = NfInstModel.objects.get(pk='01')
178         for i in range(1):
179             FlavourInstModel(flavourid='fla%s' % i, name='fname%s' % i, vcpu='%d' % i, instid='%s' % nfInst.nfinstid, memory='%d' % i, extraspecs='ext%s' % i, vimid='vim%s' % i, resouceid='res%s' % i).save()
180         response = self.client.get("/openoapi/vnfres/v1/%s/flavors" % nfInst.nfinstid)
181         self.failUnlessEqual(status.HTTP_200_OK, response.status_code)
182         self.assertEqual(self.flavors_data, response.data)
183
184     def test_get_networks(self):
185         for i in range(1):
186             NetworkInstModel(networkid='net%s' % i, name='net_name%s' % i, vimid='vim%s' % i, instid='%s' % self.nf_inst_id,
187                              resouceid='res%s' % i, insttype='%d' % i).save()
188         response = self.client.get("/openoapi/vnfres/v1/%s/networks" % self.nf_inst_id)
189         self.failUnlessEqual(status.HTTP_200_OK, response.status_code)
190         self.assertEqual(self.networks_data, response.data)
191
192     def test_get_subnets(self):
193         for i in range(1):
194             SubNetworkInstModel(subnetworkid="sub%s" % i, vimid='vim%s' % i, resouceid='res%s' % i, networkid='net%s' % i, insttype='%d' % i, instid='%s' % self.nf_inst_id, 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, vlinstanceid='vlinst%s' % i, ownertype='%d' % i, ownerid='%s' % self.nf_inst_id, relatedtype='%d' % i).save()
202         response = self.client.get("/openoapi/vnfres/v1/%s/cps" % self.nf_inst_id)
203         self.failUnlessEqual(status.HTTP_200_OK, response.status_code)
204         self.assertEqual(self.cps_data, response.data)
205
206     def test_get_volumes(self):
207         for i in range(1):
208             StorageInstModel(storageid="st%s" % i, vimid='vim%s' % i, resouceid='res%s' % i, insttype='%d' % i, instid='%s' % self.nf_inst_id, storagetype='stype%s' % i, size='%s' % i).save()
209         response = self.client.get("/openoapi/vnfres/v1/%s/volumes" % self.nf_inst_id)
210         self.assertEqual(self.volumes_data, response.data)
211         self.failUnlessEqual(status.HTTP_200_OK, response.status_code)
212
213     def test_swagger_ok(self):
214         resp = self.client.get("/openoapi/vnfres/v1/swagger.json", format='json')
215         self.assertEqual(resp.status_code, status.HTTP_200_OK, resp.content)