3 namespace Friendica\Test\src\Module\Api;
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;
11 class ApiResponseTest extends MockedTest
13 protected function tearDown(): void
15 ApiResponseDouble::reset();
20 public function testErrorWithJson()
22 $l10n = \Mockery::mock(L10n::class);
23 $args = \Mockery::mock(Arguments::class);
24 $args->shouldReceive('getQueryString')->andReturn('');
26 $response = new ApiResponseDouble($l10n, $args, new NullLogger());
27 $response->error(200, 'OK', 'error_message', 'json');
29 self::assertEquals('{"error":"error_message","code":"200 OK","request":""}', ApiResponseDouble::getOutput());
32 public function testErrorWithXml()
34 $l10n = \Mockery::mock(L10n::class);
35 $args = \Mockery::mock(Arguments::class);
36 $args->shouldReceive('getQueryString')->andReturn('');
38 $response = new ApiResponseDouble($l10n, $args, new NullLogger());
39 $response->error(200, 'OK', 'error_message', 'xml');
41 self::assertEquals('<?xml version="1.0"?>' . "\n" .
42 '<status xmlns="http://api.twitter.com" xmlns:statusnet="http://status.net/schema/api/1/" ' .
43 'xmlns:friendica="http://friendi.ca/schema/api/1/" ' .
44 'xmlns:georss="http://www.georss.org/georss">' . "\n" .
45 ' <error>error_message</error>' . "\n" .
46 ' <code>200 OK</code>' . "\n" .
47 ' <request/>' . "\n" .
49 ApiResponseDouble::getOutput());
52 public function testErrorWithRss()
54 $l10n = \Mockery::mock(L10n::class);
55 $args = \Mockery::mock(Arguments::class);
56 $args->shouldReceive('getQueryString')->andReturn('');
58 $response = new ApiResponseDouble($l10n, $args, new NullLogger());
59 $response->error(200, 'OK', 'error_message', 'rss');
62 '<?xml version="1.0"?>' . "\n" .
63 '<status xmlns="http://api.twitter.com" xmlns:statusnet="http://status.net/schema/api/1/" ' .
64 'xmlns:friendica="http://friendi.ca/schema/api/1/" ' .
65 'xmlns:georss="http://www.georss.org/georss">' . "\n" .
66 ' <error>error_message</error>' . "\n" .
67 ' <code>200 OK</code>' . "\n" .
68 ' <request/>' . "\n" .
70 ApiResponseDouble::getOutput());
73 public function testErrorWithAtom()
75 $l10n = \Mockery::mock(L10n::class);
76 $args = \Mockery::mock(Arguments::class);
77 $args->shouldReceive('getQueryString')->andReturn('');
79 $response = new ApiResponseDouble($l10n, $args, new NullLogger());
80 $response->error(200, 'OK', 'error_message', 'atom');
83 '<?xml version="1.0"?>' . "\n" .
84 '<status xmlns="http://api.twitter.com" xmlns:statusnet="http://status.net/schema/api/1/" ' .
85 'xmlns:friendica="http://friendi.ca/schema/api/1/" ' .
86 'xmlns:georss="http://www.georss.org/georss">' . "\n" .
87 ' <error>error_message</error>' . "\n" .
88 ' <code>200 OK</code>' . "\n" .
89 ' <request/>' . "\n" .
91 ApiResponseDouble::getOutput());
94 public function testUnsupported()
96 $l10n = \Mockery::mock(L10n::class);
97 $l10n->shouldReceive('t')->andReturnUsing(function ($args) {
100 $args = \Mockery::mock(Arguments::class);
101 $args->shouldReceive('getQueryString')->andReturn('');
103 $response = new ApiResponseDouble($l10n, $args, new NullLogger());
104 $response->unsupported();
106 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());