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)
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
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)