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