vk/hood/vk/tests/robots/groupTest.php

249 lines
8.1 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?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, 'Не удалось прочитать версию');
}
}