]> git.mxchange.org Git - friendica.git/blob - tests/src/Module/Api/ApiResponseTest.php
Fix ApiResponseTest
[friendica.git] / tests / src / Module / Api / ApiResponseTest.php
1 <?php
2
3 namespace Friendica\Test\src\Module\Api;
4
5 use Friendica\App\Arguments;
6 use Friendica\App\BaseURL;
7 use Friendica\Core\L10n;
8 use Friendica\Factory\Api\Twitter\User;
9 use Friendica\Test\MockedTest;
10 use Friendica\Test\Util\ApiResponseDouble;
11 use Psr\Log\NullLogger;
12
13 class ApiResponseTest extends MockedTest
14 {
15         protected function tearDown(): void
16         {
17                 ApiResponseDouble::reset();
18
19                 parent::tearDown();
20         }
21
22         public function testErrorWithJson()
23         {
24                 $l10n = \Mockery::mock(L10n::class);
25                 $args = \Mockery::mock(Arguments::class);
26                 $args->shouldReceive('getQueryString')->andReturn('');
27                 $baseUrl     = \Mockery::mock(BaseURL::class);
28                 $twitterUser = \Mockery::mock(User::class);
29
30                 $response = new ApiResponseDouble($l10n, $args, new NullLogger(), $baseUrl, $twitterUser);
31                 $response->error(200, 'OK', 'error_message', 'json');
32
33                 self::assertEquals('{"error":"error_message","code":"200 OK","request":""}', ApiResponseDouble::getOutput());
34         }
35
36         public function testErrorWithXml()
37         {
38                 $l10n = \Mockery::mock(L10n::class);
39                 $args = \Mockery::mock(Arguments::class);
40                 $args->shouldReceive('getQueryString')->andReturn('');
41                 $baseUrl     = \Mockery::mock(BaseURL::class);
42                 $twitterUser = \Mockery::mock(User::class);
43
44                 $response = new ApiResponseDouble($l10n, $args, new NullLogger(), $baseUrl, $twitterUser);
45                 $response->error(200, 'OK', 'error_message', 'xml');
46
47                 self::assertEquals('<?xml version="1.0"?>' . "\n" .
48                                                    '<status xmlns="http://api.twitter.com" xmlns:statusnet="http://status.net/schema/api/1/" ' .
49                                                    'xmlns:friendica="http://friendi.ca/schema/api/1/" ' .
50                                                    'xmlns:georss="http://www.georss.org/georss">' . "\n" .
51                                                    '  <error>error_message</error>' . "\n" .
52                                                    '  <code>200 OK</code>' . "\n" .
53                                                    '  <request/>' . "\n" .
54                                                    '</status>' . "\n",
55                         ApiResponseDouble::getOutput());
56         }
57
58         public function testErrorWithRss()
59         {
60                 $l10n = \Mockery::mock(L10n::class);
61                 $args = \Mockery::mock(Arguments::class);
62                 $args->shouldReceive('getQueryString')->andReturn('');
63                 $baseUrl     = \Mockery::mock(BaseURL::class);
64                 $twitterUser = \Mockery::mock(User::class);
65
66                 $response = new ApiResponseDouble($l10n, $args, new NullLogger(), $baseUrl, $twitterUser);
67                 $response->error(200, 'OK', 'error_message', 'rss');
68
69                 self::assertEquals(
70                         '<?xml version="1.0"?>' . "\n" .
71                         '<status xmlns="http://api.twitter.com" xmlns:statusnet="http://status.net/schema/api/1/" ' .
72                         'xmlns:friendica="http://friendi.ca/schema/api/1/" ' .
73                         'xmlns:georss="http://www.georss.org/georss">' . "\n" .
74                         '  <error>error_message</error>' . "\n" .
75                         '  <code>200 OK</code>' . "\n" .
76                         '  <request/>' . "\n" .
77                         '</status>' . "\n",
78                         ApiResponseDouble::getOutput());
79         }
80
81         public function testErrorWithAtom()
82         {
83                 $l10n = \Mockery::mock(L10n::class);
84                 $args = \Mockery::mock(Arguments::class);
85                 $args->shouldReceive('getQueryString')->andReturn('');
86                 $baseUrl     = \Mockery::mock(BaseURL::class);
87                 $twitterUser = \Mockery::mock(User::class);
88
89                 $response = new ApiResponseDouble($l10n, $args, new NullLogger(), $baseUrl, $twitterUser);
90                 $response->error(200, 'OK', 'error_message', 'atom');
91
92                 self::assertEquals(
93                         '<?xml version="1.0"?>' . "\n" .
94                         '<status xmlns="http://api.twitter.com" xmlns:statusnet="http://status.net/schema/api/1/" ' .
95                         'xmlns:friendica="http://friendi.ca/schema/api/1/" ' .
96                         'xmlns:georss="http://www.georss.org/georss">' . "\n" .
97                         '  <error>error_message</error>' . "\n" .
98                         '  <code>200 OK</code>' . "\n" .
99                         '  <request/>' . "\n" .
100                         '</status>' . "\n",
101                         ApiResponseDouble::getOutput());
102         }
103
104         public function testUnsupported()
105         {
106                 $l10n = \Mockery::mock(L10n::class);
107                 $l10n->shouldReceive('t')->andReturnUsing(function ($args) {
108                         return $args;
109                 });
110                 $args = \Mockery::mock(Arguments::class);
111                 $args->shouldReceive('getQueryString')->andReturn('');
112                 $baseUrl     = \Mockery::mock(BaseURL::class);
113                 $twitterUser = \Mockery::mock(User::class);
114
115                 $response = new ApiResponseDouble($l10n, $args, new NullLogger(), $baseUrl, $twitterUser);
116                 $response->unsupported();
117
118                 self::assertEquals('{"error":"API endpoint %s %s is not implemented","error_description":"The API endpoint is currently not implemented but might be in the future."}', ApiResponseDouble::getOutput());
119         }
120 }