Skip to content

Commit a53b94e

Browse files
Merge pull request #3 from jasonmccreary/uses-middleware
Assert controller action uses middleware
2 parents caf5efc + 8ccec37 commit a53b94e

File tree

2 files changed

+20
-0
lines changed

2 files changed

+20
-0
lines changed

README.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,12 @@ assertActionUsesFormRequest(string $controller, string $method, string $form_req
3535

3636
Verifies the _action_ for a given controller performs validation using the given form request.
3737

38+
```php
39+
assertActionUsesMiddleware(string $controller, string $method, string|array $middleware)
40+
```
41+
42+
Verifies the _action_ for a given controller uses the given middleware or set of middleware.
43+
3844

3945
## Matchers
4046
```php

src/Traits/HttpTestAssertions.php

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,4 +25,18 @@ public function assertActionUsesFormRequest(string $controller, string $method,
2525

2626
Assert::assertTrue($actual, 'Action "' . $method . '" does not have validation using the "' . $form_request . '" Form Request.');
2727
}
28+
29+
public function assertActionUsesMiddleware($controller, $method, $middleware)
30+
{
31+
$router = resolve(\Illuminate\Routing\Router::class);
32+
$route = $router->getRoutes()->getByAction($controller . '@' . $method);
33+
34+
Assert::assertNotNull($route, 'Unable to find route for controller action (' . $controller . '@' . $method . ')');
35+
36+
if (is_array($middleware)) {
37+
Assert::assertSame([], array_diff($middleware, $route->gatherMiddleware()), 'Controller action does not use middleware (' . implode(', ', $middleware) . ')');
38+
} else {
39+
Assert::assertTrue(in_array($middleware, $route->gatherMiddleware()), 'Controller action does not use middleware (' . $middleware . ')');
40+
}
41+
}
2842
}

0 commit comments

Comments
 (0)