Skip to content

Commit 43d66a9

Browse files
committed
🐛 could delete unexisting resource
1 parent 7bcaba0 commit 43d66a9

File tree

2 files changed

+28
-0
lines changed

2 files changed

+28
-0
lines changed

src/Http/Requests/DestroyRequest.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
namespace Lomkit\Rest\Http\Requests;
44

5+
use Illuminate\Validation\Rule;
56
use Lomkit\Rest\Http\Resource;
67

78
class DestroyRequest extends RestRequest
@@ -32,10 +33,15 @@ public function rules()
3233
*/
3334
public function destroyRules(Resource $resource)
3435
{
36+
$model = $resource::newModel();
37+
3538
return [
3639
'resources' => [
3740
'required', 'array',
3841
],
42+
'resources.*' => [
43+
Rule::exists($model->getTable(), $model->getKeyName())
44+
]
3945
];
4046
}
4147
}

tests/Feature/Controllers/DeleteOperationsTest.php

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,28 @@ public function test_deleting_a_non_authorized_model_with_an_authorized_one(): v
5656
$this->assertDatabaseHas('models', $modelDeletable->only('id'));
5757
}
5858

59+
public function test_deleting_a_not_existing_model(): void
60+
{
61+
$model = ModelFactory::new()->count(1)->createOne();
62+
63+
Gate::policy(Model::class, GreenPolicy::class);
64+
65+
$response = $this->delete(
66+
'/api/models',
67+
[
68+
'resources' => [
69+
'undefined-id',
70+
$model->getKey()
71+
],
72+
],
73+
['Accept' => 'application/json']
74+
);
75+
76+
$response->assertStatus(422);
77+
$response->assertExactJsonStructure(['message', 'errors' => ['resources.0']]);
78+
$this->assertDatabaseHas('models', $model->only('id'));
79+
}
80+
5981
public function test_deleting_a_model(): void
6082
{
6183
$model = ModelFactory::new()->count(1)->createOne();

0 commit comments

Comments
 (0)