Skip to content

Commit bd1d991

Browse files
authored
Merge pull request #7 from Druid33/mock_request_service
request service should be removed before changing his definition
2 parents 9b0e192 + 749e20c commit bd1d991

File tree

2 files changed

+115
-6
lines changed

2 files changed

+115
-6
lines changed

src/Codeception/Lib/Connector/Phalcon4.php

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,17 @@
33
namespace Codeception\Lib\Connector;
44

55
use Closure;
6+
use Codeception\Lib\Connector\Shared\PhpSuperGlobalsConverter;
7+
use Codeception\Util\Stub;
68
use Phalcon\Di;
79
use Phalcon\Http;
8-
use RuntimeException;
9-
use ReflectionProperty;
10-
use Codeception\Util\Stub;
1110
use Phalcon\Mvc\Application;
12-
use Symfony\Component\BrowserKit\Cookie;
13-
use Symfony\Component\BrowserKit\AbstractBrowser as Client;
1411
use Phalcon\Mvc\Micro as MicroApplication;
12+
use ReflectionProperty;
13+
use RuntimeException;
14+
use Symfony\Component\BrowserKit\AbstractBrowser as Client;
15+
use Symfony\Component\BrowserKit\Cookie;
1516
use Symfony\Component\BrowserKit\Response;
16-
use Codeception\Lib\Connector\Shared\PhpSuperGlobalsConverter;
1717

1818
class Phalcon4 extends Client
1919
{
@@ -110,6 +110,9 @@ public function doRequest($request)
110110
Di::reset();
111111
Di::setDefault($di);
112112

113+
if ($di->has('request')) {
114+
$di->remove('request');
115+
}
113116
$di['request'] = Stub::construct($phRequest, [], ['getRawBody' => $request->getContent()]);
114117

115118
$response = $application->handle($pathString);

tests/unit/Phalcon4ConnectorTest.php

Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
use Codeception\Lib\Connector\Phalcon4 as PhalconConnector;
6+
use Codeception\Module\Phalcon4;
7+
use Symfony\Component\BrowserKit\Request;
8+
9+
class Phalcon4ConnectorTest extends \Codeception\Test\Unit
10+
{
11+
protected function getPhalconModule(): Phalcon4
12+
{
13+
$container = \Codeception\Util\Stub::make('Codeception\Lib\ModuleContainer');
14+
$module = new Phalcon4($container);
15+
$module->_setConfig([
16+
'bootstrap' => 'tests/_data/bootstrap.php',
17+
'cleanup' => true,
18+
'savepoints' => true,
19+
'session' => 'Codeception\Lib\Connector\Phalcon4\MemorySession'
20+
]);
21+
$module->_initialize();
22+
return $module;
23+
}
24+
25+
public function testConstruct(): void
26+
{
27+
$connector = new PhalconConnector();
28+
$this->assertInstanceOf(PhalconConnector::class, $connector);
29+
}
30+
31+
public function testDoRequest(): void
32+
{
33+
$module = $this->getPhalconModule();
34+
$test = new Codeception\Test\Unit();
35+
$module->_before($test);
36+
37+
$connector = $module->client;
38+
39+
// parameters for Request object
40+
$uri = '/';
41+
$method = 'GET';
42+
$params = [
43+
'first' => 'one',
44+
'second' => 'two'
45+
];
46+
$files = [
47+
'file' => [
48+
'name' => 'SomeFile.ext',
49+
'tmp_name' => 'SomeFile.ext',
50+
'error' => false
51+
]
52+
];
53+
$cookies = [
54+
'token' => 'asdev257'
55+
];
56+
$server = [
57+
'HTTP_HOST' => 'localhost',
58+
'SERVER_NAME' => 'my pc',
59+
'SERVER_ADDR' => '127.0.0.1',
60+
];
61+
$content = "this is request content";
62+
63+
$request = new Request(
64+
$uri,
65+
$method,
66+
$params,
67+
$files,
68+
$cookies,
69+
$server,
70+
$content
71+
);
72+
73+
// send request
74+
$response = $connector->doRequest($request);
75+
$this->assertSame(200, $response->getStatusCode());
76+
77+
/** @var Phalcon\Http\Request $requestService*/
78+
$requestService = $module->grabServiceFromContainer('request');
79+
80+
// assert request uri
81+
$this->assertSame($uri, $requestService->getURI());
82+
83+
// assert request method
84+
$this->assertSame($method, $requestService->getMethod());
85+
86+
// assert reques paramters
87+
$this->assertSame($params['first'], $requestService->get('first'));
88+
$this->assertSame($params['second'], $requestService->get('second'));
89+
90+
// assert uploaded file
91+
$this->assertTrue($requestService->hasFiles());
92+
/** @var Phalcon\Http\Request\File $uploadedFile */
93+
$uploadedFile = $requestService->getUploadedFiles()[0];
94+
$this->assertSame($files['file']['name'], $uploadedFile->getName());
95+
$this->assertSame($files['file']['tmp_name'], $uploadedFile->getTempName());
96+
$this->assertSame('ext', $uploadedFile->getExtension());
97+
98+
// assert server parameter
99+
$this->assertSame($server['HTTP_HOST'], $requestService->getServer('HTTP_HOST'));
100+
101+
// assert request body
102+
$this->assertSame($content, $requestService->getRawBody());
103+
104+
$module->_after($test);
105+
}
106+
}

0 commit comments

Comments
 (0)