]> git.immae.eu Git - github/wallabag/wallabag.git/blame - tests/Wallabag/CoreBundle/GuzzleSiteAuthenticator/GrabySiteConfigBuilderTest.php
Add a real configuration for CS-Fixer
[github/wallabag/wallabag.git] / tests / Wallabag / CoreBundle / GuzzleSiteAuthenticator / GrabySiteConfigBuilderTest.php
CommitLineData
7aab0ecf
BD
1<?php
2
3namespace Tests\Wallabag\CoreBundle\GuzzleSiteAuthenticator;
4
5use BD\GuzzleSiteAuthenticator\SiteConfig\SiteConfig;
6use Graby\SiteConfig\SiteConfig as GrabySiteConfig;
f808b016
JB
7use Monolog\Handler\TestHandler;
8use Monolog\Logger;
b8427f22 9use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage;
f808b016
JB
10use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken;
11use Wallabag\CoreBundle\GuzzleSiteAuthenticator\GrabySiteConfigBuilder;
7aab0ecf 12
906424c1 13class GrabySiteConfigBuilderTest extends \PHPUnit_Framework_TestCase
7aab0ecf
BD
14{
15 /** @var \Wallabag\CoreBundle\GuzzleSiteAuthenticator\GrabySiteConfigBuilder */
16 protected $builder;
17
18 public function testBuildConfigExists()
19 {
20 /* @var \Graby\SiteConfig\ConfigBuilder|\PHPUnit_Framework_MockObject_MockObject */
b8427f22 21 $grabyConfigBuilderMock = $this->getMockBuilder('Graby\SiteConfig\ConfigBuilder')
7aab0ecf
BD
22 ->disableOriginalConstructor()
23 ->getMock();
24
25 $grabySiteConfig = new GrabySiteConfig();
26 $grabySiteConfig->requires_login = true;
9de9f1e5 27 $grabySiteConfig->login_uri = 'http://www.example.com/login';
7aab0ecf
BD
28 $grabySiteConfig->login_username_field = 'login';
29 $grabySiteConfig->login_password_field = 'password';
662db41b 30 $grabySiteConfig->login_extra_fields = ['field=value'];
7aab0ecf
BD
31 $grabySiteConfig->not_logged_in_xpath = '//div[@class="need-login"]';
32
33 $grabyConfigBuilderMock
34 ->method('buildForHost')
35 ->with('example.com')
36 ->will($this->returnValue($grabySiteConfig));
37
94b232bb
JB
38 $logger = new Logger('foo');
39 $handler = new TestHandler();
40 $logger->pushHandler($handler);
41
b8427f22
JB
42 $siteCrentialRepo = $this->getMockBuilder('Wallabag\CoreBundle\Repository\SiteCredentialRepository')
43 ->disableOriginalConstructor()
44 ->getMock();
45 $siteCrentialRepo->expects($this->once())
46 ->method('findOneByHostAndUser')
47 ->with('example.com', 1)
48 ->willReturn(['username' => 'foo', 'password' => 'bar']);
49
50 $user = $this->getMockBuilder('Wallabag\UserBundle\Entity\User')
51 ->disableOriginalConstructor()
52 ->getMock();
53 $user->expects($this->once())
54 ->method('getId')
55 ->willReturn(1);
56
57 $token = new UsernamePasswordToken($user, 'pass', 'provider');
58
59 $tokenStorage = new TokenStorage();
60 $tokenStorage->setToken($token);
61
7aab0ecf
BD
62 $this->builder = new GrabySiteConfigBuilder(
63 $grabyConfigBuilderMock,
b8427f22
JB
64 $tokenStorage,
65 $siteCrentialRepo,
94b232bb 66 $logger
7aab0ecf
BD
67 );
68
9de9f1e5 69 $config = $this->builder->buildForHost('www.example.com');
7aab0ecf 70
f808b016 71 $this->assertSame(
7aab0ecf
BD
72 new SiteConfig([
73 'host' => 'example.com',
74 'requiresLogin' => true,
9de9f1e5 75 'loginUri' => 'http://www.example.com/login',
7aab0ecf
BD
76 'usernameField' => 'login',
77 'passwordField' => 'password',
78 'extraFields' => ['field' => 'value'],
79 'notLoggedInXpath' => '//div[@class="need-login"]',
80 'username' => 'foo',
81 'password' => 'bar',
82 ]),
83 $config
84 );
94b232bb
JB
85
86 $records = $handler->getRecords();
87
88 $this->assertCount(1, $records, 'One log was recorded');
7aab0ecf
BD
89 }
90
91 public function testBuildConfigDoesntExist()
92 {
93 /* @var \Graby\SiteConfig\ConfigBuilder|\PHPUnit_Framework_MockObject_MockObject */
94 $grabyConfigBuilderMock = $this->getMockBuilder('\Graby\SiteConfig\ConfigBuilder')
95 ->disableOriginalConstructor()
96 ->getMock();
97
98 $grabyConfigBuilderMock
99 ->method('buildForHost')
100 ->with('unknown.com')
101 ->will($this->returnValue(new GrabySiteConfig()));
102
94b232bb
JB
103 $logger = new Logger('foo');
104 $handler = new TestHandler();
105 $logger->pushHandler($handler);
106
b8427f22
JB
107 $siteCrentialRepo = $this->getMockBuilder('Wallabag\CoreBundle\Repository\SiteCredentialRepository')
108 ->disableOriginalConstructor()
109 ->getMock();
110 $siteCrentialRepo->expects($this->once())
111 ->method('findOneByHostAndUser')
112 ->with('unknown.com', 1)
113 ->willReturn(null);
114
115 $user = $this->getMockBuilder('Wallabag\UserBundle\Entity\User')
116 ->disableOriginalConstructor()
117 ->getMock();
118 $user->expects($this->once())
119 ->method('getId')
120 ->willReturn(1);
121
122 $token = new UsernamePasswordToken($user, 'pass', 'provider');
123
124 $tokenStorage = new TokenStorage();
125 $tokenStorage->setToken($token);
126
94b232bb
JB
127 $this->builder = new GrabySiteConfigBuilder(
128 $grabyConfigBuilderMock,
b8427f22
JB
129 $tokenStorage,
130 $siteCrentialRepo,
94b232bb
JB
131 $logger
132 );
7aab0ecf
BD
133
134 $config = $this->builder->buildForHost('unknown.com');
135
94b232bb
JB
136 $this->assertFalse($config);
137
138 $records = $handler->getRecords();
139
140 $this->assertCount(1, $records, 'One log was recorded');
7aab0ecf
BD
141 }
142}