/**
  * @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()));
 }
 /**
  * @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);
 }