Пример #1
0
def test_error_is_raised_if_file_described_in_map_is_not_found():
    operations = {"variables": {"file": None}}
    files_map = {"0": ["variables.file"]}
    files = {}

    with pytest.raises(HttpBadRequestError):
        assert combine_multipart_data(operations, files_map, files)
Пример #2
0
def test_error_is_raised_if_file_paths_list_item_is_not_a_str():
    operations = {"variables": {"file": None}}
    files_map = {"0": [1]}
    files = {"0": True}

    with pytest.raises(HttpBadRequestError):
        assert combine_multipart_data(operations, files_map, files)
Пример #3
0
def test_file_is_set_in_variable():
    operations = {"variables": {"file": None}}
    files_map = {"0": ["variables.file"]}
    files = {"0": True}

    assert combine_multipart_data(operations, files_map, files) == {
        "variables": {
            "file": True
        }
    }
Пример #4
0
def test_files_are_set_in_list_variable():
    operations = {"variables": {"files": [None, None]}}
    files_map = {"0": ["variables.files.0"], "1": ["variables.files.1"]}
    files = {"0": "A", "1": "B"}

    assert combine_multipart_data(operations, files_map, files) == {
        "variables": {
            "files": ["A", "B"]
        }
    }
Пример #5
0
def test_single_file_is_set_in_multiple_variables():
    operations = {"variables": {"fileA": None, "fileB": None}}
    files_map = {"0": ["variables.fileA", "variables.fileB"]}
    files = {"0": True}

    assert combine_multipart_data(operations, files_map, files) == {
        "variables": {
            "fileA": True,
            "fileB": True
        }
    }
Пример #6
0
def test_files_are_set_in_multiple_variables():
    operations = {"variables": {"fileA": None, "fileB": None}}
    files_map = {"0": ["variables.fileA"], "1": ["variables.fileB"]}
    files = {"0": "A", "1": "B"}

    assert combine_multipart_data(operations, files_map, files) == {
        "variables": {
            "fileA": "A",
            "fileB": "B"
        }
    }
Пример #7
0
def test_setting_file_value_in_variables_leaves_other_variables_unchanged():
    operations = {"variables": {"file": None, "name": "test"}}
    files_map = {"0": ["variables.file"]}
    files = {"0": True}

    assert combine_multipart_data(operations, files_map, files) == {
        "variables": {
            "file": True,
            "name": "test"
        }
    }
Пример #8
0
    def extract_data_from_multipart_request(self, request: HttpRequest):
        try:
            operations = json.loads(request.POST.get("operations", "{}"))
        except (TypeError, ValueError) as ex:
            raise HttpBadRequestError("Request 'operations' multipart field is not a valid JSON") from ex
        try:
            files_map = json.loads(request.POST.get("map", "{}"))
        except (TypeError, ValueError) as ex:
            raise HttpBadRequestError("Request 'map' multipart field is not a valid JSON") from ex

        return combine_multipart_data(operations, files_map, request.FILES)
Пример #9
0
def test_file_is_set_in_one_operation_variable():
    operations = [{}, {"variables": {"file": None, "name": "test"}}]
    files_map = {"0": ["1.variables.file"]}
    files = {"0": True}

    assert combine_multipart_data(operations, files_map, files) == [
        {},
        {
            "variables": {
                "file": True,
                "name": "test"
            }
        },
    ]
Пример #10
0
def test_files_are_set_in_list_of_inputs_variable():
    operations = {"variables": {"input": [{"file": None}, {"file": None}]}}
    files_map = {
        "0": ["variables.input.0.file"],
        "1": ["variables.input.1.file"]
    }
    files = {"0": "A", "1": "B"}

    assert combine_multipart_data(operations, files_map, files) == {
        "variables": {
            "input": [{
                "file": "A"
            }, {
                "file": "B"
            }]
        }
    }
Пример #11
0
def test_error_is_raised_if_map_value_is_not_a_list_or_dict():
    with pytest.raises(HttpBadRequestError):
        assert combine_multipart_data({}, None, {})