mirror of
https://github.com/TheSmallHanCat/flow2api.git
synced 2026-10-20 22:53:05 +08:00
- 更新 BELUGA、HARBOR_SEAL 模型映射,移除失效模型 - 修正图片 RPC 参数布局及 XSRF 认证,明确提交模型、比例和参考图 - 浏览器仅负责按对应 action 取码,取消本地打码对第三方密钥的强制依赖 - 修复 Cookie 导入与作用域、空账号预热异常,防止重复生成并完善资源释放 - 补充回归测试:171 项通过,真实浏览器打码与 BELUGA 图片生成验证成功
70 lines
2.8 KiB
Python
70 lines
2.8 KiB
Python
import unittest
|
|
|
|
from src.services.flow_client import FlowClient
|
|
|
|
|
|
PROJECT_ID = "01234567-89ab-cdef-0123-456789abcdef"
|
|
MEDIA_ID = "11234567-89ab-cdef-0123-456789abcdef"
|
|
|
|
|
|
class FlowClientImageGenerationArgumentTests(unittest.TestCase):
|
|
def setUp(self):
|
|
self.client = FlowClient(proxy_manager=None)
|
|
|
|
def test_reference_images_use_media_envelope(self):
|
|
argument = self.client._build_frontend_image_generation_argument(
|
|
project_id=PROJECT_ID,
|
|
prompt="换成针织开衫",
|
|
model_name="BELUGA",
|
|
aspect_ratio="IMAGE_ASPECT_RATIO_LANDSCAPE",
|
|
recaptcha_token="recaptcha-token",
|
|
session_id="session-id",
|
|
image_inputs=[{"name": MEDIA_ID}],
|
|
)
|
|
|
|
request = argument[1][0]
|
|
# the reference slot is a 5-field envelope, not [1, mediaId]
|
|
self.assertEqual(request[2], [[MEDIA_ID, None, None, None, 1]])
|
|
# slot 9 stays null; a serialized settings blob here is rejected
|
|
self.assertIsNone(request[9])
|
|
self.assertEqual(request[8], [[["换成针织开衫"]]])
|
|
|
|
def test_text_only_generation_omits_reference_slot(self):
|
|
argument = self.client._build_frontend_image_generation_argument(
|
|
project_id=PROJECT_ID,
|
|
prompt="一只红苹果",
|
|
model_name="BELUGA",
|
|
aspect_ratio="IMAGE_ASPECT_RATIO_LANDSCAPE",
|
|
recaptcha_token="recaptcha-token",
|
|
session_id="session-id",
|
|
)
|
|
|
|
request = argument[1][0]
|
|
self.assertIsNone(request[2])
|
|
self.assertIsNone(request[9])
|
|
|
|
def test_image_requests_follow_fourteen_slot_layout(self):
|
|
for model_name in ("BELUGA", "HARBOR_SEAL", "GEM_PIX_2"):
|
|
for image_inputs in (None, [{"name": MEDIA_ID}]):
|
|
with self.subTest(model=model_name, references=bool(image_inputs)):
|
|
argument = self.client._build_frontend_image_generation_argument(
|
|
project_id=PROJECT_ID,
|
|
prompt="an apple",
|
|
model_name=model_name,
|
|
aspect_ratio="IMAGE_ASPECT_RATIO_LANDSCAPE",
|
|
recaptcha_token="recaptcha-token",
|
|
session_id="session-id",
|
|
image_inputs=image_inputs,
|
|
)
|
|
request = argument[1][0]
|
|
self.assertEqual(len(request), 14)
|
|
self.assertEqual(request[5], model_name)
|
|
self.assertEqual(request[9:12], [None, None, None])
|
|
self.assertEqual(request[12], "session-id")
|
|
self.assertRegex(request[13], r"^[0-9A-F-]{36}$")
|
|
self.assertEqual(argument[4], ["session-id"])
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|