]> git.immae.eu Git - github/wallabag/wallabag.git/commitdiff
refactor and test one entry
authorNicolas Lœuillet <nicolas@loeuillet.org>
Wed, 11 Feb 2015 05:41:44 +0000 (06:41 +0100)
committerNicolas Lœuillet <nicolas@loeuillet.org>
Wed, 11 Feb 2015 05:41:44 +0000 (06:41 +0100)
src/Wallabag/CoreBundle/Tests/Controller/WallabagRestControllerTest.php

index 274a816f40ee3447f233a07ae225cc35d93d100d..1240844b9fe126f5aab26c8e58d7ea0b3e322384 100644 (file)
@@ -6,6 +6,31 @@ use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
 
 class WallabagRestControllerTest extends WebTestCase
 {
+    /**
+     * Generate HTTP headers for authenticate user on API
+     *
+     * @param $username
+     * @param $password
+     * @param $salt
+     *
+     * @return array
+     */
+    private function generateHeaders($username, $password, $salt)
+    {
+        $encryptedPassword = sha1($password.$username.$salt);
+        $nonce = substr(md5(uniqid('nonce_', true)), 0, 16);
+
+        $now = new \DateTime('now', new \DateTimeZone('UTC'));
+        $created = (string) $now->format('Y-m-d\TH:i:s\Z');
+        $digest = base64_encode(sha1(base64_decode($nonce).$created.$encryptedPassword, true));
+
+        return array(
+            'PHP_AUTH_USER' => 'username',
+            'HTTP_AUTHORIZATION' => 'Authorization profile="UsernameToken"',
+            'HTTP_x-wsse' => 'X-WSSE: UsernameToken Username="'.$username.'", PasswordDigest="'.$digest.'", Nonce="'.$nonce.'", Created="'.$created.'"',
+        );
+    }
+
     public function testGetSalt()
     {
         $client = $this->createClient();
@@ -16,28 +41,32 @@ class WallabagRestControllerTest extends WebTestCase
         $this->assertEquals(404, $client->getResponse()->getStatusCode());
     }
 
-    public function testGetEntries()
+    public function testGetOneEntry()
     {
         $client = $this->createClient();
         $client->request('GET', '/api/salts/admin.json');
         $content = json_decode($client->getResponse()->getContent());
-        $salt = $content[0];
 
-        $username = 'admin';
-        $password = 'test';
+        $headers = $this->generateHeaders('admin', 'test', $content[0]);
 
-        $encryptedPassword = sha1($password.$username.$salt);
-        $nonce = substr(md5(uniqid('nonce_', true)), 0, 16);
+        $client->request('GET', '/api/entries/1.json', array(), array(), $headers);
+        $this->assertContains('This is my content', $client->getResponse()->getContent());
 
-        $now = new \DateTime('now', new \DateTimeZone('UTC'));
-        $created = (string) $now->format('Y-m-d\TH:i:s\Z');
-        $digest = base64_encode(sha1(base64_decode($nonce).$created.$encryptedPassword, true));
-
-        $headers = array(
-            'PHP_AUTH_USER' => 'username',
-            'HTTP_AUTHORIZATION' => 'Authorization profile="UsernameToken"',
-            'HTTP_x-wsse' => 'X-WSSE: UsernameToken Username="'.$username.'", PasswordDigest="'.$digest.'", Nonce="'.$nonce.'", Created="'.$created.'"',
+        $this->assertTrue(
+            $client->getResponse()->headers->contains(
+                'Content-Type',
+                'application/json'
+            )
         );
+    }
+
+    public function testGetEntries()
+    {
+        $client = $this->createClient();
+        $client->request('GET', '/api/salts/admin.json');
+        $content = json_decode($client->getResponse()->getContent());
+
+        $headers = $this->generateHeaders('admin', 'test', $content[0]);
 
         $client->request('GET', '/api/entries', array(), array(), $headers);
         $this->assertContains('Mailjet', $client->getResponse()->getContent());