]> git.immae.eu Git - github/wallabag/wallabag.git/blobdiff - tests/Wallabag/CoreBundle/GuzzleSiteAuthenticator/GrabySiteConfigBuilderTest.php
Add a real configuration for CS-Fixer
[github/wallabag/wallabag.git] / tests / Wallabag / CoreBundle / GuzzleSiteAuthenticator / GrabySiteConfigBuilderTest.php
index aee6725965b9fae7da198d18419e2710b541b563..85036e35160c9b25e593068fa76c733e87dd34f5 100644 (file)
@@ -4,10 +4,13 @@ namespace Tests\Wallabag\CoreBundle\GuzzleSiteAuthenticator;
 
 use BD\GuzzleSiteAuthenticator\SiteConfig\SiteConfig;
 use Graby\SiteConfig\SiteConfig as GrabySiteConfig;
-use PHPUnit_Framework_TestCase;
+use Monolog\Handler\TestHandler;
+use Monolog\Logger;
+use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage;
+use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken;
 use Wallabag\CoreBundle\GuzzleSiteAuthenticator\GrabySiteConfigBuilder;
 
-class GrabySiteConfigBuilderTest extends PHPUnit_Framework_TestCase
+class GrabySiteConfigBuilderTest extends \PHPUnit_Framework_TestCase
 {
     /** @var \Wallabag\CoreBundle\GuzzleSiteAuthenticator\GrabySiteConfigBuilder */
     protected $builder;
@@ -15,16 +18,16 @@ 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();
 
         $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'];
+        $grabySiteConfig->login_extra_fields = ['field=value'];
         $grabySiteConfig->not_logged_in_xpath = '//div[@class="need-login"]';
 
         $grabyConfigBuilderMock
@@ -32,18 +35,44 @@ class GrabySiteConfigBuilderTest extends PHPUnit_Framework_TestCase
             ->with('example.com')
             ->will($this->returnValue($grabySiteConfig));
 
+        $logger = new Logger('foo');
+        $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
         );
 
-        $config = $this->builder->buildForHost('example.com');
+        $config = $this->builder->buildForHost('www.example.com');
 
-        self::assertEquals(
+        $this->assertSame(
             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'],
@@ -53,6 +82,10 @@ class GrabySiteConfigBuilderTest extends PHPUnit_Framework_TestCase
             ]),
             $config
         );
+
+        $records = $handler->getRecords();
+
+        $this->assertCount(1, $records, 'One log was recorded');
     }
 
     public function testBuildConfigDoesntExist()
@@ -67,19 +100,43 @@ class GrabySiteConfigBuilderTest extends PHPUnit_Framework_TestCase
             ->with('unknown.com')
             ->will($this->returnValue(new GrabySiteConfig()));
 
-        $this->builder = new GrabySiteConfigBuilder($grabyConfigBuilderMock, []);
+        $logger = new Logger('foo');
+        $handler = new TestHandler();
+        $logger->pushHandler($handler);
 
-        $config = $this->builder->buildForHost('unknown.com');
+        $siteCrentialRepo = $this->getMockBuilder('Wallabag\CoreBundle\Repository\SiteCredentialRepository')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $siteCrentialRepo->expects($this->once())
+            ->method('findOneByHostAndUser')
+            ->with('unknown.com', 1)
+            ->willReturn(null);
 
-        self::assertEquals(
-            new SiteConfig([
-                'host' => 'unknown.com',
-                'requiresLogin' => false,
-                'username' => null,
-                'password' => null,
-                'extraFields' => [],
-            ]),
-            $config
+        $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
         );
+
+        $config = $this->builder->buildForHost('unknown.com');
+
+        $this->assertFalse($config);
+
+        $records = $handler->getRecords();
+
+        $this->assertCount(1, $records, 'One log was recorded');
     }
 }