diff options
Diffstat (limited to 'tests/Wallabag/CoreBundle/GuzzleSiteAuthenticator/GrabySiteConfigBuilderTest.php')
-rw-r--r-- | tests/Wallabag/CoreBundle/GuzzleSiteAuthenticator/GrabySiteConfigBuilderTest.php | 97 |
1 files changed, 77 insertions, 20 deletions
diff --git a/tests/Wallabag/CoreBundle/GuzzleSiteAuthenticator/GrabySiteConfigBuilderTest.php b/tests/Wallabag/CoreBundle/GuzzleSiteAuthenticator/GrabySiteConfigBuilderTest.php index aee67259..b0c81e7b 100644 --- a/tests/Wallabag/CoreBundle/GuzzleSiteAuthenticator/GrabySiteConfigBuilderTest.php +++ b/tests/Wallabag/CoreBundle/GuzzleSiteAuthenticator/GrabySiteConfigBuilderTest.php | |||
@@ -2,12 +2,15 @@ | |||
2 | 2 | ||
3 | namespace Tests\Wallabag\CoreBundle\GuzzleSiteAuthenticator; | 3 | namespace Tests\Wallabag\CoreBundle\GuzzleSiteAuthenticator; |
4 | 4 | ||
5 | use Monolog\Handler\TestHandler; | ||
6 | use Monolog\Logger; | ||
5 | use BD\GuzzleSiteAuthenticator\SiteConfig\SiteConfig; | 7 | use BD\GuzzleSiteAuthenticator\SiteConfig\SiteConfig; |
6 | use Graby\SiteConfig\SiteConfig as GrabySiteConfig; | 8 | use Graby\SiteConfig\SiteConfig as GrabySiteConfig; |
7 | use PHPUnit_Framework_TestCase; | ||
8 | use Wallabag\CoreBundle\GuzzleSiteAuthenticator\GrabySiteConfigBuilder; | 9 | use Wallabag\CoreBundle\GuzzleSiteAuthenticator\GrabySiteConfigBuilder; |
10 | use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken; | ||
11 | use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage; | ||
9 | 12 | ||
10 | class GrabySiteConfigBuilderTest extends PHPUnit_Framework_TestCase | 13 | class GrabySiteConfigBuilderTest extends \PHPUnit_Framework_TestCase |
11 | { | 14 | { |
12 | /** @var \Wallabag\CoreBundle\GuzzleSiteAuthenticator\GrabySiteConfigBuilder */ | 15 | /** @var \Wallabag\CoreBundle\GuzzleSiteAuthenticator\GrabySiteConfigBuilder */ |
13 | protected $builder; | 16 | protected $builder; |
@@ -15,16 +18,16 @@ class GrabySiteConfigBuilderTest extends PHPUnit_Framework_TestCase | |||
15 | public function testBuildConfigExists() | 18 | public function testBuildConfigExists() |
16 | { | 19 | { |
17 | /* @var \Graby\SiteConfig\ConfigBuilder|\PHPUnit_Framework_MockObject_MockObject */ | 20 | /* @var \Graby\SiteConfig\ConfigBuilder|\PHPUnit_Framework_MockObject_MockObject */ |
18 | $grabyConfigBuilderMock = $this->getMockBuilder('\Graby\SiteConfig\ConfigBuilder') | 21 | $grabyConfigBuilderMock = $this->getMockBuilder('Graby\SiteConfig\ConfigBuilder') |
19 | ->disableOriginalConstructor() | 22 | ->disableOriginalConstructor() |
20 | ->getMock(); | 23 | ->getMock(); |
21 | 24 | ||
22 | $grabySiteConfig = new GrabySiteConfig(); | 25 | $grabySiteConfig = new GrabySiteConfig(); |
23 | $grabySiteConfig->requires_login = true; | 26 | $grabySiteConfig->requires_login = true; |
24 | $grabySiteConfig->login_uri = 'http://example.com/login'; | 27 | $grabySiteConfig->login_uri = 'http://www.example.com/login'; |
25 | $grabySiteConfig->login_username_field = 'login'; | 28 | $grabySiteConfig->login_username_field = 'login'; |
26 | $grabySiteConfig->login_password_field = 'password'; | 29 | $grabySiteConfig->login_password_field = 'password'; |
27 | $grabySiteConfig->login_extra_fields = ['field' => 'value']; | 30 | $grabySiteConfig->login_extra_fields = ['field=value']; |
28 | $grabySiteConfig->not_logged_in_xpath = '//div[@class="need-login"]'; | 31 | $grabySiteConfig->not_logged_in_xpath = '//div[@class="need-login"]'; |
29 | 32 | ||
30 | $grabyConfigBuilderMock | 33 | $grabyConfigBuilderMock |
@@ -32,18 +35,44 @@ class GrabySiteConfigBuilderTest extends PHPUnit_Framework_TestCase | |||
32 | ->with('example.com') | 35 | ->with('example.com') |
33 | ->will($this->returnValue($grabySiteConfig)); | 36 | ->will($this->returnValue($grabySiteConfig)); |
34 | 37 | ||
38 | $logger = new Logger('foo'); | ||
39 | $handler = new TestHandler(); | ||
40 | $logger->pushHandler($handler); | ||
41 | |||
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 | |||
35 | $this->builder = new GrabySiteConfigBuilder( | 62 | $this->builder = new GrabySiteConfigBuilder( |
36 | $grabyConfigBuilderMock, | 63 | $grabyConfigBuilderMock, |
37 | ['example.com' => ['username' => 'foo', 'password' => 'bar']] | 64 | $tokenStorage, |
65 | $siteCrentialRepo, | ||
66 | $logger | ||
38 | ); | 67 | ); |
39 | 68 | ||
40 | $config = $this->builder->buildForHost('example.com'); | 69 | $config = $this->builder->buildForHost('www.example.com'); |
41 | 70 | ||
42 | self::assertEquals( | 71 | $this->assertEquals( |
43 | new SiteConfig([ | 72 | new SiteConfig([ |
44 | 'host' => 'example.com', | 73 | 'host' => 'example.com', |
45 | 'requiresLogin' => true, | 74 | 'requiresLogin' => true, |
46 | 'loginUri' => 'http://example.com/login', | 75 | 'loginUri' => 'http://www.example.com/login', |
47 | 'usernameField' => 'login', | 76 | 'usernameField' => 'login', |
48 | 'passwordField' => 'password', | 77 | 'passwordField' => 'password', |
49 | 'extraFields' => ['field' => 'value'], | 78 | 'extraFields' => ['field' => 'value'], |
@@ -53,6 +82,10 @@ class GrabySiteConfigBuilderTest extends PHPUnit_Framework_TestCase | |||
53 | ]), | 82 | ]), |
54 | $config | 83 | $config |
55 | ); | 84 | ); |
85 | |||
86 | $records = $handler->getRecords(); | ||
87 | |||
88 | $this->assertCount(1, $records, 'One log was recorded'); | ||
56 | } | 89 | } |
57 | 90 | ||
58 | public function testBuildConfigDoesntExist() | 91 | public function testBuildConfigDoesntExist() |
@@ -67,19 +100,43 @@ class GrabySiteConfigBuilderTest extends PHPUnit_Framework_TestCase | |||
67 | ->with('unknown.com') | 100 | ->with('unknown.com') |
68 | ->will($this->returnValue(new GrabySiteConfig())); | 101 | ->will($this->returnValue(new GrabySiteConfig())); |
69 | 102 | ||
70 | $this->builder = new GrabySiteConfigBuilder($grabyConfigBuilderMock, []); | 103 | $logger = new Logger('foo'); |
104 | $handler = new TestHandler(); | ||
105 | $logger->pushHandler($handler); | ||
71 | 106 | ||
72 | $config = $this->builder->buildForHost('unknown.com'); | 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); | ||
73 | 114 | ||
74 | self::assertEquals( | 115 | $user = $this->getMockBuilder('Wallabag\UserBundle\Entity\User') |
75 | new SiteConfig([ | 116 | ->disableOriginalConstructor() |
76 | 'host' => 'unknown.com', | 117 | ->getMock(); |
77 | 'requiresLogin' => false, | 118 | $user->expects($this->once()) |
78 | 'username' => null, | 119 | ->method('getId') |
79 | 'password' => null, | 120 | ->willReturn(1); |
80 | 'extraFields' => [], | 121 | |
81 | ]), | 122 | $token = new UsernamePasswordToken($user, 'pass', 'provider'); |
82 | $config | 123 | |
124 | $tokenStorage = new TokenStorage(); | ||
125 | $tokenStorage->setToken($token); | ||
126 | |||
127 | $this->builder = new GrabySiteConfigBuilder( | ||
128 | $grabyConfigBuilderMock, | ||
129 | $tokenStorage, | ||
130 | $siteCrentialRepo, | ||
131 | $logger | ||
83 | ); | 132 | ); |
133 | |||
134 | $config = $this->builder->buildForHost('unknown.com'); | ||
135 | |||
136 | $this->assertFalse($config); | ||
137 | |||
138 | $records = $handler->getRecords(); | ||
139 | |||
140 | $this->assertCount(1, $records, 'One log was recorded'); | ||
84 | } | 141 | } |
85 | } | 142 | } |