postJson('/api/auth/register', [ 'first_name' => 'Hector', 'last_name' => 'Vio', 'email' => 'hector@example.com', 'phone' => '8112345678', 'password' => 'password123', 'device_name' => 'react-web', ]); $response ->assertCreated() ->assertJsonStructure([ 'message', 'token', 'token_type', 'user' => ['id', 'first_name', 'last_name', 'name', 'email', 'phone'], ]); $this->assertDatabaseHas('users', [ 'first_name' => 'Hector', 'last_name' => 'Vio', 'email' => 'hector@example.com', 'phone' => '8112345678', ]); } public function test_user_can_login_and_receive_a_token(): void { $user = User::factory()->create([ 'email' => 'hector@example.com', 'phone' => '8112345678', 'password' => 'password123', ]); $response = $this->postJson('/api/auth/login', [ 'email' => $user->email, 'password' => 'password123', 'device_name' => 'react-web', ]); $response ->assertOk() ->assertJsonStructure([ 'message', 'token', 'token_type', 'user' => ['id', 'first_name', 'last_name', 'name', 'email', 'phone'], ]); } public function test_authenticated_user_can_logout_and_revoke_current_token(): void { $user = User::factory()->create(); $token = $user->createToken('react-web'); $response = $this->withToken($token->plainTextToken) ->postJson('/api/auth/logout'); $response->assertOk()->assertJson([ 'message' => 'Logout successful.', ]); $this->assertDatabaseCount('personal_access_tokens', 0); } }