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