Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

BrownieCoffee's avatar

Session missing error: password Failed asserting that false is true.

Hi people ! I have another problem with my test. I have this error in output.

FAIL  Tests\Feature\LoginTest
  ✓ user can load login page
  ✓ user can authenticates with his credentials
  ✓ user cannot view login page after authentification
  ✕ user cannot authenticates with incorrect credentials


Session missing error: password Failed asserting that false is true.

  at tests/Feature/LoginTest.php:106
    102|             'password' => 'raprock12',
    103|         ]);
    104| 
    105|         $response->assertRedirect(route('login'));
  > 106|         $response->assertSessionHasErrors('password');
    107|         $this->assertTrue(session()->hasOldInput('email'));
    108|         $this->assertFalse(session()->hasOldInput('password'));
    109|         $this->assertGuest();
    110|     }

But still manually, my custom authentifications works... after registration, a redirected to my login page and when test manually my inputs show errors in there are.

public function loginPost(Request $request)
    {
        $request->validate([
            'email' => 'required|email',
            'password' => 'required'
        ]);


        //on retrouve l'utilisateur dans la base de données
        $user = User::where('email', $request->email)->first();


        // si celui-ci est trouvé...
        if ($user) {
            //     /**
            //      * ...on vérifie que le mot de passe entré en le champs correspond avec celui enregistré en BDD.
            //      *  Si c'est le cas...
            //      */
            if (Hash::check($request->password, $user->password)) {

                // l'utilisateur sera alors connecté.
                Auth::attempt(['email' => $request->email, 'password' => $request->password]);

                // il sera également redigigé vers la page de connexion.
                return redirect()->route('home');
            }

            /**
             * si une des saisie correspond à celles en BDD mais qu'il y a des erreurs...
             * ... on le redirige vers la page de connexion avec sa saisie précédent dans le champs email et l'erreur lui indiquant qu'il y a des erreurs dans ses saisies.
             */
            return redirect()->route('login')->withInput()->withErrors([
                'email' => 'Vous identifiants sont incorrect.'
            ]);

            // si son email est introuvable en BDD
        }

        if ($user === null) {
            //... on le redirige vers la page de connexion avec sa saisie précédent dans le champs email et l'erreur lui indiquant que son email n'est pas trouvable en bdd
            return redirect()->intended(route('login'))->withInput()->withErrors([
                'email' => 'Cet email nous est inconnu.'
            ]);
        }

        return redirect()->route('login')->withInput()->withErrors([
            'email' => 'Vous identifiants sont incorrect.'
        ]);

        // return redirect()->intended(route('login'))->withInput()->withErrors([
        //     'email' => 'Vous identifiants sont incorrect.'
        // ]);
    }

Can you help me please? Thank you in advance.

0 likes
1 reply
BrownieCoffee's avatar
BrownieCoffee
OP
Best Answer
Level 2

I find my solution I think.

My error inside my controller is a custom error generate by ->with() helper.

I add this code inside my test and it works now

 $response->assertSessionHasErrors([
            'email' => 'Vous identifiants sont incorrect.'
        ]);

Please or to participate in this conversation.