forked from wallabag/wallabag
Re-use NewUserType to validate registration
The only ugly things is how we handle error by generating the view and then parse the content to retrieve all errors… Fix exposition fields in User entity
This commit is contained in:
@ -0,0 +1,98 @@
|
||||
<?php
|
||||
|
||||
namespace Tests\Wallabag\ApiBundle\Controller;
|
||||
|
||||
use Tests\Wallabag\ApiBundle\WallabagApiTestCase;
|
||||
|
||||
class UserRestControllerTest extends WallabagApiTestCase
|
||||
{
|
||||
public function testGetUser()
|
||||
{
|
||||
$this->client->request('GET', '/api/user.json');
|
||||
$this->assertEquals(200, $this->client->getResponse()->getStatusCode());
|
||||
|
||||
$content = json_decode($this->client->getResponse()->getContent(), true);
|
||||
|
||||
$this->assertArrayHasKey('id', $content);
|
||||
$this->assertArrayHasKey('email', $content);
|
||||
$this->assertArrayHasKey('name', $content);
|
||||
$this->assertArrayHasKey('username', $content);
|
||||
$this->assertArrayHasKey('created_at', $content);
|
||||
$this->assertArrayHasKey('updated_at', $content);
|
||||
|
||||
$this->assertEquals('bigboss@wallabag.org', $content['email']);
|
||||
$this->assertEquals('Big boss', $content['name']);
|
||||
$this->assertEquals('admin', $content['username']);
|
||||
|
||||
$this->assertEquals('application/json', $this->client->getResponse()->headers->get('Content-Type'));
|
||||
}
|
||||
|
||||
public function testCreateNewUser()
|
||||
{
|
||||
$this->client->request('PUT', '/api/user.json', [
|
||||
'username' => 'google',
|
||||
'password' => 'googlegoogle',
|
||||
'email' => 'wallabag@google.com',
|
||||
]);
|
||||
|
||||
$this->assertEquals(200, $this->client->getResponse()->getStatusCode());
|
||||
|
||||
$content = json_decode($this->client->getResponse()->getContent(), true);
|
||||
|
||||
$this->assertArrayHasKey('id', $content);
|
||||
$this->assertArrayHasKey('email', $content);
|
||||
$this->assertArrayHasKey('username', $content);
|
||||
$this->assertArrayHasKey('created_at', $content);
|
||||
$this->assertArrayHasKey('updated_at', $content);
|
||||
|
||||
$this->assertEquals('wallabag@google.com', $content['email']);
|
||||
$this->assertEquals('google', $content['username']);
|
||||
|
||||
$this->assertEquals('application/json', $this->client->getResponse()->headers->get('Content-Type'));
|
||||
}
|
||||
|
||||
public function testCreateNewUserWithExistingEmail()
|
||||
{
|
||||
$this->client->request('PUT', '/api/user.json', [
|
||||
'username' => 'google',
|
||||
'password' => 'googlegoogle',
|
||||
'email' => 'bigboss@wallabag.org',
|
||||
]);
|
||||
|
||||
$this->assertEquals(400, $this->client->getResponse()->getStatusCode());
|
||||
|
||||
$content = json_decode($this->client->getResponse()->getContent(), true);
|
||||
|
||||
$this->assertArrayHasKey('error', $content);
|
||||
$this->assertArrayHasKey('username', $content['error']);
|
||||
$this->assertArrayHasKey('email', $content['error']);
|
||||
|
||||
// $this->assertEquals('fos_user.username.already_used', $content['error']['username'][0]);
|
||||
// $this->assertEquals('fos_user.email.already_used', $content['error']['email'][0]);
|
||||
// This shouldn't be translated ...
|
||||
$this->assertEquals('This value is already used.', $content['error']['username'][0]);
|
||||
$this->assertEquals('This value is already used.', $content['error']['email'][0]);
|
||||
|
||||
$this->assertEquals('application/json', $this->client->getResponse()->headers->get('Content-Type'));
|
||||
}
|
||||
|
||||
public function testCreateNewUserWithTooShortPassword()
|
||||
{
|
||||
$this->client->request('PUT', '/api/user.json', [
|
||||
'username' => 'facebook',
|
||||
'password' => 'face',
|
||||
'email' => 'facebook@wallabag.org',
|
||||
]);
|
||||
|
||||
$this->assertEquals(400, $this->client->getResponse()->getStatusCode());
|
||||
|
||||
$content = json_decode($this->client->getResponse()->getContent(), true);
|
||||
|
||||
$this->assertArrayHasKey('error', $content);
|
||||
$this->assertArrayHasKey('password', $content['error']);
|
||||
|
||||
$this->assertEquals('validator.password_too_short', $content['error']['password'][0]);
|
||||
|
||||
$this->assertEquals('application/json', $this->client->getResponse()->headers->get('Content-Type'));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user