Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
37.29% covered (danger)
37.29%
22 / 59
66.67% covered (warning)
66.67%
2 / 3
CRAP
0.00% covered (danger)
0.00%
0 / 1
phpbb_build_url_test
37.29% covered (danger)
37.29%
22 / 59
66.67% covered (warning)
66.67%
2 / 3
5.22
0.00% covered (danger)
0.00%
0 / 1
 setUp
100.00% covered (success)
100.00%
17 / 17
100.00% covered (success)
100.00%
1 / 1
1
 build_url_test_data
0.00% covered (danger)
0.00%
0 / 37
0.00% covered (danger)
0.00%
0 / 1
2
 test_build_url
100.00% covered (success)
100.00%
5 / 5
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
14class phpbb_build_url_test extends phpbb_test_case
15{
16    protected function setUp(): void
17    {
18        global $user, $phpbb_dispatcher, $phpbb_container, $phpbb_root_path, $phpbb_path_helper, $config;
19
20        parent::setUp();
21
22        $phpbb_container = new phpbb_mock_container_builder();
23        $user = new phpbb_mock_user();
24        $phpbb_dispatcher = new phpbb_mock_event_dispatcher();
25        $config = new \phpbb\config\config([
26            'enable_mod_rewrite' => 0,
27        ]);
28
29        $phpbb_path_helper = new \phpbb\path_helper(
30            new \phpbb\symfony_request(
31                new phpbb_mock_request()
32            ),
33            $this->createMock('\phpbb\request\request'),
34            $phpbb_root_path,
35            'php'
36        );
37        $phpbb_container->set('path_helper', $phpbb_path_helper);
38    }
39    public static function build_url_test_data()
40    {
41        return array(
42            array(
43                'index.php',
44                false,
45                'phpBB/index.php',
46            ),
47            array(
48                'index.php',
49                't',
50                'phpBB/index.php',
51            ),
52            array(
53                'viewtopic.php?t=5',
54                false,
55                'phpBB/viewtopic.php?t=5',
56            ),
57            array(
58                'viewtopic.php?style=1&t=6',
59                'f',
60                'phpBB/viewtopic.php?style=1&amp;t=6',
61            ),
62            array(
63                'viewtopic.php?style=1&t=6',
64                array('f', 'style', 't'),
65                'phpBB/viewtopic.php',
66            ),
67            array(
68                'http://test.phpbb.com/viewtopic.php?style=1&t=6',
69                array('f', 'style', 't'),
70                'http://test.phpbb.com/viewtopic.php',
71            ),
72            array(
73                'posting.php?mode=delete&p=20%22%3Cscript%3Ealert%281%29%3B%3C%2Fscript%3E',
74                false,
75                'phpBB/posting.php?mode=delete&amp;p=20%22%3Cscript%3Ealert%281%29%3B%3C%2Fscript%3E',
76            )
77        );
78    }
79
80    /**
81    * @dataProvider build_url_test_data
82    */
83    public function test_build_url($page, $strip_vars, $expected)
84    {
85        global $config, $user, $phpbb_path_helper, $phpbb_dispatcher, $_SID;
86
87        $_SID = '';
88        $user->page['page'] = $page;
89        $output = build_url($strip_vars);
90
91        $this->assertEquals($expected, $output);
92    }
93}