Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
9.32% covered (danger)
9.32%
11 / 118
60.00% covered (warning)
60.00%
3 / 5
CRAP
0.00% covered (danger)
0.00%
0 / 1
phpbb_functions_acp_validate_config_vars_test
9.32% covered (danger)
9.32%
11 / 118
60.00% covered (warning)
60.00%
3 / 5
23.64
0.00% covered (danger)
0.00%
0 / 1
 setUp
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
 validate_config_vars_fit_data
0.00% covered (danger)
0.00%
0 / 39
0.00% covered (danger)
0.00%
0 / 1
2
 test_validate_config_vars_fit
100.00% covered (success)
100.00%
3 / 3
100.00% covered (success)
100.00%
1 / 1
1
 validate_config_vars_error_data
0.00% covered (danger)
0.00%
0 / 68
0.00% covered (danger)
0.00%
0 / 1
2
 test_validate_config_vars_error
100.00% covered (success)
100.00%
3 / 3
100.00% covered (success)
100.00%
1 / 1
1
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
14require_once __DIR__ . '/../../phpBB/includes/functions_acp.php';
15
16class phpbb_functions_acp_validate_config_vars_test extends phpbb_test_case
17{
18    protected function setUp(): void
19    {
20        parent::setUp();
21
22        global $language, $user;
23
24        $user = new phpbb_mock_user();
25        $user->lang = new phpbb_mock_lang();
26        $language = $user->lang;
27    }
28
29    /**
30    * Data sets that don't throw an error.
31    */
32    public static function validate_config_vars_fit_data()
33    {
34        return array(
35            array(
36                array(
37                    'test_bool'                => array('lang' => 'TEST_BOOL',            'validate' => 'bool'),
38                    'test_string'            => array('lang' => 'TEST_STRING',        'validate' => 'string'),
39                    'test_string'            => array('lang' => 'TEST_STRING',        'validate' => 'string'),
40                    'test_string_128'        => array('lang' => 'TEST_STRING_128',    'validate' => 'string:128'),
41                    'test_string_128'        => array('lang' => 'TEST_STRING_128',    'validate' => 'string:128'),
42                    'test_string_32_64'        => array('lang' => 'TEST_STRING_32_64',    'validate' => 'string:32:64'),
43                    'test_string_32_64'        => array('lang' => 'TEST_STRING_32_64',    'validate' => 'string:32:64'),
44                    'test_int'                => array('lang' => 'TEST_INT',            'validate' => 'int'),
45                    'test_int_32'            => array('lang' => 'TEST_INT',            'validate' => 'int:32'),
46                    'test_int_32_64'        => array('lang' => 'TEST_INT',            'validate' => 'int:32:64'),
47                    'test_lang'                => array('lang' => 'TEST_LANG',            'validate' => 'lang'),
48                    'test_url'                => array('lang' => 'TEST_URL',            'validate' => 'url'),
49                    /*
50                    'test_sp'                => array('lang' => 'TEST_SP',            'validate' => 'script_path'),
51                    'test_rpath'            => array('lang' => 'TEST_RPATH',        'validate' => 'rpath'),
52                    'test_rwpath'            => array('lang' => 'TEST_RWPATH',        'validate' => 'rwpath'),
53                    'test_path'                => array('lang' => 'TEST_PATH',            'validate' => 'path'),
54                    'test_wpath'            => array('lang' => 'TEST_WPATH',        'validate' => 'wpath'),
55                    */
56                ),
57                array(
58                    'test_bool'            => true,
59                    'test_string'        => str_repeat('a', 255),
60                    'test_string'        => str_repeat("\xC3\x84", 255),
61                    'test_string_128'    => str_repeat('a', 128),
62                    'test_string_128'    => str_repeat("\xC3\x84", 128),
63                    'test_string_32_64'    => str_repeat('a', 48),
64                    'test_string_32_64'    => str_repeat("\xC3\x84", 48),
65                    'test_int'            => 128,
66                    'test_int_32'        => 32,
67                    'test_int_32_64'    => 48,
68                    'test_lang'            => 'en',
69                    'test_url'            => 'http://foobar.com',
70                ),
71            ),
72        );
73    }
74
75    /**
76    * @dataProvider validate_config_vars_fit_data
77    */
78    public function test_validate_config_vars_fit($test_data, $cfg_array)
79    {
80        $phpbb_error = array();
81        validate_config_vars($test_data, $cfg_array, $phpbb_error);
82
83        $this->assertEquals(array(), $phpbb_error);
84    }
85
86    /**
87    * Data sets that throw the error.
88    */
89    public static function validate_config_vars_error_data()
90    {
91        return array(
92            array(
93                array('test_string_32_64'        => array('lang' => 'TEST_STRING_32_64',    'validate' => 'string:32:64')),
94                array('test_string_32_64'    => str_repeat('a', 20)),
95                array('SETTING_TOO_SHORT'),
96            ),
97            array(
98                array('test_string_32_64'        => array('lang' => 'TEST_STRING_32_64',    'validate' => 'string:32:64')),
99                array('test_string_32_64'    => str_repeat("\xC3\x84", 20)),
100                array('SETTING_TOO_SHORT'),
101            ),
102            array(
103                array('test_string'        => array('lang' => 'TEST_STRING',    'validate' => 'string')),
104                array('test_string'        => str_repeat('a', 256)),
105                array('SETTING_TOO_LONG'),
106            ),
107            array(
108                array('test_string'        => array('lang' => 'TEST_STRING',    'validate' => 'string')),
109                array('test_string'        => str_repeat("\xC3\x84", 256)),
110                array('SETTING_TOO_LONG'),
111            ),
112            array(
113                array('test_string_32_64'    => array('lang' => 'TEST_STRING_32_64',    'validate' => 'string:32:64')),
114                array('test_string_32_64'    => str_repeat('a', 65)),
115                array('SETTING_TOO_LONG'),
116            ),
117            array(
118                array('test_string_32_64'    => array('lang' => 'TEST_STRING_32_64',    'validate' => 'string:32:64')),
119                array('test_string_32_64'    => str_repeat("\xC3\x84", 65)),
120                array('SETTING_TOO_LONG'),
121            ),
122
123            array(
124                array('test_int_32'        => array('lang' => 'TEST_INT',            'validate' => 'int:32')),
125                array('test_int_32'        => 31),
126                array('SETTING_TOO_LOW'),
127            ),
128            array(
129                array('test_int_32_64'    => array('lang' => 'TEST_INT',            'validate' => 'int:32:64')),
130                array('test_int_32_64'    => 31),
131                array('SETTING_TOO_LOW'),
132            ),
133            array(
134                array('test_int_32_64'    => array('lang' => 'TEST_INT',            'validate' => 'int:32:64')),
135                array('test_int_32_64'    => 65),
136                array('SETTING_TOO_BIG'),
137            ),
138            array(
139                array(
140                    'test_int_min'    => array('lang' => 'TEST_INT_MIN',        'validate' => 'int:32:64'),
141                    'test_int_max'    => array('lang' => 'TEST_INT_MAX',        'validate' => 'int:32:64'),
142                ),
143                array(
144                    'test_int_min'    => 52,
145                    'test_int_max'    => 48,
146                ),
147                array('SETTING_TOO_LOW'),
148            ),
149            array(
150                array('test_lang'        => array('lang' => 'TEST_LANG',            'validate' => 'lang')),
151                array('test_lang'        => 'this_is_no_language'),
152                array('WRONG_DATA_LANG'),
153            ),
154            array(
155                array('test_url'        => array('lang' => 'TEST_URL',            'validate' => 'url')),
156                array('test_url'        => 'javascript://foobar.com'),
157                array('URL_INVALID TEST_URL'),
158            ),
159        );
160    }
161
162    /**
163    * @dataProvider validate_config_vars_error_data
164    */
165    public function test_validate_config_vars_error($test_data, $cfg_array, $expected)
166    {
167        $phpbb_error = array();
168        validate_config_vars($test_data, $cfg_array, $phpbb_error);
169
170        $this->assertEquals($expected, $phpbb_error);
171    }
172}