get('/admin/login'); $response->assertStatus(200); } /** * Test admin login validation fails if email is invalid. */ public function test_admin_login_fails_if_email_is_invalid() { $response = $this->post('/admin/login', [ 'email' => 'invalid-email', 'password' => 'password', ]); $response->assertSessionHasErrors(['email']); $this->assertEquals( 'Please enter a valid email address.', session('errors')->get('email')[0] ); } /** * Test admin login validation fails if email is not registered. */ public function test_admin_login_fails_if_email_is_not_registered() { $response = $this->post('/admin/login', [ 'email' => 'unregistered@example.com', 'password' => 'password', ]); $response->assertSessionHasErrors(['email']); $this->assertEquals( 'This email is not registered.', session('errors')->get('email')[0] ); } /** * Test admin login validation fails if email is registered but not as an admin. */ public function test_admin_login_fails_if_user_is_not_an_admin() { User::create([ 'name' => 'Regular User', 'email' => 'user@example.com', 'password' => bcrypt('password'), 'role' => 'employer', // Not admin ]); $response = $this->post('/admin/login', [ 'email' => 'user@example.com', 'password' => 'password', ]); $response->assertSessionHasErrors(['email']); $this->assertEquals( 'This email is not registered as an admin.', session('errors')->get('email')[0] ); } /** * Test admin login validation fails if password is wrong. */ public function test_admin_login_fails_if_password_is_incorrect() { User::create([ 'name' => 'Admin User', 'email' => 'admin_test@example.com', 'password' => bcrypt('correct_password'), 'role' => 'admin', ]); $response = $this->post('/admin/login', [ 'email' => 'admin_test@example.com', 'password' => 'wrong_password', ]); $response->assertSessionHasErrors(['password']); $this->assertEquals( 'The password you entered is incorrect.', session('errors')->get('password')[0] ); } /** * Test admin login succeeds with correct credentials. */ public function test_admin_login_succeeds_with_correct_credentials() { $admin = User::create([ 'name' => 'Admin User', 'email' => 'admin_test@example.com', 'password' => bcrypt('correct_password'), 'role' => 'admin', ]); $response = $this->post('/admin/login', [ 'email' => 'admin_test@example.com', 'password' => 'correct_password', ]); $response->assertRedirect('/admin/dashboard'); $this->assertAuthenticatedAs($admin); } }