예제 #1
0
def test_generate_aws_presigned_url_for_part(app, indexd_client):
    """
    Test BlankIndex generate_aws_presigned_url_for_part
    """
    uploader = MagicMock()
    blank_index = BlankIndex(uploader=uploader)
    assert blank_index
    with patch(
            "fence.blueprints.data.indexd.S3IndexedFileLocation.generate_presigned_url_for_part_upload"
    ):
        blank_index.generate_aws_presigned_url_for_part(key="some key",
                                                        uploadId="some id",
                                                        partNumber=1,
                                                        expires_in=10)
예제 #2
0
파일: blueprint.py 프로젝트: rolinge/fence
def generate_multipart_upload_presigned_url():
    """
    Generate multipart upload presigned url
    """
    params = flask.request.get_json()
    if not params:
        raise UserError("wrong Content-Type; expected application/json")

    missing = {"key", "uploadId", "partNumber"}.difference(set(params))
    if missing:
        raise UserError("missing required arguments: {}".format(list(missing)))

    default_expires_in = flask.current_app.config.get("MAX_PRESIGNED_URL_TTL", 3600)
    expires_in = get_valid_expiration(
        params.get("expires_in"),
        max_limit=default_expires_in,
        default=default_expires_in,
    )

    response = {
        "presigned_url": BlankIndex.generate_aws_presigned_url_for_part(
            params["key"],
            params["uploadId"],
            params["partNumber"],
            expires_in=expires_in,
        )
    }
    return flask.jsonify(response), 200
예제 #3
0
def test_generate_aws_presigned_url_for_part_missing_key(app, indexd_client):
    """
    Test BlankIndex generate_aws_presigned_url_for_part with a missing configuration key
    """
    uploader = MagicMock()
    current_app = flask.current_app
    expected_value = copy.deepcopy(current_app.config)
    del expected_value["DATA_UPLOAD_BUCKET"]

    with patch.object(current_app, "config", expected_value):
        assert current_app.config == expected_value
        blank_index = BlankIndex(uploader=uploader)
        assert blank_index
        with pytest.raises(InternalError):
            blank_index.generate_aws_presigned_url_for_part(key="some key",
                                                            uploadId="some id",
                                                            partNumber=1,
                                                            expires_in=10)