Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
pterodactyl
GitHub Repository: pterodactyl/panel
Path: blob/1.0-develop/tests/Unit/Http/Middleware/MaintenanceMiddlewareTest.php
7461 views
1
<?php
2
3
namespace Pterodactyl\Tests\Unit\Http\Middleware;
4
5
use Mockery as m;
6
use Mockery\MockInterface;
7
use Pterodactyl\Models\Node;
8
use Illuminate\Http\Response;
9
use Pterodactyl\Models\Server;
10
use Illuminate\Contracts\Routing\ResponseFactory;
11
use Pterodactyl\Http\Middleware\MaintenanceMiddleware;
12
13
class MaintenanceMiddlewareTest extends MiddlewareTestCase
14
{
15
private MockInterface $response;
16
17
/**
18
* Setup tests.
19
*/
20
public function setUp(): void
21
{
22
parent::setUp();
23
24
$this->response = m::mock(ResponseFactory::class);
25
}
26
27
/**
28
* Test that a node not in maintenance mode continues through the request cycle.
29
*/
30
public function testHandle()
31
{
32
$server = Server::factory()->make();
33
$node = Node::factory()->make(['maintenance' => 0]);
34
35
$server->setRelation('node', $node);
36
$this->setRequestAttribute('server', $server);
37
38
$this->getMiddleware()->handle($this->request, $this->getClosureAssertions());
39
}
40
41
/**
42
* Test that a node in maintenance mode returns an error view.
43
*/
44
public function testHandleInMaintenanceMode()
45
{
46
$server = Server::factory()->make();
47
$node = Node::factory()->make(['maintenance_mode' => 1]);
48
49
$server->setRelation('node', $node);
50
$this->setRequestAttribute('server', $server);
51
52
$this->response->shouldReceive('view')
53
->once()
54
->with('errors.maintenance')
55
->andReturn(new Response());
56
57
$response = $this->getMiddleware()->handle($this->request, $this->getClosureAssertions());
58
$this->assertInstanceOf(Response::class, $response);
59
}
60
61
private function getMiddleware(): MaintenanceMiddleware
62
{
63
return new MaintenanceMiddleware($this->response);
64
}
65
}
66
67