Skip to content

Commit 5e10c21

Browse files
authored
Merge pull request #16488 from marcusmoore/bug/sc-28631
Nice catch!
2 parents b61eacb + e2f643e commit 5e10c21

File tree

3 files changed

+64
-1
lines changed

3 files changed

+64
-1
lines changed

app/Exceptions/Handler.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,8 @@ public function render($request, Throwable $e)
141141
$route = 'kits.index';
142142
} elseif ($route == 'assetmaintenances.index') {
143143
$route = 'maintenances.index';
144+
} elseif ($route === 'licenseseats.index') {
145+
$route = 'licenses.index';
144146
}
145147

146148
return redirect()
@@ -203,4 +205,4 @@ public function register()
203205
//
204206
});
205207
}
206-
}
208+
}

database/factories/UserFactory.php

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,11 @@ public function deleteAssetModels()
150150
return $this->appendPermission(['models.delete' => '1']);
151151
}
152152

153+
public function viewAssetModels()
154+
{
155+
return $this->appendPermission(['models.view' => '1']);
156+
}
157+
153158
public function viewAccessories()
154159
{
155160
return $this->appendPermission(['accessories.view' => '1']);
@@ -360,6 +365,11 @@ public function deletePredefinedKits()
360365
return $this->appendPermission(['kits.delete' => '1']);
361366
}
362367

368+
public function viewPredefinedKits()
369+
{
370+
return $this->appendPermission(['kits.view' => '1']);
371+
}
372+
363373
public function deleteStatusLabels()
364374
{
365375
return $this->appendPermission(['statuslabels.delete' => '1']);
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
<?php
2+
3+
namespace Tests\Feature\Redirects;
4+
5+
use App\Models\User;
6+
use Tests\TestCase;
7+
8+
class ModelNotFoundRedirectTest extends TestCase
9+
{
10+
public function testHandlesAsset404()
11+
{
12+
$this->actingAs(User::factory()->viewAssets()->create())
13+
->get(route('hardware.checkout.create', 9999))
14+
->assertRedirectToRoute('hardware.index');
15+
}
16+
17+
public function testHandlesAssetMaintenance404()
18+
{
19+
$this->actingAs(User::factory()->viewAssets()->create())
20+
->get(route('maintenances.show', 9999))
21+
->assertRedirectToRoute('maintenances.index');
22+
}
23+
24+
public function testHandlesAssetModel404()
25+
{
26+
$this->actingAs(User::factory()->viewAssetModels()->create())
27+
->get(route('models.show', 9999))
28+
->assertRedirectToRoute('models.index');
29+
}
30+
31+
public function testHandlesLicenseSeat404()
32+
{
33+
$this->actingAs(User::factory()->viewLicenses()->create())
34+
->get(route('licenses.checkin', 9999))
35+
->assertRedirectToRoute('licenses.index');
36+
}
37+
38+
public function testHandlesPredefinedKit404()
39+
{
40+
$this->actingAs(User::factory()->viewPredefinedKits()->create())
41+
->get(route('kits.show', 9999))
42+
->assertRedirectToRoute('kits.index');
43+
}
44+
45+
public function testHandlesReportTemplate404()
46+
{
47+
$this->actingAs(User::factory()->canViewReports()->create())
48+
->get(route('report-templates.show', 9999))
49+
->assertRedirectToRoute('reports/custom');
50+
}
51+
}

0 commit comments

Comments
 (0)