|
| 1 | +<?php |
| 2 | + |
| 3 | +namespace V2\Input; |
| 4 | + |
| 5 | +use Mindee\Input\LocalResponse; |
| 6 | +use Mindee\Parsing\V2\InferenceResponse; |
| 7 | +use PHPUnit\Framework\TestCase; |
| 8 | + |
| 9 | +class LocalResponseV2Test extends TestCase |
| 10 | +{ |
| 11 | + private string $filePath; |
| 12 | + |
| 13 | + protected function setUp(): void |
| 14 | + { |
| 15 | + $this->filePath = \TestingUtilities::getV2DataDir() . '/inference/standard_field_types.json'; |
| 16 | + } |
| 17 | + |
| 18 | + protected function assertLocalResponse(LocalResponse $localResponse): void |
| 19 | + { |
| 20 | + $fakeHMACSigning = "ogNjY44MhvKPGTtVsI8zG82JqWQa68woYQH"; |
| 21 | + $signature = "b82a515c832fd2c4f4ce3a7e6f53c12e8d10e19223f6cf0e3a9809a7a3da26be"; |
| 22 | + $reflectedLocalResponse = new \ReflectionClass($localResponse); |
| 23 | + $reflectedFile = $reflectedLocalResponse->getProperty('file'); |
| 24 | + $reflectedFile->setAccessible(true); |
| 25 | + $this->assertNotNull($reflectedFile); |
| 26 | + $this->assertFalse($localResponse->isValidHMACSignature($fakeHMACSigning, "fake HMAC signature")); |
| 27 | + $this->assertEquals($signature, $localResponse->getHmacSignature($fakeHMACSigning)); |
| 28 | + $this->assertTrue($localResponse->isValidHMACSignature($fakeHMACSigning, $signature)); |
| 29 | + $response = $localResponse->deserializeResponse(InferenceResponse::class); |
| 30 | + $this->assertInstanceOf(InferenceResponse::class, $response); |
| 31 | + $this->assertNotNull($response->inference); |
| 32 | + $this->assertNotNull($response->inference->result); |
| 33 | + $this->assertNotNull($response->inference->result->fields); |
| 34 | + } |
| 35 | + |
| 36 | + public function testValidFileLocalResponse(){ |
| 37 | + $file = fopen($this->filePath, 'rb'); |
| 38 | + $localResponse = new LocalResponse($file); |
| 39 | + fclose($file); |
| 40 | + $this->assertLocalResponse($localResponse); |
| 41 | + } |
| 42 | + |
| 43 | + public function testValidPathLocalResponse(){ |
| 44 | + $localResponse = new LocalResponse($this->filePath); |
| 45 | + $this->assertLocalResponse($localResponse); |
| 46 | + } |
| 47 | + |
| 48 | + public function testValidBytesLocalResponse(){ |
| 49 | + $raw = file_get_contents($this->filePath); |
| 50 | + $encoding = mb_detect_encoding($raw, ['UTF-8','UTF-16','UTF-32','ISO-8859-1','Windows-1252'], true) ?: 'UTF-8'; |
| 51 | + $utf8 = ($encoding === 'UTF-8') ? $raw : mb_convert_encoding($raw, 'UTF-8', $encoding); |
| 52 | + $utf8 = preg_replace('/^\xEF\xBB\xBF/', '', $utf8); |
| 53 | + $localResponse = new LocalResponse($utf8); |
| 54 | + $this->assertLocalResponse($localResponse); |
| 55 | + } |
| 56 | +} |
0 commit comments