]> git.mxchange.org Git - friendica.git/blob - tests/src/Util/HTTPInputDataTest.php
Enable testability for HTTPInputData and create a failing test for it :-)
[friendica.git] / tests / src / Util / HTTPInputDataTest.php
1 <?php
2 /**
3  * @copyright Copyright (C) 2010-2021, the Friendica project
4  *
5  * @license GNU AGPL version 3 or any later version
6  *
7  * This program is free software: you can redistribute it and/or modify
8  * it under the terms of the GNU Affero General Public License as
9  * published by the Free Software Foundation, either version 3 of the
10  * License, or (at your option) any later version.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15  * GNU Affero General Public License for more details.
16  *
17  * You should have received a copy of the GNU Affero General Public License
18  * along with this program.  If not, see <https://www.gnu.org/licenses/>.
19  *
20  */
21
22 namespace Friendica\Test\src\Util;
23
24 use Friendica\Test\MockedTest;
25 use Friendica\Test\Util\HTTPInputDataDouble;
26 use Friendica\Util\HTTPInputData;
27
28 /**
29  * Testing HTTPInputData
30  * @see HTTPInputData
31  */
32 class HTTPInputDataTest extends MockedTest
33 {
34         /**
35          * Returns the data stream for the unit test
36          * Each array element of the first hierarchy represents one test run
37          * Each array element of the second hierarchy represents the parameters, passed to the test function
38          * @return array[]
39          */
40         public function dataStream()
41         {
42                 return [
43                         'example' => [
44                                 'input'    => 'anything you want',
45                                 'expected' => [
46                                         'variables' => [
47                                                 'var1' => 'value',
48                                                 'var2' => 'value',
49                                         ],
50                                         'files' => []
51                                 ]
52                         ]
53                 ];
54         }
55
56         /**
57          * Tests the HTTPInputData::process() method
58          * @see HTTPInputData::process()
59          * @param string $input The input, we got from the data stream
60          * @param array  $expected The expected output
61          * @dataProvider dataStream
62          */
63         public function testHttpInput(string $input, array $expected)
64         {
65                 HTTPInputDataDouble::setPhpInputContent($input);
66                 $stream = fopen('php://memory', 'r+');
67                 fwrite($stream, $input);
68                 rewind($stream);
69
70                 HTTPInputDataDouble::setPhpInputStream($stream);
71                 $output = HTTPInputDataDouble::process();
72                 $this->assertEqualsCanonicalizing($output, $expected);
73         }
74 }