X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=tests%2Funit%2Ftest_provision.py;fp=tests%2Funit%2Ftest_provision.py;h=3585802cdc1248fa0c151f1801e9d96a88e3a529;hb=6c304dfab28ffd1bbe69b9ada3d11e8fbbde014b;hp=0000000000000000000000000000000000000000;hpb=f69bcfa4e53700f89b2a82456602f472f92f40a8;p=pti%2Fo2.git diff --git a/tests/unit/test_provision.py b/tests/unit/test_provision.py new file mode 100644 index 0000000..3585802 --- /dev/null +++ b/tests/unit/test_provision.py @@ -0,0 +1,147 @@ +# Copyright (C) 2021 Wind River Systems, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import uuid +from unittest.mock import MagicMock + +from o2ims.domain import configuration_obj +from o2ims.views import provision_view +from o2common.config import config + + +def test_new_smo_endpoint(): + configuration_id1 = str(uuid.uuid4()) + configuration1 = configuration_obj.Configuration( + configuration_id1, "https://callback/uri/write/here", + "SMO") + assert configuration_id1 is not None and\ + configuration1.configurationId == configuration_id1 + + +def test_view_smo_endpoint(mock_uow): + session, uow = mock_uow + + configuration_id1 = str(uuid.uuid4()) + conf1 = MagicMock() + conf1.serialize_smo.return_value = { + "configurationId": configuration_id1, + } + session.return_value.query.return_value = [conf1] + + configuration_list = provision_view.configurations(uow) + assert str(configuration_list[0].get( + "configurationId")) == configuration_id1 + + +def test_view_smo_endpoint_one(mock_uow): + session, uow = mock_uow + + configuration_id1 = str(uuid.uuid4()) + session.return_value.query.return_value.filter_by.return_value.first.\ + return_value.serialize_smo.return_value = None + + # Query return None + configuration_res = provision_view.configuration_one( + configuration_id1, uow) + assert configuration_res is None + + session.return_value.query.return_value.filter_by.return_value.first.\ + return_value.serialize_smo.return_value = { + "configurationId": configuration_id1, + } + + configuration_res = provision_view.configuration_one( + configuration_id1, uow) + assert str(configuration_res.get( + "configurationId")) == configuration_id1 + + +def test_flask_get_list(mock_flask_uow): + session, app = mock_flask_uow + session.query.return_value = [] + apibase = config.get_provision_api_base() + + with app.test_client() as client: + # Get list and return empty list + ########################## + resp = client.get(apibase+"/smo-endpoint") + assert resp.get_data() == b'[]\n' + + +def test_flask_get_one(mock_flask_uow): + session, app = mock_flask_uow + + session.return_value.query.return_value.filter_by.return_value.\ + first.return_value = None + apibase = config.get_provision_api_base() + + with app.test_client() as client: + # Get one and return 404 + ########################### + configuration_id1 = str(uuid.uuid4()) + resp = client.get(apibase+"/smo-endpoint/"+configuration_id1) + assert resp.status_code == 404 + + +def test_flask_post(mock_flask_uow): + session, app = mock_flask_uow + apibase = config.get_provision_api_base() + + with app.test_client() as client: + session.return_value.execute.return_value = [] + + conf_callback = 'http://registration/callback/url' + resp = client.post(apibase+'/smo-endpoint', json={ + 'endpoint': conf_callback + }) + assert resp.status_code == 201 + assert 'configurationId' in resp.get_json() + + +def test_flask_delete(mock_flask_uow): + session, app = mock_flask_uow + apibase = config.get_provision_api_base() + + with app.test_client() as client: + session.return_value.execute.return_value.first.return_value = {} + + configuration_id1 = str(uuid.uuid4()) + resp = client.delete(apibase+"/smo-endpoint/"+configuration_id1) + assert resp.status_code == 204 + + +def test_flask_not_allowed(mock_flask_uow): + _, app = mock_flask_uow + apibase = config.get_provision_api_base() + + with app.test_client() as client: + + # Testing SMO endpoint not support method + ########################## + uri = apibase + "/smo-endpoint" + resp = client.put(uri) + assert resp.status == '405 METHOD NOT ALLOWED' + resp = client.patch(uri) + assert resp.status == '405 METHOD NOT ALLOWED' + resp = client.delete(uri) + assert resp.status == '405 METHOD NOT ALLOWED' + + configuration_id1 = str(uuid.uuid4()) + uri = apibase + "/smo-endpoint/" + configuration_id1 + resp = client.post(uri) + assert resp.status == '405 METHOD NOT ALLOWED' + resp = client.put(uri) + assert resp.status == '405 METHOD NOT ALLOWED' + resp = client.patch(uri) + assert resp.status == '405 METHOD NOT ALLOWED'