From 2e3e947e9ac9f316069603d45b1eda38b148fa88 Mon Sep 17 00:00:00 2001 From: whudqw <8+whudqw@noreply.git.pinaic.com> Date: Sun, 9 Aug 2026 07:54:40 +0200 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=8A=80=E8=83=BD=E5=8C=85?= =?UTF-8?q?=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/test_generate_image.py | 72 ++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 tests/test_generate_image.py diff --git a/tests/test_generate_image.py b/tests/test_generate_image.py new file mode 100644 index 0000000..d55fd4e --- /dev/null +++ b/tests/test_generate_image.py @@ -0,0 +1,72 @@ +import pathlib +import sys +import unittest + +SCRIPT_DIR = pathlib.Path(__file__).resolve().parents[1] / "scripts" +SKILL_DIR = SCRIPT_DIR.parent +sys.path.insert(0, str(SCRIPT_DIR)) + +try: + from generate_image import DEFAULT_API_URL, extract_image_bytes, images_endpoint, png_metadata +except ModuleNotFoundError: + DEFAULT_API_URL = None + extract_image_bytes = None + images_endpoint = None + png_metadata = None + + +class ExtractImageBytesTests(unittest.TestCase): + def test_decodes_inline_base64_image(self): + self.assertIsNotNone(extract_image_bytes, "generate_image.extract_image_bytes is required") + payload = {"data": [{"b64_json": "aGVsbG8="}]} + self.assertEqual(extract_image_bytes(payload), b"hello") + + def test_downloads_url_response_through_injected_reader(self): + self.assertIsNotNone(extract_image_bytes, "generate_image.extract_image_bytes is required") + payload = {"data": [{"url": "https://images.example.test/output.png"}]} + self.assertEqual(extract_image_bytes(payload, download_url=lambda url: b"png-bytes"), b"png-bytes") + + def test_rejects_unknown_image_payload(self): + self.assertIsNotNone(extract_image_bytes, "generate_image.extract_image_bytes is required") + with self.assertRaisesRegex(ValueError, "b64_json or url"): + extract_image_bytes({"data": [{}]}) + + +class ImageMetadataTests(unittest.TestCase): + def test_uses_pinai_as_the_default_api_url(self): + self.assertEqual(DEFAULT_API_URL, "https://api.pinaic.com/v1") + + def test_uses_a_base_url_or_complete_endpoint(self): + self.assertIsNotNone(images_endpoint, "generate_image.images_endpoint is required") + self.assertEqual( + images_endpoint("https://provider.example/v1"), + "https://provider.example/v1/images/generations", + ) + self.assertEqual( + images_endpoint("https://provider.example/v1/images/generations/"), + "https://provider.example/v1/images/generations", + ) + + def test_reads_png_dimensions_and_color_mode(self): + self.assertIsNotNone(png_metadata, "generate_image.png_metadata is required") + png = b"\x89PNG\r\n\x1a\n" + b"\x00\x00\x00\rIHDR" + b"\x00\x00\x04\x00\x00\x00\x02\x00\x08\x06\x00\x00\x00" + self.assertEqual(png_metadata(png), (1024, 512, 8, "RGBA")) + + +class KeySetupPackageTests(unittest.TestCase): + def test_includes_a_double_click_key_setup_launcher(self): + launcher = SKILL_DIR / "设置 PinAI Key.cmd" + setup_script = SCRIPT_DIR / "setup_pinai_key.ps1" + self.assertTrue(launcher.is_file()) + self.assertTrue(setup_script.is_file()) + self.assertIn("setup_pinai_key.ps1", launcher.read_text(encoding="utf-8")) + + def test_key_setup_uses_a_masked_local_input_and_user_variable(self): + setup_script = (SCRIPT_DIR / "setup_pinai_key.ps1").read_text(encoding="utf-8") + self.assertIn("UseSystemPasswordChar = $true", setup_script) + self.assertIn("SetEnvironmentVariable('PINAI_API_KEY', $key, 'User')", setup_script) + self.assertNotIn("Write-Output $key", setup_script) + + +if __name__ == "__main__": + unittest.main()