From b8427f22f06cab58383ec3080f09715c712c65ef Mon Sep 17 00:00:00 2001
From: Jeremy Benoist
Date: Mon, 1 May 2017 22:13:35 +0200
Subject: [PATCH] Add menu access to site credentials CRUD
---
.../ORM/LoadSiteCredentialData.php | 34 +++++
.../GrabySiteConfigBuilder.php | 18 ++-
.../CoreBundle/Resources/config/services.yml | 2 +-
.../Resources/translations/messages.da.yml | 1 +
.../Resources/translations/messages.de.yml | 1 +
.../Resources/translations/messages.en.yml | 1 +
.../Resources/translations/messages.es.yml | 1 +
.../Resources/translations/messages.fa.yml | 1 +
.../Resources/translations/messages.fr.yml | 1 +
.../Resources/translations/messages.it.yml | 1 +
.../Resources/translations/messages.oc.yml | 1 +
.../Resources/translations/messages.pl.yml | 1 +
.../Resources/translations/messages.pt.yml | 1 +
.../Resources/translations/messages.ro.yml | 1 +
.../Resources/translations/messages.tr.yml | 1 +
.../baggy/SiteCredential/edit.html.twig | 2 +-
.../baggy/SiteCredential/index.html.twig | 4 +-
.../themes/baggy/SiteCredential/new.html.twig | 2 +-
.../views/themes/baggy/layout.html.twig | 3 +
.../views/themes/material/layout.html.twig | 5 +
.../SiteCredentialControllerTest.php | 140 ++++++++++++++++++
.../GrabySiteConfigBuilderTest.php | 50 ++++++-
22 files changed, 258 insertions(+), 14 deletions(-)
create mode 100644 src/Wallabag/CoreBundle/DataFixtures/ORM/LoadSiteCredentialData.php
create mode 100644 tests/Wallabag/CoreBundle/Controller/SiteCredentialControllerTest.php
diff --git a/src/Wallabag/CoreBundle/DataFixtures/ORM/LoadSiteCredentialData.php b/src/Wallabag/CoreBundle/DataFixtures/ORM/LoadSiteCredentialData.php
new file mode 100644
index 00000000..866f55a4
--- /dev/null
+++ b/src/Wallabag/CoreBundle/DataFixtures/ORM/LoadSiteCredentialData.php
@@ -0,0 +1,34 @@
+getReference('admin-user'));
+ $credential->setHost('example.com');
+ $credential->setUsername('foo');
+ $credential->setPassword('bar');
+
+ $manager->persist($credential);
+
+ $manager->flush();
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getOrder()
+ {
+ return 50;
+ }
+}
diff --git a/src/Wallabag/CoreBundle/GuzzleSiteAuthenticator/GrabySiteConfigBuilder.php b/src/Wallabag/CoreBundle/GuzzleSiteAuthenticator/GrabySiteConfigBuilder.php
index 94615687..ae69492d 100644
--- a/src/Wallabag/CoreBundle/GuzzleSiteAuthenticator/GrabySiteConfigBuilder.php
+++ b/src/Wallabag/CoreBundle/GuzzleSiteAuthenticator/GrabySiteConfigBuilder.php
@@ -7,7 +7,7 @@ use BD\GuzzleSiteAuthenticator\SiteConfig\SiteConfigBuilder;
use Graby\SiteConfig\ConfigBuilder;
use Psr\Log\LoggerInterface;
use Wallabag\CoreBundle\Repository\SiteCredentialRepository;
-use Wallabag\UserBundle\Entity\User;
+use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage;
class GrabySiteConfigBuilder implements SiteConfigBuilder
{
@@ -27,7 +27,7 @@ class GrabySiteConfigBuilder implements SiteConfigBuilder
private $logger;
/**
- * @var User
+ * @var Wallabag\UserBundle\Entity\User|null
*/
private $currentUser;
@@ -36,16 +36,19 @@ class GrabySiteConfigBuilder implements SiteConfigBuilder
* GrabySiteConfigBuilder constructor.
*
* @param ConfigBuilder $grabyConfigBuilder
- * @param User $currentUser
+ * @param TokenStorage $token
* @param SiteCredentialRepository $credentialRepository
* @param LoggerInterface $logger
*/
- public function __construct(ConfigBuilder $grabyConfigBuilder, User $currentUser, SiteCredentialRepository $credentialRepository, LoggerInterface $logger)
+ public function __construct(ConfigBuilder $grabyConfigBuilder, TokenStorage $token, SiteCredentialRepository $credentialRepository, LoggerInterface $logger)
{
$this->grabyConfigBuilder = $grabyConfigBuilder;
$this->credentialRepository = $credentialRepository;
- $this->currentUser = $currentUser;
$this->logger = $logger;
+
+ if ($token->getToken()) {
+ $this->currentUser = $token->getToken()->getUser();
+ }
}
/**
@@ -59,7 +62,10 @@ class GrabySiteConfigBuilder implements SiteConfigBuilder
$host = substr($host, 4);
}
- $credentials = $this->credentialRepository->findOneByHostAndUser($host, $this->currentUser->getId());
+ $credentials = null;
+ if ($this->currentUser) {
+ $credentials = $this->credentialRepository->findOneByHostAndUser($host, $this->currentUser->getId());
+ }
if (null === $credentials) {
$this->logger->debug('Auth: no credentials available for host.', ['host' => $host]);
diff --git a/src/Wallabag/CoreBundle/Resources/config/services.yml b/src/Wallabag/CoreBundle/Resources/config/services.yml
index a59152d3..09bc77fe 100644
--- a/src/Wallabag/CoreBundle/Resources/config/services.yml
+++ b/src/Wallabag/CoreBundle/Resources/config/services.yml
@@ -63,7 +63,7 @@ services:
class: Wallabag\CoreBundle\GuzzleSiteAuthenticator\GrabySiteConfigBuilder
arguments:
- "@wallabag_core.graby.config_builder"
- - "@=service('security.token_storage').getToken().getUser()"
+ - "@security.token_storage"
- "@wallabag_core.site_credential_repository"
- '@logger'
tags:
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.da.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.da.yml
index ef58a16b..3a3fb91d 100644
--- a/src/Wallabag/CoreBundle/Resources/translations/messages.da.yml
+++ b/src/Wallabag/CoreBundle/Resources/translations/messages.da.yml
@@ -32,6 +32,7 @@ menu:
# save_link: 'Save a link'
back_to_unread: 'Tilbage til de ulæste artikler'
# users_management: 'Users management'
+ # site_credentials: 'Site credentials'
top:
add_new_entry: 'Tilføj ny artikel'
search: 'Søg'
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.de.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.de.yml
index d026a030..85f0e1a3 100644
--- a/src/Wallabag/CoreBundle/Resources/translations/messages.de.yml
+++ b/src/Wallabag/CoreBundle/Resources/translations/messages.de.yml
@@ -32,6 +32,7 @@ menu:
save_link: 'Link speichern'
back_to_unread: 'Zurück zu ungelesenen Artikeln'
users_management: 'Benutzerverwaltung'
+ # site_credentials: 'Site credentials'
top:
add_new_entry: 'Neuen Artikel hinzufügen'
search: 'Suche'
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.en.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.en.yml
index 12feb7dd..284fa2fb 100644
--- a/src/Wallabag/CoreBundle/Resources/translations/messages.en.yml
+++ b/src/Wallabag/CoreBundle/Resources/translations/messages.en.yml
@@ -32,6 +32,7 @@ menu:
save_link: 'Save a link'
back_to_unread: 'Back to unread articles'
users_management: 'Users management'
+ site_credentials: 'Site credentials'
top:
add_new_entry: 'Add a new entry'
search: 'Search'
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.es.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.es.yml
index 2351d467..33bb879c 100644
--- a/src/Wallabag/CoreBundle/Resources/translations/messages.es.yml
+++ b/src/Wallabag/CoreBundle/Resources/translations/messages.es.yml
@@ -32,6 +32,7 @@ menu:
save_link: 'Guardar un enlace'
back_to_unread: 'Volver a los artÃculos sin leer'
users_management: 'Configuración de usuarios'
+ # site_credentials: 'Site credentials'
top:
add_new_entry: 'Añadir un nuevo artÃculo'
search: 'Buscar'
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.fa.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.fa.yml
index 32e1ff42..90eb119c 100644
--- a/src/Wallabag/CoreBundle/Resources/translations/messages.fa.yml
+++ b/src/Wallabag/CoreBundle/Resources/translations/messages.fa.yml
@@ -32,6 +32,7 @@ menu:
save_link: 'ذخÛرÙÙ ÛÚ© Ù¾ÛÙÙد'
back_to_unread: 'بازگشت ب٠خÙاÙدÙâÙشدÙâÙا'
# users_management: 'Users management'
+ # site_credentials: 'Site credentials'
top:
add_new_entry: 'اÙزÙد٠Ù
ÙاÙÙ٠تازÙ'
search: 'جستجÙ'
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.fr.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.fr.yml
index 17eaf015..542ddf48 100644
--- a/src/Wallabag/CoreBundle/Resources/translations/messages.fr.yml
+++ b/src/Wallabag/CoreBundle/Resources/translations/messages.fr.yml
@@ -32,6 +32,7 @@ menu:
save_link: "Sauvegarder un nouvel article"
back_to_unread: "Retour aux articles non lus"
users_management: "Gestion des utilisateurs"
+ site_credentials: 'Accès aux sites'
top:
add_new_entry: "Sauvegarder un nouvel article"
search: "Rechercher"
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.it.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.it.yml
index 752085c8..5cb2a68f 100644
--- a/src/Wallabag/CoreBundle/Resources/translations/messages.it.yml
+++ b/src/Wallabag/CoreBundle/Resources/translations/messages.it.yml
@@ -32,6 +32,7 @@ menu:
save_link: 'Salva collegamento'
back_to_unread: 'Torna ai contenuti non letti'
# users_management: 'Users management'
+ # site_credentials: 'Site credentials'
top:
add_new_entry: 'Aggiungi un nuovo contenuto'
search: 'Cerca'
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.oc.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.oc.yml
index 9e941de0..bc11b2a4 100644
--- a/src/Wallabag/CoreBundle/Resources/translations/messages.oc.yml
+++ b/src/Wallabag/CoreBundle/Resources/translations/messages.oc.yml
@@ -32,6 +32,7 @@ menu:
save_link: 'Enregistrar un novèl article'
back_to_unread: 'Tornar als articles pas legits'
users_management: 'Gestion dels utilizaires'
+ # site_credentials: 'Site credentials'
top:
add_new_entry: 'Enregistrar un novèl article'
search: 'Cercar'
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.pl.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.pl.yml
index 38e051f5..033d6ac5 100644
--- a/src/Wallabag/CoreBundle/Resources/translations/messages.pl.yml
+++ b/src/Wallabag/CoreBundle/Resources/translations/messages.pl.yml
@@ -32,6 +32,7 @@ menu:
save_link: 'Zapisz link'
back_to_unread: 'Powrót do nieprzeczytanych artykuÅów'
users_management: 'ZarzÄ
dzanie użytkownikami'
+ # site_credentials: 'Site credentials'
top:
add_new_entry: 'Dodaj nowy wpis'
search: 'Szukaj'
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.pt.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.pt.yml
index d3b245b8..c70c2496 100644
--- a/src/Wallabag/CoreBundle/Resources/translations/messages.pt.yml
+++ b/src/Wallabag/CoreBundle/Resources/translations/messages.pt.yml
@@ -32,6 +32,7 @@ menu:
save_link: 'Salvar um link'
back_to_unread: 'Voltar para os artigos não lidos'
users_management: 'Gestão de Usuários'
+ # site_credentials: 'Site credentials'
top:
add_new_entry: 'Adicionar uma nova entrada'
search: 'Pesquisa'
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.ro.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.ro.yml
index 66c72429..a5dc44f0 100644
--- a/src/Wallabag/CoreBundle/Resources/translations/messages.ro.yml
+++ b/src/Wallabag/CoreBundle/Resources/translations/messages.ro.yml
@@ -32,6 +32,7 @@ menu:
# save_link: 'Save a link'
back_to_unread: 'Ãnapoi la articolele necitite'
# users_management: 'Users management'
+ # site_credentials: 'Site credentials'
top:
add_new_entry: 'Introdu un nou articol'
search: 'CÄutare'
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.tr.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.tr.yml
index 34ae5b87..4d01e7f7 100644
--- a/src/Wallabag/CoreBundle/Resources/translations/messages.tr.yml
+++ b/src/Wallabag/CoreBundle/Resources/translations/messages.tr.yml
@@ -32,6 +32,7 @@ menu:
# save_link: 'Save a link'
back_to_unread: 'Okunmayan makalelere geri dön'
# users_management: 'Users management'
+ # site_credentials: 'Site credentials'
top:
add_new_entry: 'Yeni bir makale ekle'
search: 'Ara'
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/SiteCredential/edit.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/SiteCredential/edit.html.twig
index 8448f17e..882be430 100644
--- a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/SiteCredential/edit.html.twig
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/SiteCredential/edit.html.twig
@@ -49,7 +49,7 @@
{{ form_end(delete_form) }}
- {{ 'site_credential.form.back_to_list'|trans }}
+ {{ 'site_credential.form.back_to_list'|trans }}
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/SiteCredential/index.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/SiteCredential/index.html.twig
index fda60b31..c128bceb 100644
--- a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/SiteCredential/index.html.twig
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/SiteCredential/index.html.twig
@@ -25,7 +25,7 @@
{{ credential.host }} |
{{ credential.username }} |
- {{ 'site_credential.list.edit_action'|trans }}
+ {{ 'site_credential.list.edit_action'|trans }}
|
{% endfor %}
@@ -33,7 +33,7 @@
- {{ 'site_credential.list.create_new_one'|trans }}
+ {{ 'site_credential.list.create_new_one'|trans }}
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/SiteCredential/new.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/SiteCredential/new.html.twig
index bf713902..3c008cde 100644
--- a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/SiteCredential/new.html.twig
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/SiteCredential/new.html.twig
@@ -42,7 +42,7 @@
{{ form_widget(form.save, {'attr': {'class': 'btn waves-effect waves-light'}}) }}
{{ form_rest(form) }}
- {{ 'site_credential.form.back_to_list'|trans }}
+ {{ 'site_credential.form.back_to_list'|trans }}
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/layout.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/layout.html.twig
index 42aeace9..17fa13bb 100644
--- a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/layout.html.twig
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/layout.html.twig
@@ -38,6 +38,9 @@
{{ render(controller("WallabagCoreBundle:Entry:searchForm", {'currentRoute': app.request.attributes.get('_route')})) }}
+ {% if craue_setting('restricted_access') %}
+
+ {% endif %}
{% if is_granted('ROLE_SUPER_ADMIN') %}
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/material/layout.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/material/layout.html.twig
index 2dab1c18..60907e11 100644
--- a/src/Wallabag/CoreBundle/Resources/views/themes/material/layout.html.twig
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/material/layout.html.twig
@@ -66,6 +66,11 @@
{{ 'menu.left.config'|trans }}
+ {% if craue_setting('restricted_access') %}
+
+ {{ 'menu.left.site_credentials'|trans }}
+
+ {% endif %}
{% if is_granted('ROLE_SUPER_ADMIN') %}
{{ 'menu.left.users_management'|trans }}
diff --git a/tests/Wallabag/CoreBundle/Controller/SiteCredentialControllerTest.php b/tests/Wallabag/CoreBundle/Controller/SiteCredentialControllerTest.php
new file mode 100644
index 00000000..47bf0907
--- /dev/null
+++ b/tests/Wallabag/CoreBundle/Controller/SiteCredentialControllerTest.php
@@ -0,0 +1,140 @@
+logInAs('admin');
+ $client = $this->getClient();
+
+ $crawler = $client->request('GET', '/site-credentials/');
+
+ $this->assertEquals(200, $client->getResponse()->getStatusCode());
+
+ $body = $crawler->filter('body')->extract(['_text'])[0];
+
+ $this->assertContains('site_credential.description', $body);
+ $this->assertContains('site_credential.list.create_new_one', $body);
+ }
+
+ public function testNewSiteCredential()
+ {
+ $this->logInAs('admin');
+ $client = $this->getClient();
+
+ $crawler = $client->request('GET', '/site-credentials/new');
+
+ $this->assertEquals(200, $client->getResponse()->getStatusCode());
+
+ $body = $crawler->filter('body')->extract(['_text'])[0];
+
+ $this->assertContains('site_credential.new_site_credential', $body);
+ $this->assertContains('site_credential.form.back_to_list', $body);
+
+ $form = $crawler->filter('button[id=site_credential_save]')->form();
+
+ $data = [
+ 'site_credential[host]' => 'google.io',
+ 'site_credential[username]' => 'sergei',
+ 'site_credential[password]' => 'microsoft',
+ ];
+
+ $client->submit($form, $data);
+
+ $this->assertEquals(302, $client->getResponse()->getStatusCode());
+
+ $crawler = $client->followRedirect();
+
+ $this->assertContains('flashes.site_credential.notice.added', $crawler->filter('body')->extract(['_text'])[0]);
+ }
+
+ /**
+ * @depends testNewSiteCredential
+ */
+ public function testEditSiteCredential()
+ {
+ $this->logInAs('admin');
+ $client = $this->getClient();
+
+ $credential = $client->getContainer()
+ ->get('doctrine.orm.entity_manager')
+ ->getRepository('WallabagCoreBundle:SiteCredential')
+ ->findOneByHost('google.io');
+
+ $crawler = $client->request('GET', '/site-credentials/'.$credential->getId().'/edit');
+
+ $this->assertEquals(200, $client->getResponse()->getStatusCode());
+
+ $body = $crawler->filter('body')->extract(['_text'])[0];
+
+ $this->assertContains('site_credential.edit_site_credential', $body);
+ $this->assertContains('site_credential.form.back_to_list', $body);
+
+ $form = $crawler->filter('button[id=site_credential_save]')->form();
+
+ $data = [
+ 'site_credential[host]' => 'google.io',
+ 'site_credential[username]' => 'larry',
+ 'site_credential[password]' => 'microsoft',
+ ];
+
+ $client->submit($form, $data);
+
+ $this->assertEquals(302, $client->getResponse()->getStatusCode());
+
+ $crawler = $client->followRedirect();
+
+ $this->assertContains('flashes.site_credential.notice.updated', $crawler->filter('body')->extract(['_text'])[0]);
+ $this->assertContains('larry', $crawler->filter('input[id=site_credential_username]')->attr('value'));
+ }
+
+ /**
+ * @depends testNewSiteCredential
+ */
+ public function testEditFromADifferentUserSiteCredential()
+ {
+ $this->logInAs('bob');
+ $client = $this->getClient();
+
+ $credential = $client->getContainer()
+ ->get('doctrine.orm.entity_manager')
+ ->getRepository('WallabagCoreBundle:SiteCredential')
+ ->findOneByHost('google.io');
+
+ $client->request('GET', '/site-credentials/'.$credential->getId().'/edit');
+
+ $this->assertEquals(403, $client->getResponse()->getStatusCode());
+ }
+
+ /**
+ * @depends testNewSiteCredential
+ */
+ public function testDeleteSiteCredential()
+ {
+ $this->logInAs('admin');
+ $client = $this->getClient();
+
+ $credential = $client->getContainer()
+ ->get('doctrine.orm.entity_manager')
+ ->getRepository('WallabagCoreBundle:SiteCredential')
+ ->findOneByHost('google.io');
+
+ $crawler = $client->request('GET', '/site-credentials/'.$credential->getId().'/edit');
+
+ $this->assertEquals(200, $client->getResponse()->getStatusCode());
+
+ $deleteForm = $crawler->filter('body')->selectButton('site_credential.form.delete')->form();
+
+ $client->submit($deleteForm, []);
+
+ $this->assertEquals(302, $client->getResponse()->getStatusCode());
+
+ $crawler = $client->followRedirect();
+
+ $this->assertContains('flashes.site_credential.notice.deleted', $crawler->filter('body')->extract(['_text'])[0]);
+ }
+}
diff --git a/tests/Wallabag/CoreBundle/GuzzleSiteAuthenticator/GrabySiteConfigBuilderTest.php b/tests/Wallabag/CoreBundle/GuzzleSiteAuthenticator/GrabySiteConfigBuilderTest.php
index 8b50bce9..980f7579 100644
--- a/tests/Wallabag/CoreBundle/GuzzleSiteAuthenticator/GrabySiteConfigBuilderTest.php
+++ b/tests/Wallabag/CoreBundle/GuzzleSiteAuthenticator/GrabySiteConfigBuilderTest.php
@@ -8,6 +8,8 @@ use BD\GuzzleSiteAuthenticator\SiteConfig\SiteConfig;
use Graby\SiteConfig\SiteConfig as GrabySiteConfig;
use PHPUnit_Framework_TestCase;
use Wallabag\CoreBundle\GuzzleSiteAuthenticator\GrabySiteConfigBuilder;
+use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken;
+use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage;
class GrabySiteConfigBuilderTest extends PHPUnit_Framework_TestCase
{
@@ -17,7 +19,7 @@ class GrabySiteConfigBuilderTest extends PHPUnit_Framework_TestCase
public function testBuildConfigExists()
{
/* @var \Graby\SiteConfig\ConfigBuilder|\PHPUnit_Framework_MockObject_MockObject */
- $grabyConfigBuilderMock = $this->getMockBuilder('\Graby\SiteConfig\ConfigBuilder')
+ $grabyConfigBuilderMock = $this->getMockBuilder('Graby\SiteConfig\ConfigBuilder')
->disableOriginalConstructor()
->getMock();
@@ -38,9 +40,30 @@ class GrabySiteConfigBuilderTest extends PHPUnit_Framework_TestCase
$handler = new TestHandler();
$logger->pushHandler($handler);
+ $siteCrentialRepo = $this->getMockBuilder('Wallabag\CoreBundle\Repository\SiteCredentialRepository')
+ ->disableOriginalConstructor()
+ ->getMock();
+ $siteCrentialRepo->expects($this->once())
+ ->method('findOneByHostAndUser')
+ ->with('example.com', 1)
+ ->willReturn(['username' => 'foo', 'password' => 'bar']);
+
+ $user = $this->getMockBuilder('Wallabag\UserBundle\Entity\User')
+ ->disableOriginalConstructor()
+ ->getMock();
+ $user->expects($this->once())
+ ->method('getId')
+ ->willReturn(1);
+
+ $token = new UsernamePasswordToken($user, 'pass', 'provider');
+
+ $tokenStorage = new TokenStorage();
+ $tokenStorage->setToken($token);
+
$this->builder = new GrabySiteConfigBuilder(
$grabyConfigBuilderMock,
- ['example.com' => ['username' => 'foo', 'password' => 'bar']],
+ $tokenStorage,
+ $siteCrentialRepo,
$logger
);
@@ -82,9 +105,30 @@ class GrabySiteConfigBuilderTest extends PHPUnit_Framework_TestCase
$handler = new TestHandler();
$logger->pushHandler($handler);
+ $siteCrentialRepo = $this->getMockBuilder('Wallabag\CoreBundle\Repository\SiteCredentialRepository')
+ ->disableOriginalConstructor()
+ ->getMock();
+ $siteCrentialRepo->expects($this->once())
+ ->method('findOneByHostAndUser')
+ ->with('unknown.com', 1)
+ ->willReturn(null);
+
+ $user = $this->getMockBuilder('Wallabag\UserBundle\Entity\User')
+ ->disableOriginalConstructor()
+ ->getMock();
+ $user->expects($this->once())
+ ->method('getId')
+ ->willReturn(1);
+
+ $token = new UsernamePasswordToken($user, 'pass', 'provider');
+
+ $tokenStorage = new TokenStorage();
+ $tokenStorage->setToken($token);
+
$this->builder = new GrabySiteConfigBuilder(
$grabyConfigBuilderMock,
- [],
+ $tokenStorage,
+ $siteCrentialRepo,
$logger
);
--
2.41.0