补充图片编辑选项 multipart 测试
覆盖质量、背景、输出格式与 mask 文件字段 断言文件名、MIME 类型和字节内容均正确发送
This commit is contained in:
@@ -429,6 +429,53 @@ mod tests {
|
|||||||
server.abort();
|
server.abort();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[tokio::test]
|
||||||
|
async fn vector_engine_curl_transport_posts_raw_edit_options_and_mask() {
|
||||||
|
let (base_url, server, request_rx) = start_single_response_server().await;
|
||||||
|
let response = send_vector_engine_multipart_edit_request_with_curl_options(
|
||||||
|
format!("{base_url}/v1/images/edits").as_str(),
|
||||||
|
"test-key",
|
||||||
|
GPT_IMAGE_2_MODEL,
|
||||||
|
"测试提示词",
|
||||||
|
None,
|
||||||
|
"1536x1024",
|
||||||
|
1,
|
||||||
|
&[ReferenceImage {
|
||||||
|
bytes: b"reference".to_vec(),
|
||||||
|
mime_type: "image/webp".to_string(),
|
||||||
|
file_name: "reference.webp".to_string(),
|
||||||
|
}],
|
||||||
|
Some(&RawImageEditOptions {
|
||||||
|
quality: Some("high".to_string()),
|
||||||
|
background: Some("transparent".to_string()),
|
||||||
|
output_format: Some("png".to_string()),
|
||||||
|
width: 1536,
|
||||||
|
height: 1024,
|
||||||
|
mask: Some(ReferenceImage {
|
||||||
|
bytes: b"mask-bytes".to_vec(),
|
||||||
|
mime_type: "image/png".to_string(),
|
||||||
|
file_name: "mask.png".to_string(),
|
||||||
|
}),
|
||||||
|
}),
|
||||||
|
1_000,
|
||||||
|
)
|
||||||
|
.await
|
||||||
|
.expect("curl multipart raw edit request should succeed");
|
||||||
|
|
||||||
|
assert_eq!(response.status, 200);
|
||||||
|
let request = request_rx
|
||||||
|
.await
|
||||||
|
.expect("mock server should capture request");
|
||||||
|
let request_text = String::from_utf8_lossy(request.as_slice());
|
||||||
|
assert!(request_text.contains("name=\"quality\"\r\n\r\nhigh"));
|
||||||
|
assert!(request_text.contains("name=\"background\"\r\n\r\ntransparent"));
|
||||||
|
assert!(request_text.contains("name=\"output_format\"\r\n\r\npng"));
|
||||||
|
assert!(request_text.contains("name=\"mask\"; filename=\"mask.png\""));
|
||||||
|
assert!(request_text.contains("Content-Type: image/png"));
|
||||||
|
assert!(request_text.contains("mask-bytes"));
|
||||||
|
server.abort();
|
||||||
|
}
|
||||||
|
|
||||||
async fn start_single_response_server() -> (
|
async fn start_single_response_server() -> (
|
||||||
String,
|
String,
|
||||||
tokio::task::JoinHandle<()>,
|
tokio::task::JoinHandle<()>,
|
||||||
|
|||||||
Reference in New Issue
Block a user