a55629561d4b9bee2dfdd6677b3c6e6234dd5c17
[pti/o2.git] / tests / unit / test_ocloud.py
1 # Copyright (C) 2021 Wind River Systems, Inc.
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 uuid
16
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
21
22
23 def setup_ocloud():
24     ocloudid1 = str(uuid.uuid4())
25     ocloud1 = ocloud.Ocloud(ocloudid1, "ocloud1",
26                             config.get_api_url(), "ocloud for unit test", 1)
27     return ocloud1
28
29
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
35
36
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})
47
48
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,
54         ocloud1.oCloudId)
55     assert resource_type_id1 is not None and \
56         resource_type1.resourceTypeId == resource_type_id1
57
58
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(),
64         ocloud1.oCloudId)
65     assert resource_pool_id1 is not None and \
66         resource_pool1.resourcePoolId == resource_pool_id1
67
68
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
76
77
78 def test_new_deployment_manager():
79     ocloud_id1 = str(uuid.uuid4())
80     deployment_manager_id1 = str(uuid.uuid4())
81     deployment_manager1 = ocloud.DeploymentManager(
82         deployment_manager_id1, "k8s1", ocloud_id1,
83         config.get_api_url()+"/k8s1")
84     assert deployment_manager_id1 is not None and deployment_manager1.\
85         deploymentManagerId == deployment_manager_id1
86
87
88 def test_new_subscription():
89     subscription_id1 = str(uuid.uuid4())
90     subscription1 = ocloud.Subscription(
91         subscription_id1, "https://callback/uri/write/here")
92     assert subscription_id1 is not None and\
93         subscription1.subscriptionId == subscription_id1
94
95
96 def test_view_olcouds(mock_uow):
97     session, uow = mock_uow
98
99     ocloud1_UUID = str(uuid.uuid4)
100     session.return_value.execute.return_value = [
101         {"oCloudId": ocloud1_UUID}]
102
103     ocloud_list = ocloud_view.oclouds(uow)
104     assert str(ocloud_list[0].get("oCloudId")) == ocloud1_UUID
105
106
107 def test_view_olcoud_one(mock_uow):
108     session, uow = mock_uow
109
110     ocloud1_UUID = str(uuid.uuid4)
111     session.return_value.execute.return_value.first.return_value = None
112
113     # Query return None
114     ocloud_res = ocloud_view.ocloud_one(ocloud1_UUID, uow)
115     assert ocloud_res is None
116
117     session.return_value.execute.return_value.first.return_value = {
118         "oCloudId": ocloud1_UUID}
119
120     ocloud_res = ocloud_view.ocloud_one(ocloud1_UUID, uow)
121     assert str(ocloud_res.get("oCloudId")) == ocloud1_UUID
122
123
124 def test_view_resource_types(mock_uow):
125     session, uow = mock_uow
126
127     resource_type_id1 = str(uuid.uuid4())
128     session.return_value.execute.return_value = [
129         {"resourceTypeId": resource_type_id1}
130     ]
131
132     resource_type_list = ocloud_view.resource_types(uow)
133     assert str(resource_type_list[0].get(
134         "resourceTypeId")) == resource_type_id1
135
136
137 def test_view_resource_type_one(mock_uow):
138     session, uow = mock_uow
139
140     resource_type_id1 = str(uuid.uuid4())
141     session.return_value.execute.return_value.first.return_value = None
142
143     # Query return None
144     resource_type_res = ocloud_view.resource_type_one(
145         resource_type_id1, uow)
146     assert resource_type_res is None
147
148     session.return_value.execute.return_value.first.return_value = {
149         "resourceTypeId": resource_type_id1}
150
151     resource_type_res = ocloud_view.resource_type_one(resource_type_id1, uow)
152     assert str(resource_type_res.get("resourceTypeId")) == resource_type_id1
153
154
155 def test_view_resource_pools(mock_uow):
156     session, uow = mock_uow
157
158     resource_pool_id1 = str(uuid.uuid4())
159     session.return_value.execute.return_value = [
160         {"resourcePoolId": resource_pool_id1}
161     ]
162
163     resource_pool_list = ocloud_view.resource_pools(uow)
164     assert str(resource_pool_list[0].get(
165         "resourcePoolId")) == resource_pool_id1
166
167
168 def test_view_resource_pool_one(mock_uow):
169     session, uow = mock_uow
170
171     resource_pool_id1 = str(uuid.uuid4())
172     session.return_value.execute.return_value.first.return_value = None
173
174     # Query return None
175     resource_pool_res = ocloud_view.resource_pool_one(
176         resource_pool_id1, uow)
177     assert resource_pool_res is None
178
179     session.return_value.execute.return_value.first.return_value = {
180         "resourcePoolId": resource_pool_id1
181     }
182
183     resource_pool_res = ocloud_view.resource_pool_one(resource_pool_id1, uow)
184     assert str(resource_pool_res.get("resourcePoolId")) == resource_pool_id1
185
186
187 def test_view_resources(mock_uow):
188     session, uow = mock_uow
189
190     resource_id1 = str(uuid.uuid4())
191     resource_pool_id1 = str(uuid.uuid4())
192     session.return_value.execute.return_value = [{
193         "resourceId": resource_id1,
194         "resourcePoolId": resource_pool_id1
195     }]
196
197     resource_list = ocloud_view.resources(resource_pool_id1, uow)
198     assert str(resource_list[0].get("resourceId")) == resource_id1
199     assert str(resource_list[0].get("resourcePoolId")) == resource_pool_id1
200
201
202 def test_view_resource_one(mock_uow):
203     session, uow = mock_uow
204
205     resource_id1 = str(uuid.uuid4())
206     resource_pool_id1 = str(uuid.uuid4())
207     session.return_value.execute.return_value.first.return_value = None
208
209     # Query return None
210     resource_res = ocloud_view.resource_one(resource_id1, uow)
211     assert resource_res is None
212
213     session.return_value.execute.return_value.first.return_value = {
214         "resourceId": resource_id1,
215         "resourcePoolId": resource_pool_id1
216     }
217
218     resource_res = ocloud_view.resource_one(resource_id1, uow)
219     assert str(resource_res.get("resourceId")) == resource_id1
220
221
222 def test_view_deployment_managers(mock_uow):
223     session, uow = mock_uow
224
225     deployment_manager_id1 = str(uuid.uuid4())
226     session.return_value.execute.return_value = [{
227         "deploymentManagerId": deployment_manager_id1,
228     }]
229
230     deployment_manager_list = ocloud_view.deployment_managers(uow)
231     assert str(deployment_manager_list[0].get(
232         "deploymentManagerId")) == deployment_manager_id1
233
234
235 def test_view_deployment_manager_one(mock_uow):
236     session, uow = mock_uow
237
238     deployment_manager_id1 = str(uuid.uuid4())
239     session.return_value.execute.return_value.first.return_value = None
240
241     # Query return None
242     deployment_manager_res = ocloud_view.deployment_manager_one(
243         deployment_manager_id1, uow)
244     assert deployment_manager_res is None
245
246     session.return_value.execute.return_value.first.return_value = {
247         "deploymentManagerId": deployment_manager_id1,
248     }
249
250     deployment_manager_res = ocloud_view.deployment_manager_one(
251         deployment_manager_id1, uow)
252     assert str(deployment_manager_res.get(
253         "deploymentManagerId")) == deployment_manager_id1
254
255
256 def test_view_subscriptions(mock_uow):
257     session, uow = mock_uow
258
259     subscription_id1 = str(uuid.uuid4())
260     session.return_value.execute.return_value = [{
261         "subscriptionId": subscription_id1,
262     }]
263
264     subscription_list = ocloud_view.subscriptions(uow)
265     assert str(subscription_list[0].get(
266         "subscriptionId")) == subscription_id1
267
268
269 def test_view_subscription_one(mock_uow):
270     session, uow = mock_uow
271
272     subscription_id1 = str(uuid.uuid4())
273     session.return_value.execute.return_value.first.return_value = None
274
275     # Query return None
276     subscription_res = ocloud_view.subscription_one(
277         subscription_id1, uow)
278     assert subscription_res is None
279
280     session.return_value.execute.return_value.first.return_value = {
281         "subscriptionId": subscription_id1,
282     }
283
284     subscription_res = ocloud_view.subscription_one(
285         subscription_id1, uow)
286     assert str(subscription_res.get(
287         "subscriptionId")) == subscription_id1
288
289
290 def test_flask_get_list(mock_flask_uow):
291     session, client = mock_flask_uow
292     session.return_value.execute.return_value = []
293     apibase = config.get_o2ims_api_base()
294
295     # Get list and return empty list
296     ##########################
297     resp = client.get(apibase+"/resourceTypes")
298     assert resp.get_data() == b'[]\n'
299
300     resp = client.get(apibase+"/resourcePools")
301     assert resp.get_data() == b'[]\n'
302
303     resource_pool_id1 = str(uuid.uuid4())
304     resp = client.get(apibase+"/resourcePools/"+resource_pool_id1+"/resources")
305     assert resp.get_data() == b'[]\n'
306
307     resp = client.get(apibase+"/deploymentManagers")
308     assert resp.get_data() == b'[]\n'
309
310
311 def test_flask_get_one(mock_flask_uow):
312     session, client = mock_flask_uow
313     session.return_value.execute.return_value.first.return_value = None
314     apibase = config.get_o2ims_api_base()
315
316     # Get one and return 404
317     ###########################
318     resp = client.get(apibase+"/")
319     assert resp.status_code == 404
320
321     resource_type_id1 = str(uuid.uuid4())
322     resp = client.get(apibase+"/resourceTypes/"+resource_type_id1)
323     assert resp.status_code == 404
324
325     resource_pool_id1 = str(uuid.uuid4())
326     resp = client.get(apibase+"/resourcePools/"+resource_pool_id1)
327     assert resp.status_code == 404
328
329     resource_id1 = str(uuid.uuid4())
330     resp = client.get(apibase+"/resourcePools/" +
331                       resource_pool_id1+"/resources/"+resource_id1)
332     assert resp.status_code == 404
333
334     deployment_manager_id1 = str(uuid.uuid4())
335     resp = client.get(apibase+"/deploymentManagers/"+deployment_manager_id1)
336     assert resp.status_code == 404
337
338     subscription_id1 = str(uuid.uuid4())
339     resp = client.get(apibase+"/subscriptions/"+subscription_id1)
340     assert resp.status_code == 404
341
342
343 def test_flask_not_allowed(mock_flask_uow):
344     _, client = mock_flask_uow
345     apibase = config.get_o2ims_api_base()
346
347     # Testing resource type not support method
348     ##########################
349     uri = apibase + "/resourceTypes"
350     resp = client.post(uri)
351     assert resp.status == '405 METHOD NOT ALLOWED'
352     resp = client.put(uri)
353     assert resp.status == '405 METHOD NOT ALLOWED'
354     resp = client.patch(uri)
355     assert resp.status == '405 METHOD NOT ALLOWED'
356     resp = client.delete(uri)
357     assert resp.status == '405 METHOD NOT ALLOWED'
358
359     resource_type_id1 = str(uuid.uuid4())
360     uri = apibase + "/resourceTypes/" + resource_type_id1
361     resp = client.post(uri)
362     assert resp.status == '405 METHOD NOT ALLOWED'
363     resp = client.put(uri)
364     assert resp.status == '405 METHOD NOT ALLOWED'
365     resp = client.patch(uri)
366     assert resp.status == '405 METHOD NOT ALLOWED'
367     resp = client.delete(uri)
368     assert resp.status == '405 METHOD NOT ALLOWED'
369
370     # Testing resource pool not support method
371     ##########################
372     uri = apibase + "/resourcePools"
373     resp = client.post(uri)
374     assert resp.status == '405 METHOD NOT ALLOWED'
375     resp = client.put(uri)
376     assert resp.status == '405 METHOD NOT ALLOWED'
377     resp = client.patch(uri)
378     assert resp.status == '405 METHOD NOT ALLOWED'
379     resp = client.delete(uri)
380     assert resp.status == '405 METHOD NOT ALLOWED'
381
382     resource_pool_id1 = str(uuid.uuid4())
383     uri = apibase + "/resourcePools/" + resource_pool_id1
384     resp = client.post(uri)
385     assert resp.status == '405 METHOD NOT ALLOWED'
386     resp = client.put(uri)
387     assert resp.status == '405 METHOD NOT ALLOWED'
388     resp = client.patch(uri)
389     assert resp.status == '405 METHOD NOT ALLOWED'
390     resp = client.delete(uri)
391     assert resp.status == '405 METHOD NOT ALLOWED'
392
393     # Testing resource not support method
394     ##########################
395     uri = apibase + "/resourcePools/" + resource_pool_id1 + "/resources"
396     resp = client.post(uri)
397     assert resp.status == '405 METHOD NOT ALLOWED'
398     resp = client.put(uri)
399     assert resp.status == '405 METHOD NOT ALLOWED'
400     resp = client.patch(uri)
401     assert resp.status == '405 METHOD NOT ALLOWED'
402     resp = client.delete(uri)
403     assert resp.status == '405 METHOD NOT ALLOWED'
404
405     resource_id1 = str(uuid.uuid4())
406     uri = apibase + "/resourcePools/" + \
407         resource_pool_id1 + "/resources/" + resource_id1
408     resp = client.post(uri)
409     assert resp.status == '405 METHOD NOT ALLOWED'
410     resp = client.put(uri)
411     assert resp.status == '405 METHOD NOT ALLOWED'
412     resp = client.patch(uri)
413     assert resp.status == '405 METHOD NOT ALLOWED'
414     resp = client.delete(uri)
415     assert resp.status == '405 METHOD NOT ALLOWED'
416
417     # Testing deployment managers not support method
418     ##########################
419     uri = apibase + "/deploymentManagers"
420     resp = client.post(uri)
421     assert resp.status == '405 METHOD NOT ALLOWED'
422     resp = client.put(uri)
423     assert resp.status == '405 METHOD NOT ALLOWED'
424     resp = client.patch(uri)
425     assert resp.status == '405 METHOD NOT ALLOWED'
426     resp = client.delete(uri)
427     assert resp.status == '405 METHOD NOT ALLOWED'
428
429     deployment_manager_id1 = str(uuid.uuid4())
430     uri = apibase + "/deploymentManagers/" + deployment_manager_id1
431     resp = client.post(uri)
432     assert resp.status == '405 METHOD NOT ALLOWED'
433     resp = client.put(uri)
434     assert resp.status == '405 METHOD NOT ALLOWED'
435     resp = client.patch(uri)
436     assert resp.status == '405 METHOD NOT ALLOWED'
437     resp = client.delete(uri)
438     assert resp.status == '405 METHOD NOT ALLOWED'
439
440     # Testing subscriptions not support method
441     ##########################
442     uri = apibase + "/subscriptions"
443     resp = client.put(uri)
444     assert resp.status == '405 METHOD NOT ALLOWED'
445     resp = client.patch(uri)
446     assert resp.status == '405 METHOD NOT ALLOWED'
447     resp = client.delete(uri)
448     assert resp.status == '405 METHOD NOT ALLOWED'
449
450     subscription_id1 = str(uuid.uuid4())
451     uri = apibase + "/subscriptions/" + subscription_id1
452     resp = client.post(uri)
453     assert resp.status == '405 METHOD NOT ALLOWED'
454     resp = client.put(uri)
455     assert resp.status == '405 METHOD NOT ALLOWED'
456     resp = client.patch(uri)
457     assert resp.status == '405 METHOD NOT ALLOWED'