1 # Copyright (C) 2021 Wind River Systems, Inc.
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.
17 from o2ims.domain import ocloud
18 from o2ims.domain import resource_type as rt
19 from o2ims.views import ocloud_view
20 from o2ims import config
24 ocloudid1 = str(uuid.uuid4())
25 ocloud1 = ocloud.Ocloud(ocloudid1, "ocloud1",
26 config.get_api_url(), "ocloud for unit test", 1)
30 def test_new_ocloud():
31 ocloudid1 = str(uuid.uuid4())
32 ocloud1 = ocloud.Ocloud(ocloudid1, "ocloud1",
33 config.get_api_url(), "ocloud for unit test", 1)
34 assert ocloudid1 is not None and ocloud1.oCloudId == ocloudid1
37 def test_add_ocloud_with_dms():
38 ocloud1 = setup_ocloud()
39 dmsid = str(uuid.uuid4())
40 dms = ocloud.DeploymentManager(
41 dmsid, "k8s1", ocloud1.oCloudId, config.get_api_url()+"/k8s1")
42 ocloud1.addDeploymentManager(dms)
43 ocloud1.addDeploymentManager(dms)
44 assert len(ocloud1.deploymentManagers) == 1
45 # repo.update(ocloud1.oCloudId, {
46 # "deploymentManagers": ocloud1.deploymentManagers})
49 def test_new_resource_type():
50 ocloud1 = setup_ocloud()
51 resource_type_id1 = str(uuid.uuid4())
52 resource_type1 = ocloud.ResourceType(
53 resource_type_id1, "resourcetype1", rt.ResourceTypeEnum.PSERVER,
55 assert resource_type_id1 is not None and \
56 resource_type1.resourceTypeId == resource_type_id1
59 def test_new_resource_pool():
60 ocloud1 = setup_ocloud()
61 resource_pool_id1 = str(uuid.uuid4())
62 resource_pool1 = ocloud.ResourcePool(
63 resource_pool_id1, "resourcepool1", config.get_api_url(),
65 assert resource_pool_id1 is not None and \
66 resource_pool1.resourcePoolId == resource_pool_id1
69 def test_new_resource():
70 resource_id1 = str(uuid.uuid4())
71 resource_type_id1 = str(uuid.uuid4())
72 resource_pool_id1 = str(uuid.uuid4())
73 resource1 = ocloud.Resource(
74 resource_id1, resource_type_id1, resource_pool_id1)
75 assert resource_id1 is not None and resource1.resourceId == resource_id1
78 def test_view_olcouds(mock_uow):
79 session, uow = mock_uow
81 ocloud1_UUID = str(uuid.uuid4)
82 session.return_value.execute.return_value = [
83 {"oCloudId": ocloud1_UUID}]
85 ocloud_list = ocloud_view.oclouds(uow)
86 assert str(ocloud_list[0].get("oCloudId")) == ocloud1_UUID
89 def test_view_olcoud_one(mock_uow):
90 session, uow = mock_uow
92 ocloud1_UUID = str(uuid.uuid4)
93 session.return_value.execute.return_value.first.return_value = None
96 ocloud_res = ocloud_view.ocloud_one(ocloud1_UUID, uow)
97 assert ocloud_res is None
99 session.return_value.execute.return_value.first.return_value = {
100 "oCloudId": ocloud1_UUID}
102 ocloud_res = ocloud_view.ocloud_one(ocloud1_UUID, uow)
103 assert str(ocloud_res.get("oCloudId")) == ocloud1_UUID
106 def test_view_resource_types(mock_uow):
107 session, uow = mock_uow
109 resource_type_id1 = str(uuid.uuid4())
110 session.return_value.execute.return_value = [
111 {"resourceTypeId": resource_type_id1}
114 resource_type_list = ocloud_view.resource_types(uow)
115 assert str(resource_type_list[0].get(
116 "resourceTypeId")) == resource_type_id1
119 def test_view_resource_type_one(mock_uow):
120 session, uow = mock_uow
122 resource_type_id1 = str(uuid.uuid4())
123 session.return_value.execute.return_value.first.return_value = None
126 resource_type_res = ocloud_view.resource_type_one(
127 resource_type_id1, uow)
128 assert resource_type_res is None
130 session.return_value.execute.return_value.first.return_value = {
131 "resourceTypeId": resource_type_id1}
133 resource_type_res = ocloud_view.resource_type_one(resource_type_id1, uow)
134 assert str(resource_type_res.get("resourceTypeId")) == resource_type_id1
137 def test_view_resource_pools(mock_uow):
138 session, uow = mock_uow
140 resource_pool_id1 = str(uuid.uuid4())
141 session.return_value.execute.return_value = [
142 {"resourcePoolId": resource_pool_id1}
145 resource_pool_list = ocloud_view.resource_pools(uow)
146 assert str(resource_pool_list[0].get(
147 "resourcePoolId")) == resource_pool_id1
150 def test_view_resource_pool_one(mock_uow):
151 session, uow = mock_uow
153 resource_pool_id1 = str(uuid.uuid4())
154 session.return_value.execute.return_value.first.return_value = None
157 resource_pool_res = ocloud_view.resource_pool_one(
158 resource_pool_id1, uow)
159 assert resource_pool_res is None
161 session.return_value.execute.return_value.first.return_value = {
162 "resourcePoolId": resource_pool_id1
165 resource_pool_res = ocloud_view.resource_pool_one(resource_pool_id1, uow)
166 assert str(resource_pool_res.get("resourcePoolId")) == resource_pool_id1
169 def test_view_resources(mock_uow):
170 session, uow = mock_uow
172 resource_id1 = str(uuid.uuid4())
173 resource_pool_id1 = str(uuid.uuid4())
174 session.return_value.execute.return_value = [{
175 "resourceId": resource_id1,
176 "resourcePoolId": resource_pool_id1
179 resource_list = ocloud_view.resources(resource_pool_id1, uow)
180 assert str(resource_list[0].get("resourceId")) == resource_id1
181 assert str(resource_list[0].get("resourcePoolId")) == resource_pool_id1
184 def test_view_resource_one(mock_uow):
185 session, uow = mock_uow
187 resource_id1 = str(uuid.uuid4())
188 resource_pool_id1 = str(uuid.uuid4())
189 session.return_value.execute.return_value.first.return_value = None
192 resource_res = ocloud_view.resource_one(resource_id1, uow)
193 assert resource_res is None
195 session.return_value.execute.return_value.first.return_value = {
196 "resourceId": resource_id1,
197 "resourcePoolId": resource_pool_id1
200 resource_res = ocloud_view.resource_one(resource_id1, uow)
201 assert str(resource_res.get("resourceId")) == resource_id1
204 def test_flask_get_list(mock_flask_uow):
205 session, client = mock_flask_uow
206 session.return_value.execute.return_value = []
207 apibase = config.get_o2ims_api_base()
209 # Get list and return empty list
210 ##########################
211 resp = client.get(apibase)
212 assert resp.get_data() == b'[]\n'
214 resp = client.get(apibase+"/resourceTypes")
215 assert resp.get_data() == b'[]\n'
217 resp = client.get(apibase+"/resourcePools")
218 assert resp.get_data() == b'[]\n'
220 resource_pool_id1 = str(uuid.uuid4())
221 resp = client.get(apibase+"/resourcePools/"+resource_pool_id1+"/resources")
222 assert resp.get_data() == b'[]\n'
224 resp = client.get(apibase+"/deploymentManagers")
225 assert resp.get_data() == b'[]\n'
228 def test_flask_get_one(mock_flask_uow):
229 session, client = mock_flask_uow
230 session.return_value.execute.return_value.first.return_value = None
231 apibase = config.get_o2ims_api_base()
233 # Get one and return nothing
234 ###########################
235 resource_type_id1 = str(uuid.uuid4())
236 resp = client.get(apibase+"/resourceTypes/"+resource_type_id1)
237 assert resp.get_data() == b''
239 resource_pool_id1 = str(uuid.uuid4())
240 resp = client.get(apibase+"/resourcePools/"+resource_pool_id1)
241 assert resp.get_data() == b''
243 resource_id1 = str(uuid.uuid4())
244 resp = client.get(apibase+"/resourcePools/" +
245 resource_pool_id1+"/resources/"+resource_id1)
246 assert resp.get_data() == b''
248 deployment_manager_id1 = str(uuid.uuid4())
249 resp = client.get(apibase+"/deploymentManagers/"+deployment_manager_id1)
250 assert resp.get_data() == b''
253 def test_flask_not_allowed(mock_flask_uow):
254 _, client = mock_flask_uow
255 apibase = config.get_o2ims_api_base()
257 # Testing resource type not support method
258 ##########################
259 uri = apibase + "/resourceTypes"
260 resp = client.post(uri)
261 assert resp.status == '405 METHOD NOT ALLOWED'
262 resp = client.put(uri)
263 assert resp.status == '405 METHOD NOT ALLOWED'
264 resp = client.patch(uri)
265 assert resp.status == '405 METHOD NOT ALLOWED'
266 resp = client.delete(uri)
267 assert resp.status == '405 METHOD NOT ALLOWED'
269 resource_type_id1 = str(uuid.uuid4())
270 uri = apibase + "/resourceTypes/" + resource_type_id1
271 resp = client.post(uri)
272 assert resp.status == '405 METHOD NOT ALLOWED'
273 resp = client.put(uri)
274 assert resp.status == '405 METHOD NOT ALLOWED'
275 resp = client.patch(uri)
276 assert resp.status == '405 METHOD NOT ALLOWED'
277 resp = client.delete(uri)
278 assert resp.status == '405 METHOD NOT ALLOWED'
280 # Testing resource pool not support method
281 ##########################
282 uri = apibase + "/resourcePools"
283 resp = client.post(uri)
284 assert resp.status == '405 METHOD NOT ALLOWED'
285 resp = client.put(uri)
286 assert resp.status == '405 METHOD NOT ALLOWED'
287 resp = client.patch(uri)
288 assert resp.status == '405 METHOD NOT ALLOWED'
289 resp = client.delete(uri)
290 assert resp.status == '405 METHOD NOT ALLOWED'
292 resource_pool_id1 = str(uuid.uuid4())
293 uri = apibase + "/resourcePools/" + resource_pool_id1
294 resp = client.post(uri)
295 assert resp.status == '405 METHOD NOT ALLOWED'
296 resp = client.put(uri)
297 assert resp.status == '405 METHOD NOT ALLOWED'
298 resp = client.patch(uri)
299 assert resp.status == '405 METHOD NOT ALLOWED'
300 resp = client.delete(uri)
301 assert resp.status == '405 METHOD NOT ALLOWED'
303 # Testing resource not support method
304 ##########################
305 uri = apibase + "/resourcePools/" + resource_pool_id1 + "/resources"
306 resp = client.post(uri)
307 assert resp.status == '405 METHOD NOT ALLOWED'
308 resp = client.put(uri)
309 assert resp.status == '405 METHOD NOT ALLOWED'
310 resp = client.patch(uri)
311 assert resp.status == '405 METHOD NOT ALLOWED'
312 resp = client.delete(uri)
313 assert resp.status == '405 METHOD NOT ALLOWED'
315 resource_id1 = str(uuid.uuid4())
316 uri = apibase + "/resourcePools/" + \
317 resource_pool_id1 + "/resources/" + resource_id1
318 resp = client.post(uri)
319 assert resp.status == '405 METHOD NOT ALLOWED'
320 resp = client.put(uri)
321 assert resp.status == '405 METHOD NOT ALLOWED'
322 resp = client.patch(uri)
323 assert resp.status == '405 METHOD NOT ALLOWED'
324 resp = client.delete(uri)
325 assert resp.status == '405 METHOD NOT ALLOWED'
327 # Testing deployment managers not support method
328 ##########################
329 uri = apibase + "/deploymentManagers"
330 resp = client.post(uri)
331 assert resp.status == '405 METHOD NOT ALLOWED'
332 resp = client.put(uri)
333 assert resp.status == '405 METHOD NOT ALLOWED'
334 resp = client.patch(uri)
335 assert resp.status == '405 METHOD NOT ALLOWED'
336 resp = client.delete(uri)
337 assert resp.status == '405 METHOD NOT ALLOWED'
339 deployment_manager_id1 = str(uuid.uuid4())
340 uri = apibase + "/deploymentManagers/" + deployment_manager_id1
341 resp = client.post(uri)
342 assert resp.status == '405 METHOD NOT ALLOWED'
343 resp = client.put(uri)
344 assert resp.status == '405 METHOD NOT ALLOWED'
345 resp = client.patch(uri)
346 assert resp.status == '405 METHOD NOT ALLOWED'
347 resp = client.delete(uri)
348 assert resp.status == '405 METHOD NOT ALLOWED'