| 
<?phpnamespace ParagonIE\Certainty\Tests;
 
 
 use ParagonIE\Certainty\RemoteFetch;
 use PHPUnit\Framework\TestCase;
 
 class RemoteFetchTest extends TestCase
 {
 /** @var string */
 protected $dir;
 
 public function setUp()
 {
 if (\getenv('TRAVIS')) {
 $this->markTestSkipped('Unknown GnuTLS errors are breaking TravisCI but the tests succeed locally.');
 }
 $this->dir = __DIR__ . '/static/data-remote';
 if (!\is_dir($this->dir)) {
 \mkdir($this->dir);
 }
 }
 
 public function tearDown()
 {
 \unlink($this->dir . '/ca-certs.json');
 \unlink($this->dir . '/ca-certs.cache');
 foreach(\glob($this->dir . '/*.pem') as $f) {
 $real = \realpath($f);
 if (\strpos($real, $this->dir) === 0) {
 \unlink($f);
 }
 }
 }
 
 /**
 * @covers RemoteFetch
 */
 public function testRemoteFetch()
 {
 $this->assertFalse(\file_exists($this->dir . '/ca-certs.json'));
 $fetch = new RemoteFetch($this->dir);
 $fetch->getLatestBundle();
 $this->assertTrue(\file_exists($this->dir . '/ca-certs.json'));
 
 // Force a cache expiration
 \file_put_contents(
 $this->dir . '/ca-certs.cache',
 (new \DateTime())
 ->sub(new \DateInterval('PT06H'))
 ->format(\DateTime::ATOM)
 );
 $fetch->setCacheTimeout(new \DateInterval('PT01M'));
 $this->assertTrue($fetch->cacheExpired());
 }
 }
 
 |