From 6d810209254ff9ac882270269e2b44ab509691e0 Mon Sep 17 00:00:00 2001 From: Filippo Tessarotto Date: Tue, 17 Mar 2020 11:44:16 +0100 Subject: [PATCH 1/2] Add session test --- composer.json | 5 +- composer.lock | 187 ++++++++++++++++++++++++++++- config/config.php | 3 + config/routes.php | 5 + src/App/ConfigProvider.php | 1 + src/App/Handler/SessionHandler.php | 37 ++++++ tests/functional/SessionCest.php | 22 ++++ 7 files changed, 256 insertions(+), 4 deletions(-) create mode 100644 src/App/Handler/SessionHandler.php create mode 100644 tests/functional/SessionCest.php diff --git a/composer.json b/composer.json index cca98bf..66d4642 100644 --- a/composer.json +++ b/composer.json @@ -42,13 +42,14 @@ "laminas/laminas-component-installer": "^2.1.1", "laminas/laminas-config-aggregator": "^1.0", "laminas/laminas-diactoros": "^1.7.1 || ^2.0", + "laminas/laminas-servicemanager": "^3.3", "laminas/laminas-stdlib": "^3.2.1", "laminas/laminas-zendframework-bridge": "^1.0", "mezzio/mezzio": "^3.0.1", "mezzio/mezzio-helpers": "^5.0", - "laminas/laminas-servicemanager": "^3.3", "mezzio/mezzio-laminasrouter": "^3.0", - "mezzio/mezzio-laminasviewrenderer": "^2.0" + "mezzio/mezzio-laminasviewrenderer": "^2.0", + "mezzio/mezzio-session-ext": "^1.7" }, "require-dev": { "laminas/laminas-development-mode": "^3.1", diff --git a/composer.lock b/composer.lock index 9f03340..7edbd5f 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "59f0172a7666c5d16e46e9bb3b27d05b", + "content-hash": "95a9bbdc4b7f4a01a958fe40ccf09d41", "packages": [ { "name": "container-interop/container-interop", @@ -38,6 +38,60 @@ "abandoned": "psr/container", "time": "2017-02-14T19:40:03+00:00" }, + { + "name": "dflydev/fig-cookies", + "version": "v2.0.1", + "source": { + "type": "git", + "url": "https://github.com/dflydev/dflydev-fig-cookies.git", + "reference": "733af78ddad60aec96f7c4a1204619dd4d62afff" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dflydev/dflydev-fig-cookies/zipball/733af78ddad60aec96f7c4a1204619dd4d62afff", + "reference": "733af78ddad60aec96f7c4a1204619dd4d62afff", + "shasum": "" + }, + "require": { + "ext-pcre": "*", + "php": "^7.2", + "psr/http-message": "^1" + }, + "require-dev": { + "doctrine/coding-standard": "^4", + "phpstan/phpstan": "^0.10.1", + "phpunit/phpunit": "^7.2.6", + "squizlabs/php_codesniffer": "^3.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Dflydev\\FigCookies\\": "src/Dflydev/FigCookies" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Beau Simensen", + "email": "beau@dflydev.com" + } + ], + "description": "Cookies for PSR-7 HTTP Message Interface.", + "keywords": [ + "cookies", + "psr-7", + "psr7" + ], + "time": "2020-01-02T16:13:22+00:00" + }, { "name": "fig/http-message-util", "version": "1.1.4", @@ -1562,6 +1616,134 @@ ], "time": "2019-12-31T15:46:05+00:00" }, + { + "name": "mezzio/mezzio-session", + "version": "1.3.0", + "source": { + "type": "git", + "url": "https://github.com/mezzio/mezzio-session.git", + "reference": "e1376add7b6eed510be5e34c3764841efeca1ffe" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/mezzio/mezzio-session/zipball/e1376add7b6eed510be5e34c3764841efeca1ffe", + "reference": "e1376add7b6eed510be5e34c3764841efeca1ffe", + "shasum": "" + }, + "require": { + "laminas/laminas-zendframework-bridge": "^1.0", + "php": "^7.1", + "psr/container": "^1.0", + "psr/http-server-middleware": "^1.0" + }, + "conflict": { + "phpspec/prophecy": "<1.7.2" + }, + "replace": { + "zendframework/zend-expressive-session": "self.version" + }, + "require-dev": { + "laminas/laminas-coding-standard": "~1.0.0", + "phpunit/phpunit": "^6.5.5" + }, + "suggest": { + "mezzio/mezzio-csrf": "^1.0 || ^1.0-dev for CSRF protection capabilities", + "mezzio/mezzio-flash": "^1.0 || ^1.0-dev for flash message capabilities", + "mezzio/mezzio-session-ext": "^1.0 || ^1.0-dev for an ext-session persistence adapter" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3.x-dev", + "dev-develop": "1.4.x-dev" + }, + "laminas": { + "config-provider": "Mezzio\\Session\\ConfigProvider" + } + }, + "autoload": { + "psr-4": { + "Mezzio\\Session\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Session container and middleware for PSR-7 applications", + "homepage": "https://mezzio.dev", + "keywords": [ + "laminas", + "mezzio", + "middleware", + "psr-7", + "session" + ], + "time": "2019-12-31T15:46:11+00:00" + }, + { + "name": "mezzio/mezzio-session-ext", + "version": "1.7.0", + "source": { + "type": "git", + "url": "https://github.com/mezzio/mezzio-session-ext.git", + "reference": "b28cd7dbb95c94b3c5056fa2c8e80cab2cc30166" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/mezzio/mezzio-session-ext/zipball/b28cd7dbb95c94b3c5056fa2c8e80cab2cc30166", + "reference": "b28cd7dbb95c94b3c5056fa2c8e80cab2cc30166", + "shasum": "" + }, + "require": { + "dflydev/fig-cookies": "^1.0 || ^2.0", + "ext-session": "*", + "laminas/laminas-zendframework-bridge": "^1.0", + "mezzio/mezzio-session": "^1.3", + "php": "^7.1" + }, + "conflict": { + "phpspec/prophecy": "<1.7.2" + }, + "replace": { + "zendframework/zend-expressive-session-ext": "self.version" + }, + "require-dev": { + "laminas/laminas-coding-standard": "~1.0.0", + "laminas/laminas-diactoros": "^1.6", + "phpunit/phpunit": "^7.0.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.7.x-dev", + "dev-develop": "1.8.x-dev" + }, + "laminas": { + "config-provider": "Mezzio\\Session\\Ext\\ConfigProvider" + } + }, + "autoload": { + "psr-4": { + "Mezzio\\Session\\Ext\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "ext-session persistence adapter for mezzio-session", + "homepage": "https://mezzio.dev", + "keywords": [ + "components", + "ext-session", + "laminas", + "mezzio", + "psr-7", + "session" + ], + "time": "2019-12-31T15:46:24+00:00" + }, { "name": "mezzio/mezzio-template", "version": "2.0.1", @@ -4239,5 +4421,6 @@ "platform": { "php": "^7.1" }, - "platform-dev": [] + "platform-dev": [], + "plugin-api-version": "1.1.0" } diff --git a/config/config.php b/config/config.php index c90c202..f3ac2fa 100644 --- a/config/config.php +++ b/config/config.php @@ -30,6 +30,9 @@ class_exists(\Mezzio\Swoole\ConfigProvider::class) ? \Mezzio\Swoole\ConfigProvider::class : function(){ return[]; }, + \Mezzio\Session\ConfigProvider::class, + \Mezzio\Session\Ext\ConfigProvider::class, + // Default App module config App\ConfigProvider::class, diff --git a/config/routes.php b/config/routes.php index 75a4ccc..ad7b48c 100644 --- a/config/routes.php +++ b/config/routes.php @@ -36,4 +36,9 @@ $app->get('/', App\Handler\HomePageHandler::class, 'home'); $app->get('/api/ping', App\Handler\PingHandler::class, 'api.ping'); $app->route('/rest', App\Handler\RestHandler::class, ['GET', 'POST', 'PUT', 'DELETE'], 'rest'); + + $app->get('/session/:action', [ + Mezzio\Session\SessionMiddleware::class, + App\Handler\SessionHandler::class, + ], 'session.test'); }; diff --git a/src/App/ConfigProvider.php b/src/App/ConfigProvider.php index 14b521b..c648cef 100644 --- a/src/App/ConfigProvider.php +++ b/src/App/ConfigProvider.php @@ -35,6 +35,7 @@ public function getDependencies() : array 'invokables' => [ Handler\PingHandler::class => Handler\PingHandler::class, Handler\RestHandler::class => Handler\RestHandler::class, + Handler\SessionHandler::class => Handler\SessionHandler::class, ], 'factories' => [ Handler\HomePageHandler::class => Handler\HomePageHandlerFactory::class, diff --git a/src/App/Handler/SessionHandler.php b/src/App/Handler/SessionHandler.php new file mode 100644 index 0000000..5e861df --- /dev/null +++ b/src/App/Handler/SessionHandler.php @@ -0,0 +1,37 @@ +getAttribute(SessionMiddleware::SESSION_ATTRIBUTE); + + $action = $request->getAttribute('action'); + if ('set' === $action) { + $session->set('name', 'Somebody'); + + return new TextResponse('Name set'); + } + + if ('get' === $action) { + $name = $session->get('name', 'Nobody'); + + return new TextResponse(sprintf('The name is: %s', $name)); + } + + return new EmptyResponse(); + } +} diff --git a/tests/functional/SessionCest.php b/tests/functional/SessionCest.php new file mode 100644 index 0000000..91e38d1 --- /dev/null +++ b/tests/functional/SessionCest.php @@ -0,0 +1,22 @@ +amOnPage('/session/get'); + $I->see('Nobody'); + + $I->amOnPage('/session/set'); + $I->see('Name set'); + + $I->amOnPage('/session/get'); + $I->see('Somebody'); + } + + public function secondTimeUsingSessionMustNotBeAffectedByFirstTime(FunctionalTester $I) + { + $I->amOnPage('/session/get'); + $I->see('Nobody'); + } +} \ No newline at end of file From b8717625308de6c3fd80a2f69aee3d9b34b6a573 Mon Sep 17 00:00:00 2001 From: Filippo Tessarotto Date: Tue, 17 Mar 2020 11:44:58 +0100 Subject: [PATCH 2/2] Missing EOL --- tests/functional/SessionCest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/functional/SessionCest.php b/tests/functional/SessionCest.php index 91e38d1..47d9a05 100644 --- a/tests/functional/SessionCest.php +++ b/tests/functional/SessionCest.php @@ -19,4 +19,4 @@ public function secondTimeUsingSessionMustNotBeAffectedByFirstTime(FunctionalTes $I->amOnPage('/session/get'); $I->see('Nobody'); } -} \ No newline at end of file +}