Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
162 / 162
100.00% covered (success)
100.00%
3 / 3
CRAP
100.00% covered (success)
100.00%
1 / 1
phpbb_console_user_base
100.00% covered (success)
100.00%
162 / 162
100.00% covered (success)
100.00%
3 / 3
4
100.00% covered (success)
100.00%
1 / 1
 getDataSet
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setUp
100.00% covered (success)
100.00%
153 / 153
100.00% covered (success)
100.00%
1 / 1
1
 get_user_id
100.00% covered (success)
100.00%
8 / 8
100.00% covered (success)
100.00%
1 / 1
2
1<?php
2/**
3*
4* This file is part of the phpBB Forum Software package.
5*
6* @copyright (c) phpBB Limited <https://www.phpbb.com>
7* @license GNU General Public License, version 2 (GPL-2.0)
8*
9* For full copyright and license information, please see
10* the docs/CREDITS.txt file.
11*
12*/
13
14abstract class phpbb_console_user_base extends phpbb_database_test_case
15{
16    protected $db;
17    protected $config;
18    protected $email;
19    protected $user;
20    protected $language;
21    protected $log;
22    protected $passwords_manager;
23    /** @var Symfony\Component\Console\Helper\QuestionHelper */
24    protected $question;
25    protected $command_name;
26    protected $user_loader;
27    protected $phpbb_root_path;
28    protected $php_ext;
29
30    public function getDataSet()
31    {
32        return $this->createXMLDataSet(__DIR__ . '/fixtures/config.xml');
33    }
34
35    protected function setUp(): void
36    {
37        global $auth, $db, $cache, $config, $user, $phpbb_dispatcher, $phpbb_container, $phpbb_root_path, $phpEx;
38
39        $phpbb_dispatcher = new \phpbb\event\dispatcher();
40        $phpbb_container = new phpbb_mock_container_builder();
41        $phpbb_container->set('cache.driver', new phpbb_mock_cache());
42        $phpbb_container->set('notification_manager', new phpbb_mock_notification_manager());
43
44        $auth = $this->createMock('\phpbb\auth\auth');
45
46        $cache = $phpbb_container->get('cache.driver');
47
48        $config = $this->config = new \phpbb\config\config(array(
49            'board_timezone'    => 'UTC',
50            'default_lang'        => 'en',
51            'email_enable'        => false,
52            'min_name_chars'    => 3,
53            'max_name_chars'    => 10,
54            'min_pass_chars'    => 3,
55            'pass_complex'        => 'PASS_TYPE_ANY',
56        ));
57
58        $db = $this->db = $this->new_dbal();
59
60        $this->language = $this->getMockBuilder('\phpbb\language\language')
61            ->disableOriginalConstructor()
62            ->getMock();
63        $this->language->expects($this->any())
64            ->method('lang')
65            ->will($this->returnArgument(0));
66
67        $user = $this->user = $this->createMock('\phpbb\user');
68        $user->data['user_email'] = '';
69
70        $avatar_helper = $this->getMockBuilder('\phpbb\avatar\helper')
71            ->disableOriginalConstructor()
72            ->getMock();
73
74        $this->user_loader = new \phpbb\user_loader($avatar_helper, $db, $phpbb_root_path, $phpEx, USERS_TABLE);
75
76        $driver_helper = new \phpbb\passwords\driver\helper($this->config);
77        $passwords_drivers = array(
78            'passwords.driver.bcrypt_2y'    => new \phpbb\passwords\driver\bcrypt_2y($this->config, $driver_helper),
79            'passwords.driver.bcrypt'        => new \phpbb\passwords\driver\bcrypt($this->config, $driver_helper),
80            'passwords.driver.salted_md5'    => new \phpbb\passwords\driver\salted_md5($this->config, $driver_helper),
81            'passwords.driver.phpass'        => new \phpbb\passwords\driver\phpass($this->config, $driver_helper),
82        );
83
84        $passwords_helper = new \phpbb\passwords\helper;
85        $this->passwords_manager = new \phpbb\passwords\manager($this->config, $passwords_drivers, $passwords_helper, array_keys($passwords_drivers));
86
87        $this->phpbb_root_path = $phpbb_root_path;
88        $this->php_ext = $phpEx;
89
90        $this->log = $this->getMockBuilder('\phpbb\log\log')
91            ->disableOriginalConstructor()
92            ->getMock();
93
94        $phpbb_container->set('auth.provider.db', new phpbb_mock_auth_provider());
95        $provider_collection = new \phpbb\auth\provider_collection($phpbb_container, $config);
96        $provider_collection->add('auth.provider.db');
97        $phpbb_container->set(
98            'auth.provider_collection',
99            $provider_collection
100        );
101        $phpbb_container->setParameter('tables.auth_provider_oauth_token_storage', 'phpbb_oauth_tokens');
102        $phpbb_container->setParameter('tables.auth_provider_oauth_states', 'phpbb_oauth_states');
103        $phpbb_container->setParameter('tables.auth_provider_oauth_account_assoc', 'phpbb_oauth_accounts');
104
105        $phpbb_container->setParameter('tables.user_notifications', 'phpbb_user_notifications');
106
107        $assets_bag = new \phpbb\template\assets_bag();
108        $phpbb_container->set('assets.bag', $assets_bag);
109
110        $phpbb_container->set('dispatcher', $phpbb_dispatcher);
111
112        $core_cache_dir = $phpbb_root_path . 'cache/' . PHPBB_ENVIRONMENT . '/';
113        $phpbb_container->setParameter('core.cache_dir', $core_cache_dir);
114
115        $core_messenger_queue_file = $core_cache_dir . 'queue.' . $phpEx;
116        $phpbb_container->setParameter('core.messenger_queue_file', $core_messenger_queue_file);
117
118        $messenger_method_collection = new \phpbb\di\service_collection($phpbb_container);
119        $messenger_method_collection->add('messenger.method.email');
120        $phpbb_container->set('messenger.method_collection', $messenger_method_collection);
121
122        $messenger_queue = new \phpbb\messenger\queue($config, $phpbb_dispatcher, $messenger_method_collection, $core_messenger_queue_file);
123        $phpbb_container->set('messenger.queue', $messenger_queue);
124
125        $request = new phpbb_mock_request;
126        $phpbb_container->set('request', $request);
127
128        $symfony_request = new \phpbb\symfony_request(
129            $request
130        );
131
132        $phpbb_path_helper = new \phpbb\path_helper(
133            $symfony_request,
134            $request,
135            $phpbb_root_path,
136            $phpEx
137        );
138        $phpbb_container->set('path_helper', $phpbb_path_helper);
139
140        $factory = new \phpbb\db\tools\factory();
141        $db_doctrine = $this->new_doctrine_dbal();
142        $db_tools = $factory->get($db_doctrine);
143        $migrator = new \phpbb\db\migrator(
144            $phpbb_container,
145            $config,
146            $db,
147            $db_tools,
148            'phpbb_migrations',
149            $phpbb_root_path,
150            $this->php_ext,
151            'phpbb_',
152            self::get_core_tables(),
153            [],
154            new \phpbb\db\migration\helper()
155        );
156        $phpbb_container->set('migrator', $migrator);
157
158        $finder_factory = new \phpbb\finder\factory(null, false, $phpbb_root_path, $this->php_ext);
159        $extension_manager = new \phpbb\extension\manager(
160            $phpbb_container,
161            $db,
162            $config,
163            $finder_factory,
164            'phpbb_ext',
165            __DIR__ . '/',
166            new \phpbb\cache\service(new phpbb_mock_cache(), $config, $db, $phpbb_dispatcher, $phpbb_root_path, $this->php_ext)
167        );
168        $phpbb_container->set('ext.manager', $extension_manager);
169
170        $context = new \phpbb\template\context();
171        $cache_path = $phpbb_root_path . 'cache/' . PHPBB_ENVIRONMENT . '/twig';
172        $phpbb_container->setParameter('core.template.cache_path', $cache_path);
173        $filesystem = new \phpbb\filesystem\filesystem();
174        $phpbb_container->set('filesystem', $filesystem);
175
176        $twig = new \phpbb\template\twig\environment(
177            $assets_bag,
178            $this->config,
179            $filesystem,
180            $phpbb_path_helper,
181            $cache_path,
182            null,
183            new \phpbb\template\twig\loader(''),
184            $phpbb_dispatcher,
185            [
186                'cache'            => false,
187                'debug'            => false,
188                'auto_reload'    => true,
189                'autoescape'    => false,
190            ]
191        );
192        $twig_extension = new \phpbb\template\twig\extension($context, $twig, $this->language);
193        $phpbb_container->set('template.twig.extensions.phpbb', $twig_extension);
194
195        $twig_extensions_collection = new \phpbb\di\service_collection($phpbb_container);
196        $twig_extensions_collection->add('template.twig.extensions.phpbb');
197        $phpbb_container->set('template.twig.extensions.collection', $twig_extensions_collection);
198
199        $twig->addExtension($twig_extension);
200        $twig_lexer = new \phpbb\template\twig\lexer($twig);
201        $phpbb_container->set('template.twig.lexer', $twig_lexer);
202
203        $this->email = new \phpbb\messenger\method\email(
204            $assets_bag,
205            $this->config,
206            $phpbb_dispatcher,
207            $this->language,
208            $messenger_queue,
209            $phpbb_path_helper,
210            $request,
211            $twig_extensions_collection,
212            $twig_lexer,
213            $user,
214            $phpbb_root_path,
215            $cache_path,
216            $extension_manager,
217            $this->log
218        );
219        $phpbb_container->set('messenger.method.email', $this->email);
220
221        parent::setUp();
222    }
223
224    public function get_user_id($username)
225    {
226        $sql = 'SELECT user_id
227            FROM ' . USERS_TABLE . '
228            WHERE ' . 'username = ' . "'" . $username . "'";
229        $result = $this->db->sql_query($sql);
230        $row = $this->db->sql_fetchrow($result);
231        $this->db->sql_freeresult($result);
232
233        $user_id = $row ? $row['user_id'] : null;
234        return $user_id;
235    }
236}