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