WIP: UI编辑器自动分图层切图标 #304
@@ -185,7 +185,7 @@ fn decode_image(value: RawImageData, field: &str) -> Result<ReferenceImage, AppE
|
||||
}
|
||||
let bytes = BASE64_STANDARD
|
||||
.decode(value.data.trim())
|
||||
.map_err(|error| bad_request(format!("{field}.data 必须是有效 base64:{error}")))?;
|
||||
.map_err(|_| bad_request(format!("{field}.data 必须是有效 base64")))?;
|
||||
Ok(ReferenceImage {
|
||||
bytes,
|
||||
file_name: format!("{field}.png"),
|
||||
@@ -254,4 +254,22 @@ mod tests {
|
||||
serde_json::json!({"data": [{"b64_json": "aGVsbG8="}]})
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn invalid_base64_uses_generic_client_message() {
|
||||
let payload = serde_json::json!({
|
||||
"image": {"data": "not base64!", "mimeType": "image/png"},
|
||||
"prompt": "edit",
|
||||
"width": 1024,
|
||||
"height": 1024
|
||||
});
|
||||
let parsed: RawImageEditRequest = serde_json::from_value(payload).expect("request");
|
||||
let error = match prepare_request(parsed) {
|
||||
Ok(_) => panic!("invalid base64 should fail"),
|
||||
Err(error) => error,
|
||||
};
|
||||
let rendered = format!("{error:?}");
|
||||
assert!(rendered.contains("image.data 必须是有效 base64"));
|
||||
assert!(!rendered.contains("InvalidByte"));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user