It is not aimed to test if we can get the full article (since we aren't using real login/password)
but mostly to test the full work (with authentication, etc.)
Do not clean fixtured to avoid SQLite to re-use id for entry tag relation 😓
*/
public function indexAction()
{
- $em = $this->getDoctrine()->getManager();
-
- $credentials = $em->getRepository('WallabagCoreBundle:SiteCredential')->findByUser($this->getUser());
+ $credentials = $this->get('wallabag_core.site_credential_repository')->findByUser($this->getUser());
return $this->render('WallabagCoreBundle:SiteCredential:index.html.twig', array(
'credentials' => $credentials,
*/
private $currentUser;
-
/**
* GrabySiteConfigBuilder constructor.
*
* @param ConfigBuilder $grabyConfigBuilder
- * @param TokenStorage $token
+ * @param TokenStorage $token
* @param SiteCredentialRepository $credentialRepository
- * @param LoggerInterface $logger
+ * @param LoggerInterface $logger
*/
public function __construct(ConfigBuilder $grabyConfigBuilder, TokenStorage $token, SiteCredentialRepository $credentialRepository, LoggerInterface $logger)
{
use Tests\Wallabag\CoreBundle\WallabagCoreTestCase;
use Wallabag\CoreBundle\Entity\Config;
use Wallabag\CoreBundle\Entity\Entry;
+use Wallabag\CoreBundle\Entity\SiteCredential;
class EntryControllerTest extends WallabagCoreTestCase
{
$this->assertEquals($url, $content->getUrl());
$this->assertEquals($expectedLanguage, $content->getLanguage());
}
+
+ /**
+ * This test will require an internet connection.
+ */
+ public function testRestrictedArticle()
+ {
+ $url = 'http://www.monde-diplomatique.fr/2017/05/BONNET/57475';
+ $this->logInAs('admin');
+ $client = $this->getClient();
+ $em = $client->getContainer()->get('doctrine.orm.entity_manager');
+
+ // enable restricted access
+ $client->getContainer()->get('craue_config')->set('restricted_access', 1);
+
+ // create a new site_credential
+ $user = $client->getContainer()->get('security.token_storage')->getToken()->getUser();
+ $credential = new SiteCredential($user);
+ $credential->setHost('monde-diplomatique.fr');
+ $credential->setUsername('foo');
+ $credential->setPassword('bar');
+
+ $em->persist($credential);
+ $em->flush();
+
+ $crawler = $client->request('GET', '/new');
+
+ $this->assertEquals(200, $client->getResponse()->getStatusCode());
+
+ $form = $crawler->filter('form[name=entry]')->form();
+
+ $data = [
+ 'entry[url]' => $url,
+ ];
+
+ $client->submit($form, $data);
+
+ $this->assertEquals(302, $client->getResponse()->getStatusCode());
+
+ $crawler = $client->followRedirect();
+
+ $this->assertEquals(200, $client->getResponse()->getStatusCode());
+ $this->assertContains('flashes.entry.notice.entry_saved', $crawler->filter('body')->extract(['_text'])[0]);
+
+ $content = $em
+ ->getRepository('WallabagCoreBundle:Entry')
+ ->findByUrlAndUserId($url, $this->getLoggedInUserId());
+
+ $this->assertInstanceOf('Wallabag\CoreBundle\Entity\Entry', $content);
+ $this->assertSame('Crimes et réformes aux Philippines', $content->getTitle());
+
+ $client->getContainer()->get('craue_config')->set('restricted_access', 0);
+ }
}
namespace Tests\Wallabag\CoreBundle\Controller;
+use Symfony\Bundle\FrameworkBundle\Client;
use Tests\Wallabag\CoreBundle\WallabagCoreTestCase;
+use Wallabag\CoreBundle\Entity\SiteCredential;
class SiteCredentialControllerTest extends WallabagCoreTestCase
{
$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');
+ $credential = $this->createSiteCredential($client);
$crawler = $client->request('GET', '/site-credentials/'.$credential->getId().'/edit');
$this->assertContains('larry', $crawler->filter('input[id=site_credential_username]')->attr('value'));
}
- /**
- * @depends testNewSiteCredential
- */
public function testEditFromADifferentUserSiteCredential()
{
- $this->logInAs('bob');
+ $this->logInAs('admin');
$client = $this->getClient();
- $credential = $client->getContainer()
- ->get('doctrine.orm.entity_manager')
- ->getRepository('WallabagCoreBundle:SiteCredential')
- ->findOneByHost('google.io');
+ $credential = $this->createSiteCredential($client);
+
+ $this->logInAs('bob');
$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');
+ $credential = $this->createSiteCredential($client);
$crawler = $client->request('GET', '/site-credentials/'.$credential->getId().'/edit');
$this->assertContains('flashes.site_credential.notice.deleted', $crawler->filter('body')->extract(['_text'])[0]);
}
+
+ private function createSiteCredential(Client $client)
+ {
+ $credential = new SiteCredential($this->getLoggedInUser());
+ $credential->setHost('google.io');
+ $credential->setUsername('sergei');
+ $credential->setPassword('microsoft');
+
+ $em = $client->getContainer()->get('doctrine.orm.entity_manager');
+ $em->persist($credential);
+ $em->flush();
+
+ return $credential;
+ }
}
$grabySiteConfig = new GrabySiteConfig();
$grabySiteConfig->requires_login = true;
- $grabySiteConfig->login_uri = 'http://example.com/login';
+ $grabySiteConfig->login_uri = 'http://www.example.com/login';
$grabySiteConfig->login_username_field = 'login';
$grabySiteConfig->login_password_field = 'password';
$grabySiteConfig->login_extra_fields = ['field=value'];
$logger
);
- $config = $this->builder->buildForHost('example.com');
+ $config = $this->builder->buildForHost('www.example.com');
$this->assertEquals(
new SiteConfig([
'host' => 'example.com',
'requiresLogin' => true,
- 'loginUri' => 'http://example.com/login',
+ 'loginUri' => 'http://www.example.com/login',
'usernameField' => 'login',
'passwordField' => 'password',
'extraFields' => ['field' => 'value'],