From 5cfdeb03fd89092431cbe735accb98490f186a14 Mon Sep 17 00:00:00 2001 From: Arsen Mirzaev Tatyano-Muradovich Date: Tue, 27 Jul 2021 11:17:46 +1000 Subject: [PATCH] =?UTF-8?q?=D0=A1=D0=BC=D0=B5=D0=BD=D0=B0=20=D0=BF=D1=80?= =?UTF-8?q?=D0=BE=D1=81=D1=82=D1=80=D0=B0=D0=BD=D1=81=D1=82=D0=B2=D0=B0=20?= =?UTF-8?q?=D0=B8=D0=BC=D1=91=D0=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- composer.json | 14 +- composer.lock | 12 +- hood/vk/system/api/callback.php | 52 ---- hood/vk/tests/api/apiTest.php | 222 -------------- hood/vk/tests/api/dataTest.php | 199 ------------- hood/vk/tests/settings.php.example | 78 ----- mirzaev/vk/system/api/callback.php | 52 ++++ {hood => mirzaev}/vk/system/api/longpoll.php | 38 ++- .../vk/system/api/methods/messages.php | 12 +- .../vk/system/api/methods/method.php | 18 +- .../vk/system/api/methods/photos.php | 16 +- {hood => mirzaev}/vk/system/api/settings.php | 86 ++++-- {hood => mirzaev}/vk/system/core.php | 42 +-- {hood => mirzaev}/vk/system/loggers/jasmo.php | 28 +- .../vk/system/loggers/logger.php | 8 +- {hood => mirzaev}/vk/system/robots/group.php | 12 +- {hood => mirzaev}/vk/system/robots/robot.php | 20 +- {hood => mirzaev}/vk/system/robots/user.php | 8 +- .../vk/system/traits/registry.php | 2 +- .../vk/system/traits/singleton.php | 4 +- .../vk/temp/191417381_0.longpoll | 0 mirzaev/vk/temp/191417381_1.longpoll | 1 + {hood => mirzaev}/vk/tests/.gitignore | 0 .../vk/tests/accounts/.gitignore | 0 mirzaev/vk/tests/api/apiTest.php | 273 ++++++++++++++++++ .../vk/tests/api/methods/messagesTest.php | 28 +- .../vk/tests/api/methods/photosTest.php | 8 +- .../vk/tests/robots/groupTest.php | 8 +- .../vk/tests/robots/userTest.php | 8 +- mirzaev/vk/tests/settings.php.example | 88 ++++++ test.php | 20 ++ 31 files changed, 632 insertions(+), 725 deletions(-) delete mode 100644 hood/vk/system/api/callback.php delete mode 100644 hood/vk/tests/api/apiTest.php delete mode 100644 hood/vk/tests/api/dataTest.php delete mode 100644 hood/vk/tests/settings.php.example create mode 100644 mirzaev/vk/system/api/callback.php rename {hood => mirzaev}/vk/system/api/longpoll.php (90%) rename {hood => mirzaev}/vk/system/api/methods/messages.php (97%) rename {hood => mirzaev}/vk/system/api/methods/method.php (90%) rename {hood => mirzaev}/vk/system/api/methods/photos.php (98%) rename {hood => mirzaev}/vk/system/api/settings.php (72%) rename {hood => mirzaev}/vk/system/core.php (87%) rename {hood => mirzaev}/vk/system/loggers/jasmo.php (95%) rename {hood => mirzaev}/vk/system/loggers/logger.php (88%) rename {hood => mirzaev}/vk/system/robots/group.php (91%) rename {hood => mirzaev}/vk/system/robots/robot.php (95%) rename {hood => mirzaev}/vk/system/robots/user.php (79%) rename {hood => mirzaev}/vk/system/traits/registry.php (97%) rename {hood => mirzaev}/vk/system/traits/singleton.php (96%) rename {hood => mirzaev}/vk/temp/191417381_0.longpoll (100%) create mode 100644 mirzaev/vk/temp/191417381_1.longpoll rename {hood => mirzaev}/vk/tests/.gitignore (100%) rename {hood => mirzaev}/vk/tests/accounts/.gitignore (100%) create mode 100644 mirzaev/vk/tests/api/apiTest.php rename {hood => mirzaev}/vk/tests/api/methods/messagesTest.php (93%) rename {hood => mirzaev}/vk/tests/api/methods/photosTest.php (97%) rename {hood => mirzaev}/vk/tests/robots/groupTest.php (98%) rename {hood => mirzaev}/vk/tests/robots/userTest.php (98%) create mode 100644 mirzaev/vk/tests/settings.php.example create mode 100644 test.php diff --git a/composer.json b/composer.json index 2bedacb..d02df92 100644 --- a/composer.json +++ b/composer.json @@ -1,5 +1,5 @@ { - "name": "hood/vk", + "name": "mirzaev/vk", "type": "framework", "description": "Фреймворк VK API", "keywords": [ @@ -7,8 +7,8 @@ "api", "hood" ], - "homepage": "https://git.hood.su/vk", - "license": "AGPL-3.0-or-later", + "homepage": "https://git.hood.su/mirzaev/vk", + "license": "free for you", "authors": [ { "name": "Arsen Mirzaev Tatyano-Muradovich", @@ -23,8 +23,8 @@ } ], "support": { - "docs": "https://git.hood.su/hood/vk/manual", - "issues": "https://git.hood.su/hood/vk/issues" + "docs": "https://git.hood.su/mirzaev/vk/manual", + "issues": "https://git.hood.su/mirzaev/vk/issues" }, "require": { "php": "~8.0", @@ -39,12 +39,12 @@ }, "autoload": { "psr-4": { - "hood\\vk\\": "hood/vk/system" + "mirzaev\\vk\\": "mirzaev/vk/system" } }, "autoload-dev": { "psr-4": { - "hood\\vk\\tests\\": "hood/vk/tests" + "mirzaev\\vk\\tests\\": "mirzaev/vk/tests" } } } diff --git a/composer.lock b/composer.lock index 09f5044..3462236 100644 --- a/composer.lock +++ b/composer.lock @@ -166,16 +166,16 @@ }, { "name": "guzzlehttp/psr7", - "version": "1.8.1", + "version": "1.8.2", "source": { "type": "git", "url": "https://github.com/guzzle/psr7.git", - "reference": "35ea11d335fd638b5882ff1725228b3d35496ab1" + "reference": "dc960a912984efb74d0a90222870c72c87f10c91" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/35ea11d335fd638b5882ff1725228b3d35496ab1", - "reference": "35ea11d335fd638b5882ff1725228b3d35496ab1", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/dc960a912984efb74d0a90222870c72c87f10c91", + "reference": "dc960a912984efb74d0a90222870c72c87f10c91", "shasum": "" }, "require": { @@ -235,9 +235,9 @@ ], "support": { "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/1.8.1" + "source": "https://github.com/guzzle/psr7/tree/1.8.2" }, - "time": "2021-03-21T16:25:00+00:00" + "time": "2021-04-26T09:17:50+00:00" }, { "name": "hood/accounts", diff --git a/hood/vk/system/api/callback.php b/hood/vk/system/api/callback.php deleted file mode 100644 index 13a5377..0000000 --- a/hood/vk/system/api/callback.php +++ /dev/null @@ -1,52 +0,0 @@ -secret_key = $_ENV['CALLBACK_SECRET_KEY']; - $this->url = $_ENV['SERVER_DOMAIN']; - $this->group_id = $group->id; - $this->group_id->request('groups.addCallbackServer', [ - 'group_id' => $this->group_id, - 'url' => $this->url, - 'title' => $this->group_id . 'CallBackServer', - 'secret_key' => $this->secret_key - ]); - // $this->confirmation_token = request('groups.getCallbackConfirmationCode', [$this->group_id]); - echo $this->confirmation_token; - } - - public function sendOk(){ - echo 'ok'; - } -} \ No newline at end of file diff --git a/hood/vk/tests/api/apiTest.php b/hood/vk/tests/api/apiTest.php deleted file mode 100644 index 081cffc..0000000 --- a/hood/vk/tests/api/apiTest.php +++ /dev/null @@ -1,222 +0,0 @@ -ssl = self::$ssl ?? true; - - if (empty(self::$key)) { - // Если не указан ключ - - // Проверка входных данных - if (empty(self::$login)) { - self::markTestSkipped('Не инициализирован входной аккаунта'); - } else if (empty(self::$password)) { - self::markTestSkipped('Не инициализирован пароль аккаунта'); - } - - // Деаутентификация (на всякий случай) - self::$account->deauth(); - - // Аутентификация и генерация ключа - self::$key = self::$account->auth(self::$login, self::$password)->key(self::$project_id); - } - - $this->assertNotNull(self::$key, 'Ошибка при инициализации ключа аккаунта'); - } - - /** - * @testdox Деинициализация аккаунта - * @afterClass - */ - public static function testAccountDeinit(): void - { - // Инициализация аккаунта - self::$account = new account(empty(self::$id) ? rand(0, 10) : self::$id, self::$path_accounts); - - // Деаутентификация - self::$account->deauth(); - } - - /** - * @testdox Инициализация робота - * @before - */ - public function testRobotGroupInit(): void - { - // Инициализация ядра - self::$core = core::init(); - - // Сохранение количества роботов - $count = self::$core->robots; - - // Инициализация робота - self::$robot = self::$core->group(empty(self::$group_id) ? rand(0, 10) : self::$group_id); - - // Проверка - $this->assertEquals(self::$core->robots, $count + 1, 'Ошибка при инициализации робота'); - } - - /** - * @testdox Деинициализация робота - * @after - */ - public function testRobotGroupDeinit(): void - { - // Очистка реестра - self::$core->delete(); - - // Проверка - $this->assertEmpty(self::$core->get(self::$robot->id), 'Ошибка при деинициализации робота'); - } - - /** - * @testdox Инициализация (безопасная) - */ - public function testSafeInit(): void - { - // Инициализация - $settings = self::$robot->key(self::$group_key)->api->init(); - - // Проверка - $this->assertNotNull($settings['access_token']); - $this->assertNotNull($settings['v']); - } - - /** - * @testdox Реинициализация - */ - public function testReinit(): void - { - // Реинициализация - self::$robot->key(self::$group_key)->api->reinit(); - } - - /** - * @testdox Чтение робота - */ - public function testReadRobot(): void - { - // Чтение робота - $this->assertNotNull(self::$robot->key(self::$group_key)->api->robot); - } - - /** - * @testdox Запись настроек - */ - public function testWriteSettings(): void - { - // Проверка выброса исключения - $this->expectExceptionMessage('Запрещено перезаписывать настройки'); - - // Запись настроек - self::$robot->key(self::$group_key)->api['settings'] = ['settings']; - - // Проверка - $this->assertTrue(!empty(self::$robot->api(['settings']))); - } - - /** - * @testdox Чтение элемента настроек - */ - public function testReadSettingsElement(): void - { - // Проверка выброса исключения - $this->expectExceptionMessage('Не найдено: settings[\'element\']'); - - // Чтение элемента настроек - self::$robot->key(self::$group_key)->api['element']; - } - - /** - * @testdox Запись элемента настроек - */ - public function testWriteSettingsElement(): void - { - // Запись элемента настроек - self::$robot->key(self::$group_key)->api['element'] = 'element'; - - // Проверка - $this->assertNotNull(self::$robot->api['element']); - } - - /** - * @testdox Выбор получателя по идентификатору - */ - public function testchooseDestinationById(): void - { - // Выбор получателя по идентификатору - self::$robot->key(self::$group_key)->api->chooseDestination(12345); - - // Проверка - $this->assertNotNull(self::$robot->api['peer_id']); - } - - /** - * @testdox Выбор получателей по идентификаторам - */ - public function testchooseDestinationByIds(): void - { - // Выбор получателей по идентификаторам - self::$robot->key(self::$group_key)->api->chooseDestination([12345, 12345]); - - // Проверка - $this->assertNotNull(self::$robot->api['user_ids']); - } - - /** - * @testdox Выбор получателя по домену - */ - public function testchooseDestinationByDomain(): void - { - // Выбор получателя по домену - self::$robot->key(self::$group_key)->api->chooseDestination('domain'); - - // Проверка - $this->assertNotNull(self::$robot->api['domain']); - } -} diff --git a/hood/vk/tests/api/dataTest.php b/hood/vk/tests/api/dataTest.php deleted file mode 100644 index dd95e3f..0000000 --- a/hood/vk/tests/api/dataTest.php +++ /dev/null @@ -1,199 +0,0 @@ -ssl = self::$ssl ?? true; - - if (empty(self::$key)) { - // Если не указан ключ - - // Проверка входных данных - if (empty(self::$login)) { - self::markTestSkipped('Не инициализирован входной аккаунта'); - } else if (empty(self::$password)) { - self::markTestSkipped('Не инициализирован пароль аккаунта'); - } - - // Деаутентификация (на всякий случай) - self::$account->deauth(); - - // Аутентификация и генерация ключа - self::$key = self::$account->auth(self::$login, self::$password)->key(self::$project_id); - } - - $this->assertNotNull(self::$key, 'Ошибка при инициализации ключа аккаунта'); - } - - /** - * @testdox Деинициализация аккаунта - * @afterClass - */ - public static function testAccountDeinit(): void - { - // Инициализация аккаунта - self::$account = new account(empty(self::$id) ? rand(0, 10) : self::$id, self::$path_accounts); - - // Деаутентификация - self::$account->deauth(); - } - - /** - * @testdox Инициализация робота - * @before - */ - public function testRobotGroupInit(): void - { - // Инициализация ядра - self::$core = core::init(); - - // Сохранение количества роботов - $count = self::$core->robots; - - // Инициализация робота - self::$robot = self::$core->group(empty(self::$group_id) ? rand(0, 10) : self::$group_id); - - // Проверка - $this->assertEquals(self::$core->robots, $count + 1, 'Ошибка при инициализации робота'); - } - - /** - * @testdox Деинициализация робота - * @after - */ - public function testRobotGroupDeinit(): void - { - // Очистка реестра - self::$core->delete(); - - // Проверка - $this->assertEmpty(self::$core->get(self::$robot->id), 'Ошибка при деинициализации робота'); - } - - /** - * @testdox Инициализация вложений - * @before - */ - public function testDataInit(): void - { - - if (isset(self::$robot)) { - - // Инициализация вложений - self::$data = new data(self::$robot); - } - } - - /** - * @testdox Чтение вложений - */ - public function testReadAttachments(): void - { - // Проверка - $this->assertIsArray(self::$data->data); - } - - /** - * @testdox Запись вложения - */ - public function testWriteAttachment(): void - { - // Запись вложения - self::$data->addData('Вложение'); - - // Проверка - $this->assertNotEmpty(self::$data->data); - } - - /** - * @testdox Запись вложения (повторная) - */ - public function testWriteAttachmentWhenItIsAlreadyWrited(): void - { - //Запись вложения - self::$data->addData('Вложение'); - - // Повторная запись вложения - self::$data->addData('Вложение'); - - // Проверка - $this->assertSame(['Вложение', 'Вложение'], self::$data->data); - } - - /** - * @testdox Запись более 10 вложений - */ - public function testWriteAttachmentWhenLimitIsExceed() - { - // Проверка выброса исключения - $this->expectExceptionMessage('Превышен лимит вложений (10)'); - - //Запись вложений - self::$data->addData('1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11'); - } - - /** - * @testdox Очистка вложений - */ - public function testClearAttachments(): void - { - //Запись вложения - self::$data->addData('Вложение'); - - // Очистка вложений - self::$data->clear(); - - // Проверка - $this->assertEmpty(self::$data->data); - } -} diff --git a/hood/vk/tests/settings.php.example b/hood/vk/tests/settings.php.example deleted file mode 100644 index 428303d..0000000 --- a/hood/vk/tests/settings.php.example +++ /dev/null @@ -1,78 +0,0 @@ -secret_key = $_ENV['CALLBACK_SECRET_KEY']; +// $this->url = $_ENV['SERVER_DOMAIN']; +// $this->group_id = $group->id; +// $this->group_id->request('groups.addCallbackServer', [ +// 'group_id' => $this->group_id, +// 'url' => $this->url, +// 'title' => $this->group_id . 'CallBackServer', +// 'secret_key' => $this->secret_key +// ]); +// // $this->confirmation_token = request('groups.getCallbackConfirmationCode', [$this->group_id]); +// echo $this->confirmation_token; +// } + +// public function sendOk(){ +// echo 'ok'; +// } +// } diff --git a/hood/vk/system/api/longpoll.php b/mirzaev/vk/system/api/longpoll.php similarity index 90% rename from hood/vk/system/api/longpoll.php rename to mirzaev/vk/system/api/longpoll.php index 8c38b32..dc72770 100644 --- a/hood/vk/system/api/longpoll.php +++ b/mirzaev/vk/system/api/longpoll.php @@ -2,11 +2,11 @@ declare(strict_types=1); -namespace hood\vk\api; +namespace mirzaev\vk\api; use Exception; -use hood\vk\core, - hood\vk\robots\robot; +use mirzaev\vk\core, + mirzaev\vk\robots\robot; /** * LongPoll @@ -23,7 +23,7 @@ use hood\vk\core, * @see https://vk.com/dev/groups.getLongPollServer * @see https://vk.com/dev/groups.setLongPollSettings * - * @package hood\vk\api + * @package mirzaev\vk\api * @author Arsen Mirzaev Tatyano-Muradovich * * @todo Добавить обработку ошибок ($request['errors];) @@ -66,13 +66,10 @@ final class longpoll */ public function __construct(private robot $robot) { - // Инициализация робота - match (true) { - !isset($robot->id) => throw new Exception('Необходимо указать идентификатор ВКонтакте'), - !isset($robot->key) => throw new Exception('Необходимо указать ключ для доступа к LongPoll'), - !isset($robot->version) => throw new Exception('Необходимо указать версию используемого API ВКонтакте'), - default => null - }; + // Инициализация + if (empty($robot->id)) throw new Exception('Необходимо указать идентификатор ВКонтакте'); + if (empty($robot->key)) throw new Exception('Необходимо указать ключ для доступа к LongPoll'); + if (empty($robot->api['v'])) throw new Exception('Необходимо указать версию используемого API ВКонтакте'); // Остановка процессов-дубликатов if (!file_exists(core::init()->path_temp)) { @@ -185,6 +182,8 @@ final class longpoll * * @param int $wait Время ожидания новых событий (в секундах) * + * @todo Проверка на ошибки запроса, включая на наличие доступа к лонгполл у ключа + * * @return array */ public function get(int $wait = 25): array @@ -201,16 +200,25 @@ final class longpoll // Запрос на получение доступа и данных LongPoll-сервера $response = json_decode($this->robot->browser->request(method: 'POST', uri: 'groups.getLongPollServer', options: [ 'form_params' => $this->robot->api['settings'] - ])->getBody()->getContents())->response; + ])->getBody()->getContents()); + + if (isset($response->error)) { + // Что-то сделать + + var_export($response->error); die; + } + + // Инициализация + $response = $response->response; // Ключ доступа - $this->key = $response->key; + $this->key = $response->key; // Сервер хранящий события - $this->server = $response->server; + $this->server = $response->server; // Идентификатор последнего события - $this->ts = $response->ts; + $this->ts = $response->ts; } // Запрос на получение событий diff --git a/hood/vk/system/api/methods/messages.php b/mirzaev/vk/system/api/methods/messages.php similarity index 97% rename from hood/vk/system/api/methods/messages.php rename to mirzaev/vk/system/api/methods/messages.php index 4ed11be..65aa82e 100644 --- a/hood/vk/system/api/methods/messages.php +++ b/mirzaev/vk/system/api/methods/messages.php @@ -2,14 +2,14 @@ declare(strict_types=1); -namespace hood\vk\api\methods; +namespace mirzaev\vk\api\methods; use Exception; -use hood\accounts\vk; -use hood\vk\robots\robot; -use hood\vk\api\data; -use hood\vk\robots\group; +use mirzaev\accounts\vk; +use mirzaev\vk\robots\robot; +use mirzaev\vk\api\data; +use mirzaev\vk\robots\group; /** * Сообщение @@ -19,7 +19,7 @@ use hood\vk\robots\group; * @see https://vk.com/dev/messages.send * @see https://vk.com/dev/messages.getById * - * @package hood\vk\api + * @package mirzaev\vk\api * @author Arsen Mirzaev Tatyano-Muradovich * * @todo Доработать строгий режим отправки: проверку сообщения в беседе (не имеет ID сообщений) diff --git a/hood/vk/system/api/methods/method.php b/mirzaev/vk/system/api/methods/method.php similarity index 90% rename from hood/vk/system/api/methods/method.php rename to mirzaev/vk/system/api/methods/method.php index 7caf90c..389e558 100644 --- a/hood/vk/system/api/methods/method.php +++ b/mirzaev/vk/system/api/methods/method.php @@ -2,26 +2,26 @@ declare(strict_types=1); -namespace hood\vk\api\methods; +namespace mirzaev\vk\api\methods; -use hood\vk\robots\robot; +use mirzaev\vk\robots\robot; /** * Абстракция метода API - * + * * @method protected static put(string $url, ...$params) Создать * @method protected static post(string $url, ...$params) Изменить * @method protected static get(string $url, ...$params) Получить * @method protected static delete(string $url, ...$params) Удалить - * - * @package hood\vk\api\methods + * + * @package mirzaev\vk\api\methods * @author Arsen Mirzaev Tatyano-Muradovich */ abstract class method { /** * Создать - * + * * @return array Ответ сервера */ public static function put(): array @@ -31,7 +31,7 @@ abstract class method /** * Изменить - * + * * @return array Ответ сервера */ public static function post(): array @@ -41,7 +41,7 @@ abstract class method /** * Получить - * + * * @return array Ответ сервера */ public static function get(): array @@ -51,7 +51,7 @@ abstract class method /** * Удалить - * + * * @return array Ответ сервера */ public static function delete(): array diff --git a/hood/vk/system/api/methods/photos.php b/mirzaev/vk/system/api/methods/photos.php similarity index 98% rename from hood/vk/system/api/methods/photos.php rename to mirzaev/vk/system/api/methods/photos.php index 6c32312..ce5f6b4 100644 --- a/hood/vk/system/api/methods/photos.php +++ b/mirzaev/vk/system/api/methods/photos.php @@ -2,12 +2,12 @@ declare(strict_types=1); -namespace hood\vk\api\methods; +namespace mirzaev\vk\api\methods; -use hood\vk\robots\robot, - hood\vk\robots\group; +use mirzaev\vk\robots\robot, + mirzaev\vk\robots\group; -use hood\accounts\vk as account; +use mirzaev\accounts\vk as account; use Exception; @@ -19,7 +19,7 @@ use Exception; * @see https://vk.com/dev/photos.getUploadServer * @see https://vk.com/dev/messages.getById * - * @package hood\vk\api\methods + * @package mirzaev\vk\api\methods * @author Arsen Mirzaev Tatyano-Muradovich * * @todo Добавить обработку ошибок ($request['errors];) @@ -194,7 +194,7 @@ final class photos extends method /** * Получить адрес сервера сообщений - * + * * @return object */ public function getMessageServer(): object @@ -245,7 +245,7 @@ final class photos extends method return $request; } - /** + /** * Получить id фото для сообщения * * $robot робот @@ -291,6 +291,6 @@ final class photos extends method $request; // Ссылка на фото return 'photo' . $request->response[0]->owner_id . '_' . $request->response[0]->id; - + } } diff --git a/hood/vk/system/api/settings.php b/mirzaev/vk/system/api/settings.php similarity index 72% rename from hood/vk/system/api/settings.php rename to mirzaev/vk/system/api/settings.php index 0f600b3..b3292d8 100644 --- a/hood/vk/system/api/settings.php +++ b/mirzaev/vk/system/api/settings.php @@ -2,9 +2,9 @@ declare(strict_types=1); -namespace hood\vk\api; +namespace mirzaev\vk\api; -use hood\vk\robots\robot; +use mirzaev\vk\robots\robot; use Throwable; use Exception; @@ -20,11 +20,18 @@ use ArrayAccess; * @todo * 1. Создать __isset(), __unset() * - * @package hood\vk\api + * @package mirzaev\vk\api * @author Arsen Mirzaev Tatyano-Muradovich */ class settings implements ArrayAccess { + /** + * Версия API ВКонтакте по умолчанию + * + * Должна иметь тип string потому, что PHP при стандартных настройках удаляет нули у float + */ + protected const VK_API_VERSION_DEFAULT = '5.130'; + /** * Конструктор */ @@ -43,18 +50,21 @@ class settings implements ArrayAccess /** * Инициализация (безопасная) * - * @var float|null $version Версия API + * @var float $version Версия API (переопределять не рекомендуется) */ - public function init(float|null $version = null): self + public function init(string $version = self::VK_API_VERSION_DEFAULT): self { - if (isset($blocked)) { + // Инициализация + static $blocked = false; + + if ($blocked) { // Блокировка найдена throw new Exception('Повторная инициализация запрещена', 500); } // Блокировка - static $blocked = true; + $blocked = true; // Инициализация try { @@ -69,9 +79,9 @@ class settings implements ArrayAccess /** * Реинициализация * - * @var float|null $version Версия API + * @var float $version Версия API (переопределять не рекомендуется) */ - public function reinit(float|null $version = null): self + public function reinit(string $version = null): self { // Буфер $version = $version ?? $this->settings['v'] ?? null; @@ -92,9 +102,9 @@ class settings implements ArrayAccess /** * Инициализация * - * @var float $version Версия API + * @var float $version Версия API (переопределять не рекомендуется) */ - protected function _init(float $version = 5.124): self + protected function _init(string $version = self::VK_API_VERSION_DEFAULT): self { // Ключ $this->settings['access_token'] = $this->robot->key; @@ -106,26 +116,30 @@ class settings implements ArrayAccess } /** - * Записать получателя + * Определить и записать получателя * - * Определяет получателей по входным параметрам - * - * @see hood\vk\api\methods\messages Сообщения + * @see mirzaev\vk\api\methods\messages Сообщения */ - public function writeDestination(string|array|int $destination): void + public function destination(string|array|int $target): self { - if (is_int($destination)) { + if (is_int($target)) { // Идентификатор - $this->settings['peer_id'] = $destination; - } else if (is_array($destination)) { + $this->settings['peer_id'] = $target; + + return $this; + } else if (is_array($target)) { // Идентификаторы - $this->settings['user_ids'] = $destination; - } else if (is_string($destination)) { + $this->settings['user_ids'] = $target; + + return $this; + } else if (is_string($target)) { // Домен - $this->settings['domain'] = $destination; + $this->settings['domain'] = $target; + + return $this; } throw new Exception('Не удалось определить получателя', 500); @@ -142,8 +156,7 @@ class settings implements ArrayAccess match ($name) { 'settings' => isset($this->settings) ? throw new Exception('Запрещено перезаписывать настройки', 500) : $this->settings = $value, 'robot' => isset($this->robot) ? throw new Exception('Запрещено перезаписывать Робота', 500) : $this->robot = $value, - 'data' => $this->offsetSet('data', $value), - 'attachments' => $this->offsetSet('attachments', $value), + 'data', 'attachments' => $this->offsetSet('attachments', $value), default => $this->offsetSet($name, $value) }; } @@ -158,12 +171,21 @@ class settings implements ArrayAccess return match ($name) { 'settings' => $this->settings ?? throw new Exception('Настройки не инициализированы', 500), 'robot' => $this->robot ?? throw new Exception('Робот не инициализирован', 500), - 'data' => $this->offsetGet('data'), - 'attachments' => $this->offsetGet('attachments'), + 'data', 'attachments' => $this->offsetGet('attachments'), default => $this->offsetGet($name) }; } + // public function __unset(string $name): void + // { + // match ($name) { + // 'settings' => throw new Exception('Запрещено удалять настройки', 500), + // 'robot' => throw new Exception('Запрещено удалять робота', 500), + // 'data', 'attachments' => $this->offsetUnset('attachments'), + // default => $this->offsetUnset($name) + // }; + // } + /** * Записать по смещению */ @@ -187,8 +209,14 @@ class settings implements ArrayAccess return $this->settings['attachments'] = $value; } - // Конкатенация - return $this->settings['attachments'][] = $value; + if (empty($this->settings['attachments']) || count($this->settings['attachments']) < 10) { + // Записано менее чем 10 вложений (от 0 до 9) + + // Запись (конкатенация) + return $this->settings['attachments'][] = $value; + } + + throw new Exception('Превышено ограничение на 10 вложений', 500); } else { // Запись по ключу или смещению @@ -219,7 +247,7 @@ class settings implements ArrayAccess return $this->settings[$offset]; } - is_int($offset) ? throw new Exception("Смещение $offset не найдено", 404) : throw new Exception("Ключ $offset не найден", 404); + throw new Exception(is_int($offset) ? "Смещение $offset не найдено" : "Ключ $offset не найден", 404); } throw new Exception('Настройки не инициализированы', 500); diff --git a/hood/vk/system/core.php b/mirzaev/vk/system/core.php similarity index 87% rename from hood/vk/system/core.php rename to mirzaev/vk/system/core.php index f2781ae..900f6b0 100644 --- a/hood/vk/system/core.php +++ b/mirzaev/vk/system/core.php @@ -2,11 +2,11 @@ declare(strict_types=1); -namespace hood\vk; +namespace mirzaev\vk; -use hood\vk\robots\robot; -use hood\vk\traits\singleton; -use hood\vk\loggers\jasmo; +use mirzaev\vk\robots\robot; +use mirzaev\vk\traits\singleton; +use mirzaev\vk\loggers\jasmo; use Exception; @@ -23,7 +23,7 @@ use Exception; * @method public function set($id, $value) Запись в реестр * @method public function get($id = null) Чтение из реестра * - * @package hood\vk + * @package mirzaev\vk * @author Arsen Mirzaev Tatyano-Muradovich */ final class core @@ -75,16 +75,14 @@ final class core private string $path_temp; /** - * Журналист + * Запись в журнал * * @param string $file Файл для журналирования * - * @return self - * * @todo Добавить установку иного журналиста по спецификации PSR-3 * @todo Более гибкое журналирование */ - public function log(string $file = null): self + public function journal(string $file = null): self { // Инициализация журналиста (требует переработки) jasmo::init()::post($file)::postErrorHandler()::postShutdownHandler(); @@ -98,9 +96,7 @@ final class core * @param int $id * @param robot $robot * - * @see hood\vk\traits\registry Модификация метода - * - * @return void + * @see mirzaev\vk\traits\registry Модификация метода */ public function write(int $id, robot $robot): void { @@ -131,7 +127,7 @@ final class core * @param int|null $id Идентификатор * @param int|null $session Сессия * - * @see hood\vk\traits\registry Модификация метода + * @see mirzaev\vk\traits\registry Модификация метода * * @return mixed Весь реестр, робота или сессию робота */ @@ -171,9 +167,7 @@ final class core * @param int|null $id Идентификатор * @param int|null $session Сессия * - * @see hood\vk\traits\registry Модификация метода - * - * @return void + * @see mirzaev\vk\traits\registry Модификация метода */ public function delete(int|null $id = null, int|null $session = null): void { @@ -222,8 +216,6 @@ final class core * * @param mixed $name Название * @param mixed $value Значение - * - * @return void */ public function __set(mixed $name, mixed $value): void { @@ -239,17 +231,15 @@ final class core * Прочитать свойство * * @param mixed $name Название - * - * @return mixed */ public function __get(mixed $name): mixed { return match ($name) { 'robots' => $this->robots, - 'timezone' => !isset($this->timezone) ? $this->timezone = 'Europe/Moscow' : $this->timezone, - 'path_root' => !isset($this->path_root) ? $this->path_root = dirname(__DIR__) : $this->path_root, - 'path_logs' => !isset($this->path_logs) ? $this->path_logs = $this->path_root . '/logs' : $this->path_logs, - 'path_temp' => !isset($this->path_temp) ? $this->path_root . '/temp' : $this->path_temp, + 'timezone' => $this->timezone ?? $this->timezone = 'Europe/Moscow', + 'path_root' => $this->path_root ?? $this->path_root = dirname(__DIR__), + 'path_logs' => $this->path_logs ?? $this->path_logs = $this->__get('path_root') . '/logs', + 'path_temp' => $this->path_temp ?? $this->path_temp = $this->__get('path_root') . '/temp', default => null }; } @@ -262,12 +252,10 @@ final class core * * @param string $method Метод * @param array $params Параметры - * - * @return robot */ public function __call(string $method, array $params): robot { - if (class_exists($robot = '\\hood\\vk\\robots\\' . $method)) { + if (class_exists($robot = '\\mirzaev\\vk\\robots\\' . $method)) { // Если найден класс реализующий запрошенного робота return new $robot(...$params); } else { diff --git a/hood/vk/system/loggers/jasmo.php b/mirzaev/vk/system/loggers/jasmo.php similarity index 95% rename from hood/vk/system/loggers/jasmo.php rename to mirzaev/vk/system/loggers/jasmo.php index 6aebe22..960b948 100644 --- a/hood/vk/system/loggers/jasmo.php +++ b/mirzaev/vk/system/loggers/jasmo.php @@ -2,25 +2,25 @@ declare(strict_types=1); -namespace hood\vk\loggers; +namespace mirzaev\vk\loggers; use DateTime; use Monolog\logger; use Monolog\Handler\StreamHandler; use Jasny\ErrorHandler; -use hood\vk\core, - hood\vk\traits\singleton; +use mirzaev\vk\core, + mirzaev\vk\traits\singleton; /** * Журналист Jasmo - * - * Основан на "monolog/monolog" и "jasny/error-handler" + * + * Основан на "monolog/monolog" и "jasny/error-handler" * Jasmo = Jasny + Monolog - * + * * @see Monolog\logger * @see Jasny\ErrorHandler - * - * @package hood\vk\loggers + * + * @package mirzaev\vk\loggers * @author Arsen Mirzaev Tatyano-Muradovich */ final class jasmo extends logger @@ -37,7 +37,7 @@ final class jasmo extends logger // /** // * Экземпляр класса обработчика ошибок // * - // * @var ErrorHandler + // * @var ErrorHandler // */ // public ErrorHandler $handler; @@ -45,15 +45,15 @@ final class jasmo extends logger { $file = $file ?? date_format(new DateTime(core::init()->timezone), 'Y.m.d'); - /** + /** * Создание логгера по спецификации PSR-3 (Monolog) - * + * * @param string Название канала логирования */ self::$logger = new logger(__CLASS__); - /** - * Создание обработчиков (порядок обязателен) + /** + * Создание обработчиков (порядок обязателен) */ self::$logger->pushHandler(new StreamHandler(core::init()->path['logs'] . "/${file}-INFO.log", logger::INFO, false)); // Инфомация о процессе работы self::$logger->pushHandler(new StreamHandler(core::init()->path['logs'] . "/${file}-NOTICE.log", logger::NOTICE, false)); // Уведомления @@ -89,7 +89,7 @@ final class jasmo extends logger public static function postErrorHandler(): ?jasmo { - /** + /** * Подключение логгера в обработчик ошибок (Jasny) */ $handler = new ErrorHandler(self::$logger); diff --git a/hood/vk/system/loggers/logger.php b/mirzaev/vk/system/loggers/logger.php similarity index 88% rename from hood/vk/system/loggers/logger.php rename to mirzaev/vk/system/loggers/logger.php index 68b45d1..daef2c0 100644 --- a/hood/vk/system/loggers/logger.php +++ b/mirzaev/vk/system/loggers/logger.php @@ -2,12 +2,12 @@ declare(strict_types=1); -namespace hood\vk\loggers; +namespace mirzaev\vk\loggers; /** * Абстрактный класс журналиста - * - * @package hood\vk\loggers + * + * @package mirzaev\vk\loggers * @author Arsen Mirzaev Tatyano-Muradovich */ abstract class logger @@ -22,4 +22,4 @@ abstract class logger abstract static public function post($file = null): ?logger; abstract static public function get(): ?logger; abstract static public function delete(): ?logger; -} \ No newline at end of file +} diff --git a/hood/vk/system/robots/group.php b/mirzaev/vk/system/robots/group.php similarity index 91% rename from hood/vk/system/robots/group.php rename to mirzaev/vk/system/robots/group.php index 739e396..9f644ad 100644 --- a/hood/vk/system/robots/group.php +++ b/mirzaev/vk/system/robots/group.php @@ -2,10 +2,10 @@ declare(strict_types=1); -namespace hood\vk\robots; +namespace mirzaev\vk\robots; -use hood\vk\robots\robot; -use hood\vk\api\longpoll; +use mirzaev\vk\robots\robot; +use mirzaev\vk\api\longpoll; use Throwable; use Exception; @@ -19,7 +19,7 @@ use Exception; * @method public function __get($name) Чтение свойства * @method public function __isset($name) Проверка на инициализированность свойства * - * @package hood\vk\robots + * @package mirzaev\vk\robots * @author Arsen Mirzaev Tatyano-Muradovich */ final class group extends robot @@ -35,7 +35,7 @@ final class group extends robot * @param string $name Название * @param mixed $value Значение * - * @see hood\vk\robots\robot Наследуемый метод + * @see mirzaev\vk\robots\robot Наследуемый метод * * @return void */ @@ -58,7 +58,7 @@ final class group extends robot * * @param string $name Название * - * @see hood\vk\robots\robot Наследуемый метод + * @see mirzaev\vk\robots\robot Наследуемый метод * * @return mixed */ diff --git a/hood/vk/system/robots/robot.php b/mirzaev/vk/system/robots/robot.php similarity index 95% rename from hood/vk/system/robots/robot.php rename to mirzaev/vk/system/robots/robot.php index 9cf274b..1323304 100644 --- a/hood/vk/system/robots/robot.php +++ b/mirzaev/vk/system/robots/robot.php @@ -2,19 +2,19 @@ declare(strict_types=1); -namespace hood\vk\robots; +namespace mirzaev\vk\robots; use Exception; use GuzzleHttp\Client as browser; -use hood\vk\core; -use hood\vk\proxies\proxy; -use hood\vk\captcha\captcha; -use hood\vk\api\settings as api; -use hood\vk\api\methods\method; +use mirzaev\vk\core; +use mirzaev\vk\proxies\proxy; +use mirzaev\vk\captcha\captcha; +use mirzaev\vk\api\settings as api; +use mirzaev\vk\api\methods\method; -use hood\accounts\vk as account; +use mirzaev\accounts\vk as account; /** @@ -41,7 +41,7 @@ use hood\accounts\vk as account; * @method public static function __callStatic(string $method, array $params) Вызов статического метода * @method public function __toString() Конвертация в строку * - * @package hood\vk\robots + * @package mirzaev\vk\robots * @author Arsen Mirzaev Tatyano-Muradovich */ abstract class robot @@ -241,7 +241,7 @@ abstract class robot */ public function __call(string $method, array $params): method { - if (class_exists($class = '\\hood\\vk\\api\\methods\\' . $method . 's')) { + if (class_exists($class = '\\mirzaev\\vk\\api\\methods\\' . $method . 's')) { // Если найден класс реализующий запрошенный метод return new $class($this, ...$params); } @@ -262,7 +262,7 @@ abstract class robot */ public static function __callStatic(string $method, array $params): method { - if (class_exists($class = '\\hood\\vk\\api\\methods\\' . $method . 's')) { + if (class_exists($class = '\\mirzaev\\vk\\api\\methods\\' . $method . 's')) { return $class(self, ...$params); } diff --git a/hood/vk/system/robots/user.php b/mirzaev/vk/system/robots/user.php similarity index 79% rename from hood/vk/system/robots/user.php rename to mirzaev/vk/system/robots/user.php index 8bf401c..7bb878d 100644 --- a/hood/vk/system/robots/user.php +++ b/mirzaev/vk/system/robots/user.php @@ -2,16 +2,16 @@ declare(strict_types=1); -namespace hood\vk\robots; +namespace mirzaev\vk\robots; -use hood\vk\robots\robot; +use mirzaev\vk\robots\robot; -use hood\accounts\vk as account; +use mirzaev\accounts\vk as account; /** * Робот-пользователь * - * @package hood\vk\robots + * @package mirzaev\vk\robots * @author Arsen Mirzaev Tatyano-Muradovich */ final class user extends robot diff --git a/hood/vk/system/traits/registry.php b/mirzaev/vk/system/traits/registry.php similarity index 97% rename from hood/vk/system/traits/registry.php rename to mirzaev/vk/system/traits/registry.php index b50adbd..fe6b2e3 100644 --- a/hood/vk/system/traits/registry.php +++ b/mirzaev/vk/system/traits/registry.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace hood\vk\traits; +namespace mirzaev\vk\traits; /** * Паттерн registry diff --git a/hood/vk/system/traits/singleton.php b/mirzaev/vk/system/traits/singleton.php similarity index 96% rename from hood/vk/system/traits/singleton.php rename to mirzaev/vk/system/traits/singleton.php index bcb92b2..d8b354e 100644 --- a/hood/vk/system/traits/singleton.php +++ b/mirzaev/vk/system/traits/singleton.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace hood\vk\traits; +namespace mirzaev\vk\traits; use Exception; @@ -27,7 +27,7 @@ trait singleton /** * Инициализация - * + * * @return self */ public static function init(): self diff --git a/hood/vk/temp/191417381_0.longpoll b/mirzaev/vk/temp/191417381_0.longpoll similarity index 100% rename from hood/vk/temp/191417381_0.longpoll rename to mirzaev/vk/temp/191417381_0.longpoll diff --git a/mirzaev/vk/temp/191417381_1.longpoll b/mirzaev/vk/temp/191417381_1.longpoll new file mode 100644 index 0000000..c750cc8 --- /dev/null +++ b/mirzaev/vk/temp/191417381_1.longpoll @@ -0,0 +1 @@ +9104 \ No newline at end of file diff --git a/hood/vk/tests/.gitignore b/mirzaev/vk/tests/.gitignore similarity index 100% rename from hood/vk/tests/.gitignore rename to mirzaev/vk/tests/.gitignore diff --git a/hood/vk/tests/accounts/.gitignore b/mirzaev/vk/tests/accounts/.gitignore similarity index 100% rename from hood/vk/tests/accounts/.gitignore rename to mirzaev/vk/tests/accounts/.gitignore diff --git a/mirzaev/vk/tests/api/apiTest.php b/mirzaev/vk/tests/api/apiTest.php new file mode 100644 index 0000000..14189dd --- /dev/null +++ b/mirzaev/vk/tests/api/apiTest.php @@ -0,0 +1,273 @@ +ssl = self::$ssl ?? true; + + if (empty(self::$key)) { + // Если не указан ключ + + // Проверка входных данных + if (empty(self::$login)) { + self::markTestSkipped('Не инициализирован входной аккаунта'); + } else if (empty(self::$password)) { + self::markTestSkipped('Не инициализирован пароль аккаунта'); + } + + // Деаутентификация (на всякий случай) + self::$account->deauth(); + + // Аутентификация и генерация ключа + self::$key = self::$account->auth(self::$login, self::$password)->key(self::$project_id); + } + + $this->assertNotNull(self::$key, 'Ошибка при инициализации ключа аккаунта'); + } + + /** + * @testdox Деинициализация аккаунта + * @afterClass + */ + public static function testAccountDeinit(): void + { + // Инициализация аккаунта + self::$account = new account(self::$id ?? rand(0, 10), self::$path_accounts); + + // Деаутентификация + self::$account->deauth(); + } + + /** + * @testdox Инициализация робота-группы + * @before + */ + public function testRobotGroupInit(): void + { + // Инициализация ядра + self::$core = core::init(); + + // Сохранение количества роботов + $count = self::$core->robots; + + // Инициализация робота + self::$robot = self::$core->group(self::$group_id ?? rand(0, 10)); + + // Проверка + $this->assertSame(self::$core->robots, $count + 1, 'Ошибка при инициализации робота-группы'); + } + + /** + * @testdox Деинициализация робота-группы + * @after + */ + public function testRobotGroupDeinit(): void + { + // Очистка реестра + self::$core->delete(); + + // Проверка выброса исключения (НЕ РАБОТАЕТ, ВЕРОЯТНО БАГ) + // $this->expectExceptionMessage('Робот с идентификатором ' . self::$robot->id . ' не найден'); + // $this->expectExceptionCode(404); + + try { + // Чтение + self::$core->read(self::$robot->id); + } catch (RealException $e) { + // Проверка + $this->assertSame('Робот с идентификатором ' . self::$robot->id . ' не найден', $e->getMessage(), 'Не удалось удалить робота'); + } + } + + /** + * @testdox Инициализация + */ + public function testInit(): void + { + // Инициализация + $settings = self::$robot->key(self::$group_key)->api->init(self::$version); + + // Проверка + $this->assertNotNull($settings['access_token']); + $this->assertNotNull($settings['v']); + $this->assertSame($settings['v'], self::$version); + + // Проверка + $this->expectExceptionMessage('Повторная инициализация запрещена'); + + // Инициализация (повторная) + $settings = self::$robot->api->init(self::$version); + } + + /** + * @testdox Реинициализация + */ + public function testReinit(): void + { + // Реинициализация + self::$robot->key(self::$group_key)->api->reinit(); + } + + /** + * @testdox Запись и чтение параметра + */ + public function testWriteAndReadParameter(): void + { + // Запись + self::$robot->key(self::$group_key)->api['key'] = 'value'; + + // Проверка + $this->assertSame('value', self::$robot->api['key'], 'Не удалось записать или прочитать параметр'); + } + + /** + * @testdox Чтение неинициализированного параметра + */ + public function testReadUndefinedParameter(): void + { + // Проверка выброса исключения + $this->expectExceptionMessage('Ключ key не найден'); + + // Чтение + self::$robot->key(self::$group_key)->api['key']; + } + + /** + * @testdox Выбор получателя по идентификатору + */ + public function testChooseDestinationById(): void + { + // Выбор получателя + self::$robot->key(self::$group_key)->api->destination(self::$target_id); + + // Проверка + $this->assertSame(self::$target_id, self::$robot->api['peer_id'], 'Не удалось выбрать получателя по идентификатору'); + } + + /** + * @testdox Выбор получателей по идентификаторам + */ + public function testChooseDestinationsByIds(): void + { + // Выбор получателей + self::$robot->key(self::$group_key)->api->destination([self::$target_id, self::$target_id]); + + // Проверка + $this->assertSame([self::$target_id, self::$target_id], self::$robot->api['user_ids'], 'Не удалось выбрать получателей по идентификаторам'); + } + + /** + * @testdox Выбор получателя по домену + */ + public function testChooseDestinationByDomain(): void + { + // Выбор получателя + self::$robot->key(self::$group_key)->api->destination(self::$target_domain); + + // Проверка + $this->assertSame(self::$target_domain, self::$robot->api['domain'], 'Не удалось выбрать получателя по домену'); + } + + /** + * @testdox Запись, чтение и удаление вложений + */ + public function testWriteAndReadAttachments(): void + { + // Инициализация + self::$robot->key(self::$group_key); + + // Запись + self::$robot->api['attachments'] = 'photo0000_0000'; + self::$robot->api['attachments'] = 'video0000_0000'; + self::$robot->api['attachments'] = 'audio0000_0000'; + + // Проверка + $this->assertSame(['photo0000_0000', 'video0000_0000', 'audio0000_0000'], self::$robot->api['attachments'], 'Не удалось записать или прочитать вложения'); + + // Удаление одного вложения + unset(self::$robot->api['attachments'][0]); + + // Реинициализация смещений (для точной проверки) + self::$robot->api['attachments'] = array_values(self::$robot->api['attachments']); + + // Проверка + $this->assertSame(['video0000_0000', 'audio0000_0000'], self::$robot->api['attachments'], 'Не удалось удалить или прочитать вложения'); + + // Удаление всех вложений + unset(self::$robot->api['attachments']); + + // Проверка + $this->assertNull(self::$robot->api['attachments'], 'Не удалось удалить вложения'); + } + + /** + * @testdox Запись вложений с превышением ограничения + */ + public function testWriteWithOverflowAttachments() + { + // Проверка выброса исключения + $this->expectExceptionMessage('Превышено ограничение на 10 вложений'); + + // Инициализация + self::$robot->key(self::$group_key); + + // Запись (11 вложений) + self::$robot->api['attachments'] = 'photo0000_0000'; + self::$robot->api['attachments'] = 'video0000_0000'; + self::$robot->api['attachments'] = 'audio0000_0000'; + self::$robot->api['attachments'] = 'photo0000_0000'; + self::$robot->api['attachments'] = 'video0000_0000'; + self::$robot->api['attachments'] = 'audio0000_0000'; + self::$robot->api['attachments'] = 'photo0000_0000'; + self::$robot->api['attachments'] = 'video0000_0000'; + self::$robot->api['attachments'] = 'audio0000_0000'; + self::$robot->api['attachments'] = 'photo0000_0000'; + self::$robot->api['attachments'] = 'video0000_0000'; + } +} diff --git a/hood/vk/tests/api/methods/messagesTest.php b/mirzaev/vk/tests/api/methods/messagesTest.php similarity index 93% rename from hood/vk/tests/api/methods/messagesTest.php rename to mirzaev/vk/tests/api/methods/messagesTest.php index a2201b4..19980c8 100644 --- a/hood/vk/tests/api/methods/messagesTest.php +++ b/mirzaev/vk/tests/api/methods/messagesTest.php @@ -4,15 +4,15 @@ declare(strict_types=1); use PHPUnit\Framework\TestCase; -use hood\vk\core; -use hood\vk\robots\robot; -use hood\vk\tests\settings; +use mirzaev\vk\core; +use mirzaev\vk\robots\robot; +use mirzaev\vk\tests\settings; -use hood\accounts\vk as account; -use hood\accounts\vk; +use mirzaev\accounts\vk as account; +use mirzaev\accounts\vk; /** - * @testdox Сообщения + * @testdox [МЕТОД] Сообщения */ final class messagesTest extends TestCase { @@ -99,7 +99,7 @@ final class messagesTest extends TestCase self::$robot = self::$core->group(empty(self::$group_id) ? rand(0, 10) : self::$group_id); // Проверка - $this->assertEquals(self::$core->robots, $count + 1, 'Ошибка при инициализации робота'); + $this->assertSame(self::$core->robots, $count + 1, 'Ошибка при инициализации робота'); } /** @@ -112,7 +112,7 @@ final class messagesTest extends TestCase self::$core->delete(); // Проверка - $this->assertEmpty(self::$core->get(self::$robot->id), 'Ошибка при деинициализации робота'); + $this->assertEmpty(self::$core->read(self::$robot->id), 'Ошибка при деинициализации робота'); } /** @@ -145,13 +145,13 @@ final class messagesTest extends TestCase public function testWriteTextWhenHeIsAlreadyWrited(): void { // Запись текста - $message = self::$robot->message()->text('text'); + $message = self::$robot->message()->text('hello'); // Повторная запись текста - $message->text('text'); + $message->text(' world'); // Проверка - $this->assertEquals('texttext', $message->text); + $this->assertSame('hello world', $message->text, ); } /** @@ -169,7 +169,7 @@ final class messagesTest extends TestCase /** * @testdox Получение информации о сообщении */ - public function testgetById(): void + public function testGetById(): void { // Отправка сообщения $id = self::$robot->key(self::$group_key)->message('Теста метода getByID')->send(self::$target_id); @@ -203,7 +203,7 @@ final class messagesTest extends TestCase $message = self::$robot->message()->attachments('Вложение'); // Проверка - $this->assertEquals(['Вложение'], $message->data); + $this->assertSame(['Вложение'], $message->data); } /** @@ -272,7 +272,7 @@ final class messagesTest extends TestCase // Запись пересылаемых сообщений $message = self::$robot->message('Тест пересылки сообщений')->forward($id); - + // Отпрравка пересылки сообщения $id = $message->send(self::$target_id); diff --git a/hood/vk/tests/api/methods/photosTest.php b/mirzaev/vk/tests/api/methods/photosTest.php similarity index 97% rename from hood/vk/tests/api/methods/photosTest.php rename to mirzaev/vk/tests/api/methods/photosTest.php index 83a644d..bd7a0a0 100644 --- a/hood/vk/tests/api/methods/photosTest.php +++ b/mirzaev/vk/tests/api/methods/photosTest.php @@ -4,11 +4,11 @@ declare(strict_types=1); use PHPUnit\Framework\TestCase; -use hood\vk\core; -use hood\vk\robots\robot; -use hood\vk\tests\settings; +use mirzaev\vk\core; +use mirzaev\vk\robots\robot; +use mirzaev\vk\tests\settings; -use hood\accounts\vk as account; +use mirzaev\accounts\vk as account; /** * @testdox Фото diff --git a/hood/vk/tests/robots/groupTest.php b/mirzaev/vk/tests/robots/groupTest.php similarity index 98% rename from hood/vk/tests/robots/groupTest.php rename to mirzaev/vk/tests/robots/groupTest.php index 0bda0cf..e53dd20 100644 --- a/hood/vk/tests/robots/groupTest.php +++ b/mirzaev/vk/tests/robots/groupTest.php @@ -4,11 +4,11 @@ declare(strict_types=1); use PHPUnit\Framework\TestCase; -use hood\vk\core; -use hood\vk\robots\robot; -use hood\vk\tests\settings; +use mirzaev\vk\core; +use mirzaev\vk\robots\robot; +use mirzaev\vk\tests\settings; -use hood\accounts\vk as account; +use mirzaev\accounts\vk as account; /** * @testdox Робот-группа diff --git a/hood/vk/tests/robots/userTest.php b/mirzaev/vk/tests/robots/userTest.php similarity index 98% rename from hood/vk/tests/robots/userTest.php rename to mirzaev/vk/tests/robots/userTest.php index e6f355b..42ddc59 100644 --- a/hood/vk/tests/robots/userTest.php +++ b/mirzaev/vk/tests/robots/userTest.php @@ -4,11 +4,11 @@ declare(strict_types=1); use PHPUnit\Framework\TestCase; -use hood\vk\core; -use hood\vk\robots\robot; -use hood\vk\tests\settings; +use mirzaev\vk\core; +use mirzaev\vk\robots\robot; +use mirzaev\vk\tests\settings; -use hood\accounts\vk as account; +use mirzaev\accounts\vk as account; /** * @testdox Робот-пользователь diff --git a/mirzaev/vk/tests/settings.php.example b/mirzaev/vk/tests/settings.php.example new file mode 100644 index 0000000..bc6563f --- /dev/null +++ b/mirzaev/vk/tests/settings.php.example @@ -0,0 +1,88 @@ +group(12312)->key(1); +$robot = $core->group(12312)->key(1); +$robot = $core->group()->key(1); +$robot = $core->group()->key(1); + +$settings = new settings($robot); + +$settings['data']['test']['a'] = 2; +$settings['data'] = 2; + +var_export($core->read());