def test_get_call_6(mocker, cli: BaseClient): with open("tests/test_data/instance_list_more_1.json") as fh: ret1 = load(fh) def _call(name_parts: Sequence[str], params: dict, json=None): if "cursor" in params: raise Exception() else: return ret1 mocker.patch("lumapps.api.client.BaseClient._call", side_effect=_call) try: cli.get_call("instance/list") except Exception: assert cli.cursor == "foo_cursor"
def create_new_media( client: BaseClient, file_data_or_path: Union[bytes, str], doc_path: str, filename: str, mimetype: str, is_shared: bool, lang: Optional[str] = "en", ) -> Optional[Dict[str, Any]]: """ Upload a file and create a new media in LumApps media library. Args: client: The BaseClient used to make httpx to the LumApps Api. file_data_or_path: The filepath (str) or the data (bytes) to upload. doc_path: The doc path of the media to upload, this will decide where the media will go in your media library (eg: provider=`<`my_provider`>`/site=`<`my_site_id`>`/resource=`<`my_parent_folder_id`>`) filename: The name of the file to upload. Once uploaded the file will appear with that name. mimetype: The mimeType fo the file to upload. is_shared: Wether the file is shared or not. Non shared files will only be visible by you. lang: The lang of the file to upload (default: "en"). Raises: Exception: The data or file path type provided is not supported. Returns: Return the uploaded media if successfull, None otherwise. """ # noqa if isinstance(file_data_or_path, str): file_data = open(file_data_or_path, "rb") elif isinstance(file_data_or_path, bytes): file_data = file_data_or_path # type: ignore else: raise BaseClientError( "File data or path type not supported: {}".format( type(file_data_or_path))) # Get upload url for the document body = { "fileName": filename, "lang": lang, "parentPath": doc_path, "shared": is_shared, "success": "/upload", } upload_infos: Any = client.get_call("document/uploadUrl/get", body=body) upload_url = upload_infos["uploadUrl"] # Upload files_tuple_list: Any = [("files", (filename, file_data, mimetype))] response = httpx.post( upload_url, headers={"Authorization": "Bearer " + client.token}, files=files_tuple_list, # type: ignore ) doc = response.json().get("items") if doc: return doc[0] return None
def test_get_call_4(mocker, cli: BaseClient): with open("tests/test_data/list_empty.json") as fh: ret = load(fh) mocker.patch("lumapps.api.client.BaseClient._call", return_value=ret) lst = cli.get_call("instance/list", cursor="test") assert len(lst) == 0 assert cli.cursor is None
def test_get_call_2(mocker, cli: BaseClient): with open("tests/test_data/instance_list_more_1.json") as fh: ret1 = load(fh) with open("tests/test_data/instance_list_more_2.json") as fh: ret2 = load(fh) def _call(name_parts: Sequence[str], params: dict, json=None): if "cursor" in params: return ret2 else: return ret1 mocker.patch("lumapps.api.client.BaseClient._call", side_effect=_call) lst = cli.get_call("instance/list") assert cli.cursor is None assert len(lst) == 4
def add_media_file_for_lang( client: BaseClient, media: Dict[str, Any], file_data_or_path: str, filename: str, mimetype: str, lang: Optional[str] = "en", croppedContent: Optional[bool] = False, ) -> Optional[Dict[str, Any]]: """ Add a file to an existing LumApps media. Args: client: The BaseClient used to make httpx to the LumApps Api. media: The LumApps media on which the files have to be uploaded. file_data_or_path (Union[bytes, str]): The filepath (str) or the data (bytes) to upload. filename: The name of the file to upload. Once uploaded the file will appear with that name. mimetype: The mimeType fo the file to upload. lang: The lang of the file to upload (default: "en"). croppedContent (bool): Wether to add the file to the croppedContent instead or content (default: False) Returns: The updated media if succesfull, otherwise None. """ # noqa # upload the file uploaded_file = _upload_new_media_file_of_given_lang( client=client, file_data_or_path=file_data_or_path, filename=filename, mimetype=mimetype, lang=lang, ) if not uploaded_file: return media # update the media where = "croppedContent" if croppedContent else "content" media[where].append(uploaded_file) saved: Any = client.get_call("document/update", body=media) return saved
def test_get_call_raises_api_call_error(cli: BaseClient): with raises(BadCallError): cli.get_call("foo") with raises(BadCallError): cli.get_call("user/bla")
def test_get_call_5(mocker, cli: BaseClient): try: cli.get_call("instance/list", cursor="test") except Exception: assert cli.cursor == "test"
def test_get_call_1(mocker, cli: BaseClient): with open("tests/test_data/community_1.json") as fh: community = load(fh) mocker.patch("lumapps.api.client.BaseClient._call", return_value=community) community2 = cli.get_call("community/get", uid="foo") assert community["id"] == community2["id"]