Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
pterodactyl
GitHub Repository: pterodactyl/panel
Path: blob/1.0-develop/tests/Traits/Http/RequestMockHelpers.php
7461 views
1
<?php
2
3
namespace Pterodactyl\Tests\Traits\Http;
4
5
use Mockery as m;
6
use Mockery\Mock;
7
use Illuminate\Http\Request;
8
use Pterodactyl\Models\User;
9
use Symfony\Component\HttpFoundation\ParameterBag;
10
11
trait RequestMockHelpers
12
{
13
private string $requestMockClass = Request::class;
14
15
protected Request|Mock $request;
16
17
/**
18
* Set the class to mock for requests.
19
*/
20
public function setRequestMockClass(string $class): void
21
{
22
$this->requestMockClass = $class;
23
24
$this->buildRequestMock();
25
}
26
27
/**
28
* Configure the user model that the request mock should return with.
29
*/
30
public function setRequestUserModel(?User $user = null): void
31
{
32
$this->request->shouldReceive('user')->andReturn($user);
33
}
34
35
/**
36
* Generates a new request user model and also returns the generated model.
37
*/
38
public function generateRequestUserModel(array $args = []): User
39
{
40
/** @var User $user */
41
$user = User::factory()->make($args);
42
$this->setRequestUserModel($user);
43
44
return $user;
45
}
46
47
/**
48
* Set a request attribute on the mock object.
49
*/
50
public function setRequestAttribute(string $attribute, mixed $value): void
51
{
52
$this->request->attributes->set($attribute, $value);
53
}
54
55
/**
56
* Set the request route name.
57
*/
58
public function setRequestRouteName(string $name): void
59
{
60
$this->request->shouldReceive('route->getName')->andReturn($name);
61
}
62
63
/**
64
* Set the active request object to be an instance of a mocked request.
65
*/
66
protected function buildRequestMock(): void
67
{
68
$this->request = m::mock($this->requestMockClass);
69
if (!$this->request instanceof Request) {
70
throw new \InvalidArgumentException('Request mock class must be an instance of ' . Request::class . ' when mocked.');
71
}
72
73
$this->request->attributes = new ParameterBag();
74
}
75
76
/**
77
* Sets the mocked request user. If a user model is not provided, a factory model
78
* will be created and returned.
79
*
80
* @deprecated
81
*/
82
protected function setRequestUser(?User $user = null): User
83
{
84
$user = $user instanceof User ? $user : User::factory()->make();
85
$this->request->shouldReceive('user')->withNoArgs()->andReturn($user);
86
87
return $user;
88
}
89
}
90
91