From 3b96986a8526368852a8ec596882803d06ca7d53 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=AB=8F=E8=A8=AA=E5=AD=90?= Date: Mon, 22 Dec 2025 20:45:57 +0900 Subject: [PATCH] =?UTF-8?q?=E3=81=A1=E3=82=93=E3=81=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/config.sample.php | 1 + src/Site/Test/LibAuth.php | 324 +++++++++++++++++++------------------ src/Site/Test/LibCsv.php | 210 ++++++++++++------------ src/Site/Test/LibCurl.php | 160 +++++++++--------- src/Site/Test/LibMysql.php | 90 ++++++----- tester.php | 6 +- 6 files changed, 403 insertions(+), 388 deletions(-) diff --git a/config/config.sample.php b/config/config.sample.php index 114c6a9..1467847 100644 --- a/config/config.sample.php +++ b/config/config.sample.php @@ -37,6 +37,7 @@ define('RSS_ENABLED', false); define('ACTIVITYPUB_ENABLED', false); define('MYSQL_ENABLED', false); define('CSV_ENABLED', false); +define('CURL_ENABLED', true); define('AUTH_ENABLED', false); define('AUTH_REGISTER_ENABLED', false); define('COPYRIGHT_YEAR', '2018-'.date('Y')); diff --git a/src/Site/Test/LibAuth.php b/src/Site/Test/LibAuth.php index 40386d1..6b676ba 100644 --- a/src/Site/Test/LibAuth.php +++ b/src/Site/Test/LibAuth.php @@ -6,218 +6,224 @@ require_once __DIR__.'/../../../autoload.php'; use Site\Lib\Tester; use Site\Lib\Auth; -$test = new Tester([ - 'colorOutput' => true, - 'verboseOutput' => true -]); +if (AUTH_ENABLED) { + $test = new Tester([ + 'colorOutput' => true, + 'verboseOutput' => true + ]); -$test->describe('ユーザー登録', function($test): void { - $test->it('アカウントを作成出来るはず', function($test): void { - $user = "admin1234"; - $pass = "testTEST1234!#$%@[]:;"; - $passVerify = "testTEST1234!#$%@[]:;"; - $email = "test@076.co.jp"; + if (AUTH_REGISTER_ENABLED) { + $test->describe('ユーザー登録', function($test): void { + $test->it('アカウントを作成出来るはず', function($test): void { + $user = "admin1234"; + $pass = "testTEST1234!#$%@[]:;"; + $passVerify = "testTEST1234!#$%@[]:;"; + $email = "test@076.co.jp"; - $auth = new Auth(); - $res = $auth->mkUser($user, $pass, $passVerify, $email); + $auth = new Auth(); + $res = $auth->mkUser($user, $pass, $passVerify, $email); - $expect = true; + $expect = true; - $test->assertNotNull($res); - $test->assertEquals($res->isSuccess, $expect); - }); + $test->assertNotNull($res); + $test->assertEquals($res->isSuccess, $expect); + }); - $test->it('空フィールドでアカウントを作成出来ないはず', function($test): void { - $user = ""; - $pass = "testTEST1234!#$%@[]:;"; - $passVerify = "testTEST1234!#$%@[]:;"; - $email = "test@076.ne.jp"; + $test->it('空フィールドでアカウントを作成出来ないはず', function($test): void { + $user = ""; + $pass = "testTEST1234!#$%@[]:;"; + $passVerify = "testTEST1234!#$%@[]:;"; + $email = "test@076.ne.jp"; - $auth = new Auth(); - $res = $auth->mkUser($user, $pass, $passVerify, $email); + $auth = new Auth(); + $res = $auth->mkUser($user, $pass, $passVerify, $email); - $expect = 'エラー:ユーザー名をご入力下さい。'.'
'; + $expect = 'エラー:ユーザー名をご入力下さい。'.'
'; - $test->assertNotNull($res); - $test->assertEquals($res->message, $expect); + $test->assertNotNull($res); + $test->assertEquals($res->message, $expect); - $user = "admin5678"; - $pass = ""; - $res = $auth->mkUser($user, $pass, $passVerify, $email); + $user = "admin5678"; + $pass = ""; + $res = $auth->mkUser($user, $pass, $passVerify, $email); - $expect = 'エラー:パスワードをご入力下さい。'.'
'; + $expect = 'エラー:パスワードをご入力下さい。'.'
'; - $test->assertNotNull($res); - $test->assertEquals($res->message, $expect); + $test->assertNotNull($res); + $test->assertEquals($res->message, $expect); - $pass = "testTEST1234!#$%@[]:;"; - $email = ""; - $res = $auth->mkUser($user, $pass, $passVerify, $email); + $pass = "testTEST1234!#$%@[]:;"; + $email = ""; + $res = $auth->mkUser($user, $pass, $passVerify, $email); - $expect = 'エラー:メールアドレスをご入力下さい。'.'
'; + $expect = 'エラー:メールアドレスをご入力下さい。'.'
'; - $test->assertNotNull($res); - $test->assertEquals($res->message, $expect); - }); + $test->assertNotNull($res); + $test->assertEquals($res->message, $expect); + }); - $test->it('既にユーザー名やメールアドレスが存在するアカウントを作成出来ないはず', function($test): void { - $user = "admin1234"; - $pass = "testTEST1234!#$%@[]:;"; - $passVerify = "testTEST1234!#$%@[]:;"; - $email = "test@076.ne.jp"; + $test->it('既にユーザー名やメールアドレスが存在するアカウントを作成出来ないはず', function($test): void { + $user = "admin1234"; + $pass = "testTEST1234!#$%@[]:;"; + $passVerify = "testTEST1234!#$%@[]:;"; + $email = "test@076.ne.jp"; - $auth = new Auth(); - $res = $auth->mkUser($user, $pass, $passVerify, $email); + $auth = new Auth(); + $res = $auth->mkUser($user, $pass, $passVerify, $email); - $expect = 'ユーザー「admin1234」は既に存在します。'.'
'; + $expect = 'ユーザー「admin1234」は既に存在します。'.'
'; - $test->assertNotNull($res); - $test->assertEquals($res->message, $expect); + $test->assertNotNull($res); + $test->assertEquals($res->message, $expect); - $user = "admin5678"; - $email = "test@076.co.jp"; - $res = $auth->mkUser($user, $pass, $passVerify, $email); + $user = "admin5678"; + $email = "test@076.co.jp"; + $res = $auth->mkUser($user, $pass, $passVerify, $email); - $expect = 'ユーザー「test@076.co.jp」は既に存在します。'.'
'; + $expect = 'ユーザー「test@076.co.jp」は既に存在します。'.'
'; - $test->assertNotNull($res); - $test->assertEquals($res->message, $expect); - }); + $test->assertNotNull($res); + $test->assertEquals($res->message, $expect); + }); - $test->it('一致しない、短い、又は不安なパスワードでアカウントを作成出来ないはず', function($test): void { - $user = "admin5678"; - $pass = "testtest1234!#$%@[]:;"; - $passVerify = "testTEST1234!#$%@[]:;"; - $email = "test@076.ne.jp"; + $test->it('一致しない、短い、又は不安なパスワードでアカウントを作成出来ないはず', function($test): void { + $user = "admin5678"; + $pass = "testtest1234!#$%@[]:;"; + $passVerify = "testTEST1234!#$%@[]:;"; + $email = "test@076.ne.jp"; - $auth = new Auth(); - $res = $auth->mkUser($user, $pass, $passVerify, $email); + $auth = new Auth(); + $res = $auth->mkUser($user, $pass, $passVerify, $email); - $expect = 'エラー:パスワードは一致していません。'.'
'; + $expect = 'エラー:パスワードは一致していません。'.'
'; - $test->assertNotNull($res); - $test->assertEquals($res->message, $expect); + $test->assertNotNull($res); + $test->assertEquals($res->message, $expect); - $pass = "testTEST1234"; - $passVerify = "testTEST1234"; - $res = $auth->mkUser($user, $pass, $passVerify, $email); + $pass = "testTEST1234"; + $passVerify = "testTEST1234"; + $res = $auth->mkUser($user, $pass, $passVerify, $email); - $expect = 'エラー:パスワードは20以上をご入力下さい。'.'
'; + $expect = 'エラー:パスワードは20以上をご入力下さい。'.'
'; - $test->assertNotNull($res); - $test->assertEquals($res->message, $expect); + $test->assertNotNull($res); + $test->assertEquals($res->message, $expect); - $pass = "testTEST1234testTEST"; - $passVerify = "testTEST1234testTEST"; - $res = $auth->mkUser($user, $pass, $passVerify, $email); + $pass = "testTEST1234testTEST"; + $passVerify = "testTEST1234testTEST"; + $res = $auth->mkUser($user, $pass, $passVerify, $email); - $expect = 'エラー:パスワードは2つ以上の大文字、2つ以上の小文字、2つ以上の数字、及び2つ以上の特別文字を含む事が必須です。'.'
'; + $expect = 'エラー:パスワードは2つ以上の大文字、2つ以上の小文字、2つ以上の数字、及び2つ以上の特別文字を含む事が必須です。'.'
'; - $test->assertNotNull($res); - $test->assertEquals($res->message, $expect); - }); + $test->assertNotNull($res); + $test->assertEquals($res->message, $expect); + }); - $test->it('不正なメールアドレスでアカウントを作成出来ないはず', function($test): void { - $user = "admin5678"; - $pass = "testTEST1234!#$%@[]:;"; - $passVerify = "testTEST1234!#$%@[]:;"; - $email = "test@076.niggerballs"; + $test->it('不正なメールアドレスでアカウントを作成出来ないはず', function($test): void { + $user = "admin5678"; + $pass = "testTEST1234!#$%@[]:;"; + $passVerify = "testTEST1234!#$%@[]:;"; + $email = "test@076.niggerballs"; - $auth = new Auth(); - $res = $auth->mkUser($user, $pass, $passVerify, $email); + $auth = new Auth(); + $res = $auth->mkUser($user, $pass, $passVerify, $email); - $expect = 'エラー:メールアドレスは不正です。'.'
'; + $expect = 'エラー:メールアドレスは不正です。'.'
'; - $test->assertNotNull($res); - $test->assertEquals($res->message, $expect); + $test->assertNotNull($res); + $test->assertEquals($res->message, $expect); - $email = "test@076"; - $res = $auth->mkUser($user, $pass, $passVerify, $email); + $email = "test@076"; + $res = $auth->mkUser($user, $pass, $passVerify, $email); - $expect = 'エラー:メールアドレスは不正です。'.'
'; + $expect = 'エラー:メールアドレスは不正です。'.'
'; - $test->assertNotNull($res); - $test->assertEquals($res->message, $expect); - }); + $test->assertNotNull($res); + $test->assertEquals($res->message, $expect); + }); - // ユーザーの削除 - $users = scandir(ROOT.'/data/user'); - $userFile = ''; - foreach ($users as $u) { - if (str_contains($u, 'admin1234')) { - $userFile = $u; - break; - } + // ユーザーの削除 + $users = scandir(ROOT.'/data/user'); + $userFile = ''; + foreach ($users as $u) { + if (str_contains($u, 'admin1234')) { + $userFile = $u; + break; + } + } + unlink(ROOT.'/data/user/'.$userFile); + rmdir(ROOT.'/public/static/user/admin1234'); + }); } - unlink(ROOT.'/data/user/'.$userFile); - rmdir(ROOT.'/public/static/user/admin1234'); -}); -// TODO: CLIからクッキーを設定出来ないから、「Site\Lib\Auth::getUserData(): Return value must be of type stdClass, null returned」って発生する・・・ -// $test->describe('ログインとログアウト', function($test): void { -// $user = "admin1234"; -// $pass = "testTEST1234!#$%@[]:;"; -// $passVerify = "testTEST1234!#$%@[]:;"; -// $email = "test@076.co.jp"; + // TODO: CLIからクッキーを設定出来ないから、「Site\Lib\Auth::getUserData(): Return value must be of type stdClass, null returned」って発生する・・・ + // $test->describe('ログインとログアウト', function($test): void { + // $user = "admin1234"; + // $pass = "testTEST1234!#$%@[]:;"; + // $passVerify = "testTEST1234!#$%@[]:;"; + // $email = "test@076.co.jp"; -// $auth = new Auth(); -// $res = $auth->mkUser($user, $pass, $passVerify, $email); -// unset($auth); + // $auth = new Auth(); + // $res = $auth->mkUser($user, $pass, $passVerify, $email); + // unset($auth); -// $test->it('正しい認証情報でログイン出来るはず', function($test) use ($user, $pass): void { -// $auth = new Auth(); -// $res = $auth->setToken($user, $pass); + // $test->it('正しい認証情報でログイン出来るはず', function($test) use ($user, $pass): void { + // $auth = new Auth(); + // $res = $auth->setToken($user, $pass); -// $test->assertTrue($res->isSuccess); -// $test->assertEquals('ログイン成功', $res->message); + // $test->assertTrue($res->isSuccess); + // $test->assertEquals('ログイン成功', $res->message); -// $auth2 = new Auth(); -// $usr = $auth2->getLoggedInUser(); + // $auth2 = new Auth(); + // $usr = $auth2->getLoggedInUser(); -// $test->assertNotNull($usr); -// $test->assertEquals($user, $usr->username); -// }); + // $test->assertNotNull($usr); + // $test->assertEquals($user, $usr->username); + // }); -// $test->it('間違ったパスワードでログイン出来ないはず', function($test) use ($user): void { -// $auth = new Auth(); -// $res = $auth->setToken($user, 'fuseipassword'); + // $test->it('間違ったパスワードでログイン出来ないはず', function($test) use ($user): void { + // $auth = new Auth(); + // $res = $auth->setToken($user, 'fuseipassword'); -// $test->assertFalse($res->isSuccess); -// $test->assertEquals('ユーザー名又はパスワードが一致していません', $res->message); -// }); + // $test->assertFalse($res->isSuccess); + // $test->assertEquals('ユーザー名又はパスワードが一致していません', $res->message); + // }); -// $test->it('存在しないユーザーでログイン出来ないはず', function($test) use ($pass): void { -// $auth = new Auth(); -// $res = $auth->setToken('fumeiuser', $pass); + // $test->it('存在しないユーザーでログイン出来ないはず', function($test) use ($pass): void { + // $auth = new Auth(); + // $res = $auth->setToken('fumeiuser', $pass); -// $test->assertFalse($res->isSuccess); -// $test->assertEquals('ユーザー名又はパスワードが一致していません', $res->message); -// }); + // $test->assertFalse($res->isSuccess); + // $test->assertEquals('ユーザー名又はパスワードが一致していません', $res->message); + // }); -// $test->it('ログアウト出来るはず', function($test) use ($user, $pass): void { -// $auth = new Auth(); -// $auth->setToken($user, $pass); + // $test->it('ログアウト出来るはず', function($test) use ($user, $pass): void { + // $auth = new Auth(); + // $auth->setToken($user, $pass); -// $res = $auth->logout(); + // $res = $auth->logout(); -// $test->assertTrue($res->isSuccess); -// $test->assertEquals('ログイン成功', $res->message); + // $test->assertTrue($res->isSuccess); + // $test->assertEquals('ログイン成功', $res->message); -// $auth2 = new Auth(); -// $usr = $auth2->getLoggedInUser(); + // $auth2 = new Auth(); + // $usr = $auth2->getLoggedInUser(); -// $test->assertNull($usr); -// }); + // $test->assertNull($usr); + // }); -// // ユーザーの削除 -// $users = scandir(ROOT.'/data/user'); -// $userFile = ''; -// foreach ($users as $u) { -// if (str_contains($u, 'admin1234')) { -// $userFile = $u; -// break; -// } -// } -// unlink(ROOT.'/data/user/'.$userFile); -// rmdir(ROOT.'/public/static/user/admin1234'); -// }); \ No newline at end of file + // // ユーザーの削除 + // $users = scandir(ROOT.'/data/user'); + // $userFile = ''; + // foreach ($users as $u) { + // if (str_contains($u, 'admin1234')) { + // $userFile = $u; + // break; + // } + // } + // unlink(ROOT.'/data/user/'.$userFile); + // rmdir(ROOT.'/public/static/user/admin1234'); + // }); + + $test->printSummary(); +} \ No newline at end of file diff --git a/src/Site/Test/LibCsv.php b/src/Site/Test/LibCsv.php index ef6ed71..e383322 100644 --- a/src/Site/Test/LibCsv.php +++ b/src/Site/Test/LibCsv.php @@ -7,116 +7,120 @@ use Site\Lib\Tester; use Site\Lib\Csv; use Site\Lib\Delimiter; -$test = new Tester([ - 'colorOutput' => true, - 'verboseOutput' => true -]); +if (CSV_ENABLED) { + $test = new Tester([ + 'colorOutput' => true, + 'verboseOutput' => true + ]); -$test->describe('Csvの基本的なパーシング', function($test): void { - $test->it('簡単なCSVファイルをパーシングするはず', function($test): void { - $str = "岩田聡,プロジューサー\n宮本茂,デザイナー\nJeffrey Epstein,幼児性愛者"; + $test->describe('Csvの基本的なパーシング', function($test): void { + $test->it('簡単なCSVファイルをパーシングするはず', function($test): void { + $str = "岩田聡,プロジューサー\n宮本茂,デザイナー\nJeffrey Epstein,幼児性愛者"; - $tmpFile = tempnam(sys_get_temp_dir(), 'csv_test'); - file_put_contents($tmpFile, $str); + $tmpFile = tempnam(sys_get_temp_dir(), 'csv_test'); + file_put_contents($tmpFile, $str); - $csv = new Csv($tmpFile); - $res = $csv->parse(); + $csv = new Csv($tmpFile); + $res = $csv->parse(); - unlink($tmpFile); + unlink($tmpFile); - $expect = [ - ["岩田聡", "プロジューサー"], - ["宮本茂", "デザイナー"], - ["Jeffrey Epstein", "幼児性愛者"] - ]; - - $test->assertNotNull($res); - $test->assertEquals($res, $expect); - }); - - $test->it('異なるデリミタでCSVをパーシングするはず', function ($test): void { - // セミコロン - $semiStr = "岩田聡;プロジューサー\n宮本茂;デザイナー"; - $tmpFile = tempnam(sys_get_temp_dir(), 'csv_semi_test'); - file_put_contents($tmpFile, $semiStr); - - $csv = new Csv($tmpFile); - $res = $csv->parse(Delimiter::SEMICOLON); - - unlink($tmpFile); - - $expect = [ - ["岩田聡", "プロジューサー"], - ["宮本茂", "デザイナー"] - ]; - - $test->assertEquals($res, $expect, "セミコロンデリミタでパーシングに失敗"); - - // タブ - $tabStr = "岩田聡\tプロジューサー\n宮本茂\tデザイナー"; - $tmpFile = tempnam(sys_get_temp_dir(), 'csv_tab_test'); - file_put_contents($tmpFile, $tabStr); - - $csv = new Csv($tmpFile); - $res = $csv->parse(Delimiter::TAB); - - unlink($tmpFile); - - $test->assertEquals($res, $expect, "タブデリミタでパーシングに失敗"); - - // パイプ - $pipeStr = "岩田聡|プロジューサー\n宮本茂|デザイナー"; - $tmpFile = tempnam(sys_get_temp_dir(), 'csv_pipe_test'); - file_put_contents($tmpFile, $pipeStr); - - $csv = new Csv($tmpFile); - $res = $csv->parse(Delimiter::PIPE); - - unlink($tmpFile); - - $test->assertEquals($res, $expect, "パイプデリミタでパーシングに失敗"); - }); - - $test->it('ヘッダー付きCSVをパーシングするはず', function ($test) { - $str = "name,job title\n岩田聡,プロジューサー\n宮本茂,デザイナー"; - - $tmpFile = tempnam(sys_get_temp_dir(), 'csv_header_test'); - file_put_contents($tmpFile, $str); - - $csv = new Csv($tmpFile); - $res = $csv->parse(Delimiter::COMMA, true); // isHeader = true - - unlink($tmpFile); - - $expect = [ - 'header' => ["name", "job title"], - 'body' => [ + $expect = [ ["岩田聡", "プロジューサー"], ["宮本茂", "デザイナー"], - ], - ]; + ["Jeffrey Epstein", "幼児性愛者"] + ]; - $test->assertNotNull($res); - $test->assertEquals($res, $expect, "ヘッダーパーシングに失敗"); + $test->assertNotNull($res); + $test->assertEquals($res, $expect); + }); + + $test->it('異なるデリミタでCSVをパーシングするはず', function ($test): void { + // セミコロン + $semiStr = "岩田聡;プロジューサー\n宮本茂;デザイナー"; + $tmpFile = tempnam(sys_get_temp_dir(), 'csv_semi_test'); + file_put_contents($tmpFile, $semiStr); + + $csv = new Csv($tmpFile); + $res = $csv->parse(Delimiter::SEMICOLON); + + unlink($tmpFile); + + $expect = [ + ["岩田聡", "プロジューサー"], + ["宮本茂", "デザイナー"] + ]; + + $test->assertEquals($res, $expect, "セミコロンデリミタでパーシングに失敗"); + + // タブ + $tabStr = "岩田聡\tプロジューサー\n宮本茂\tデザイナー"; + $tmpFile = tempnam(sys_get_temp_dir(), 'csv_tab_test'); + file_put_contents($tmpFile, $tabStr); + + $csv = new Csv($tmpFile); + $res = $csv->parse(Delimiter::TAB); + + unlink($tmpFile); + + $test->assertEquals($res, $expect, "タブデリミタでパーシングに失敗"); + + // パイプ + $pipeStr = "岩田聡|プロジューサー\n宮本茂|デザイナー"; + $tmpFile = tempnam(sys_get_temp_dir(), 'csv_pipe_test'); + file_put_contents($tmpFile, $pipeStr); + + $csv = new Csv($tmpFile); + $res = $csv->parse(Delimiter::PIPE); + + unlink($tmpFile); + + $test->assertEquals($res, $expect, "パイプデリミタでパーシングに失敗"); + }); + + $test->it('ヘッダー付きCSVをパーシングするはず', function ($test) { + $str = "name,job title\n岩田聡,プロジューサー\n宮本茂,デザイナー"; + + $tmpFile = tempnam(sys_get_temp_dir(), 'csv_header_test'); + file_put_contents($tmpFile, $str); + + $csv = new Csv($tmpFile); + $res = $csv->parse(Delimiter::COMMA, true); // isHeader = true + + unlink($tmpFile); + + $expect = [ + 'header' => ["name", "job title"], + 'body' => [ + ["岩田聡", "プロジューサー"], + ["宮本茂", "デザイナー"], + ], + ]; + + $test->assertNotNull($res); + $test->assertEquals($res, $expect, "ヘッダーパーシングに失敗"); + }); + + $test->it('セル内にカンマを含むCSVをパーシングするはず', function ($test): void { + $str = "\"守矢, 諏訪子\",エンジニア\n\"青, 猫ちゃん\",サーバー管理者"; + + $tmpFile = tempnam(sys_get_temp_dir(), 'csv_quoted_comma_test'); + file_put_contents($tmpFile, $str); + + $csv = new Csv($tmpFile); + $res = $csv->parse(\Site\Lib\delimiter::COMMA); + + unlink($tmpFile); + + $expect = [ + ["守矢, 諏訪子", "エンジニア"], + ["青, 猫ちゃん", "サーバー管理者"] + ]; + + $test->assertNotNull($res); + $test->assertEquals($res, $expect, "セル内にカンマを含むパーシングに失敗"); + }); }); - $test->it('セル内にカンマを含むCSVをパーシングするはず', function ($test): void { - $str = "\"守矢, 諏訪子\",エンジニア\n\"青, 猫ちゃん\",サーバー管理者"; - - $tmpFile = tempnam(sys_get_temp_dir(), 'csv_quoted_comma_test'); - file_put_contents($tmpFile, $str); - - $csv = new Csv($tmpFile); - $res = $csv->parse(\Site\Lib\delimiter::COMMA); - - unlink($tmpFile); - - $expect = [ - ["守矢, 諏訪子", "エンジニア"], - ["青, 猫ちゃん", "サーバー管理者"] - ]; - - $test->assertNotNull($res); - $test->assertEquals($res, $expect, "セル内にカンマを含むパーシングに失敗"); - }); -}); + $test->printSummary(); +} \ No newline at end of file diff --git a/src/Site/Test/LibCurl.php b/src/Site/Test/LibCurl.php index afded6b..f08c62c 100644 --- a/src/Site/Test/LibCurl.php +++ b/src/Site/Test/LibCurl.php @@ -6,87 +6,89 @@ require_once __DIR__.'/../../../autoload.php'; use Site\Lib\Tester; use Site\Lib\Curl; -$test = new Tester([ - 'colorOutput' => true, - 'verboseOutput' => true -]); +if (CURL_ENABLED) { + $test = new Tester([ + 'colorOutput' => true, + 'verboseOutput' => true + ]); -$test->describe('Curlの基本的な機能性', function($test): void { - $test->it('URLで使って新しいインスタンスを作成するはず', function($test): void { - $curl = new Curl('https://076.moe'); - $test->assertNotNull($curl); + $test->describe('Curlの基本的な機能性', function($test): void { + $test->it('URLで使って新しいインスタンスを作成するはず', function($test): void { + $curl = new Curl('https://076.moe'); + $test->assertNotNull($curl); + }); + + $test->it('メソッドでURLを設定出来るはす', function($test): void { + $curl = new Curl(); + $curl->setUrl('https://076.moe'); + $test->assertNotNull($curl); + }); + + $test->it('ヘッダー文字を作成出来るはず', function($test): void { + $curl = new Curl('https://076.moe'); + $curl->setHeaders([ + 'Accept' => 'application/json', + 'User-Agent' => 'LoliTest/1.0' + ]); + + $reflectionClass = new \ReflectionClass($curl); + $method = $reflectionClass->getMethod('buildHeaderString'); + $method->setAccessible(true); + + $headerString = $method->invoke($curl); + $test->assertStringContains('Accept: application/json', $headerString); + $test->assertStringContains('User-Agent: LoliTest/1.0', $headerString); + }); + + $test->skip('移転を対応するはず', '作成中・・・'); + + $test->it('メソッドチェーニングを対応するはず', function($test): void { + $curl = new Curl(); + $result = $curl->setUrl('https://076.moe') + ->setMethod('GET') + ->setTimeout(30); + + $test->assertSame($curl, $result); + }); }); - $test->it('メソッドでURLを設定出来るはす', function($test): void { - $curl = new Curl(); - $curl->setUrl('https://076.moe'); - $test->assertNotNull($curl); + $test->describe('Curl HTTP リクエスト', function($test): void { + $networkAvailable = true; + + if (!$networkAvailable) { + $test->skip('076.moeでGETリクエストの確認', 'ネットワークが無効です。'); + $test->skip('postman-echo.comでPOSTリクエストの確認', 'ネットワークが無効です。'); + return; + } + + $test->it('076.moeでGETリクエストの確認', function($test): void { + $curl = new Curl('https://076.moe'); + $result = $curl->execute(); + + $test->assertTrue($result); + $test->assertEquals(200, $curl->getResponseCode()); + $test->assertNotNull($curl->getResponseBody()); + $test->assertStringContains('getResponseBody()); + }); + + $test->it('postman-echo.comでPOSTリクエストの確認', function($test): void { + $curl = new Curl(); + $curl->setUrl('https://postman-echo.com/post') + ->setMethod('POST') + ->setPostFields([ + 'name' => '山田太郎', + 'email' => 't.yamada@example.com' + ]); + + $result = $curl->execute(); + $test->assertTrue($result); + $test->assertEquals(200, $curl->getResponseCode()); + + $responseBody = $curl->getResponseBody(); + $test->assertStringContains('山田太郎', $responseBody); + $test->assertStringContains('t.yamada@example.com', $responseBody); + }); }); - $test->it('ヘッダー文字を作成出来るはず', function($test): void { - $curl = new Curl('https://076.moe'); - $curl->setHeaders([ - 'Accept' => 'application/json', - 'User-Agent' => 'LoliTest/1.0' - ]); - - $reflectionClass = new \ReflectionClass($curl); - $method = $reflectionClass->getMethod('buildHeaderString'); - $method->setAccessible(true); - - $headerString = $method->invoke($curl); - $test->assertStringContains('Accept: application/json', $headerString); - $test->assertStringContains('User-Agent: LoliTest/1.0', $headerString); - }); - - $test->skip('移転を対応するはず', '作成中・・・'); - - $test->it('メソッドチェーニングを対応するはず', function($test): void { - $curl = new Curl(); - $result = $curl->setUrl('https://076.moe') - ->setMethod('GET') - ->setTimeout(30); - - $test->assertSame($curl, $result); - }); -}); - -$test->describe('Curl HTTP リクエスト', function($test): void { - $networkAvailable = true; - - if (!$networkAvailable) { - $test->skip('076.moeでGETリクエストの確認', 'ネットワークが無効です。'); - $test->skip('postman-echo.comでPOSTリクエストの確認', 'ネットワークが無効です。'); - return; - } - - $test->it('076.moeでGETリクエストの確認', function($test): void { - $curl = new Curl('https://076.moe'); - $result = $curl->execute(); - - $test->assertTrue($result); - $test->assertEquals(200, $curl->getResponseCode()); - $test->assertNotNull($curl->getResponseBody()); - $test->assertStringContains('getResponseBody()); - }); - - $test->it('postman-echo.comでPOSTリクエストの確認', function($test): void { - $curl = new Curl(); - $curl->setUrl('https://postman-echo.com/post') - ->setMethod('POST') - ->setPostFields([ - 'name' => '山田太郎', - 'email' => 't.yamada@example.com' - ]); - - $result = $curl->execute(); - $test->assertTrue($result); - $test->assertEquals(200, $curl->getResponseCode()); - - $responseBody = $curl->getResponseBody(); - $test->assertStringContains('山田太郎', $responseBody); - $test->assertStringContains('t.yamada@example.com', $responseBody); - }); -}); - -$test->printSummary(); \ No newline at end of file + $test->printSummary(); +} \ No newline at end of file diff --git a/src/Site/Test/LibMysql.php b/src/Site/Test/LibMysql.php index 664a60b..7d9317f 100644 --- a/src/Site/Test/LibMysql.php +++ b/src/Site/Test/LibMysql.php @@ -6,61 +6,63 @@ require_once __DIR__.'/../../../autoload.php'; use Site\Lib\Tester; use Site\Lib\Mysql; -$test = new Tester([ - 'colorOutput' => true, - 'verboseOutput' => true -]); +if (MYSQL_ENABLED) { + $test = new Tester([ + 'colorOutput' => true, + 'verboseOutput' => true + ]); -$test->describe('パケットのデバッグ', function($test): void { - try { - $db = new Mysql(); + $test->describe('パケットのデバッグ', function($test): void { + try { + $db = new Mysql(); - $db->setDebug(true); - $db->connect(); + $db->setDebug(true); + $db->connect(); - $result = $db->query('SELECT * FROM user WHERE id = 1'); + $result = $db->query('SELECT * FROM user WHERE id = 1'); - foreach ($result['rows'] as $row) { - echo "ユーザー名: ".$row['nickname']."\n"; + foreach ($result['rows'] as $row) { + echo "ユーザー名: ".$row['nickname']."\n"; + } + + $db->savePacketLogToFile('mysql_log.txt'); + $db->close(); + } catch (\Exception $e) { + echo 'エラー: '.$e->getMessage()."\n"; } + }); - $db->savePacketLogToFile('mysql_log.txt'); - $db->close(); - } catch (\Exception $e) { - echo 'エラー: '.$e->getMessage()."\n"; - } -}); + $test->describe('プリペアドステートメント', function($test): void { + try { + $db = new Mysql(); + $db->connect(); -$test->describe('プリペアドステートメント', function($test): void { - try { - $db = new Mysql(); - $db->connect(); + // データの入り + $stmt = $db->prepare('INSERT INTO users (name, age) VALUES (?, ?)'); + $test->assertTrue($stmt); - // データの入り - $stmt = $db->prepare('INSERT INTO users (name, age) VALUES (?, ?)'); - $test->assertTrue($stmt); + $db->execute($stmt, ['山田太郎', 25]); + // TODO: assert - $db->execute($stmt, ['山田太郎', 25]); - // TODO: assert + $close = $db->demolish($stmt); + $this->assertTrue($close); - $close = $db->demolish($stmt); - $this->assertTrue($close); + // データの受け取り + $stmt = $db->prepare('SELECT * FROM users WHERE age > ?'); + $test->assertTrue($stmt); - // データの受け取り - $stmt = $db->prepare('SELECT * FROM users WHERE age > ?'); - $test->assertTrue($stmt); + $res = $db->execute($stmt, [20]); + // TODO: assert + print_r($res); - $res = $db->execute($stmt, [20]); - // TODO: assert - print_r($res); + $close = $db->demolish($stmt); + $this->assertTrue($close); - $close = $db->demolish($stmt); - $this->assertTrue($close); + $db->close(); + } catch (\Exception $e) { + echo 'エラー: '.$e->getMessage()."\n"; + } + }); - $db->close(); - } catch (\Exception $e) { - echo 'エラー: '.$e->getMessage()."\n"; - } -}); - -$test->printSummary(); \ No newline at end of file + $test->printSummary(); +} \ No newline at end of file diff --git a/tester.php b/tester.php index 87dc5ea..26e286e 100644 --- a/tester.php +++ b/tester.php @@ -1,13 +1,13 @@