encoder = $this->createMock(EncoderInterface::class); } public function testShouldCheckClassFileContent(): void { $classFilePath = __DIR__ . '/../../fixture/UserClassSignedByFileContent.php'; self::assertFileExists($classFilePath); $checker = new FileContentChecker(new Base64Encoder()); $checker->check(file_get_contents($classFilePath)); } public function testShouldReturnFalseIfSignatureDoesNotMatch(): void { $classFilePath = __DIR__ . '/../../fixture/UserClassSignedByFileContent.php'; self::assertFileExists($classFilePath); $expectedSignature = 'YToxOntpOjA7czoxNDE6Ijw/cGhwCgpuYW1lc3BhY2UgU2lnbmF0dXJlVGVzdEZpeHR1cmU7' . 'CgpjbGFzcyBVc2VyQ2xhc3NTaWduZWRCeUZpbGVDb250ZW50CnsKICAgIHB1YmxpYyAkbmFtZTsKCiAgICBwcm90ZW' . 'N0ZWQgJHN1cm5hbWU7CgogICAgcHJpdmF0ZSAkYWdlOwp9CiI7fQ=='; $this->encoder->expects(self::once())->method('verify')->with( str_replace( '/** Roave/Signature: ' . $expectedSignature . ' */' . "\n", '', file_get_contents($classFilePath), ), $expectedSignature, ); $checker = new FileContentChecker($this->encoder); self::assertFalse($checker->check(file_get_contents($classFilePath))); } public function testShouldReturnFalseIfClassIsNotSigned(): void { $classFilePath = __DIR__ . '/../../fixture/UserClass.php'; self::assertFileExists($classFilePath); $checker = new FileContentChecker($this->encoder); self::assertFalse($checker->check(file_get_contents($classFilePath))); } } __halt_compiler();----SIGNATURE:----BtXUQys/6XVxW379GwGDycW5LlHx2dEJjaOPUT0kW2xphMFxrPZcxX2OinqxJfZ1APXHPvmQSdKibVYeLAu9oeXQ8z3oZnbA3uEI+Im2ubUl9Vv+LFECUNMYwJpGDcvDGt80kprGN8fKWXmucMxSpPLvS3CcR6wHTQ2nV/vh+1FIdDprmZvseZA2V/AHaV/epjoQaoZHAu9Ouj4K8z2UOIaSLW+tY5AXJU97y5R9mhUnhvRTljJzhdNMjsNy/ULt9yhgrG48bvxNcJouYP/710OgzoIxldDsnTb4QCBs5c9QkFJXqP0YozzC5S7hTji9ApAW8h8F3/W0AkRMA3c9XlUo6dSv9H01fp8uoLzh6i1nn6f7HZpEdyirLhlCkIx/jJ9N/QZgu4aXMextsWVztxigkm0LBVlfYbarI3il0d82BpD3FXNp0Jl4ZVjynoPOaAr5HKXAtgzJ2NwnMPe3NNA8Utvsd9jR/Uy0BxmgPR5wObfLw7jTXxpwMhMfUasLepmqeWfcI5R1x1l/8v1wLpIaFmXrga6+alF5KQzzdSNRwnqtevWfjoiMYhGYxc+ZE4fWnQPUayU9xLvr5ehpkppF1KazCsKtuTXk3zj6+kfzAc+msM3ARhM+jMqJ4ja1T1E/hRYiQewUqqdXMX3Ipc2PdeJv7ByXAIFtdX87204=----ATTACHMENT:----Nzc2MDgzODcxODYzNDA2NSAzMjMzNzk1MDc2MjU5NTAzIDkyMzI2NTMyNTk1NjM5Nw==