php パスワードリセットテスト

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php パスワードリセットテスト相关的知识,希望对你有一定的参考价值。

<?php

namespace Tests\Feature;

use Tests\TestCase;
use Illuminate\Foundation\Testing\WithoutMiddleware;
use Illuminate\Foundation\Testing\DatabaseMigrations;
use Illuminate\Foundation\Testing\DatabaseTransactions;

use Auth;
use Hash;
use Notification;
use App\Auth\Notifications\ResetPassword;
use App\User;

class ResetPasswordTest extends TestCase
{
    use DatabaseMigrations;

    /**
     * @test
     * パスワードリセットをリクエストする画面の閲覧可能
     */
    public function user_can_view_reset_request()
    {
        $response = $this->get('password/reset');

        $response->assertStatus(200);
    }

    /**
     * @test
     * パスワードリセットのリクエスト成功
     */
    public function valid_user_can_request_reset()
    {
        // ユーザーを1つ作成
        $user = factory(User::class)->create();

        // パスワードリセットをリクエスト
        $response = $this->from('password/email')->post('password/email', [
            'email' => $user->email,
        ]);

        // 同画面にリダイレクト
        $response->assertStatus(302);
        $response->assertRedirect('password/email');
        // 成功のメッセージ
        $response->assertSessionHas('status',
            'リクエストを受け付けました。パスワードの再設定方法をメールでお知らせします。');
    }

    /**
     * @test
     * 存在しないメールアドレスでパスワードリセットのリクエストをして失敗
     */
    public function invalid_user_cannot_request_reset()
    {
        // ユーザーを1つ作成
        $user = factory(User::class)->create();

        // 存在しないユーザーのメールアドレスでパスワードリセットをリクエスト
        $response = $this->from('password/email')->post('password/email', [
            'email' => 'nobody@example.com'
        ]);

        $response->assertStatus(302);
        $response->assertRedirect('password/email');
        // 失敗のエラーメッセージ
        $response->assertSessionHasErrors('email',
            '指定のメールアドレスは見つかりませんでした');
    }

    /**
     * @test
     * パスワードリセットのトークンでパスワードをリセット
     */
    public function valid_user_can_reset_password()
    {
        Notification::fake();

        // ユーザーを1つ作成
        $user = factory(User::class)->create();

        // パスワードリセットをリクエスト
        $response = $this->post('password/email', [
            'email' => $user->email
        ]);

        // トークンを取得

        $token = '';

        Notification::assertSentTo(
            $user,
            ResetPassword::class,
            function ($notification, $channels) use ($user, &$token) {
                $token = $notification->token;
                return true;
            }
        );

        // パスワードリセットの画面へ
        $response = $this->get('password/reset/'.$token);

        $response->assertStatus(200);

        // パスワードをリセット

        $new = 'reset1111';

        $response = $this->post('password/reset', [
            'email'                 => $user->email,
            'token'                 => $token,
            'password'              => $new,
            'password_confirmation' => $new
        ]);

        // ホームへ遷移
        $response->assertStatus(302);
        $response->assertRedirect('/home');
        // リセット成功のメッセージ
        $response->assertSessionHas('status', 'パスワードはリセットされました!');

        // 認証されていることを確認
        $this->assertTrue(Auth::check());

        // 変更されたパスワードが保存されていることを確認
        $this->assertTrue(Hash::check($new, $user->fresh()->password));
    }
}

以上是关于php パスワードリセットテスト的主要内容,如果未能解决你的问题,请参考以下文章

python Raspberry pi拡张ユニットテストと実装。

python Raspberry pi拡张ユニットテストと実装。

css フォームのデフォルトレイアウトをリセットする

css フォームのデフォルトレイアウトをリセットする

python ユーザーセットアップの置き场パスを取得する方法

csharp アセットバンドル化したLive2DをStreamingAssetsからロードするサンプルコード※エラーハンドリング无し,UnityEditor専用