diff --git a/src/Wallabag/ApiBundle/Controller/WallabagRestController.php b/src/Wallabag/ApiBundle/Controller/WallabagRestController.php index f1b6f83b4..21d457728 100644 --- a/src/Wallabag/ApiBundle/Controller/WallabagRestController.php +++ b/src/Wallabag/ApiBundle/Controller/WallabagRestController.php @@ -2,6 +2,7 @@ namespace Wallabag\ApiBundle\Controller; +use Craue\ConfigBundle\Util\Config; use Doctrine\ORM\EntityManagerInterface; use FOS\RestBundle\Controller\AbstractFOSRestController; use JMS\Serializer\SerializationContext; @@ -75,12 +76,12 @@ class WallabagRestController extends AbstractFOSRestController * * @return JsonResponse */ - public function getInfoAction() + public function getInfoAction(Config $craueConfig) { $info = [ 'appname' => 'wallabag', 'version' => $this->getParameter('wallabag_core.version'), - 'allowed_registration' => $this->getParameter('fosuser_registration'), + 'allowed_registration' => $this->getParameter('fosuser_registration') && $craueConfig->get('api_user_registration'), ]; return (new JsonResponse())->setJson($this->serializer->serialize($info, 'json')); diff --git a/tests/Wallabag/ApiBundle/Controller/WallabagRestControllerTest.php b/tests/Wallabag/ApiBundle/Controller/WallabagRestControllerTest.php index 8b49c0ae0..98817bb13 100644 --- a/tests/Wallabag/ApiBundle/Controller/WallabagRestControllerTest.php +++ b/tests/Wallabag/ApiBundle/Controller/WallabagRestControllerTest.php @@ -2,6 +2,7 @@ namespace Tests\Wallabag\ApiBundle\Controller; +use Craue\ConfigBundle\Util\Config; use Tests\Wallabag\ApiBundle\WallabagApiTestCase; class WallabagRestControllerTest extends WallabagApiTestCase @@ -35,4 +36,32 @@ class WallabagRestControllerTest extends WallabagApiTestCase $this->assertSame('wallabag', $content['appname']); } + + public function testAllowedRegistration() + { + // create a new client instead of using $this->client to be sure client isn't authenticated + $client = static::createClient(); + + if (!$client->getContainer()->getParameter('fosuser_registration')) { + $this->markTestSkipped('fosuser_registration is not enabled.'); + + return; + } + + $client->getContainer()->get(Config::class)->set('api_user_registration', 1); + + $client->request('GET', '/api/info'); + + $content = json_decode($client->getResponse()->getContent(), true); + + $this->assertTrue($content['allowed_registration']); + + $client->getContainer()->get(Config::class)->set('api_user_registration', 0); + + $client->request('GET', '/api/info'); + + $content = json_decode($client->getResponse()->getContent(), true); + + $this->assertFalse($content['allowed_registration']); + } }