diff --git a/src/HeaderComment/SPDXLicenseTemplateProvider.php b/src/HeaderComment/SPDXLicenseTemplateProvider.php
index e5768ce4112e33e09630d0bcbb6a62b2a31364af..4ecf1f01c866e399c8a2932aa86718da2fd072c8 100644
--- a/src/HeaderComment/SPDXLicenseTemplateProvider.php
+++ b/src/HeaderComment/SPDXLicenseTemplateProvider.php
@@ -30,8 +30,10 @@ final class SPDXLicenseTemplateProvider implements TemplateProviderInterface
     /**
      * SPDXLicenseTemplateProvider constructor.
      */
-    public function __construct(ComposerPackageInterface $composerPackage, string $urlTemplate = 'https://spdx.org/licenses/%s.json')
-    {
+    public function __construct(
+        ComposerPackageInterface $composerPackage,
+        string $urlTemplate = 'https://spdx.org/licenses/%s.json'
+    ) {
         $this->composerPackage = $composerPackage;
         $this->urlTemplate = $urlTemplate;
     }
@@ -52,7 +54,11 @@ final class SPDXLicenseTemplateProvider implements TemplateProviderInterface
 
     private function fetchTemplate(string $spdxId): ?string
     {
-        $licenseJson = @file_get_contents(sprintf($this->urlTemplate, $spdxId));
+        try {
+            $licenseJson = @file_get_contents(sprintf($this->urlTemplate, $spdxId));
+        } catch (\ErrorException $ex) {
+            return null;
+        }
         if ($licenseJson === false) {
             return null;
         }
diff --git a/tests/HeaderComment/SPDXLicenseTemplateProviderTest.php b/tests/HeaderComment/SPDXLicenseTemplateProviderTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..1943b4fc1017916470ee19df5746019a9d7f2c7b
--- /dev/null
+++ b/tests/HeaderComment/SPDXLicenseTemplateProviderTest.php
@@ -0,0 +1,88 @@
+<?php declare(strict_types=1);
+/**
+ * Copyright (C) 2020 IRSTEA
+ * All rights reserved.
+ *
+ * @copyright 2020 IRSTEA
+ * @author guillaume.perreal
+ */
+
+namespace Irstea\CS\Tests\HeaderComment;
+
+use Irstea\CS\Composer\ComposerPackageInterface;
+use Irstea\CS\HeaderComment\SPDXLicenseTemplateProvider;
+use org\bovigo\vfs\vfsStream;
+use org\bovigo\vfs\vfsStreamDirectory;
+use PHPUnit\Framework\TestCase;
+use Prophecy\Prophecy\ObjectProphecy;
+
+/**
+ * Class SPDXLicenseTemplateProviderTest
+ */
+final class SPDXLicenseTemplateProviderTest extends TestCase
+{
+    /**
+     * @var vfsStreamDirectory
+     */
+    private $root;
+
+    /**
+     * @var ComposerPackageInterface|ObjectProphecy
+     */
+    private $composerPackage;
+
+    /**
+     * @var SPDXLicenseTemplateProviderTest
+     */
+    private $templateProvider;
+
+    protected function setUp()
+    {
+        $this->root = vfsStream::setup('licenses');
+
+        $this->composerPackage = $this->prophesize(ComposerPackageInterface::class);
+
+        $this->templateProvider = new SPDXLicenseTemplateProvider(
+            $this->composerPackage->reveal()
+            $this->root->url(). '/%s.json'
+        );
+    }
+
+    public function testKnownLicense() {
+
+        $this->composerPackage->getLicenses()
+            ->shouldBeCalled()
+            ->willReturn(['foo']);
+
+        $this->root->addChild(vfsStream::newFile('foo.json')->setContent('{"standardLicenseHeader": "bar"}'));
+
+        $result = $this->templateProvider->getTemplate();
+
+        self::assertEquals('bar', $result);
+    }
+
+    public function testUnknownLicense() {
+
+        $this->composerPackage->getLicenses()
+            ->shouldBeCalled()
+            ->willReturn(['foo']);
+
+        $result = $this->templateProvider->getTemplate();
+
+        self::assertNull($result);
+    }
+
+    public function testInvalidJSON() {
+
+        $this->composerPackage->getLicenses()
+            ->shouldBeCalled()
+            ->willReturn(['foo']);
+
+        $this->root->addChild(vfsStream::newFile('foo.json')->setContent('bar'));
+
+        $result = $this->templateProvider->getTemplate();
+
+        self::assertNull($result);
+    }
+
+}