3 namespace Tests\Wallabag\CoreBundle\GuzzleSiteAuthenticator
;
5 use Monolog\Handler\TestHandler
;
7 use BD\GuzzleSiteAuthenticator\SiteConfig\SiteConfig
;
8 use Graby\SiteConfig\SiteConfig
as GrabySiteConfig
;
9 use PHPUnit_Framework_TestCase
;
10 use Wallabag\CoreBundle\GuzzleSiteAuthenticator\GrabySiteConfigBuilder
;
12 class GrabySiteConfigBuilderTest
extends PHPUnit_Framework_TestCase
14 /** @var \Wallabag\CoreBundle\GuzzleSiteAuthenticator\GrabySiteConfigBuilder */
17 public function testBuildConfigExists()
19 /* @var \Graby\SiteConfig\ConfigBuilder|\PHPUnit_Framework_MockObject_MockObject */
20 $grabyConfigBuilderMock = $this->getMockBuilder('\Graby\SiteConfig\ConfigBuilder')
21 ->disableOriginalConstructor()
24 $grabySiteConfig = new GrabySiteConfig();
25 $grabySiteConfig->requires_login
= true;
26 $grabySiteConfig->login_uri
= 'http://example.com/login';
27 $grabySiteConfig->login_username_field
= 'login';
28 $grabySiteConfig->login_password_field
= 'password';
29 $grabySiteConfig->login_extra_fields
= ['field=value'];
30 $grabySiteConfig->not_logged_in_xpath
= '//div[@class="need-login"]';
32 $grabyConfigBuilderMock
33 ->method('buildForHost')
35 ->will($this->returnValue($grabySiteConfig));
37 $logger = new Logger('foo');
38 $handler = new TestHandler();
39 $logger->pushHandler($handler);
41 $this->builder
= new GrabySiteConfigBuilder(
42 $grabyConfigBuilderMock,
43 ['example.com' => ['username' => 'foo', 'password' => 'bar']],
47 $config = $this->builder
->buildForHost('example.com');
51 'host' => 'example.com',
52 'requiresLogin' => true,
53 'loginUri' => 'http://example.com/login',
54 'usernameField' => 'login',
55 'passwordField' => 'password',
56 'extraFields' => ['field' => 'value'],
57 'notLoggedInXpath' => '//div[@class="need-login"]',
64 $records = $handler->getRecords();
66 $this->assertCount(1, $records, 'One log was recorded');
69 public function testBuildConfigDoesntExist()
71 /* @var \Graby\SiteConfig\ConfigBuilder|\PHPUnit_Framework_MockObject_MockObject */
72 $grabyConfigBuilderMock = $this->getMockBuilder('\Graby\SiteConfig\ConfigBuilder')
73 ->disableOriginalConstructor()
76 $grabyConfigBuilderMock
77 ->method('buildForHost')
79 ->will($this->returnValue(new GrabySiteConfig()));
81 $logger = new Logger('foo');
82 $handler = new TestHandler();
83 $logger->pushHandler($handler);
85 $this->builder
= new GrabySiteConfigBuilder(
86 $grabyConfigBuilderMock,
91 $config = $this->builder
->buildForHost('unknown.com');
93 $this->assertFalse($config);
95 $records = $handler->getRecords();
97 $this->assertCount(1, $records, 'One log was recorded');