]> git.immae.eu Git - github/shaarli/Shaarli.git/blobdiff - tests/api/ApiUtilsTest.php
Merge pull request #1565 from nodiscc/rm-makefile-summary
[github/shaarli/Shaarli.git] / tests / api / ApiUtilsTest.php
index b4431d1be66d8ed34e75ffdaed18965625717140..7efec9bb98f6aa74bea0b2d572e7142bb94ad7a9 100644 (file)
@@ -2,13 +2,13 @@
 
 namespace Shaarli\Api;
 
-use Shaarli\Base64Url;
-
+use Shaarli\Bookmark\Bookmark;
+use Shaarli\Http\Base64Url;
 
 /**
  * Class ApiUtilsTest
  */
-class ApiUtilsTest extends \PHPUnit_Framework_TestCase
+class ApiUtilsTest extends \PHPUnit\Framework\TestCase
 {
     /**
      * Force the timezone for ISO datetimes.
@@ -34,7 +34,7 @@ class ApiUtilsTest extends \PHPUnit_Framework_TestCase
         $payload = Base64Url::encode('{
             "iat": '. time() .'
         }');
-        $signature = Base64Url::encode(hash_hmac('sha512', $header .'.'. $payload , $secret, true));
+        $signature = Base64Url::encode(hash_hmac('sha512', $header .'.'. $payload, $secret, true));
         return $header .'.'. $payload .'.'. $signature;
     }
 
@@ -61,7 +61,7 @@ class ApiUtilsTest extends \PHPUnit_Framework_TestCase
     public function testValidateJwtTokenValid()
     {
         $secret = 'WarIsPeace';
-        ApiUtils::validateJwtToken(self::generateValidJwtToken($secret), $secret);
+        $this->assertTrue(ApiUtils::validateJwtToken(self::generateValidJwtToken($secret), $secret));
     }
 
     /**
@@ -213,7 +213,7 @@ class ApiUtilsTest extends \PHPUnit_Framework_TestCase
     public function testFormatLinkComplete()
     {
         $indexUrl = 'https://domain.tld/sub/';
-        $link = [
+        $data = [
             'id' => 12,
             'url' => 'http://lol.lol',
             'shorturl' => 'abc',
@@ -224,6 +224,8 @@ class ApiUtilsTest extends \PHPUnit_Framework_TestCase
             'created' => \DateTime::createFromFormat('Ymd_His', '20170107_160102'),
             'updated' => \DateTime::createFromFormat('Ymd_His', '20170107_160612'),
         ];
+        $bookmark = new Bookmark();
+        $bookmark->fromArray($data);
 
         $expected = [
             'id' => 12,
@@ -237,7 +239,7 @@ class ApiUtilsTest extends \PHPUnit_Framework_TestCase
             'updated' => '2017-01-07T16:06:12+00:00',
         ];
 
-        $this->assertEquals($expected, ApiUtils::formatLink($link, $indexUrl));
+        $this->assertEquals($expected, ApiUtils::formatLink($bookmark, $indexUrl));
     }
 
     /**
@@ -246,7 +248,7 @@ class ApiUtilsTest extends \PHPUnit_Framework_TestCase
     public function testFormatLinkMinimalNote()
     {
         $indexUrl = 'https://domain.tld/sub/';
-        $link = [
+        $data = [
             'id' => 12,
             'url' => '?abc',
             'shorturl' => 'abc',
@@ -256,6 +258,8 @@ class ApiUtilsTest extends \PHPUnit_Framework_TestCase
             'private' => '',
             'created' => \DateTime::createFromFormat('Ymd_His', '20170107_160102'),
         ];
+        $bookmark = new Bookmark();
+        $bookmark->fromArray($data);
 
         $expected = [
             'id' => 12,
@@ -269,6 +273,82 @@ class ApiUtilsTest extends \PHPUnit_Framework_TestCase
             'updated' => '',
         ];
 
-        $this->assertEquals($expected, ApiUtils::formatLink($link, $indexUrl));
+        $this->assertEquals($expected, ApiUtils::formatLink($bookmark, $indexUrl));
+    }
+
+    /**
+     * Test updateLink with valid data, and also unnecessary fields.
+     */
+    public function testUpdateLink()
+    {
+        $created = \DateTime::createFromFormat('Ymd_His', '20170107_160102');
+        $data = [
+            'id' => 12,
+            'url' => '?abc',
+            'shorturl' => 'abc',
+            'title' => 'Note',
+            'description' => '',
+            'tags' => '',
+            'private' => '',
+            'created' => $created,
+        ];
+        $old = new Bookmark();
+        $old->fromArray($data);
+
+        $data = [
+            'id' => 13,
+            'shorturl' => 'nope',
+            'url' => 'http://somewhere.else',
+            'title' => 'Le Cid',
+            'description' => 'Percé jusques au fond du cœur [...]',
+            'tags' => 'corneille rodrigue',
+            'private' => true,
+            'created' => 'creation',
+            'updated' => 'updation',
+        ];
+        $new = new Bookmark();
+        $new->fromArray($data);
+
+        $result = ApiUtils::updateLink($old, $new);
+        $this->assertEquals(12, $result->getId());
+        $this->assertEquals('http://somewhere.else', $result->getUrl());
+        $this->assertEquals('abc', $result->getShortUrl());
+        $this->assertEquals('Le Cid', $result->getTitle());
+        $this->assertEquals('Percé jusques au fond du cœur [...]', $result->getDescription());
+        $this->assertEquals('corneille rodrigue', $result->getTagsString());
+        $this->assertEquals(true, $result->isPrivate());
+        $this->assertEquals($created, $result->getCreated());
+    }
+
+    /**
+     * Test updateLink with minimal data.
+     */
+    public function testUpdateLinkMinimal()
+    {
+        $created = \DateTime::createFromFormat('Ymd_His', '20170107_160102');
+        $data = [
+            'id' => 12,
+            'url' => '?abc',
+            'shorturl' => 'abc',
+            'title' => 'Note',
+            'description' => 'Interesting description!',
+            'tags' => 'doggo',
+            'private' => true,
+            'created' => $created,
+        ];
+        $old = new Bookmark();
+        $old->fromArray($data);
+
+        $new = new Bookmark();
+
+        $result = ApiUtils::updateLink($old, $new);
+        $this->assertEquals(12, $result->getId());
+        $this->assertEquals('', $result->getUrl());
+        $this->assertEquals('abc', $result->getShortUrl());
+        $this->assertEquals('', $result->getTitle());
+        $this->assertEquals('', $result->getDescription());
+        $this->assertEquals('', $result->getTagsString());
+        $this->assertEquals(false, $result->isPrivate());
+        $this->assertEquals($created, $result->getCreated());
     }
 }