예제 #1
0
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"
예제 #2
0
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
예제 #3
0
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
예제 #4
0
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
예제 #5
0
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
예제 #6
0
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")
예제 #7
0
def test_get_call_5(mocker, cli: BaseClient):
    try:
        cli.get_call("instance/list", cursor="test")
    except Exception:
        assert cli.cursor == "test"
예제 #8
0
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"]