From 318101017bcaa1ed60f70ea8a73a4878af918bba Mon Sep 17 00:00:00 2001 From: Druid33 Date: Wed, 3 Jun 2020 13:24:32 +0200 Subject: [PATCH 1/3] request server should be removed before changing his definitionn --- src/Codeception/Lib/Connector/Phalcon4.php | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/Codeception/Lib/Connector/Phalcon4.php b/src/Codeception/Lib/Connector/Phalcon4.php index a03edd1..ba0e6cb 100644 --- a/src/Codeception/Lib/Connector/Phalcon4.php +++ b/src/Codeception/Lib/Connector/Phalcon4.php @@ -3,17 +3,17 @@ namespace Codeception\Lib\Connector; use Closure; +use Codeception\Lib\Connector\Shared\PhpSuperGlobalsConverter; +use Codeception\Util\Stub; use Phalcon\Di; use Phalcon\Http; -use RuntimeException; -use ReflectionProperty; -use Codeception\Util\Stub; use Phalcon\Mvc\Application; -use Symfony\Component\BrowserKit\Cookie; -use Symfony\Component\BrowserKit\AbstractBrowser as Client; use Phalcon\Mvc\Micro as MicroApplication; +use ReflectionProperty; +use RuntimeException; +use Symfony\Component\BrowserKit\AbstractBrowser as Client; +use Symfony\Component\BrowserKit\Cookie; use Symfony\Component\BrowserKit\Response; -use Codeception\Lib\Connector\Shared\PhpSuperGlobalsConverter; class Phalcon4 extends Client { @@ -110,6 +110,9 @@ public function doRequest($request) Di::reset(); Di::setDefault($di); + if ($di->has('request')) { + $di->remove('request'); + } $di['request'] = Stub::construct($phRequest, [], ['getRawBody' => $request->getContent()]); $response = $application->handle($pathString); From 74e2e2eae8313cd8df36ca215da94c7a64c23496 Mon Sep 17 00:00:00 2001 From: Druid33 Date: Wed, 3 Jun 2020 13:39:44 +0200 Subject: [PATCH 2/3] phpcs error fixed --- tests/_data/bootstrap-micro.php | 1 + tests/_support/AcceptanceTester.php | 1 - tests/_support/FunctionalTester.php | 1 - tests/_support/UnitTester.php | 1 - 4 files changed, 1 insertion(+), 3 deletions(-) diff --git a/tests/_data/bootstrap-micro.php b/tests/_data/bootstrap-micro.php index c46e41c..7992a5a 100644 --- a/tests/_data/bootstrap-micro.php +++ b/tests/_data/bootstrap-micro.php @@ -1,3 +1,4 @@ Date: Tue, 13 Apr 2021 22:12:10 +0200 Subject: [PATCH 3/3] unit test for doRequst method --- tests/unit/Phalcon4ConnectorTest.php | 106 +++++++++++++++++++++++++++ 1 file changed, 106 insertions(+) create mode 100644 tests/unit/Phalcon4ConnectorTest.php diff --git a/tests/unit/Phalcon4ConnectorTest.php b/tests/unit/Phalcon4ConnectorTest.php new file mode 100644 index 0000000..991a0eb --- /dev/null +++ b/tests/unit/Phalcon4ConnectorTest.php @@ -0,0 +1,106 @@ +_setConfig([ + 'bootstrap' => 'tests/_data/bootstrap.php', + 'cleanup' => true, + 'savepoints' => true, + 'session' => 'Codeception\Lib\Connector\Phalcon4\MemorySession' + ]); + $module->_initialize(); + return $module; + } + + public function testConstruct(): void + { + $connector = new PhalconConnector(); + $this->assertInstanceOf(PhalconConnector::class, $connector); + } + + public function testDoRequest(): void + { + $module = $this->getPhalconModule(); + $test = new Codeception\Test\Unit(); + $module->_before($test); + + $connector = $module->client; + + // parameters for Request object + $uri = '/'; + $method = 'GET'; + $params = [ + 'first' => 'one', + 'second' => 'two' + ]; + $files = [ + 'file' => [ + 'name' => 'SomeFile.ext', + 'tmp_name' => 'SomeFile.ext', + 'error' => false + ] + ]; + $cookies = [ + 'token' => 'asdev257' + ]; + $server = [ + 'HTTP_HOST' => 'localhost', + 'SERVER_NAME' => 'my pc', + 'SERVER_ADDR' => '127.0.0.1', + ]; + $content = "this is request content"; + + $request = new Request( + $uri, + $method, + $params, + $files, + $cookies, + $server, + $content + ); + + // send request + $response = $connector->doRequest($request); + $this->assertSame(200, $response->getStatusCode()); + + /** @var Phalcon\Http\Request $requestService*/ + $requestService = $module->grabServiceFromContainer('request'); + + // assert request uri + $this->assertSame($uri, $requestService->getURI()); + + // assert request method + $this->assertSame($method, $requestService->getMethod()); + + // assert reques paramters + $this->assertSame($params['first'], $requestService->get('first')); + $this->assertSame($params['second'], $requestService->get('second')); + + // assert uploaded file + $this->assertTrue($requestService->hasFiles()); + /** @var Phalcon\Http\Request\File $uploadedFile */ + $uploadedFile = $requestService->getUploadedFiles()[0]; + $this->assertSame($files['file']['name'], $uploadedFile->getName()); + $this->assertSame($files['file']['tmp_name'], $uploadedFile->getTempName()); + $this->assertSame('ext', $uploadedFile->getExtension()); + + // assert server parameter + $this->assertSame($server['HTTP_HOST'], $requestService->getServer('HTTP_HOST')); + + // assert request body + $this->assertSame($content, $requestService->getRawBody()); + + $module->_after($test); + } +}