trip-planner/backend/app/Infrastructure/Http/Controllers/API/E2e/TestSetupController.php

73 lines
2.1 KiB
PHP
Raw Normal View History

2025-09-27 01:26:58 +02:00
<?php
2025-09-27 11:52:59 +02:00
namespace App\Infrastructure\Http\Controllers\API\E2e;
2025-09-27 01:26:58 +02:00
2025-09-27 11:52:59 +02:00
use App\Infrastructure\Http\Controllers\Controller;
2025-09-27 01:26:58 +02:00
use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;
class TestSetupController extends Controller
{
/**
* Create test user for E2E tests (development only)
*/
public function createTestUser(Request $request)
{
// Only allow in development/testing environments
if (app()->environment('production')) {
return response()->json(['error' => 'Not available in production'], 403);
}
$validated = $request->validate([
'email' => 'required|email',
'password' => 'required|min:8',
'name' => 'required|string'
]);
$user = User::firstOrCreate(
['email' => $validated['email']],
[
'name' => $validated['name'],
'password' => Hash::make($validated['password']),
'email_verified_at' => now(),
]
);
2025-09-27 11:52:59 +02:00
// Ensure email_verified_at is set even for existing users
if (!$user->email_verified_at) {
$user->email_verified_at = now();
$user->save();
}
2025-09-27 01:26:58 +02:00
return response()->json([
'success' => true,
'message' => $user->wasRecentlyCreated ? 'Test user created' : 'Test user already exists',
'data' => [
'id' => $user->id,
'email' => $user->email,
'name' => $user->name
]
]);
}
/**
* Clean up test data
*/
public function cleanup(Request $request)
{
if (app()->environment('production')) {
return response()->json(['error' => 'Not available in production'], 403);
}
// Delete test users (those with specific test email patterns)
$deleted = User::where('email', 'LIKE', 'test%@example.com')
->orWhere('email', 'LIKE', 'test.user.%@example.com')
->delete();
return response()->json([
'success' => true,
'message' => "Deleted $deleted test users"
]);
}
}