public function testDownloadLatestVersionSuccess() { $jsonStr = file_get_contents(__DIR__ . DIRECTORY_SEPARATOR . 'git_response_mock.json'); $this->httpClient->getJsonResponse(Argument::exact('https://api.github.com/repos/foo/bar/releases/latest'))->willReturn(json_decode($jsonStr, true))->shouldBeCalledTimes(1); $this->httpClient->download(Argument::exact('https://github.com/msiebeneicher/chapi/releases/download/v0.5.0/chapi.phar'))->willReturn('/path/to/download/file')->shouldBeCalledTimes(1); $this->httpClientFactory->getHttpClient()->willReturn($this->httpClient->reveal())->shouldBeCalled(); $gitStrategy = new GithubStrategy($this->httpClientFactory->reveal()); $gitStrategy->setGithubOwner('foo'); $gitStrategy->setGithubRepo('bar'); $gitStrategy->setPharFile('chapi.phar'); $this->assertEquals('/path/to/download/file', $gitStrategy->downloadLatestVersion()); }
/** * @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); }
public function testInstallByUrlDownloadsPharAndInvokesInstaller() { $url = new Url('https://example.com/foo-1.20.1.phar'); $release = new Release(new Version('1.20.1'), $url, null); $file = new File(new Filename('foo.phar'), 'bar'); $requestedPhar = RequestedPhar::fromUrl($url); $expectedPhar = new Phar('foo', new Version('1.20.1'), $file); $this->repository->hasPhar('foo', new Version('1.20.1'))->shouldBeCalled()->willReturn(false); $this->repository->addPhar($expectedPhar)->shouldBeCalled(); $this->downloader->download($release)->shouldBeCalled()->willReturn($file); $this->repository->addUsage($expectedPhar, '/tmp/foo')->shouldBeCalled(); $this->installer->install($file, '/tmp/foo', true)->shouldBeCalled(); $this->getPharService()->install($requestedPhar, '/tmp', true); }
public function testInvokesKeyDownloader() { $this->downloader->download('foo')->willReturn('some key'); $this->assertEquals('some key', $this->getKeyService()->downloadKey('foo')); }