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

67 lines
1.9 KiB
PHP
Raw Normal View History

2025-09-27 01:26:58 +02:00
<?php
namespace App\Http\Controllers\API;
use App\Http\Controllers\Controller;
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(),
]
);
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"
]);
}
}