mirror of
https://github.com/flarum/core.git
synced 2025-07-27 03:30:28 +02:00
fix insertAfter and insertBefore middleware extender functions (#2063)
This commit is contained in:
@@ -49,14 +49,14 @@ class Middleware implements ExtenderInterface
|
|||||||
|
|
||||||
public function insertBefore($originalMiddleware, $newMiddleware)
|
public function insertBefore($originalMiddleware, $newMiddleware)
|
||||||
{
|
{
|
||||||
$this->replaceMiddlewares[$originalMiddleware] = $newMiddleware;
|
$this->insertBeforeMiddlewares[$originalMiddleware] = $newMiddleware;
|
||||||
|
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function insertAfter($originalMiddleware, $newMiddleware)
|
public function insertAfter($originalMiddleware, $newMiddleware)
|
||||||
{
|
{
|
||||||
$this->replaceMiddlewares[$originalMiddleware] = $newMiddleware;
|
$this->insertAfterMiddlewares[$originalMiddleware] = $newMiddleware;
|
||||||
|
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
@@ -81,7 +81,7 @@ class Middleware implements ExtenderInterface
|
|||||||
foreach ($this->insertBeforeMiddlewares as $originalMiddleware => $newMiddleware) {
|
foreach ($this->insertBeforeMiddlewares as $originalMiddleware => $newMiddleware) {
|
||||||
array_splice(
|
array_splice(
|
||||||
$existingMiddleware,
|
$existingMiddleware,
|
||||||
array_search($originalMiddleware, $existingMiddleware),
|
array_search($originalMiddleware, $existingMiddleware) + 1,
|
||||||
0,
|
0,
|
||||||
$newMiddleware
|
$newMiddleware
|
||||||
);
|
);
|
||||||
@@ -90,7 +90,7 @@ class Middleware implements ExtenderInterface
|
|||||||
foreach ($this->insertAfterMiddlewares as $originalMiddleware => $newMiddleware) {
|
foreach ($this->insertAfterMiddlewares as $originalMiddleware => $newMiddleware) {
|
||||||
array_splice(
|
array_splice(
|
||||||
$existingMiddleware,
|
$existingMiddleware,
|
||||||
array_search($originalMiddleware, $existingMiddleware) + 1,
|
array_search($originalMiddleware, $existingMiddleware),
|
||||||
0,
|
0,
|
||||||
$newMiddleware
|
$newMiddleware
|
||||||
);
|
);
|
||||||
|
@@ -84,6 +84,44 @@ class MiddlewareTest extends TestCase
|
|||||||
$this->assertEquals(200, $response->getStatusCode());
|
$this->assertEquals(200, $response->getStatusCode());
|
||||||
$this->assertArrayNotHasKey('X-First-Test-Middleware', $response->getHeaders());
|
$this->assertArrayNotHasKey('X-First-Test-Middleware', $response->getHeaders());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @test
|
||||||
|
*/
|
||||||
|
public function can_insert_before_middleware()
|
||||||
|
{
|
||||||
|
$this->add_first_middleware();
|
||||||
|
$this->extend(
|
||||||
|
(new Extend\Middleware('forum'))->insertBefore(FirstTestMiddleware::class, SecondTestMiddleware::class)
|
||||||
|
);
|
||||||
|
|
||||||
|
$response = $this->send($this->request('GET', '/'));
|
||||||
|
$headers = $response->getHeaders();
|
||||||
|
$newMiddlewarePosition = array_search('X-Second-Test-Middleware', array_keys($headers));
|
||||||
|
$originalMiddlewarePosition = array_search('X-First-Test-Middleware', array_keys($headers));
|
||||||
|
|
||||||
|
$this->assertEquals(200, $response->getStatusCode());
|
||||||
|
$this->assertLessThan($originalMiddlewarePosition, $newMiddlewarePosition);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @test
|
||||||
|
*/
|
||||||
|
public function can_insert_after_middleware()
|
||||||
|
{
|
||||||
|
$this->add_first_middleware();
|
||||||
|
$this->extend(
|
||||||
|
(new Extend\Middleware('forum'))->insertAfter(FirstTestMiddleware::class, SecondTestMiddleware::class)
|
||||||
|
);
|
||||||
|
|
||||||
|
$response = $this->send($this->request('GET', '/'));
|
||||||
|
$headers = $response->getHeaders();
|
||||||
|
$newMiddlewarePosition = array_search('X-Second-Test-Middleware', array_keys($headers));
|
||||||
|
$originalMiddlewarePosition = array_search('X-First-Test-Middleware', array_keys($headers));
|
||||||
|
|
||||||
|
$this->assertEquals(200, $response->getStatusCode());
|
||||||
|
$this->assertGreaterThan($originalMiddlewarePosition, $newMiddlewarePosition);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class FirstTestMiddleware implements MiddlewareInterface
|
class FirstTestMiddleware implements MiddlewareInterface
|
||||||
|
Reference in New Issue
Block a user