39 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			39 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| namespace Tests\Feature;
 | |
| 
 | |
| use Tests\TestCase;
 | |
| 
 | |
| class Utf8HandlingTest extends TestCase
 | |
| {
 | |
|     public function test_sanitize_utf8_text_handles_malformed_utf8()
 | |
|     {
 | |
|         // Test with valid UTF-8
 | |
|         $validUtf8 = 'Hello World! 🚀';
 | |
|         $this->assertEquals($validUtf8, sanitize_utf8_text($validUtf8));
 | |
| 
 | |
|         // Test with empty string
 | |
|         $this->assertEquals('', sanitize_utf8_text(''));
 | |
| 
 | |
|         // Test with malformed UTF-8 (binary data)
 | |
|         $malformedUtf8 = "Hello\x80\x81\x82World";
 | |
|         $sanitized = sanitize_utf8_text($malformedUtf8);
 | |
|         $this->assertTrue(mb_check_encoding($sanitized, 'UTF-8'));
 | |
| 
 | |
|         // Test that JSON encoding works after sanitization
 | |
|         $testArray = ['output' => $sanitized];
 | |
|         $this->assertIsString(json_encode($testArray, JSON_THROW_ON_ERROR));
 | |
|     }
 | |
| 
 | |
|     public function test_remove_iip_handles_malformed_utf8()
 | |
|     {
 | |
|         // Test with malformed UTF-8 in command output
 | |
|         $malformedOutput = "Processing image\x80\x81file.webp";
 | |
|         $cleaned = remove_iip($malformedOutput);
 | |
|         $this->assertTrue(mb_check_encoding($cleaned, 'UTF-8'));
 | |
| 
 | |
|         // Test that JSON encoding works after cleaning
 | |
|         $this->assertIsString(json_encode(['output' => $cleaned], JSON_THROW_ON_ERROR));
 | |
|     }
 | |
| }
 | 
