/** * @expectedException \PharIo\Phive\VerificationFailedException */ public function testThrowsExceptionIfChecksumVerificationFails() { $url = new Url('https://example.com/foo.phar'); $expectedHash = new Sha1Hash(sha1('foo')); $release = new Release(new Version('1.0.0'), $url, $expectedHash); $signatureUrl = new Url('https://example.com/foo.phar.asc'); $pharFile = new File(new Filename('foo.phar'), 'foo'); $this->fileDownloader->download($url)->willReturn($pharFile); $this->fileDownloader->download($signatureUrl)->willReturn(new File(new Filename('foo.phar.asc'), 'bar')); $this->signatureService->verify('foo', 'bar')->willReturn(true); $this->checksumService->verify($expectedHash, $pharFile)->shouldBeCalled()->willReturn(false); $downloader = new PharDownloader($this->fileDownloader->reveal(), $this->signatureService->reveal(), $this->checksumService->reveal()); $downloader->download($release); }
/** * @dataProvider hashProvider * * @param string $expectedHash * @param string $actualHash * @param bool $expected * * @throws InvalidHashException */ public function testVerifiesSha256Checksum($expectedHash, $actualHash, $expected) { $expectedHash = new Sha256Hash(hash('sha256', $expectedHash)); $actualHash = new Sha256Hash(hash('sha256', $actualHash)); $file = $this->getFileProphecy(); $file->getSha256Hash()->willReturn($actualHash); $service = new ChecksumService(); $this->assertSame($expected, $service->verify($expectedHash, $file->reveal())); }