aboutsummaryrefslogtreecommitdiffhomepage
path: root/tests/Wallabag/CoreBundle/GuzzleSiteAuthenticator/GrabySiteConfigBuilderTest.php
diff options
context:
space:
mode:
Diffstat (limited to 'tests/Wallabag/CoreBundle/GuzzleSiteAuthenticator/GrabySiteConfigBuilderTest.php')
-rw-r--r--tests/Wallabag/CoreBundle/GuzzleSiteAuthenticator/GrabySiteConfigBuilderTest.php97
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
3namespace Tests\Wallabag\CoreBundle\GuzzleSiteAuthenticator; 3namespace Tests\Wallabag\CoreBundle\GuzzleSiteAuthenticator;
4 4
5use Monolog\Handler\TestHandler;
6use Monolog\Logger;
5use BD\GuzzleSiteAuthenticator\SiteConfig\SiteConfig; 7use BD\GuzzleSiteAuthenticator\SiteConfig\SiteConfig;
6use Graby\SiteConfig\SiteConfig as GrabySiteConfig; 8use Graby\SiteConfig\SiteConfig as GrabySiteConfig;
7use PHPUnit_Framework_TestCase;
8use Wallabag\CoreBundle\GuzzleSiteAuthenticator\GrabySiteConfigBuilder; 9use Wallabag\CoreBundle\GuzzleSiteAuthenticator\GrabySiteConfigBuilder;
10use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken;
11use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage;
9 12
10class GrabySiteConfigBuilderTest extends PHPUnit_Framework_TestCase 13class 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}