public function test loadCertificate use parsers to parse certificate file content()
 {
     $dummyDomain = uniqid();
     $dummyCsr = $this->prophesize(CSR::class)->reveal();
     $dummyCertificate = $this->prophesize(Certificate::class)->reveal();
     $dummyDomainKeyPair = $this->prophesize(KeyPair::class)->reveal();
     $dummyCertificateFileContent = uniqid();
     $dummyCertificateMetadata = new CertificateMetadata($dummyDomain, uniqid(), (bool) rand(0, 1), uniqid(), [uniqid()]);
     $dummyCertificateFileName = uniqid();
     $configuration = new DomainConfiguration($dummyDomain, $dummyCsr);
     $mockStorage = $this->prophesize(CertificateStorage::class);
     $this->mockStorageFactory->createCertificateStorage($dummyDomain)->willReturn($mockStorage->reveal());
     $this->mockCertificateFormatter->getName()->willReturn($dummyCertificateFileName);
     $this->mockCertificateParser->parse($dummyCertificateFileContent)->shouldBeCalled()->willReturn($dummyCertificateMetadata);
     $mockStorage->loadCertificateFile($dummyCertificateFileName)->shouldBeCalled()->willReturn($dummyCertificateFileContent);
     $result = $this->service->loadCertificate($configuration, $dummyCertificate, $dummyDomainKeyPair);
     $this->assertSame(var_export($dummyCertificateMetadata, true), var_export($result, true));
 }
 /**
  * @Then the certificate for the domain :domain should contains:
  */
 public function theCertificateForTheDomainShouldContains($domain, PyStringNode $content)
 {
     $certFile = $this->storageDir . '/domains/' . $domain . '/cert.pem';
     $parser = new CertificateParser();
     $certificateMetadata = $parser->parse(file_get_contents($certFile));
     $accessor = new PropertyAccessor();
     $yaml = new Yaml();
     $expected = $yaml->parse($content->getRaw());
     foreach ($expected as $key => $value) {
         PHPUnit_Framework_Assert::assertTrue($accessor->isReadable($certificateMetadata, $key));
         $formattedValue = $accessor->getValue($certificateMetadata, $key);
         if (is_array($value) && is_array($formattedValue)) {
             sort($value);
             sort($formattedValue);
         }
         PHPUnit_Framework_Assert::assertSame($value, $formattedValue);
     }
 }
 /**
  * Return certificate's data.
  *
  * @param DomainConfiguration $configuration
  *
  * @return CertificateMetadata
  */
 public function loadCertificate(DomainConfiguration $configuration)
 {
     $storage = $this->storageFactory->createCertificateStorage($configuration->getDomain());
     return $this->certificateParser->parse($storage->loadCertificateFile($this->certificateFormatter->getName()));
 }