@@ -497,60 +497,34 @@ async def test_files_api_upload_failure(self):
497497 assert "huge_file.pdf" in result .parts [0 ].text
498498 assert "API quota exceeded" in result .parts [0 ].text
499499
500+
500501 @pytest .mark .asyncio
501502 async def test_file_exceeds_files_api_limit (self ):
502503 """Test that files exceeding 2GB limit are rejected with clear error."""
503- # Create a file larger than 2GB (simulated with a descriptor that reports large size)
504- # Create a mock object that behaves like bytes but reports 2GB+ size
505- large_data = b"x" * 1000 # Small actual data for testing
506-
507- # Create inline_data with the small data
504+ # Use a small file for the test
505+ large_data = b"x" * 1000
508506 inline_data = types .Blob (
509507 display_name = "huge_video.mp4" ,
510508 data = large_data ,
511509 mime_type = "video/mp4" ,
512510 )
513-
514511 user_message = types .Content (parts = [types .Part (inline_data = inline_data )])
515512
516- # Patch the file size check to simulate a 2GB+ file
517- original_callback = self .plugin .on_user_message_callback
518-
519- async def patched_callback (* , invocation_context , user_message ):
520- # Temporarily replace the data length check
521- for part in user_message .parts :
522- if part .inline_data :
523- # Simulate 2GB + 1 byte size
524- file_size_over_limit = (2 * 1024 * 1024 * 1024 ) + 1
525- # Manually inject the check that would happen in the real code
526- if file_size_over_limit > (2 * 1024 * 1024 * 1024 ):
527- file_size_gb = file_size_over_limit / (1024 * 1024 * 1024 )
528- display_name = part .inline_data .display_name or "unknown"
529- error_message = (
530- f"File { display_name } ({ file_size_gb :.2f} GB) exceeds the"
531- " maximum supported size of 2GB. Please upload a smaller file."
532- )
533- return types .Content (
534- role = "user" ,
535- parts = [types .Part (text = f"[Upload Error: { error_message } ]" )],
536- )
537- return await original_callback (
538- invocation_context = invocation_context , user_message = user_message
539- )
540-
541- self .plugin .on_user_message_callback = patched_callback
542-
543- result = await self .plugin .on_user_message_callback (
544- invocation_context = self .mock_context , user_message = user_message
545- )
513+ # Patch the size limit to be smaller than the file data
514+ with patch (
515+ "google.adk.plugins.save_files_as_artifacts_plugin._MAX_FILES_API_SIZE_BYTES" , 500
516+ ):
517+ result = await self .plugin .on_user_message_callback (
518+ invocation_context = self .mock_context , user_message = user_message
519+ )
546520
547521 # Should not attempt any upload
548522 self .mock_context .artifact_service .save_artifact .assert_not_called ()
549523
550- # Should return error message about 2GB limit
524+ # Should return error message about the limit
551525 assert result is not None
552526 assert len (result .parts ) == 1
553527 assert "[Upload Error:" in result .parts [0 ].text
554528 assert "huge_video.mp4" in result .parts [0 ].text
555- assert "2.00 GB" in result . parts [ 0 ]. text
556- assert "exceeds the maximum supported size" in result .parts [0 ].text
529+ # Note: This assertion will depend on fixing the hardcoded "2GB" in the error message.
530+ assert "exceeds the maximum supported size" in result .parts [0 ].text
0 commit comments