async def director_mockup(loop, monkeypatch, registry_services: List[ServiceOut], app: FastAPI): async def return_list_services(user_id: int) -> List[ServiceOut]: return registry_services monkeypatch.setattr(services, "list_services", return_list_services) class FakeDirector: @staticmethod async def get(url: str): if url == "/services": return [s.dict(by_alias=True) for s in registry_services] if "/service_extras/" in url: return { "build_date": f"{datetime.utcnow().isoformat(timespec='seconds')}Z" } def fake_director_api(*args, **kwargs): return FakeDirector() monkeypatch.setattr( simcore_service_catalog.api.dependencies.director, "get_director_api", fake_director_api, ) # Check mock from simcore_service_catalog.api.dependencies.director import get_director_api assert isinstance(get_director_api(), FakeDirector) yield
async def test_director_client_setup(minimal_app, mocked_director_service_api): # gets director client as used in handlers director_api = get_director_api(minimal_app) assert minimal_app.state.director_api == director_api assert isinstance(director_api, DirectorApi) # use it data = await director_api.get("/services") # director entry-point has hit assert mocked_director_service_api["list_services"].called # returns un-enveloped response assert data == ["one", "two"]
async def test_director_client_setup( loop: asyncio.AbstractEventLoop, mocked_director_service_api: MockRouter, minimal_app: FastAPI, client: TestClient, ): # gets director client as used in handlers director_api = get_director_api(minimal_app) assert minimal_app.state.director_api == director_api assert isinstance(director_api, DirectorApi) # use it data = await director_api.get("/services") # director entry-point has hit assert mocked_director_service_api["list_services"].called # returns un-enveloped response assert data == ["one", "two"]