Esempio n. 1
0
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"]