Merge pull request #15356 from snipe/validate_location_parent

Fixed #15341 - validate parent ID
This commit is contained in:
snipe 2024-08-21 10:12:58 +01:00 committed by GitHub
commit d0acf5b8a6
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 31 additions and 2 deletions

View file

@ -33,7 +33,7 @@ class Location extends SnipeModel
'country' => 'min:2|max:191|nullable',
'zip' => 'max:10|nullable',
'manager_id' => 'exists:users,id|nullable',
'parent_id' => 'non_circular:locations,id',
'parent_id' => 'nullable|exists:locations,id|non_circular:locations,id',
];
protected $casts = [

View file

@ -32,6 +32,20 @@ class CreateLocationsTest extends TestCase
$this->assertTrue(Location::where('name', 'Test Location')->exists());
}
public function testUserCannotCreateLocationsWithInvalidParent()
{
$this->assertFalse(Location::where('name', 'Test Location')->exists());
$this->actingAs(User::factory()->superuser()->create())
->from(route('locations.create'))
->post(route('locations.store'), [
'name' => 'Test Location',
'parent_id' => '100000000'
])
->assertRedirect(route('locations.create'));
$this->assertFalse(Location::where('name', 'Test Location')->exists());
}
}

View file

@ -52,6 +52,21 @@ class UpdateLocationsTest extends TestCase
$this->assertFalse(Location::where('name', 'Test Location')->exists());
}
public function testUserCannotEditLocationsWithInvalidParent()
{
$location = Location::factory()->create();
$response = $this->actingAs(User::factory()->superuser()->create())
->from(route('locations.edit', ['location' => $location->id]))
->put(route('locations.update', ['location' => $location]), [
'name' => 'Test Location',
'parent_id' => '100000000'
])
->assertRedirect(route('locations.edit', ['location' => $location->id]));
$this->followRedirects($response)->assertSee(trans('general.error'));
$this->assertFalse(Location::where('name', 'Test Location')->exists());
}
}