def test_create_project_with_viewer(project_jsonschema, file_type: str, viewer: ViewerInfo): user = UserInfo(id=3, name="foo", primary_gid=33, email="*****@*****.**") project = create_viewer_project_model( project_id="e3ee7dfc-25c3-11eb-9fae-02420a01b846", file_picker_id="4c69c0ce-00e4-4bd5-9cf0-59b67b3a9343", viewer_id="fc718e5a-bf07-4abe-b526-d9cafd34830c", owner=user, download_link="http://httpbin.org/image/jpeg", viewer_info=viewer, ) assert isinstance(project, Project) assert list(project.workbench.keys()) # converts into equivalent Dict project_in: Dict = json.loads( project.json(exclude_none=True, by_alias=True)) print(json.dumps(project_in, indent=2)) # This operation is done exactly before adding to the database in projects_handlers.create_projects projects_api.validate_project( app={APP_JSONSCHEMA_SPECS_KEY: { "projects": project_jsonschema }}, project=project_in, )
async def test_add_new_project_from_model_instance( view, client, mocker, ): view["label"] = view.pop("display_name") viewer = ViewerInfo(**view) assert viewer.dict() == view mock_func = mocker.patch( "simcore_service_webserver.director_v2_api.create_or_update_pipeline", return_value=None, ) async with NewUser(app=client.app) as user_db: try: # preparation await auto_add_user_to_groups(client.app, user_db["id"]) user_db = await get_user(client.app, user_db["id"]) # this part is under test --- user = UserInfo( id=user_db["id"], name=user_db["name"], primary_gid=user_db["primary_gid"], email=user_db["email"], ) project_id = "e3ee7dfc-25c3-11eb-9fae-02420a01b846" file_picker_id = "4c69c0ce-00e4-4bd5-9cf0-59b67b3a9343" viewer_id = "fc718e5a-bf07-4abe-b526-d9cafd34830c" project: Project = create_viewer_project_model( project_id, file_picker_id, viewer_id, owner=user, download_link="http://httpbin.org/image/jpeg", viewer_info=viewer, ) await add_new_project(client.app, project, user) # checks start here --- assert mock_func.called # internally validates project injected in db project_db = await get_project_for_user( client.app, str(project.uuid), user.id, include_state=False, include_templates=False, ) assert set( project_db["workbench"].keys()) == {file_picker_id, viewer_id} finally: # tear-down: delete before user gets deleted await delete_all_projects(client.app)