X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=tests%2Fconftest.py;h=e06fa1c0c0024186910f51b4e720a9a4af2a0c05;hb=5c501cb5e57a1ac3e0e7d38e22a3759e7958777a;hp=7744dbd4355bbf3e21cead97879b4f0e182aa403;hpb=8339c9a882a586578b37f44a504e21c5208611c0;p=pti%2Fo2.git diff --git a/tests/conftest.py b/tests/conftest.py index 7744dbd..e06fa1c 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -7,12 +7,40 @@ from pathlib import Path import pytest import redis import requests +from flask import Flask +from flask_restx import Api from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker, clear_mappers from tenacity import retry, stop_after_delay +from unittest.mock import MagicMock -from o2ims.adapter.orm import metadata, start_o2ims_mappers from o2ims import config +from o2ims.adapter.orm import metadata, start_o2ims_mappers +from o2ims.adapter.clients.orm_stx import start_o2ims_stx_mappers +from o2ims.adapter import unit_of_work +# from o2ims.views.ocloud_route import configure_routes +from o2ims.views.ocloud_route import configure_namespace +from o2ims.bootstrap import bootstrap + + +@pytest.fixture +def mock_uow(): + session = MagicMock() + uow = unit_of_work.SqlAlchemyUnitOfWork(session_factory=session) + return session, uow + + +@pytest.fixture +def mock_flask_uow(mock_uow): + session, uow = mock_uow + app = Flask(__name__) + # app.config["TESTING"] = True + api = Api(app) + bus = bootstrap(False, uow) + # configure_routes(app, bus) + configure_namespace(api, bus) + client = app.test_client() + return session, client @pytest.fixture @@ -28,9 +56,35 @@ def sqlite_session_factory(in_memory_sqlite_db): yield sessionmaker(bind=in_memory_sqlite_db) +@pytest.fixture +def sqlite_uow(sqlite_session_factory): + uow = unit_of_work.SqlAlchemyUnitOfWork( + session_factory=sqlite_session_factory) + # with uow: + # start_o2ims_mappers(uow.session.get_bind()) + # uow.commit() + yield uow + # clear_mappers() + with uow: + engine = uow.session.get_bind() + metadata.drop_all(engine) + + +@pytest.fixture +def sqlite_flask_uow(sqlite_uow): + app = Flask(__name__) + # app.config["TESTING"] = True + api = Api(app) + bus = bootstrap(False, sqlite_uow) + # configure_routes(app, bus) + configure_namespace(api, bus) + yield app.test_client() + + @pytest.fixture def mappers(): start_o2ims_mappers() + start_o2ims_stx_mappers() yield clear_mappers() @@ -53,7 +107,8 @@ def wait_for_redis_to_come_up(): @pytest.fixture(scope="session") def postgres_db(): - engine = create_engine(config.get_postgres_uri(), isolation_level="SERIALIZABLE") + engine = create_engine(config.get_postgres_uri(), + isolation_level="SERIALIZABLE") wait_for_postgres_to_come_up(engine) metadata.create_all(engine) return engine @@ -69,9 +124,27 @@ def postgres_session(postgres_session_factory): return postgres_session_factory() +@pytest.fixture +def postgres_uow(postgres_session_factory): + uow = unit_of_work.SqlAlchemyUnitOfWork( + session_factory=postgres_session_factory) + yield uow + + +@pytest.fixture +def postgres_flask_uow(postgres_uow): + app = Flask(__name__) + api = Api(app) + bus = bootstrap(False, postgres_uow) + # configure_routes(app, bus) + configure_namespace(api, bus) + yield app.test_client() + + @pytest.fixture def restart_api(): - (Path(__file__).parent / "../src/o2ims/entrypoints/flask_application.py").touch() + (Path(__file__).parent / "../src/o2ims/entrypoints/flask_application.py")\ + .touch() time.sleep(0.5) wait_for_webapp_to_come_up()