<?php namespace infrajs\infra; use infrajs\access\Access; use infrajs\event\Event; use infrajs\ans\Ans; use infrajs\load\Load; if (!is_file('vendor/autoload.php')) { chdir('../../../../'); require_once 'vendor/autoload.php'; } $ans = array(); $ans['title'] = 'Тест на декодирование JSON'; $source = '""'; $data = Load::json_decode($source); if ($data !== '') { return Ans::err($ans, 'Не может декодировать'); } return Ans::ret($ans, 'Декодировано');
return new Fix('del'); } //пробовал передавать не new infra_Fix, а просто infra_Fix массив удалялся полностью, ну или просто функция неправильно срабатывала. }); if ($res !== null) { return Ans::err($ans, 'Странный результат'); } if ($count3 != $len) { return Ans::err($ans, 'Неожиданное количество выполненией'); } if ($ar3[3] == 4) { return Ans::err($ans, 'Не работает удаление'); } //Протестировать back $ar = array(1, 2, 3, 4, 5, 6); $count = 0; $res = Each::forr($ar, function ($el) use(&$count) { return new Fix('del', false); }, true); if (isset($ar[5])) { return Ans::err($ans, 'Не работает back'); } $ar = array(1, 2, 3, 4, 5, 6); $res = Each::forr($ar, function ($el) { return $el; }, true); if ($res != 6) { return Ans::err($ans, 'Не работает back'); } return Ans::ret($ans, 'Всё ок');
<?php namespace infrajs\update; use infrajs\ans\Ans; if (!is_file('vendor/autoload.php')) { chdir('../../../'); require_once 'vendor/autoload.php'; } Update::init(); $ans = array(); if (Update::$is) { return Ans::ret($ans, 'Сейчас идёт обновление'); } return Ans::ret($ans, 'Обновление сейчас не идёт');
<?php namespace infrajs\yml; use infrajs\path\Path; use infrajs\ans\Ans; if (!is_file('vendor/autoload.php')) { chdir('../../../../'); require_once 'vendor/autoload.php'; } $ans = []; if (!is_dir('data/')) { return Ans::err($ans, 'Папки data нет'); } if (!is_file('data/yml.xlsx')) { return Ans::err($ans, 'Файла excel нет'); } $src = '~yml.xlsx'; if (!Path::theme($src)) { return Ans::err($ans, 'Файл не найден.' . $src); } return Ans::ret($ans);
$b =& $a; $a = 2; if ($b !== 2) { return Ans::err($ans, 'Амперсанд глючит в простой ситуации'); } function &funcamp(&$t) { return $t; } $c = 5; $newc =& funcamp($c); $c = 6; if ($newc !== 6) { return Ans::err($ans, 'Амперсанд глючит в функции'); } $megac =& call_user_func('funcamp', $c); $c = 7; if ($megac === 7) { return Ans::err($ans, 'Амперсанд в call_user_func вдруг заработал, это очень странно!'); } $funcamp2 = function &(&$arg) { return $arg; }; $d = 5; $superc =& call_user_func_array($funcamp2, array(&$d)); $d = 8; if ($superc == 8) { return Ans::err($ans, 'Амперсанд в call_user_func_array вдруг работает! Это неожиданно!'); } return Ans::ret($ans, 'Ссылки работают, ну или ведут себя предстказуемо.');
use infrajs\router\Router; use infrajs\ans\Ans; use infrajs\config\Config; use infrajs\cache\Cache; if (!is_file('vendor/autoload.php')) { chdir('../../../'); //Согласно фактическому расположению файла require_once 'vendor/autoload.php'; Router::init(); } $conf = Config::get('contacts'); if (!$conf['yaCounter']) { $ans['class'] = 'bg-warning'; $yc = 'Не указан счётчик Яндекс.Метрики с целью contacts. Config.contacts.yaCounter'; } else { $yc = 'Яндекс.Метрика указана'; } if ($conf['reCAPTCHA']) { if (empty($conf['reCAPTCHA_secret'])) { return Ans::err($ans, 'Для reCAPTCHA не указан secret.' . $yc); } if (empty($conf['reCAPTCHA_sitekey'])) { return Ans::err($ans, 'Для reCAPTCHA не указан sitekey.' . $yc); } } else { $ans['class'] = 'bg-warning'; return Ans::ret($ans, '<a href="https://www.google.com/recaptcha/intro/index.html">reCAPTCHA</a> отключена.' . $yc); } return Ans::ret($ans, $yc);
<?php namespace infrajs\mem; use infrajs\ans\Ans; if (!is_file('vendor/autoload.php')) { chdir('../../../../'); } require_once 'vendor/autoload.php'; $ans = array(); $ans['title'] = 'Проверка кэша'; $conf = Mem::$conf; if ($conf['type'] != 'fs') { $ans['class'] = "bg-warning"; return Ans::ret($ans, 'Mem не настроен на файловую систему'); } Mem::set('test', true); $val = Mem::get('test'); if (!$val) { return Ans::err($ans, 'Неудалось восстановить значение. Требуется F5'); } return Ans::ret($ans, 'Кэш работает');
<?php use infrajs\access\Access; use infrajs\event\Event; use infrajs\ans\Ans; use infrajs\path\Path; use infrajs\each\Each; use infrajs\config\Config; if (!is_file('vendor/autoload.php')) { chdir('../../../../'); require_once 'vendor/autoload.php'; } $ans = array(); $ans['title'] = 'Проверка наличия папок'; $conf = Config::get(); if ($conf['mem']['type'] == 'fs') { $dirs = Config::get('path'); if (!Path::theme($dirs['cache'])) { return Ans::err($ans, 'Нет папки ' . $dirs['cache']); } if (!Path::theme($dirs['data'])) { return Ans::err($ans, 'Нет папки ' . $dirs['data']); } return Ans::ret($ans, 'Обязательные папки есть'); } else { return Ans::ret($ans, 'Используется memcache. Папки не создаются.'); }
<?php namespace infrajs\infra; use infrajs\access\Access; use infrajs\event\Event; use infrajs\ans\Ans; use infrajs\path\Path; use infrajs\sequence\Sequence; use infrajs\load\Load; if (!is_file('vendor/autoload.php')) { chdir('../../../../'); require_once 'vendor/autoload.php'; } $ans = array('title' => 'Проверка функции strtolower'); $s1 = 'Кирилица utf8'; $s2 = 'кирилица utf8'; if (mb_strtolower($s1) != $s2) { return Ans::err($ans, 'mb_strtolower не работает '); } return Ans::ret($ans, 'infra strtolower работает');
$ans['title'] = 'Тест на значение отладки debug и test'; $conf = Config::get('access'); if (Access::debug() && !is_string($conf['debug']) && !is_array($conf['debug'])) { $ans['class'] = 'bg-warning'; return Ans::ret($ans, 'Значение config.infra.debug = true'); } if (Access::test() && !is_string($conf['test']) && !is_array($conf['test'])) { $ans['class'] = 'bg-warning'; return Ans::ret($ans, 'Значение config.infra.test = true'); } $debug = $conf['debug']; if ($debug) { if (!is_array($debug)) { $debug = array($debug); } $key = array_search('::1', $debug); if ($key !== false) { array_splice($debug, $key, 1); } $key = array_search('127.0.0.1', $debug); if ($key !== false) { array_splice($debug, $key, 1); } if ($debug) { return Ans::err($ans, 'debug позволяет увидеть логин пароль админа. debug не должен содержать левые Ip адреса. Не должен быть указан на продакшине. config.infra.debug=' . $conf['debug']); } } else { //debug вообще запрещён всё ок } return Ans::ret($ans, 'Безопасные infra.debug:' . $conf['debug'] . ' и infra.test:' . $conf['test']);
<?php use infrajs\ans\Ans; if (!is_file('vendor/autoload.php')) { chdir('../../../'); require_once 'vendor/autoload.php'; } $ans = array(); $ans['title'] = 'Check GD extension'; if (!function_exists('imagecreatetruecolor')) { return Ans::err($ans, 'GD required'); } return Ans::ret($ans, 'ok');
if (empty($_REQUEST['email'])) { return Ans::err($ans, $conf['msg']); } if (strlen($_REQUEST['email']) > 1000) { return Ans::err($ans, 'Слишком много данных. ' . $conf['msg']); } $email = strip_tags($_REQUEST['email']); $email = trim($email); $email = Path::encode($email); $agent = $_SERVER['HTTP_USER_AGENT']; $ip = $_SERVER['REMOTE_ADDR']; session_start(); if (empty($_SESSION['submit_time'])) { $_SESSION['submit_time'] = 0; } if (time() - $_SESSION['submit_time'] < 60) { return Ans::err($ans, 'Письмо уже отправлено! Новое сообщение можно будет отправить через 1 минуту!'); } $_SESSION['submit_time'] = time(); $data = array('email' => $email, 'agent' => $agent, 'ip' => $ip, 'host' => $_SERVER['HTTP_HOST']); $body = Template::parse('-subscribe/subscribe.mail.tpl', $data); Mail::toAdmin('Запрос ' . $data['host'] . ' ' . $email, 'noreplay@' . $data['host'], $body); $src = Path::resolve('~.subscribe.json'); $subs = Load::loadJSON($src); if (!$subs) { $subs = array(); } $subs[$email] = date('d.m.Y'); file_put_contents($src, Load::json_encode($subs)); return Ans::ret($ans, 'Ваша заявка принята');
if (!$conf['db']) { $ans['class'] = 'bg-warning'; return Ans::ret($ans, 'db.conf.db=false Нет разрешения на использование базы данных'); } $db =& Db::pdo(); if (!$db) { return Ans::err($ans, 'Не удалось соединиться с базой данных'); } $val = Session::get('test'); $conf = Config::get(); if (!$conf['session']['sync']) { $ans['class'] = 'bg-warning'; return Ans::ret($ans, 'Сессия не синхронизируется с сервером session.sync:false'); } if (!class_exists('PDO')) { return Ans::err($ans, 'class PDO is required'); } $db =& Db::pdo(); if (!$db) { return Ans::err($ans, 'ERROR нет базы данных'); } $val = Session::get('test'); $val = (int) $val + 1; Session::set('test', $val); $d = Session::get(); $ans['test'] = $d['test']; if ($d['test'] > 1) { return Ans::ret($ans, 'PASS'); } else { return Ans::err($ans, 'ERROR нажмите 1 раз F5'); }
<?php use infrajs\load\Load; use infrajs\router\Router; use infrajs\ans\Ans; if (!is_file('vendor/autoload.php')) { chdir('../../../'); require_once 'vendor/autoload.php'; Router::init(); } $ans = array(); $data = Load::loadJSON('-teremok/teremok.php?src=-teremok/images/'); if (!$data || !$data['result']) { return Ans::err($ans, 'Ошибка нет данных'); } return Ans::ret($ans, 'Данные есть, теремок должен работать');
<?php use infrajs\access\Access; use infrajs\event\Event; use infrajs\ans\Ans; use infrajs\load\Load; use infrajs\each\Each; use infrajs\config\Config; if (!is_file('vendor/autoload.php')) { chdir('../../../../'); require_once 'vendor/autoload.php'; } $ans = array('title' => 'Тест на совпадение названия указанного файла и его путь'); $file = Load::nameInfo('*1 file@23.txt'); $src = Load::srcInfo('*1 file@23.txt'); if ($file['id'] != 23 && $src['src'] != '*1 file@23.txt') { return Ans::err($ans, 'Такого файла не существует или не правидьно указан путь'); } return Ans::ret($ans, 'Путь указан правильно, файл найден');
<?php use infrajs\access\Access; use infrajs\config\Config; use infrajs\ans\Ans; use infrajs\mem\Mem; use infrajs\path\Path; use infrajs\router\Router; if (!is_file('vendor/autoload.php')) { chdir('../../../'); require_once 'vendor/autoload.php'; Router::init(); } Access::test(true); Mem::flush(); Path::fullrmdir('!', true); $ans = array(); Ans::ret($ans, 'Cache cleared Mem::flush, Path::fulrmdir');
<?php namespace infrajs\infra; use infrajs\access\Access; use infrajs\event\Event; use infrajs\ans\Ans; use infrajs\template\Template; use infrajs\path\Path; if (!is_file('vendor/autoload.php')) { chdir('../../../../'); require_once 'vendor/autoload.php'; } /* Пустой шаблон также содержи подшаблон root, ошибка что возвращается слово root */ $ans = array('title' => 'Проверка что пустой шаблон не возвращает слово root'); $ans['res'] = Template::parse(array(''), true); if ($ans['res'] !== '') { return Ans::err($ans, 'Непройден тест 1 {res}'); } $ans['res'] = Template::parse(array('')); if ($ans['res'] !== '') { return Ans::err($ans, 'Непройден тест 2 {res}'); } return Ans::ret($ans, 'Все теcты пройдены');
namespace infrajs\excel; use infrajs\access\Access; use infrajs\ans\Ans; use infrajs\config\Config; Access::test(true); $ans = array(); $data = Xlsx::init('-test-akiyatkin/resources/test.xlsx'); if (!$data) { return Ans::err($ans, 'Cant read test.xlsx'); } $data = Xlsx::init('-test-akiyatkin/resources/test.csv'); if (!$data) { return Ans::err($ans, 'Cant read test.csv'); } if (sizeof($data['childs']) != 1) { return Ans::err($ans, 'Cant read test.csv ' . sizeof($data['childs'])); } $num = ini_get('mbstring.func_overload'); if ($num != 0) { $ans['class'] = 'bg-warning'; return Ans::err($ans, 'mbstring.func_overload should be 0, not ' . $num); } else { $data = Xlsx::get('-test-akiyatkin/resources/test.xls'); if (sizeof($data['childs'][0]['data']) != 30) { return Ans::err($ans, 'Cant read test.xls ' . sizeof($data['childs'][0]['data'])); } } return Ans::ret($ans, 'csv, xls, xlsx read ok!');
return Ans::err($ans, 'Cant read images test.docx'); } if (mb_strlen($preview['preview']) != 119) { return Ans::err($ans, 'Cant read test.docx preview ' . mb_strlen($preview['preview'])); } $name = 'test.tpl'; $preview = Mht::preview('-test-akiyatkin/resources/' . $name); if (sizeof($preview) != 12) { return Ans::err($ans, 'Cant read preview ' . $name . ' ' . sizeof($preview)); } if (sizeof($preview['links']) != 1) { return Ans::err($ans, 'Cant read links ' . $name . ' ' . sizeof($preview['links'])); } if (sizeof($preview['images']) != 2) { return Ans::err($ans, 'Cant read images ' . $name . ' ' . sizeof($preview['images'])); } if (mb_strlen($preview['preview']) != 521) { return Ans::err($ans, 'Cant read ' . $name . ' preview ' . strlen($preview['preview'])); } $name = 'test.tpl'; $text = Mht::get('-test-akiyatkin/resources/' . $name); if (mb_strlen($text) != 1935) { return Ans::err($ans, 'Cant read ' . $name . ' ' . strlen($text)); } $name = 'test.html'; $text = Mht::get('-test-akiyatkin/resources/' . $name); if (strlen($text) != 1073) { return Ans::err($ans, 'Cant read ' . $name . ' ' . strlen($text)); } return Ans::ret($ans, 'tpl, mht, docx read ok!');
use infrajs\view\View; use infrajs\ans\Ans; use infrajs\path\Path; use infrajs\config\Config; use infrajs\event\Event; if (!is_file('vendor/autoload.php')) { chdir('../../../../'); require_once 'vendor/autoload.php'; } $ans = array(); $ans['title'] = 'Проверка функции Controller::check'; View::html('<div id="oh"></div>', true); Config::get('controller'); //Нужно инициализировать Crumb с Контроллером, crumb может работать самостоятельно. Crumb::init(); $layer = array('tpl' => array('хой<div id="test"></div>'), 'div' => 'oh'); $html = Controller::check($layer); if ($html != '<div id="oh">хой<div id="test"></div></div>') { return Ans::err($ans, 'Ошибка'); } $layer = array('tpl' => array('опа'), 'div' => 'test'); $html = Controller::check($layer); if ($html != '<div id="oh">хой<div id="test">опа</div></div>') { return Ans::err($ans, 'Ошибка ' . $html); } Layer::$start_id = 1; Layer::$ids = array(); View::html('', true); return Ans::ret($ans, 'Работает две генерации');
<?php namespace infrajs\infra; use infrajs\access\Access; use infrajs\event\Event; use infrajs\ans\Ans; use infrajs\template\Template; use infrajs\path\Path; use infrajs\sequence\Sequence; use infrajs\load\Load; if (!is_file('vendor/autoload.php')) { chdir('../../../../'); require_once 'vendor/autoload.php'; } $ans = array('title' => 'Тест 0 элемента в массиве. Известная проблема.', 'class' => 'bg-warning'); $tpl = '{root:}{0:test}{test:}{title}'; $data = array(array('title' => 'good')); $html = Template::parse(array($tpl), $data, 'root'); echo $html; $ans['class'] = 'bg-warning'; if ($html != 'good') { return Ans::ret($ans, '0 элемент принят за false как будто его нет'); } return Ans::ret($ans, 'Теcт пройдены. Получился ожидаемый результат поле распарсивания шаблона.');
namespace infrajs\mem; use infrajs\mem\Mem; use infrajs\ans\Ans; use infrajs\config\Config; if (!is_file('vendor/autoload.php')) { chdir('../../../../'); require_once 'vendor/autoload.php'; } $ans = array(); $ans['title'] = 'Проверка доступности сервера'; $conf = Mem::$conf; if ($conf['type'] != 'mem') { $ans['class'] = "bg-warning"; return Ans::ret($ans, 'memcache не используется config.mem.mem'); } if (!class_exists('Memcache')) { return Ans::err($ans, 'Нет класса Memcache'); } $mem = Mem::memcache(); if (!$mem) { return Ans::err($ans, 'Сервер не доступен'); } Mem::set('test', true); $val = Mem::get('test'); if (!$val) { return Ans::err($ans, 'Неудалось восстановить значение. Требуется F5'); } return Ans::ret($ans, 'сервер доступен');
<?php namespace infrajs\layer\subs; use infrajs\ans\Ans; if (!is_file('vendor/autoload.php')) { chdir('../../../../'); require_once 'vendor/autoload.php'; } return Ans::ret();
} $ans['testmail'] = $mdata['testmail']; if ($maildir) { $folder = Path::theme($maildir); $name = Path::tofs(Path::encode($data['name'])); $fname = date('Y F j H-i') . ' ' . $name . ' ' . time(); if ($conf['file'] && $file) { $src = $folder . $fname . '.' . Path::tofs($file['name']); $r = move_uploaded_file($file['tmp_name'], $src); if (!$r) { return Ans::err($ans, 'Неудалось загрузить файл'); } $data['file'] = Path::toutf(Path::pretty($src)); } } $body = Template::parse('-contacts/mail.tpl', $data); if (!$body) { $body = 'Ошибка. Не найден шаблон письма!'; } if ($maildir) { file_put_contents($folder . $fname . '.txt', print_r($body, true) . "\n\n\n\n\n" . print_r($mdata, true)); } if (!isset($mdata['email_from'])) { return Ans::err($ans, 'Ошибка с адресом получателя!'); } $r = Mail::toAdmin($mdata['subject'], $mdata['email_from'], $body, $mdata['testmail']); if (!$r) { return Ans::err($ans, "Неудалось отправить письмо из-за ошибки на сервере!"); } return Ans::ret($ans, "Письмо отправлено!<blockquote>" . $data['text'] . "</blockquote>");
<?php namespace infrajs\infra; use infrajs\access\Access; use infrajs\event\Event; use infrajs\ans\Ans; use infrajs\path\Path; use infrajs\sequence\Sequence; use infrajs\load\Load; if (!is_file('vendor/autoload.php')) { chdir('../../../../'); require_once 'vendor/autoload.php'; } $ans['title'] = 'Временная зона по умолчанию'; $msg = date_default_timezone_get(); return Ans::ret($ans, $msg);
<?php namespace infrajs\controller; use infrajs\controller\Controller; use infrajs\controller\Run; use infrajs\view\View; use infrajs\ans\Ans; use infrajs\path\Path; if (!is_file('vendor/autoload.php')) { chdir('../../../../'); require_once 'vendor/autoload.php'; } $ans = array(); $ans['title'] = 'isEqual'; $l = array('tpl' => 'asdf', 'test' => 'bad'); $layers = array(&$l); $msg = 'Maybe good'; $layer =& Run::exec($layers, function &(&$layer) use($msg) { $layer['test'] = $msg; return $layer; }); $l['test'] = 'Good'; if ($l['test'] != $layer['test']) { return Ans::err($ans, 'err'); } return Ans::ret($ans, 'ret');
use infrajs\access\Access; use infrajs\ans\Ans; if (!is_file('vendor/autoload.php')) { chdir('../../../'); require_once 'vendor/autoload.php'; } $ans = array(); $ans['title'] = 'Общая проверка'; Access::test(true); $res = Load::loadJSON('-autoedit/autoedit.php?type=editfile&id=~.infra.json'); if (Access::admin()) { if (!$res['result'] || !$res['isfile']) { return Ans::err($ans, 'Неудалось получить информацию о файле .infra.json'); } } else { if (!$res || $res['result']) { return Ans::err($ans, 'Неудалось обратиться за файлом .infra.json'); } } $res = Load::loadJSON('-autoedit/autoedit.php?type=editfolder&id=~'); if (Access::admin()) { if (!$res['result'] || !sizeof($res['list'])) { return Ans::err($ans, 'Неудалось прочитать папку'); } } else { if (!$res || $res['result']) { return Ans::err($ans, 'Неудалось обратиться к папке'); } } return Ans::ret($ans, 'Вроде ок, прочитали папку, посмотрели файл');