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