3 namespace Friendica\Test\src\Module\Api;
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;
13 class ApiResponseTest extends MockedTest
15 protected function tearDown(): void
17 ApiResponseDouble::reset();
22 public function testErrorWithJson()
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);
30 $response = new ApiResponseDouble($l10n, $args, new NullLogger(), $baseUrl, $twitterUser);
31 $response->error(200, 'OK', 'error_message', 'json');
33 self::assertEquals('{"error":"error_message","code":"200 OK","request":""}', ApiResponseDouble::getOutput());
36 public function testErrorWithXml()
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);
44 $response = new ApiResponseDouble($l10n, $args, new NullLogger(), $baseUrl, $twitterUser);
45 $response->error(200, 'OK', 'error_message', 'xml');
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" .
55 ApiResponseDouble::getOutput());
58 public function testErrorWithRss()
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);
66 $response = new ApiResponseDouble($l10n, $args, new NullLogger(), $baseUrl, $twitterUser);
67 $response->error(200, 'OK', 'error_message', 'rss');
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" .
78 ApiResponseDouble::getOutput());
81 public function testErrorWithAtom()
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);
89 $response = new ApiResponseDouble($l10n, $args, new NullLogger(), $baseUrl, $twitterUser);
90 $response->error(200, 'OK', 'error_message', 'atom');
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" .
101 ApiResponseDouble::getOutput());
104 public function testUnsupported()
106 $l10n = \Mockery::mock(L10n::class);
107 $l10n->shouldReceive('t')->andReturnUsing(function ($args) {
110 $args = \Mockery::mock(Arguments::class);
111 $args->shouldReceive('getQueryString')->andReturn('');
112 $baseUrl = \Mockery::mock(BaseURL::class);
113 $twitterUser = \Mockery::mock(User::class);
115 $response = new ApiResponseDouble($l10n, $args, new NullLogger(), $baseUrl, $twitterUser);
116 $response->unsupported();
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());