249 lines
8.1 KiB
PHP
249 lines
8.1 KiB
PHP
<?php
|
||
|
||
declare(strict_types=1);
|
||
|
||
use PHPUnit\Framework\TestCase;
|
||
|
||
use hood\vk\core,
|
||
hood\vk\robots\robot,
|
||
hood\vk\tests\settings;
|
||
|
||
use hood\accounts\vk as account;
|
||
|
||
/**
|
||
* @testdox Робот-группа
|
||
*/
|
||
final class groupTest extends TestCase
|
||
{
|
||
use settings;
|
||
|
||
/**
|
||
* @var core $core Ядро фреймворка
|
||
*/
|
||
private static core $core;
|
||
|
||
/**
|
||
* @var account $account Аккаунт
|
||
*/
|
||
protected static account $account;
|
||
|
||
/**
|
||
* @var robot $robot Робот
|
||
*/
|
||
private static robot $robot;
|
||
|
||
/**
|
||
* @testdox Деинициализация аккаунта
|
||
* @afterClass
|
||
*/
|
||
public static function testAccountDeinit(): void
|
||
{
|
||
// Инициализация аккаунта
|
||
self::$account = new account(empty(self::$id) ? rand(0, 10) : self::$id, __DIR__ . '../../accounts');
|
||
|
||
// Деаутентификация
|
||
self::$account->deauth();
|
||
}
|
||
|
||
/**
|
||
* @testdox Инициализация аккаунта
|
||
* @beforeClass
|
||
*/
|
||
public function testAccountInit(): void
|
||
{
|
||
// Проверка входных данных
|
||
if (empty(self::$project_id)) {
|
||
self::$markTestSkipped('Не найден идентификатор проекта');
|
||
}
|
||
|
||
// Инициализация аккаунта
|
||
self::$account = new account(empty(self::$id) ? rand(0, 10) : self::$id, __DIR__ . '../../accounts');
|
||
|
||
// Запись режима SSL-протокола
|
||
self::$account->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 Деинициализация робота
|
||
* @after
|
||
*/
|
||
public function testRobotGroupDeinit(): void
|
||
{
|
||
// Очистка реестра
|
||
self::$core->delete();
|
||
|
||
// Проверка
|
||
$this->assertEmpty(self::$core->get(self::$robot->id), 'Ошибка при деинициализации робота');
|
||
}
|
||
|
||
/**
|
||
* @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 Запись идентификатора
|
||
*/
|
||
public function testRobotGroupWriteId(): void
|
||
{
|
||
// Проверка выброса исключения
|
||
$this->expectExceptionMessage('Запрещено перезаписывать идентификатор');
|
||
|
||
// Запись идентификатора
|
||
self::$robot->id = empty(self::$robot->id) ? rand(0, 10) : self::$robot->id;
|
||
}
|
||
|
||
/**
|
||
* @testdox Чтение идентификатора
|
||
*/
|
||
public function testRobotGroupReadId(): void
|
||
{
|
||
// Проверки
|
||
$this->assertNotNull(self::$robot->id, 'Не удалось прочитать идентификатор');
|
||
$this->assertNotEmpty(self::$core->get(self::$robot->id), 'Робот не найден');
|
||
}
|
||
|
||
/**
|
||
* @testdox Запись сессии
|
||
*/
|
||
public function testRobotGroupWriteSession(): void
|
||
{
|
||
// Проверка выброса исключения
|
||
$this->expectExceptionMessage('Запрещено перезаписывать сессию');
|
||
|
||
// Запись сессии
|
||
self::$robot->session = rand(0, 10);
|
||
}
|
||
|
||
/**
|
||
* @testdox Чтение сессии
|
||
*/
|
||
public function testRobotGroupReadSession(): void
|
||
{
|
||
// Проверки
|
||
$this->assertNotNull(self::$robot->session, 'Не удалось прочитать сессию');
|
||
$this->assertNotEmpty(self::$core->get(self::$robot->id, self::$robot->session), 'Сессия не найдена');
|
||
}
|
||
|
||
/**
|
||
* @testdox Запись ключа
|
||
*/
|
||
public function testRobotGroupWriteKey(): void
|
||
{
|
||
// Запись ключа
|
||
self::$robot->key = empty(self::$group_key) ? rand(0, 10) : self::$group_key;
|
||
|
||
// Проверка ключа
|
||
$this->assertNotNull(self::$robot->key, 'Не удалось записать ключ робота-группы');
|
||
}
|
||
|
||
/**
|
||
* @testdox Запись ключа с использованием метода
|
||
*/
|
||
public function testRobotGroupWriteKeyUsingMethod(): void
|
||
{
|
||
// Запись ключа
|
||
self::$robot->key((string) (empty(self::$group_key) ? rand(0, 10) : self::$group_key));
|
||
|
||
// Проверка ключа
|
||
$this->assertNotNull(self::$robot->key, 'Не удалось записать ключ робота-группы');
|
||
}
|
||
|
||
/**
|
||
* @testdox Запись ключа (повторная)
|
||
*/
|
||
public function testRobotGroupWriteKeyWhenHeIsAlreadyWrited(): void
|
||
{
|
||
// Запись ключа
|
||
self::$robot->key = empty(self::$group_key) ? rand(0, 10) : self::$group_key;
|
||
|
||
// Проверка ключа
|
||
$this->assertNotNull(self::$robot->key, 'Не удалось записать ключ робота-группы');
|
||
|
||
// Проверка выброса исключения
|
||
$this->expectExceptionMessage('Запрещено перезаписывать ключ');
|
||
|
||
// Повторная запись ключа
|
||
self::$robot->key = empty(self::$group_key) ? rand(0, 10) : self::$group_key;
|
||
}
|
||
|
||
/**
|
||
* @testdox Чтение ключа
|
||
*/
|
||
public function testRobotGroupReadKey(): void
|
||
{
|
||
// Запись ключа
|
||
self::$robot->key((string) (empty(self::$group_key) ? rand(0, 10) : self::$group_key));
|
||
|
||
// Проверки
|
||
$this->assertNotNull(self::$robot->key, 'Не удалось записать ключ робота-группы');
|
||
$this->assertNotNull(self::$robot->key, 'Не удалось прочитать ключ');
|
||
}
|
||
|
||
/**
|
||
* @testdox Чтение ключа, если он не инициализирован
|
||
*/
|
||
public function testRobotGroupReadKeyWhenHeIsNotInit(): void
|
||
{
|
||
// Проверка выброса исключения
|
||
$this->expectExceptionMessage('Ключ не инициализирован');
|
||
|
||
// Чтение ключа
|
||
$key = self::$robot->key;
|
||
}
|
||
|
||
/**
|
||
* @testdox Запись версии API
|
||
*/
|
||
public function testRobotGroupWriteVersion(): void
|
||
{
|
||
// Проверка выброса исключения
|
||
$this->expectExceptionMessage('Запрещено перезаписывать версию API');
|
||
|
||
// Запись версии
|
||
self::$robot->version = empty(self::$robot->version) ? rand(0, 10) : self::$robot->version;
|
||
}
|
||
|
||
/**
|
||
* @testdox Чтение версии
|
||
*/
|
||
public function testRobotGroupReadVersion(): void
|
||
{
|
||
// Проверка
|
||
$this->assertNotNull(self::$robot->version, 'Не удалось прочитать версию');
|
||
}
|
||
}
|