X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=osm_nbi%2Ftests%2Ftest_admin_topics.py;h=ce6a21b1f9dc603b98035cb5591aafbca249f018;hb=a04d59bd184959b9ea88baccea05274b8851d3f5;hp=eb1cf32f58137f324c54909fcb447e544942f234;hpb=f2af4a100d308e07f355d61b94fb27d1ccc97aa2;p=osm%2FNBI.git diff --git a/osm_nbi/tests/test_admin_topics.py b/osm_nbi/tests/test_admin_topics.py index eb1cf32..ce6a21b 100755 --- a/osm_nbi/tests/test_admin_topics.py +++ b/osm_nbi/tests/test_admin_topics.py @@ -19,7 +19,7 @@ __date__ = "$2019-10-019" import unittest from unittest import TestCase -from unittest.mock import Mock, patch, call +from unittest.mock import Mock, patch, call, ANY from uuid import uuid4 from http import HTTPStatus from time import time @@ -32,6 +32,7 @@ from osm_nbi.admin_topics import ( UserTopicAuth, CommonVimWimSdn, VcaTopic, + VimAccountTopic, ) from osm_nbi.engine import EngineException from osm_nbi.authconn import AuthconnNotFoundException @@ -1596,5 +1597,125 @@ class Test_CommonVimWimSdn(TestCase): ) +@patch("osm_nbi.admin_topics.CommonVimWimSdn.check_conflict_on_new") +class TestVimAccountTopic(TestCase): + def setUp(self): + self.db = Mock(dbbase.DbBase()) + self.fs = Mock(fsbase.FsBase()) + self.msg = Mock(msgbase.MsgBase()) + self.auth = Mock(authconn.Authconn(None, None, None)) + self.topic = VimAccountTopic(self.db, self.fs, self.msg, self.auth) + self.topic.check_quota = Mock(return_value=None) # skip quota + + self.fake_session = { + "username": test_name, + "project_id": (test_pid,), + "method": None, + "admin": True, + "force": False, + "public": False, + "allow_show_user_project_role": True, + } + + def check_invalid_indata_raises_exception(self, indata, mock_common_vim_wim_sdn): + with self.assertRaises(EngineException) as error: + self.topic.check_conflict_on_new(self.fake_session, indata) + mock_common_vim_wim_sdn.assert_called_once_with(self.fake_session, indata) + error_msg = "Invalid paas_provider for VIM account '{}'.".format(indata["name"]) + self.assertEqual(str(error.exception), error_msg) + + def test_check_conflict_on_new_vim_type_paas(self, mock_common_vim_wim_sdn): + indata = { + "name": "juju_paas", + "vim_type": "paas", + "description": None, + "vim_url": "http://0.0.0.0:0", + "vim_user": "some_user", + "vim_password": "some_password", + "vim_tenant_name": "null", + "config": {"paas_provider": "juju"}, + } + self.topic.check_conflict_on_new(self.fake_session, indata) + mock_common_vim_wim_sdn.assert_called_once_with(self.fake_session, indata) + + def test_check_conflict_on_new_vim_type_paas_incorrect_provider( + self, mock_common_vim_wim_sdn + ): + indata = { + "name": "juju_paas", + "vim_type": "paas", + "description": None, + "vim_url": "http://0.0.0.0:0", + "vim_user": "some_user", + "vim_password": "some_password", + "vim_tenant_name": "null", + "config": {"paas_provider": "some_provider"}, + } + self.check_invalid_indata_raises_exception(indata, mock_common_vim_wim_sdn) + + def test_check_conflict_on_new_vim_type_paas_config_missing( + self, mock_common_vim_wim_sdn + ): + indata = { + "name": "juju_paas", + "vim_type": "paas", + "description": None, + "vim_url": "http://0.0.0.0:0", + "vim_user": "some_user", + "vim_password": "some_password", + "vim_tenant_name": "null", + } + self.check_invalid_indata_raises_exception(indata, mock_common_vim_wim_sdn) + + def test_check_conflict_on_new_vim_type_paas_provider_missing( + self, mock_common_vim_wim_sdn + ): + indata = { + "name": "juju_paas", + "vim_type": "paas", + "description": None, + "vim_url": "http://0.0.0.0:0", + "vim_user": "some_user", + "vim_password": "some_password", + "vim_tenant_name": "null", + "config": {"some_param": None}, + } + self.check_invalid_indata_raises_exception(indata, mock_common_vim_wim_sdn) + + def test_kafka_message_is_not_sent_if_paas_vim(self, mock_common_vim_wim_sdn): + indata = { + "name": "juju_paas", + "vim_type": "paas", + "description": None, + "vim_url": "http://0.0.0.0:0", + "vim_user": "some_user", + "vim_password": "some_password", + "vim_tenant_name": "null", + "config": {"paas_provider": "juju"}, + } + rollback = [] + + self.topic.new(rollback, self.fake_session, indata) + self.assertEqual(len(rollback), 1, "Wrong rollback length") + self.msg.write.assert_not_called() + + def test_kafka_message_is_sent_if_not_paas_vim(self, mock_common_vim_wim_sdn): + indata = { + "name": "juju_paas", + "vim_type": "openstack", + "description": None, + "vim_url": "http://0.0.0.0:0", + "vim_user": "some_user", + "vim_password": "some_password", + "vim_tenant_name": "null", + } + rollback = [] + + self.topic.new(rollback, self.fake_session, indata) + self.assertEqual(len(rollback), 1, "Wrong rollback length") + mock_common_vim_wim_sdn.assert_called_once_with(self.fake_session, indata) + self.msg.write.assert_called_once_with("vim_account", "created", ANY) + + if __name__ == "__main__": unittest.main()