diff --git a/app/Http/Controllers/EventsController.php b/app/Http/Controllers/EventsController.php new file mode 100644 index 0000000..e9dfe70 --- /dev/null +++ b/app/Http/Controllers/EventsController.php @@ -0,0 +1,33 @@ +user()->role != 1) { + return response()->json(['message' => 'Forbidden'], 403); + } + + try { + + Events::create([ + "name" => $request['name'], + "description" => $request['description'], + ]); + + return response()->json(['message' => 'Event created']); + + } catch (\Exception $e) { + Log::info($e->getMessage()); + return response()->json(['message' => "Server error"], 500); + } + + } +} diff --git a/app/Models/Events.php b/app/Models/Events.php new file mode 100644 index 0000000..4a589cc --- /dev/null +++ b/app/Models/Events.php @@ -0,0 +1,15 @@ + + */ +class EventsFactory extends Factory +{ + /** + * Define the model's default state. + * + * @return array + */ + public function definition(): array + { + return [ + 'name' => $this->faker->text(15), + 'description' => $this->faker->text(50), + ]; + } +} diff --git a/database/factories/UserFactory.php b/database/factories/UserFactory.php index 584104c..d2c0196 100644 --- a/database/factories/UserFactory.php +++ b/database/factories/UserFactory.php @@ -25,10 +25,12 @@ class UserFactory extends Factory { return [ 'name' => fake()->name(), + 'lastname' => fake()->lastname(), 'email' => fake()->unique()->safeEmail(), - 'email_verified_at' => now(), - 'password' => static::$password ??= Hash::make('password'), + 'password' => Hash::make('password'), 'remember_token' => Str::random(10), + 'validate' => rand(0, 1), + 'role' => rand(2, 5) ]; } diff --git a/database/migrations/2025_10_27_211752_create_events_table.php b/database/migrations/2025_10_27_211752_create_events_table.php new file mode 100644 index 0000000..c365c15 --- /dev/null +++ b/database/migrations/2025_10_27_211752_create_events_table.php @@ -0,0 +1,29 @@ +id(); + $table->string('name'); + $table->string('description'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('events'); + } +}; diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php index d01a0ef..0f41dc8 100644 --- a/database/seeders/DatabaseSeeder.php +++ b/database/seeders/DatabaseSeeder.php @@ -3,7 +3,7 @@ namespace Database\Seeders; use App\Models\User; -// use Illuminate\Database\Console\Seeds\WithoutModelEvents; +use App\Models\Events; use Illuminate\Database\Seeder; class DatabaseSeeder extends Seeder @@ -13,11 +13,15 @@ class DatabaseSeeder extends Seeder */ public function run(): void { - // User::factory(10)->create(); User::factory()->create([ 'name' => 'Test User', 'email' => 'test@example.com', + 'role' => 1 ]); + + User::factory()->count(10)->create(); + + Events::factory()->count(10)->create(); } } diff --git a/routes/api.php b/routes/api.php index 222f47e..0e32da9 100644 --- a/routes/api.php +++ b/routes/api.php @@ -2,6 +2,7 @@ use App\Http\Controllers\AuthController; use App\Http\Controllers\UserController; +use App\Http\Controllers\EventsController; use Illuminate\Http\Request; use Illuminate\Support\Facades\Route; @@ -30,3 +31,5 @@ Route::middleware(['web', 'auth:sanctum'])->post('/users/{id}/validate', [UserCo Route::middleware(['web', 'auth:sanctum'])->post('/users/{id}/role', [UserController::class, "addRole"]); Route::middleware(['web', 'auth:sanctum'])->get('/users', [UserController::class, "getUsers"]); + +Route::middleware(['web', 'auth:sanctum'])->post('/events/create', [EventsController::class, "create"]); diff --git a/tests/Events/Create event.bru b/tests/Events/Create event.bru new file mode 100644 index 0000000..0aef09b --- /dev/null +++ b/tests/Events/Create event.bru @@ -0,0 +1,36 @@ +meta { + name: Create event + type: http + seq: 1 +} + +post { + url: {{url}}/api/events/create + body: json + auth: inherit +} + +headers { + X-XSRF-TOKEN: +} + +body:json { + { + "name": "{{name}}", + "description": "{{description}}" + } +} + +vars:pre-request { + name: Mon super event + description: Ma super description +} + +assert { + res.status: eq 200 +} + +settings { + encodeUrl: true + timeout: 0 +} diff --git a/tests/Events/folder.bru b/tests/Events/folder.bru new file mode 100644 index 0000000..16fb8d3 --- /dev/null +++ b/tests/Events/folder.bru @@ -0,0 +1,8 @@ +meta { + name: Events + seq: 7 +} + +auth { + mode: inherit +} diff --git a/tests/Login.bru b/tests/Login.bru index 271ad3d..009e155 100644 --- a/tests/Login.bru +++ b/tests/Login.bru @@ -23,8 +23,8 @@ body:json { } vars:pre-request { - email: test@test.com - password: test + email: test@example.com + password: password } assert { diff --git a/tests/Users/Delete user by id.bru b/tests/Users/Delete user by id.bru index 2af5ef6..633709f 100644 --- a/tests/Users/Delete user by id.bru +++ b/tests/Users/Delete user by id.bru @@ -11,7 +11,7 @@ delete { } headers { - X-XSRF-TOKEN: eyJpdiI6IndIakNUdWVLbUs4cEErZHpLYm9xY2c9PSIsInZhbHVlIjoib09MWDhBZWxrZnB0UCthSlpMVE1sT09iY0ZJNlpuZ1NWRWRvWnYvVVMrSm1yeWpob0JFSVpVa1pTTGJpc255eWV4QXlSS2IwZzNCZ0xPL1lMRWVRMDR6eU83OG9CV2J5ZUJqbENRWmdhRGZRM0hXczc2KzNKQVV1YmVCN0NwVHciLCJtYWMiOiIxOGZhNzI1ZDE0NTNlNTVkMDI3NjVhNTRmMjI4YWUwOTI1NjQ3MTllNTU4ZDA2NWQwNjM5MDM5MmE1OTIwYjUzIiwidGFnIjoiIn0= + X-XSRF-TOKEN: } settings { diff --git a/tests/Users/Modify user role.bru b/tests/Users/Modify user role.bru index b8fa82b..8d95cef 100644 --- a/tests/Users/Modify user role.bru +++ b/tests/Users/Modify user role.bru @@ -12,7 +12,7 @@ post { headers { Accept: application/json - X-XSRF-TOKEN: eyJpdiI6IkN0OWIwbGM5RU8yd2FzMmFURDRuNUE9PSIsInZhbHVlIjoiRjBtd0o5Um9jaFN4dDkzbGlGNFBEWlNDOEFUdGJQVzgrSmpabTlQMDZUekhnY3NnWG55RUQwUDdKazBlRk1pWTloUGRKQjhNRE5oVCtLT2dLSmY1d2RRSEFuNjZ3UDNWVURLNERBckd1TnMwM2ZOZ2xzM2dlQjFwYlZIemZmRGEiLCJtYWMiOiI4ZGVkNTY3NjIwMjU3YmZiOWRjZDE1NDQ1OGU3ZTkwYzFlYTMzYmEwNDdhNWMwNWQxNWUyMTBjODMyMTY5ZGRlIiwidGFnIjoiIn0= + X-XSRF-TOKEN: } body:json { diff --git a/tests/environments/dev.bru b/tests/environments/dev.bru index 04c34c7..9dfcac1 100644 --- a/tests/environments/dev.bru +++ b/tests/environments/dev.bru @@ -1,6 +1,3 @@ -vars { - url: http://localhost:8000 -} vars:secret [ - token + url ]