認証ユニットテスト
This commit is contained in:
223
src/Site/Test/LibAuth.php
Normal file
223
src/Site/Test/LibAuth.php
Normal file
@@ -0,0 +1,223 @@
|
|||||||
|
<?php
|
||||||
|
namespace Site\Test;
|
||||||
|
|
||||||
|
require_once __DIR__.'/../../../autoload.php';
|
||||||
|
|
||||||
|
use Site\Lib\Tester;
|
||||||
|
use Site\Lib\Auth;
|
||||||
|
|
||||||
|
$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";
|
||||||
|
|
||||||
|
$auth = new Auth();
|
||||||
|
$res = $auth->mkUser($user, $pass, $passVerify, $email);
|
||||||
|
|
||||||
|
$expect = true;
|
||||||
|
|
||||||
|
$test->assertNotNull($res);
|
||||||
|
$test->assertEquals($res->isSuccess, $expect);
|
||||||
|
});
|
||||||
|
|
||||||
|
$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);
|
||||||
|
|
||||||
|
$expect = 'エラー:ユーザー名をご入力下さい。'.'<br />';
|
||||||
|
|
||||||
|
$test->assertNotNull($res);
|
||||||
|
$test->assertEquals($res->message, $expect);
|
||||||
|
|
||||||
|
$user = "admin5678";
|
||||||
|
$pass = "";
|
||||||
|
$res = $auth->mkUser($user, $pass, $passVerify, $email);
|
||||||
|
|
||||||
|
$expect = 'エラー:パスワードをご入力下さい。'.'<br />';
|
||||||
|
|
||||||
|
$test->assertNotNull($res);
|
||||||
|
$test->assertEquals($res->message, $expect);
|
||||||
|
|
||||||
|
$pass = "testTEST1234!#$%@[]:;";
|
||||||
|
$email = "";
|
||||||
|
$res = $auth->mkUser($user, $pass, $passVerify, $email);
|
||||||
|
|
||||||
|
$expect = 'エラー:メールアドレスをご入力下さい。'.'<br />';
|
||||||
|
|
||||||
|
$test->assertNotNull($res);
|
||||||
|
$test->assertEquals($res->message, $expect);
|
||||||
|
});
|
||||||
|
|
||||||
|
$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);
|
||||||
|
|
||||||
|
$expect = 'ユーザー「admin1234」は既に存在します。'.'<br />';
|
||||||
|
|
||||||
|
$test->assertNotNull($res);
|
||||||
|
$test->assertEquals($res->message, $expect);
|
||||||
|
|
||||||
|
$user = "admin5678";
|
||||||
|
$email = "test@076.co.jp";
|
||||||
|
$res = $auth->mkUser($user, $pass, $passVerify, $email);
|
||||||
|
|
||||||
|
$expect = 'ユーザー「test@076.co.jp」は既に存在します。'.'<br />';
|
||||||
|
|
||||||
|
$test->assertNotNull($res);
|
||||||
|
$test->assertEquals($res->message, $expect);
|
||||||
|
});
|
||||||
|
|
||||||
|
$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);
|
||||||
|
|
||||||
|
$expect = 'エラー:パスワードは一致していません。'.'<br />';
|
||||||
|
|
||||||
|
$test->assertNotNull($res);
|
||||||
|
$test->assertEquals($res->message, $expect);
|
||||||
|
|
||||||
|
$pass = "testTEST1234";
|
||||||
|
$passVerify = "testTEST1234";
|
||||||
|
$res = $auth->mkUser($user, $pass, $passVerify, $email);
|
||||||
|
|
||||||
|
$expect = 'エラー:パスワードは20以上をご入力下さい。'.'<br />';
|
||||||
|
|
||||||
|
$test->assertNotNull($res);
|
||||||
|
$test->assertEquals($res->message, $expect);
|
||||||
|
|
||||||
|
$pass = "testTEST1234testTEST";
|
||||||
|
$passVerify = "testTEST1234testTEST";
|
||||||
|
$res = $auth->mkUser($user, $pass, $passVerify, $email);
|
||||||
|
|
||||||
|
$expect = 'エラー:パスワードは2つ以上の大文字、2つ以上の小文字、2つ以上の数字、及び2つ以上の特別文字を含む事が必須です。'.'<br />';
|
||||||
|
|
||||||
|
$test->assertNotNull($res);
|
||||||
|
$test->assertEquals($res->message, $expect);
|
||||||
|
});
|
||||||
|
|
||||||
|
$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);
|
||||||
|
|
||||||
|
$expect = 'エラー:メールアドレスは不正です。'.'<br />';
|
||||||
|
|
||||||
|
$test->assertNotNull($res);
|
||||||
|
$test->assertEquals($res->message, $expect);
|
||||||
|
|
||||||
|
$email = "test@076";
|
||||||
|
$res = $auth->mkUser($user, $pass, $passVerify, $email);
|
||||||
|
|
||||||
|
$expect = 'エラー:メールアドレスは不正です。'.'<br />';
|
||||||
|
|
||||||
|
$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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
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";
|
||||||
|
|
||||||
|
// $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->assertTrue($res->isSuccess);
|
||||||
|
// $test->assertEquals('ログイン成功', $res->message);
|
||||||
|
|
||||||
|
// $auth2 = new Auth();
|
||||||
|
// $usr = $auth2->getLoggedInUser();
|
||||||
|
|
||||||
|
// $test->assertNotNull($usr);
|
||||||
|
// $test->assertEquals($user, $usr->username);
|
||||||
|
// });
|
||||||
|
|
||||||
|
// $test->it('間違ったパスワードでログイン出来ないはず', function($test) use ($user): void {
|
||||||
|
// $auth = new Auth();
|
||||||
|
// $res = $auth->setToken($user, 'fuseipassword');
|
||||||
|
|
||||||
|
// $test->assertFalse($res->isSuccess);
|
||||||
|
// $test->assertEquals('ユーザー名又はパスワードが一致していません', $res->message);
|
||||||
|
// });
|
||||||
|
|
||||||
|
// $test->it('存在しないユーザーでログイン出来ないはず', function($test) use ($pass): void {
|
||||||
|
// $auth = new Auth();
|
||||||
|
// $res = $auth->setToken('fumeiuser', $pass);
|
||||||
|
|
||||||
|
// $test->assertFalse($res->isSuccess);
|
||||||
|
// $test->assertEquals('ユーザー名又はパスワードが一致していません', $res->message);
|
||||||
|
// });
|
||||||
|
|
||||||
|
// $test->it('ログアウト出来るはず', function($test) use ($user, $pass): void {
|
||||||
|
// $auth = new Auth();
|
||||||
|
// $auth->setToken($user, $pass);
|
||||||
|
|
||||||
|
// $res = $auth->logout();
|
||||||
|
|
||||||
|
// $test->assertTrue($res->isSuccess);
|
||||||
|
// $test->assertEquals('ログイン成功', $res->message);
|
||||||
|
|
||||||
|
// $auth2 = new Auth();
|
||||||
|
// $usr = $auth2->getLoggedInUser();
|
||||||
|
|
||||||
|
// $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');
|
||||||
|
// });
|
||||||
@@ -1,8 +1,12 @@
|
|||||||
<?php
|
<?php
|
||||||
require_once __DIR__.DIRECTORY_SEPARATOR.'/autoload.php';
|
require_once __DIR__.DIRECTORY_SEPARATOR.'/autoload.php';
|
||||||
|
require_once __DIR__.DIRECTORY_SEPARATOR.'/util.php';
|
||||||
define('ROOT', realpath(__DIR__));
|
define('ROOT', realpath(__DIR__));
|
||||||
require_once __DIR__.DIRECTORY_SEPARATOR.'/config/config.php';
|
require_once __DIR__.DIRECTORY_SEPARATOR.'/config/config.php';
|
||||||
|
|
||||||
|
mb_internal_encoding('UTF-8');
|
||||||
|
header('Content-Type: text/plain; charset=UTF-8');
|
||||||
|
|
||||||
$testDir = __DIR__.DIRECTORY_SEPARATOR.'src/Site/Test';
|
$testDir = __DIR__.DIRECTORY_SEPARATOR.'src/Site/Test';
|
||||||
$testFiles = glob($testDir.'/*.php');
|
$testFiles = glob($testDir.'/*.php');
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user