3 * @copyright Copyright (C) 2010-2022, the Friendica project
5 * @license GNU AGPL version 3 or any later version
7 * This program is free software: you can redistribute it and/or modify
8 * it under the terms of the GNU Affero General Public License as
9 * published by the Free Software Foundation, either version 3 of the
10 * License, or (at your option) any later version.
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU Affero General Public License for more details.
17 * You should have received a copy of the GNU Affero General Public License
18 * along with this program. If not, see <https://www.gnu.org/licenses/>.
22 namespace Friendica\Test\src\Module\Api\Twitter\DirectMessages;
24 use Friendica\App\Router;
26 use Friendica\Factory\Api\Twitter\DirectMessage;
27 use Friendica\Module\Api\Twitter\DirectMessages\NewDM;
28 use Friendica\Test\src\Module\Api\ApiTest;
30 class NewDMTest extends ApiTest
33 * Test the api_direct_messages_new() function.
37 public function testApiDirectMessagesNew()
39 $directMessage = new DirectMessage(DI::logger(), DI::dba(), DI::twitterUser());
41 $response = (new NewDM($directMessage, DI::dba(), DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), [], ['extension' => 'json']))
44 self::assertEmpty((string)$response->getBody());
48 * Test the api_direct_messages_new() function without an authenticated user.
52 public function testApiDirectMessagesNewWithoutAuthenticatedUser()
54 self::markTestIncomplete('Needs BasicAuth as dynamic method for overriding first');
57 $this->expectException(\Friendica\Network\HTTPException\UnauthorizedException::class);
58 BasicAuth::setCurrentUserID();
59 $_SESSION['authenticated'] = false;
60 api_direct_messages_new('json');
65 * Test the api_direct_messages_new() function with an user ID.
69 public function testApiDirectMessagesNewWithUserId()
71 $directMessage = new DirectMessage(DI::logger(), DI::dba(), DI::twitterUser());
73 $response = (new NewDM($directMessage, DI::dba(), DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), [], ['extension' => 'json']))
75 'text' => 'message_text',
79 $json = $this->toJson($response);
81 self::assertEquals(-1, $json->error);
85 * Test the api_direct_messages_new() function with a screen name.
89 public function testApiDirectMessagesNewWithScreenName()
91 DI::app()->setLoggedInUserNickname('selfcontact');
93 $directMessage = new DirectMessage(DI::logger(), DI::dba(), DI::twitterUser());
95 $response = (new NewDM($directMessage, DI::dba(), DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), [], ['extension' => 'json']))
97 'text' => 'message_text',
101 $json = $this->toJson($response);
103 self::assertStringContainsString('message_text', $json->text);
104 self::assertEquals('selfcontact', $json->sender_screen_name);
105 self::assertEquals(1, $json->friendica_seen);
109 * Test the api_direct_messages_new() function with a title.
113 public function testApiDirectMessagesNewWithTitle()
115 DI::app()->setLoggedInUserNickname('selfcontact');
117 $directMessage = new DirectMessage(DI::logger(), DI::dba(), DI::twitterUser());
119 $response = (new NewDM($directMessage, DI::dba(), DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), [], ['extension' => 'json']))
121 'text' => 'message_text',
123 'title' => 'message_title',
126 $json = $this->toJson($response);
128 self::assertStringContainsString('message_text', $json->text);
129 self::assertStringContainsString('message_title', $json->text);
130 self::assertEquals('selfcontact', $json->sender_screen_name);
131 self::assertEquals(1, $json->friendica_seen);
135 * Test the api_direct_messages_new() function with an RSS result.
139 public function testApiDirectMessagesNewWithRss()
141 DI::app()->setLoggedInUserNickname('selfcontact');
143 $directMessage = new DirectMessage(DI::logger(), DI::dba(), DI::twitterUser());
145 $response = (new NewDM($directMessage, DI::dba(), DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), [], ['extension' => 'rss']))
147 'text' => 'message_text',
149 'title' => 'message_title',
152 self::assertXml((string)$response->getBody(), 'direct-messages');