create([ 'password' => Hash::make('password') ]); $response = $this->postJson('/api/login', [ 'email' => $student->email, 'password' => 'password' ]); $response->assertStatus(200) ->assertJsonStructure(['user', 'token', 'user_type']) ->assertJson(['user_type' => 'student']); } public function test_company_login() { $company = Company::factory()->create([ 'password' => Hash::make('password123') ]); $response = $this->postJson('/api/login', [ 'email' => $company->email, 'password' => 'password123' ]); $response->assertStatus(200) ->assertJsonStructure(['user', 'token', 'user_type']) ->assertJson(['user_type' => 'company']); } public function test_admin_login() { $admin = Admin::factory()->create([ 'password' => Hash::make('password123') ]); $response = $this->postJson('/api/login', [ 'email' => $admin->email, 'password' => 'password123' ]); $response->assertStatus(200) ->assertJsonStructure(['user', 'token', 'user_type']) ->assertJson(['user_type' => 'admin']); } public function test_login_with_wrong_credentials() { $response = $this->postJson('/api/login', [ 'email' => 'fake@example.com', 'password' => 'wrongpassword' ]); $response->assertStatus(422) ->assertJsonValidationErrors('email'); } public function test_user_can_logout() { $student = Student::factory()->create(); Sanctum::actingAs($student, ['student']); $response = $this->postJson('/api/logout'); $response->assertStatus(200) ->assertJson(['message' => 'Successfully logged out']); } }