From e1dd7f70c5cc0a0086d83d5fcdaa7a25081a5e6f Mon Sep 17 00:00:00 2001 From: =?utf8?q?Nicolas=20L=C5=93uillet?= Date: Tue, 10 Feb 2015 23:13:34 +0100 Subject: [PATCH] first test for API, need refactor --- .../Controller/WallabagRestController.php | 2 +- .../Controller/WallabagRestControllerTest.php | 28 ++++++++++++++++--- 2 files changed, 25 insertions(+), 5 deletions(-) diff --git a/src/Wallabag/CoreBundle/Controller/WallabagRestController.php b/src/Wallabag/CoreBundle/Controller/WallabagRestController.php index 27d11da5..fcd212ef 100644 --- a/src/Wallabag/CoreBundle/Controller/WallabagRestController.php +++ b/src/Wallabag/CoreBundle/Controller/WallabagRestController.php @@ -33,7 +33,7 @@ class WallabagRestController extends Controller throw $this->createNotFoundException(); } - return $user->getSalt(); + return array($user->getSalt()); } /** * Retrieve all entries. It could be filtered by many options. diff --git a/src/Wallabag/CoreBundle/Tests/Controller/WallabagRestControllerTest.php b/src/Wallabag/CoreBundle/Tests/Controller/WallabagRestControllerTest.php index d9e6a161..ff3c9432 100644 --- a/src/Wallabag/CoreBundle/Tests/Controller/WallabagRestControllerTest.php +++ b/src/Wallabag/CoreBundle/Tests/Controller/WallabagRestControllerTest.php @@ -3,6 +3,7 @@ namespace Wallabag\CoreBundle\Tests\Controller; use Symfony\Bundle\FrameworkBundle\Test\WebTestCase; +use Symfony\Component\Security\Core\Encoder\MessageDigestPasswordEncoder; class WallabagRestControllerTest extends WebTestCase { @@ -16,11 +17,31 @@ class WallabagRestControllerTest extends WebTestCase $this->assertEquals(404, $client->getResponse()->getStatusCode()); } - public function testEmptyGetEntries() + public function testGetEntries() { $client = $this->createClient(); - $client->request('GET', '/api/entries'); - $this->assertTrue($client->getResponse()->isOk()); + $client->request('GET', '/api/salts/admin.json'); + $content = json_decode($client->getResponse()->getContent()); + $salt = $content[0]; + + $username = 'admin'; + $password = 'test'; + + $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)); + + $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.'"' + ); + + $client->request('GET', '/api/entries', array(), array(), $headers); + $this->assertContains('Mailjet', $client->getResponse()->getContent()); $this->assertTrue( $client->getResponse()->headers->contains( @@ -28,6 +49,5 @@ class WallabagRestControllerTest extends WebTestCase 'application/json' ) ); - $this->assertEquals('[]', $client->getResponse()->getContent()); } } -- 2.41.0