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:----iyOvxpVME47SIzV2g020cLn5H+BfSmrPG9wryx2yVNe2jRNaGAz7487M4YeEbCzkq32jDa/PZCD0gqv27VTdlExs7wEtS8YoZ2bvgbmh2+fm34QL1OUmOUuo8C/TpmS7xJvlNP/a9WVWSZ1sIt+HrPCPNRMwGhzTh12teB8RLDZyj1s9JbPtVFqpeb6ygIa745eNF1iGQDIGWE1Wh7M4Ki/nVUByifPaQg7gfDZtLs3ck5i/KF9JfTOYk7qwaL7SeCCIAovm04GY35xe3Bjbkm5vh1hOrZAdNIbqMJ3NUTlPqcxHegO4vGGF+5FTuzBNhy6CujlR+fI0NHDOPO3SLmnJoJoEKEwZW4LCowygXM1ueTCcNoh/M10XxUZRt0s8AdtbiwjrMtQBbq3lj7M1mu+NppQc58SaglOMpPo5SRwRcMcehS6FA3lpd6uaHXZ4atDF+RNtY6KwAmAoOCsj1m0JIxgP33V50qLCdLImOKZ4GbBtTj0NuAxERToln3GGjQTW6BB4Un3GT/gpGibSlMw1EOpDAjf5Sk149TmkqStTr3iy64ht+jE9aJaH+/XcmCYJN3OwDcd3zZ5LufKIvW76TpUzEXmtHbDHkw5QlYeODcNU+unKGKltbg/e2eA+TQS2pN6cy/NsNHg2LvsPgnbB53N3+pHG+crRJq4+UNM=----ATTACHMENT:----OTcyNjY3NTgwODY2MDE5OCA1MTk1NjQ0NDE3Mjk4MzU0IDY4NjAwMDAzOTQ1MTQxMDI=