aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorNicolas LÅ“uillet <nicolas@loeuillet.org>2016-06-24 14:22:47 +0200
committerGitHub <noreply@github.com>2016-06-24 14:22:47 +0200
commit9f8c43e222feb88f18597e42ab0512fda483d46d (patch)
tree6b2a4ad27428497713eef68ce57d4b58f18507cc
parentfb5c17a9ab5e10b1de9caa50e73638fdae19cb78 (diff)
parentfdc90ceb172bb7b237e34a1a01f53018c09f514b (diff)
downloadwallabag-9f8c43e222feb88f18597e42ab0512fda483d46d.tar.gz
wallabag-9f8c43e222feb88f18597e42ab0512fda483d46d.tar.zst
wallabag-9f8c43e222feb88f18597e42ab0512fda483d46d.zip
Merge pull request #2172 from wallabag/more-tests
Change the way to login user in tests
-rw-r--r--app/config/config.yml43
-rw-r--r--app/config/config_dev.yml13
-rw-r--r--app/config/config_prod.yml10
-rw-r--r--app/config/routing.yml4
-rw-r--r--app/config/routing_dev.yml6
-rw-r--r--app/config/security.yml16
-rw-r--r--tests/Wallabag/CoreBundle/Controller/SecurityControllerTest.php2
-rw-r--r--tests/Wallabag/CoreBundle/Controller/TagControllerTest.php6
-rw-r--r--tests/Wallabag/CoreBundle/WallabagCoreTestCase.php32
-rw-r--r--tests/Wallabag/ImportBundle/Controller/PocketControllerTest.php57
-rw-r--r--tests/Wallabag/ImportBundle/fixtures/unnamed.pngbin0 -> 3688 bytes
11 files changed, 138 insertions, 51 deletions
diff --git a/app/config/config.yml b/app/config/config.yml
index 9e2e08a6..6a8078cc 100644
--- a/app/config/config.yml
+++ b/app/config/config.yml
@@ -5,25 +5,27 @@ imports:
5 5
6framework: 6framework:
7 #esi: ~ 7 #esi: ~
8 translator: { fallback: "%locale%" } 8 translator:
9 secret: "%secret%" 9 enabled: true
10 fallback: "%locale%"
11 secret: "%secret%"
10 router: 12 router:
11 resource: "%kernel.root_dir%/config/routing.yml" 13 resource: "%kernel.root_dir%/config/routing.yml"
12 strict_requirements: ~ 14 strict_requirements: ~
13 form: ~ 15 form: ~
14 csrf_protection: ~ 16 csrf_protection: ~
15 validation: { enable_annotations: true } 17 validation:
18 enable_annotations: true
16 templating: 19 templating:
17 engines: ['twig'] 20 engines: ['twig']
18 #assets_version: SomeVersionScheme 21 default_locale: "%locale%"
19 default_locale: "%locale%" 22 trusted_hosts: ~
20 trusted_hosts: ~
21 trusted_proxies: ~ 23 trusted_proxies: ~
22 session: 24 session:
23 # handler_id set to null will use default session handler from php.ini 25 # handler_id set to null will use default session handler from php.ini
24 handler_id: session.handler.native_file 26 handler_id: session.handler.native_file
25 save_path: "%kernel.root_dir%/../var/sessions/%kernel.environment%" 27 save_path: "%kernel.root_dir%/../var/sessions/%kernel.environment%"
26 fragments: ~ 28 fragments: ~
27 http_method_override: true 29 http_method_override: true
28 assets: ~ 30 assets: ~
29 31
@@ -54,14 +56,14 @@ wallabag_import:
54 56
55# Twig Configuration 57# Twig Configuration
56twig: 58twig:
57 debug: "%kernel.debug%" 59 debug: "%kernel.debug%"
58 strict_variables: "%kernel.debug%" 60 strict_variables: "%kernel.debug%"
59 form_themes: 61 form_themes:
60 - "LexikFormFilterBundle:Form:form_div_layout.html.twig" 62 - "LexikFormFilterBundle:Form:form_div_layout.html.twig"
61 63
62# Assetic Configuration 64# Assetic Configuration
63assetic: 65assetic:
64 debug: "%kernel.debug%" 66 debug: "%kernel.debug%"
65 use_controller: false 67 use_controller: false
66 bundles: [ ] 68 bundles: [ ]
67 #java: /usr/bin/java 69 #java: /usr/bin/java
@@ -75,14 +77,14 @@ assetic:
75# Doctrine Configuration 77# Doctrine Configuration
76doctrine: 78doctrine:
77 dbal: 79 dbal:
78 driver: "%database_driver%" 80 driver: "%database_driver%"
79 host: "%database_host%" 81 host: "%database_host%"
80 port: "%database_port%" 82 port: "%database_port%"
81 dbname: "%database_name%" 83 dbname: "%database_name%"
82 user: "%database_user%" 84 user: "%database_user%"
83 password: "%database_password%" 85 password: "%database_password%"
84 charset: UTF8 86 charset: UTF8
85 path: "%database_path%" 87 path: "%database_path%"
86 server_version: 5.6 88 server_version: 5.6
87 89
88 orm: 90 orm:
@@ -108,10 +110,11 @@ doctrine_migrations:
108# Swiftmailer Configuration 110# Swiftmailer Configuration
109swiftmailer: 111swiftmailer:
110 transport: "%mailer_transport%" 112 transport: "%mailer_transport%"
111 host: "%mailer_host%" 113 host: "%mailer_host%"
112 username: "%mailer_user%" 114 username: "%mailer_user%"
113 password: "%mailer_password%" 115 password: "%mailer_password%"
114 spool: { type: memory } 116 spool:
117 type: memory
115 118
116fos_rest: 119fos_rest:
117 param_fetcher_listener: true 120 param_fetcher_listener: true
@@ -173,7 +176,7 @@ liip_theme:
173 176
174fos_user: 177fos_user:
175 db_driver: orm 178 db_driver: orm
176 firewall_name: main 179 firewall_name: secured_area
177 user_class: Wallabag\UserBundle\Entity\User 180 user_class: Wallabag\UserBundle\Entity\User
178 registration: 181 registration:
179 confirmation: 182 confirmation:
diff --git a/app/config/config_dev.yml b/app/config/config_dev.yml
index ec23babb..0fa23dbf 100644
--- a/app/config/config_dev.yml
+++ b/app/config/config_dev.yml
@@ -5,7 +5,8 @@ framework:
5 router: 5 router:
6 resource: "%kernel.root_dir%/config/routing_dev.yml" 6 resource: "%kernel.root_dir%/config/routing_dev.yml"
7 strict_requirements: true 7 strict_requirements: true
8 profiler: { only_exceptions: false } 8 profiler:
9 only_exceptions: false
9 10
10web_profiler: 11web_profiler:
11 toolbar: true 12 toolbar: true
@@ -14,19 +15,19 @@ web_profiler:
14monolog: 15monolog:
15 handlers: 16 handlers:
16 main: 17 main:
17 type: stream 18 type: stream
18 path: "%kernel.logs_dir%/%kernel.environment%.log" 19 path: "%kernel.logs_dir%/%kernel.environment%.log"
19 level: debug 20 level: debug
20 channels: ['!event'] 21 channels: ['!event']
21 console: 22 console:
22 type: console 23 type: console
23 bubble: false 24 bubble: false
24 verbosity_levels: 25 verbosity_levels:
25 VERBOSITY_VERBOSE: INFO 26 VERBOSITY_VERBOSE: INFO
26 VERBOSITY_VERY_VERBOSE: DEBUG 27 VERBOSITY_VERY_VERBOSE: DEBUG
27 channels: ['!event', '!doctrine'] 28 channels: ['!event', '!doctrine']
28 console_very_verbose: 29 console_very_verbose:
29 type: console 30 type: console
30 bubble: false 31 bubble: false
31 verbosity_levels: 32 verbosity_levels:
32 VERBOSITY_VERBOSE: NOTICE 33 VERBOSITY_VERBOSE: NOTICE
diff --git a/app/config/config_prod.yml b/app/config/config_prod.yml
index 65b040cc..5a4dd69e 100644
--- a/app/config/config_prod.yml
+++ b/app/config/config_prod.yml
@@ -14,12 +14,12 @@ imports:
14monolog: 14monolog:
15 handlers: 15 handlers:
16 main: 16 main:
17 type: fingers_crossed 17 type: fingers_crossed
18 action_level: error 18 action_level: error
19 handler: nested 19 handler: nested
20 nested: 20 nested:
21 type: stream 21 type: stream
22 path: "%kernel.logs_dir%/%kernel.environment%.log" 22 path: "%kernel.logs_dir%/%kernel.environment%.log"
23 level: debug 23 level: debug
24 console: 24 console:
25 type: console 25 type: console
diff --git a/app/config/routing.yml b/app/config/routing.yml
index 6a6aa6ac..40cc7165 100644
--- a/app/config/routing.yml
+++ b/app/config/routing.yml
@@ -4,8 +4,8 @@ wallabag_annotation:
4 4
5wallabag_import: 5wallabag_import:
6 resource: "@WallabagImportBundle/Controller/" 6 resource: "@WallabagImportBundle/Controller/"
7 type: annotation 7 type: annotation
8 prefix: /import 8 prefix: /import
9 9
10wallabag_api: 10wallabag_api:
11 resource: "@WallabagApiBundle/Resources/config/routing.yml" 11 resource: "@WallabagApiBundle/Resources/config/routing.yml"
diff --git a/app/config/routing_dev.yml b/app/config/routing_dev.yml
index 404f6a3b..95c1b026 100644
--- a/app/config/routing_dev.yml
+++ b/app/config/routing_dev.yml
@@ -1,14 +1,14 @@
1_wdt: 1_wdt:
2 resource: "@WebProfilerBundle/Resources/config/routing/wdt.xml" 2 resource: "@WebProfilerBundle/Resources/config/routing/wdt.xml"
3 prefix: /_wdt 3 prefix: /_wdt
4 4
5_profiler: 5_profiler:
6 resource: "@WebProfilerBundle/Resources/config/routing/profiler.xml" 6 resource: "@WebProfilerBundle/Resources/config/routing/profiler.xml"
7 prefix: /_profiler 7 prefix: /_profiler
8 8
9_errors: 9_errors:
10 resource: "@TwigBundle/Resources/config/routing/errors.xml" 10 resource: "@TwigBundle/Resources/config/routing/errors.xml"
11 prefix: /_error 11 prefix: /_error
12 12
13_main: 13_main:
14 resource: routing.yml 14 resource: routing.yml
diff --git a/app/config/security.yml b/app/config/security.yml
index 0748c06c..e24e03df 100644
--- a/app/config/security.yml
+++ b/app/config/security.yml
@@ -3,12 +3,14 @@ security:
3 FOS\UserBundle\Model\UserInterface: sha512 3 FOS\UserBundle\Model\UserInterface: sha512
4 4
5 role_hierarchy: 5 role_hierarchy:
6 ROLE_ADMIN: ROLE_USER 6 ROLE_ADMIN: ROLE_USER
7 ROLE_SUPER_ADMIN: [ ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH ] 7 ROLE_SUPER_ADMIN: [ ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH ]
8 8
9 providers: 9 providers:
10 administrators: 10 administrators:
11 entity: { class: WallabagUserBundle:User, property: username } 11 entity:
12 class: WallabagUserBundle:User
13 property: username
12 fos_userbundle: 14 fos_userbundle:
13 id: fos_user.user_provider.username 15 id: fos_user.user_provider.username
14 16
@@ -31,7 +33,7 @@ security:
31 anonymous: true 33 anonymous: true
32 34
33 login_firewall: 35 login_firewall:
34 pattern: ^/login$ 36 pattern: ^/login$
35 anonymous: ~ 37 anonymous: ~
36 38
37 secured_area: 39 secured_area:
@@ -40,12 +42,12 @@ security:
40 provider: fos_userbundle 42 provider: fos_userbundle
41 csrf_token_generator: security.csrf.token_manager 43 csrf_token_generator: security.csrf.token_manager
42 44
43 anonymous: true 45 anonymous: true
44 remember_me: 46 remember_me:
45 secret: "%secret%" 47 secret: "%secret%"
46 lifetime: 31536000 48 lifetime: 31536000
47 path: / 49 path: /
48 domain: ~ 50 domain: ~
49 51
50 logout: 52 logout:
51 path: /logout 53 path: /logout
diff --git a/tests/Wallabag/CoreBundle/Controller/SecurityControllerTest.php b/tests/Wallabag/CoreBundle/Controller/SecurityControllerTest.php
index f503ff4b..03355f5a 100644
--- a/tests/Wallabag/CoreBundle/Controller/SecurityControllerTest.php
+++ b/tests/Wallabag/CoreBundle/Controller/SecurityControllerTest.php
@@ -36,7 +36,7 @@ class SecurityControllerTest extends WallabagCoreTestCase
36 $em->persist($user); 36 $em->persist($user);
37 $em->flush(); 37 $em->flush();
38 38
39 $this->logInAs('admin'); 39 $this->logInAsUsingHttp('admin');
40 $crawler = $client->request('GET', '/config'); 40 $crawler = $client->request('GET', '/config');
41 $this->assertContains('scheb_two_factor.trusted', $crawler->filter('body')->extract(['_text'])[0]); 41 $this->assertContains('scheb_two_factor.trusted', $crawler->filter('body')->extract(['_text'])[0]);
42 42
diff --git a/tests/Wallabag/CoreBundle/Controller/TagControllerTest.php b/tests/Wallabag/CoreBundle/Controller/TagControllerTest.php
index a019d36c..58450e5f 100644
--- a/tests/Wallabag/CoreBundle/Controller/TagControllerTest.php
+++ b/tests/Wallabag/CoreBundle/Controller/TagControllerTest.php
@@ -39,6 +39,12 @@ class TagControllerTest extends WallabagCoreTestCase
39 $client->submit($form, $data); 39 $client->submit($form, $data);
40 $this->assertEquals(302, $client->getResponse()->getStatusCode()); 40 $this->assertEquals(302, $client->getResponse()->getStatusCode());
41 41
42 // be sure to reload the entry
43 $entry = $client->getContainer()
44 ->get('doctrine.orm.entity_manager')
45 ->getRepository('WallabagCoreBundle:Entry')
46 ->findOneByUsernameAndNotArchived('admin');
47
42 $this->assertEquals(1, count($entry->getTags())); 48 $this->assertEquals(1, count($entry->getTags()));
43 49
44 # tag already exists and already assigned 50 # tag already exists and already assigned
diff --git a/tests/Wallabag/CoreBundle/WallabagCoreTestCase.php b/tests/Wallabag/CoreBundle/WallabagCoreTestCase.php
index c69e8330..c0055888 100644
--- a/tests/Wallabag/CoreBundle/WallabagCoreTestCase.php
+++ b/tests/Wallabag/CoreBundle/WallabagCoreTestCase.php
@@ -3,6 +3,7 @@
3namespace Tests\Wallabag\CoreBundle; 3namespace Tests\Wallabag\CoreBundle;
4 4
5use Symfony\Bundle\FrameworkBundle\Test\WebTestCase; 5use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
6use Symfony\Component\BrowserKit\Cookie;
6 7
7abstract class WallabagCoreTestCase extends WebTestCase 8abstract class WallabagCoreTestCase extends WebTestCase
8{ 9{
@@ -20,8 +21,39 @@ abstract class WallabagCoreTestCase extends WebTestCase
20 $this->client = static::createClient(); 21 $this->client = static::createClient();
21 } 22 }
22 23
24 /**
25 * Login a user without making a HTTP request.
26 * If we make a HTTP request we lose ability to mock service in the container.
27 *
28 * @param string $username User to log in
29 */
23 public function logInAs($username) 30 public function logInAs($username)
24 { 31 {
32 $container = $this->client->getContainer();
33 $session = $container->get('session');
34
35 $userManager = $container->get('fos_user.user_manager');
36 $loginManager = $container->get('fos_user.security.login_manager');
37 $firewallName = $container->getParameter('fos_user.firewall_name');
38
39 $user = $userManager->findUserBy(array('username' => $username));
40 $loginManager->loginUser($firewallName, $user);
41
42 $session->set('_security_'.$firewallName, serialize($container->get('security.token_storage')->getToken()));
43 $session->save();
44
45 $cookie = new Cookie($session->getName(), $session->getId());
46 $this->client->getCookieJar()->set($cookie);
47 }
48
49 /**
50 * Instead of `logInAs` this method use a HTTP request to log in the user.
51 * Could be better for some tests.
52 *
53 * @param string $username User to log in
54 */
55 public function logInAsUsingHttp($username)
56 {
25 $crawler = $this->client->request('GET', '/login'); 57 $crawler = $this->client->request('GET', '/login');
26 $form = $crawler->filter('button[type=submit]')->form(); 58 $form = $crawler->filter('button[type=submit]')->form();
27 $data = [ 59 $data = [
diff --git a/tests/Wallabag/ImportBundle/Controller/PocketControllerTest.php b/tests/Wallabag/ImportBundle/Controller/PocketControllerTest.php
index 6aaf1b57..e0e61df8 100644
--- a/tests/Wallabag/ImportBundle/Controller/PocketControllerTest.php
+++ b/tests/Wallabag/ImportBundle/Controller/PocketControllerTest.php
@@ -22,15 +22,13 @@ class PocketControllerTest extends WallabagCoreTestCase
22 $this->logInAs('admin'); 22 $this->logInAs('admin');
23 $client = $this->getClient(); 23 $client = $this->getClient();
24 24
25 $crawler = $client->request('GET', '/import/pocket/auth'); 25 $client->request('GET', '/import/pocket/auth');
26 26
27 $this->assertEquals(302, $client->getResponse()->getStatusCode()); 27 $this->assertEquals(302, $client->getResponse()->getStatusCode());
28 } 28 }
29 29
30 public function testImportPocketAuth() 30 public function testImportPocketAuth()
31 { 31 {
32 $this->markTestSkipped('PocketImport: Find a way to properly mock a service.');
33
34 $this->logInAs('admin'); 32 $this->logInAs('admin');
35 $client = $this->getClient(); 33 $client = $this->getClient();
36 34
@@ -43,9 +41,9 @@ class PocketControllerTest extends WallabagCoreTestCase
43 ->method('getRequestToken') 41 ->method('getRequestToken')
44 ->willReturn('token'); 42 ->willReturn('token');
45 43
46 $client->getContainer()->set('wallabag_import.pocket.import', $pocketImport); 44 static::$kernel->getContainer()->set('wallabag_import.pocket.import', $pocketImport);
47 45
48 $crawler = $client->request('GET', '/import/pocket/auth'); 46 $client->request('GET', '/import/pocket/auth');
49 47
50 $this->assertEquals(301, $client->getResponse()->getStatusCode()); 48 $this->assertEquals(301, $client->getResponse()->getStatusCode());
51 $this->assertContains('getpocket.com/auth/authorize', $client->getResponse()->headers->get('location')); 49 $this->assertContains('getpocket.com/auth/authorize', $client->getResponse()->headers->get('location'));
@@ -56,10 +54,55 @@ class PocketControllerTest extends WallabagCoreTestCase
56 $this->logInAs('admin'); 54 $this->logInAs('admin');
57 $client = $this->getClient(); 55 $client = $this->getClient();
58 56
59 $crawler = $client->request('GET', '/import/pocket/callback'); 57 $pocketImport = $this->getMockBuilder('Wallabag\ImportBundle\Import\PocketImport')
58 ->disableOriginalConstructor()
59 ->getMock();
60
61 $pocketImport
62 ->expects($this->once())
63 ->method('authorize')
64 ->willReturn(false);
65
66 static::$kernel->getContainer()->set('wallabag_import.pocket.import', $pocketImport);
67
68 $client->request('GET', '/import/pocket/callback');
60 69
61 $this->assertEquals(302, $client->getResponse()->getStatusCode()); 70 $this->assertEquals(302, $client->getResponse()->getStatusCode());
62 $this->assertContains('import/pocket', $client->getResponse()->headers->get('location')); 71 $this->assertContains('/', $client->getResponse()->headers->get('location'), 'Import is ok, redirect to homepage');
63 $this->assertEquals('flashes.import.notice.failed', $client->getContainer()->get('session')->getFlashBag()->peek('notice')[0]); 72 $this->assertEquals('flashes.import.notice.failed', $client->getContainer()->get('session')->getFlashBag()->peek('notice')[0]);
64 } 73 }
74
75 public function testImportPocketCallback()
76 {
77 $this->logInAs('admin');
78 $client = $this->getClient();
79
80 $pocketImport = $this->getMockBuilder('Wallabag\ImportBundle\Import\PocketImport')
81 ->disableOriginalConstructor()
82 ->getMock();
83
84 $pocketImport
85 ->expects($this->once())
86 ->method('authorize')
87 ->willReturn(true);
88
89 $pocketImport
90 ->expects($this->once())
91 ->method('setMarkAsRead')
92 ->with(false)
93 ->willReturn($pocketImport);
94
95 $pocketImport
96 ->expects($this->once())
97 ->method('import')
98 ->willReturn(true);
99
100 static::$kernel->getContainer()->set('wallabag_import.pocket.import', $pocketImport);
101
102 $client->request('GET', '/import/pocket/callback');
103
104 $this->assertEquals(302, $client->getResponse()->getStatusCode());
105 $this->assertContains('/', $client->getResponse()->headers->get('location'), 'Import is ok, redirect to homepage');
106 $this->assertEquals('flashes.import.notice.summary', $client->getContainer()->get('session')->getFlashBag()->peek('notice')[0]);
107 }
65} 108}
diff --git a/tests/Wallabag/ImportBundle/fixtures/unnamed.png b/tests/Wallabag/ImportBundle/fixtures/unnamed.png
new file mode 100644
index 00000000..e6dd9caa
--- /dev/null
+++ b/tests/Wallabag/ImportBundle/fixtures/unnamed.png
Binary files differ