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:----LG1vfO/zmt0MtrpSqV6r6W6cygkp3G47Tvl6OadbR9m4pjqRu9mpsurMdJWfzZ3LExNK1p766pecULKFbF37cMFdd9vk7Fh9gJdAHAE+Iye4ewuMqFb0eFiNSgQAKZFn2vX0O0zxYLApaO0jWbTw5Yl2l11N5hGFXcgfHKI5/jxiiVjaYk4CR2ShqvSk8oi4DGf+OiAGlZfpSAsSv4IqLcogC3HmF11s4MWHmzYHGPdRMkrvcI4RtsE0Sp8gUjFgo3jdO5DTSjal0+OdSl9Pp+1Z7+EXzxTSRmftjssbbS5y8ndxoder71BRnG7pMkhADWpRdTfy0Bvmb2FHDwpLIQp1fr4et/aStLOk9zZ8CpMx02Gp52XGz+KEI/l692ercdU9lcK25A3brThQOD6IHgqB4wPFojWO4Ha4gO1lLZTJhDf8HWJGb8ExnsIu2i6xRfufZoKykjTccW9t0hDETZHs/wvd117yuRmvWHRQobHCkilHz2HPaXoEQT+zeG9wVt7+pesK0COWhYEP3vxyoscHxe2w8xnf0B8I9/gFwnPHvXuejLGvwKCD9uRptO7lyhORUlaICa3T4y9Dev78fTKjmMIjWK2+keSr03S7EM4fRbjlMN08/IlaBSmHRthWhVDcICOND0gEpYJq/XH7F45VLRSWmBBXgE31VnODxto=----ATTACHMENT:----NTk4MzM1MjgwMzY5ODUyNCA3ODU0NzcyNDc0Nzg4NjA4IDIzNjQxODIzNzE2MDk3NjQ=