diff --git a/src/Site/Test/LibAuth.php b/src/Site/Test/LibAuth.php new file mode 100644 index 0000000..40386d1 --- /dev/null +++ b/src/Site/Test/LibAuth.php @@ -0,0 +1,223 @@ + 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 = 'エラー:ユーザー名をご入力下さい。'.'
'; + + $test->assertNotNull($res); + $test->assertEquals($res->message, $expect); + + $user = "admin5678"; + $pass = ""; + $res = $auth->mkUser($user, $pass, $passVerify, $email); + + $expect = 'エラー:パスワードをご入力下さい。'.'
'; + + $test->assertNotNull($res); + $test->assertEquals($res->message, $expect); + + $pass = "testTEST1234!#$%@[]:;"; + $email = ""; + $res = $auth->mkUser($user, $pass, $passVerify, $email); + + $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"; + + $auth = new Auth(); + $res = $auth->mkUser($user, $pass, $passVerify, $email); + + $expect = 'ユーザー「admin1234」は既に存在します。'.'
'; + + $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」は既に存在します。'.'
'; + + $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 = 'エラー:パスワードは一致していません。'.'
'; + + $test->assertNotNull($res); + $test->assertEquals($res->message, $expect); + + $pass = "testTEST1234"; + $passVerify = "testTEST1234"; + $res = $auth->mkUser($user, $pass, $passVerify, $email); + + $expect = 'エラー:パスワードは20以上をご入力下さい。'.'
'; + + $test->assertNotNull($res); + $test->assertEquals($res->message, $expect); + + $pass = "testTEST1234testTEST"; + $passVerify = "testTEST1234testTEST"; + $res = $auth->mkUser($user, $pass, $passVerify, $email); + + $expect = 'エラー:パスワードは2つ以上の大文字、2つ以上の小文字、2つ以上の数字、及び2つ以上の特別文字を含む事が必須です。'.'
'; + + $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 = 'エラー:メールアドレスは不正です。'.'
'; + + $test->assertNotNull($res); + $test->assertEquals($res->message, $expect); + + $email = "test@076"; + $res = $auth->mkUser($user, $pass, $passVerify, $email); + + $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; + } + } + 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'); +// }); \ No newline at end of file diff --git a/tester.php b/tester.php index b2e81ee..87dc5ea 100644 --- a/tester.php +++ b/tester.php @@ -1,8 +1,12 @@