namespace Tests\Wallabag\CoreBundle\GuzzleSiteAuthenticator;
+use Monolog\Handler\TestHandler;
+use Monolog\Logger;
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
{
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
->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->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'],
]),
$config
);
+
+ $records = $handler->getRecords();
+
+ $this->assertCount(1, $records, 'One log was recorded');
}
public function testBuildConfigDoesntExist()
->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');
}
}