From 3dce629e668a5d03f22f39f33c19f95d7c859f26 Mon Sep 17 00:00:00 2001 From: Alessio Zampatti Date: Fri, 27 Mar 2020 13:54:42 +0100 Subject: [PATCH 01/27] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 1cfaf945f..5ed3f8474 100644 --- a/README.md +++ b/README.md @@ -123,7 +123,7 @@ $result = $service->refund($params); ## Documentation ## * https://docs.adyen.com/developers/development-resources/libraries -* https://docs.adyen.com/developers/checkout/api-integration +* https://docs.adyen.com/developers/checkout ## Tests ## For the test cases you need the PCI permission enabled on you account. There are no test cases for CSE because credit card data is encrypted through our javascript library. From 0bb46ae98141bc504deaec33253bbb0c44bde29f Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Wed, 1 Apr 2020 09:38:08 +0000 Subject: [PATCH 02/27] Update dependency phpunit/phpunit to v9.0.2 --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 0df7f690f..e3693345d 100644 --- a/composer.json +++ b/composer.json @@ -14,7 +14,7 @@ "require-dev": { "dms/phpunit-arraysubset-asserts": "0.2.0", "friendsofphp/php-cs-fixer": "*", - "phpunit/phpunit": "9.0.1", + "phpunit/phpunit": "9.0.2", "php-coveralls/php-coveralls": "2.2.0", "squizlabs/php_codesniffer": "3.5.4", "ext-json": "*" From 706254f2289ea5c6ab3a60c1f4b450a49bcb0b7f Mon Sep 17 00:00:00 2001 From: WhiteSource Renovate Date: Mon, 6 Apr 2020 09:10:04 +0200 Subject: [PATCH 03/27] Update dependency phpunit/phpunit to v9.1.1 (#180) --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index e3693345d..b127383c9 100644 --- a/composer.json +++ b/composer.json @@ -14,7 +14,7 @@ "require-dev": { "dms/phpunit-arraysubset-asserts": "0.2.0", "friendsofphp/php-cs-fixer": "*", - "phpunit/phpunit": "9.0.2", + "phpunit/phpunit": "9.1.1", "php-coveralls/php-coveralls": "2.2.0", "squizlabs/php_codesniffer": "3.5.4", "ext-json": "*" From 90c2ef10ea2c91c41eb14336ad1ed25e040b8ddc Mon Sep 17 00:00:00 2001 From: Vitaliy Ryaboy Date: Tue, 21 Apr 2020 18:17:35 +0200 Subject: [PATCH 04/27] remove duplicated classmap (#185) --- composer.json | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/composer.json b/composer.json index b127383c9..07d1cbad4 100644 --- a/composer.json +++ b/composer.json @@ -22,10 +22,7 @@ "autoload": { "psr-4": { "Adyen\\": "src/Adyen/" - }, - "classmap": [ - "src/Adyen/Service/" - ] + } }, "autoload-dev": { "psr-4": { From ec1f647350e38881065ebb9f29253088060cd036 Mon Sep 17 00:00:00 2001 From: Vitaliy Ryaboy Date: Tue, 21 Apr 2020 18:23:58 +0200 Subject: [PATCH 05/27] fix client types declarations (#186) --- src/Adyen/Client.php | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/src/Adyen/Client.php b/src/Adyen/Client.php index 49aa9d2b4..cc9afab25 100644 --- a/src/Adyen/Client.php +++ b/src/Adyen/Client.php @@ -2,6 +2,8 @@ namespace Adyen; +use Adyen\HttpClient\ClientInterface; +use Adyen\HttpClient\CurlClient; use Psr\Log\LoggerInterface; use Monolog\Logger; use Monolog\Handler\StreamHandler; @@ -41,32 +43,32 @@ class Client const ENDPOINT_DISPUTE_SERVICE_LIVE = "https://ca-live.adyen.com/ca/services/DisputeService"; /** - * @var \Adyen\Config $config + * @var Config|ConfigInterface */ private $config; /** - * @var + * @var ClientInterface|null */ private $httpClient; /** - * @var Logger $logger + * @var LoggerInterface|null */ private $logger; /** * Client constructor. * - * @param null $config + * @param ConfigInterface|null $config * @throws AdyenException */ public function __construct($config = null) { - if (!$config) { + if ($config === null) { // create config - $this->config = new \Adyen\Config(); - } elseif ($config instanceof \Adyen\ConfigInterface) { + $this->config = new Config(); + } elseif ($config instanceof ConfigInterface) { $this->config = $config; } else { throw new \Adyen\AdyenException( @@ -77,7 +79,7 @@ public function __construct($config = null) } /** - * @return Config|ConfigInterface|null + * @return Config|ConfigInterface */ public function getConfig() { @@ -397,36 +399,36 @@ public function getDisputeServiceVersion() } /** - * @param HttpClient\ClientInterface $httpClient + * @param ClientInterface $httpClient */ - public function setHttpClient(\Adyen\HttpClient\ClientInterface $httpClient) + public function setHttpClient(ClientInterface $httpClient) { $this->httpClient = $httpClient; } /** - * @return mixed + * @return ClientInterface */ public function getHttpClient() { - if (is_null($this->httpClient)) { + if ($this->httpClient === null) { $this->httpClient = $this->createDefaultHttpClient(); } return $this->httpClient; } /** - * @return HttpClient\CurlClient + * @return CurlClient */ protected function createDefaultHttpClient() { - return new \Adyen\HttpClient\CurlClient(); + return new CurlClient(); } /** * Set the Logger object * - * @param \Psr\Log\LoggerInterface $logger + * @param LoggerInterface $logger */ public function setLogger(LoggerInterface $logger) { @@ -434,12 +436,11 @@ public function setLogger(LoggerInterface $logger) } /** - * @return Logger - * @throws \Exception + * @return LoggerInterface */ public function getLogger() { - if (!isset($this->logger)) { + if ($this->logger === null) { $this->logger = $this->createDefaultLogger(); } @@ -448,7 +449,6 @@ public function getLogger() /** * @return Logger - * @throws \Exception */ protected function createDefaultLogger() { From f4fa352be2b9e36ce64e3d1faa34140199c26586 Mon Sep 17 00:00:00 2001 From: Vitaliy Ryaboy Date: Tue, 28 Apr 2020 06:49:15 +0200 Subject: [PATCH 06/27] added .gitattributes to remove useless files for production from package (#184) --- .gitattributes | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 .gitattributes diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 000000000..1433a7b06 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,16 @@ +# Auto-detect text files, ensure they use LF. +* text=auto eol=lf + +# Exclude non-essential files from dist +/.github export-ignore +/tests export-ignore +/.editorconfig export-ignore +/.gitignore export-ignore +/.travis.yml export-ignore +/CODE_OF_CONDUCT.md export-ignore +/composer.lock export-ignore +/CONTRIBUTING.md export-ignore +/phpcs.xml export-ignore +/phpunit.xml export-ignore +/renovate.json export-ignore +/Vagrantfile export-ignore From 7a56432fbb97924dfb80112bd77352edfc0d3aa3 Mon Sep 17 00:00:00 2001 From: Marcos Garcia Date: Fri, 8 May 2020 17:15:31 +0200 Subject: [PATCH 07/27] Create SECURITY.md Create a security policy as per GitHub recommendation --- SECURITY.md | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 SECURITY.md diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 000000000..aefdcd0e7 --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,23 @@ +# Security Policy + +## Supported Versions + +| Version | Supported | +| ------- | ------------------ | +| 6.x.x | :white_check_mark: | +| 5.x.x | :x: | +| < 5.0 | :x: | + +## Reporting a Vulnerability + +We welcome reports of possible vulnerabilities or issues as part of our responsible disclosure program. At this point in time we do not run a bug bounty program. + +To report a security issue, [contact Support](https://support.adyen.com/hc/en-us/requests/new). + +If the nature of the security issue is sensitive, please provide the following: + +* Describe the issue to help us determine priority. +* Provide your PGP public key. +* Request contact from the Adyen security team. + +The security team will communicate directly with you using PGP encrypted emails. From d0cbe1e2dd92a2df0a0ef57a3f54eca08b67e285 Mon Sep 17 00:00:00 2001 From: Rik ter Beek Date: Wed, 13 May 2020 07:14:34 +0200 Subject: [PATCH 08/27] update readme with a link to contact support --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 5ed3f8474..fd4863aa0 100644 --- a/README.md +++ b/README.md @@ -130,7 +130,7 @@ For the test cases you need the PCI permission enabled on you account. There are By default the test will then be skipped. If you have these permissions fill in your account details in the config/test.ini file to let the test work. ## Support -If you have any problems, questions or suggestions, create an issue here or send your inquiry to support@adyen.com. +If you have a feature request, or spotted a bug or a technical problem, create a GitHub issue. For other questions, contact our [support team](https://support.adyen.com/hc/en-us/requests/new?ticket_form_id=360000705420). ## Contributing We strongly encourage you to join us in contributing to this repository so everyone can benefit from: From 8f52da240d47bfae34e40bfa2b639d82f6466f7b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81ngel=20Campos?= Date: Mon, 18 May 2020 13:29:39 +0200 Subject: [PATCH 09/27] [PW-2387]: IP validation function (#193) * [PW-2387]: IP address validation util class * [PW-2387]: Removing reverse-resolve function * [PW-2387]: Fixes --- src/Adyen/Util/IpAddress.php | 48 +++++++++++++++++++++++++++++++ tests/Unit/Util/IpAddressTest.php | 34 ++++++++++++++++++++++ 2 files changed, 82 insertions(+) create mode 100644 src/Adyen/Util/IpAddress.php create mode 100644 tests/Unit/Util/IpAddressTest.php diff --git a/src/Adyen/Util/IpAddress.php b/src/Adyen/Util/IpAddress.php new file mode 100644 index 000000000..18a9ba372 --- /dev/null +++ b/src/Adyen/Util/IpAddress.php @@ -0,0 +1,48 @@ +assertTrue(is_array($ipAddress->getAdyenIpAddresses())); + } +} From 7097f0d8856ff7ec310f12f569548d50eac7e80d Mon Sep 17 00:00:00 2001 From: Marcos Garcia Date: Mon, 18 May 2020 15:44:14 +0200 Subject: [PATCH 10/27] Update composer.lock (#182) Renovate bot missed this on pull request #180. Manually updated it for now. Rewrote several tests to make it work. --- composer.json | 2 +- composer.lock | 1115 +++++++++++++++++++++---------- tests/Unit/CheckoutTest.php | 27 +- tests/Unit/NotificationTest.php | 4 +- tests/Unit/PaymentTest.php | 20 +- tests/Unit/TestCaseMock.php | 35 +- 6 files changed, 822 insertions(+), 381 deletions(-) diff --git a/composer.json b/composer.json index 07d1cbad4..dbce35377 100644 --- a/composer.json +++ b/composer.json @@ -9,7 +9,7 @@ "license": "Apache-2.0", "require": { "php": ">=5.3", - "monolog/monolog": ">=1.16" + "monolog/monolog": "^1.16" }, "require-dev": { "dms/phpunit-arraysubset-asserts": "0.2.0", diff --git a/composer.lock b/composer.lock index 30ad69616..36665bca0 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": "bf68c7d2c60f989124cefbf1b5c38762", + "content-hash": "f830561e0e9d837909693167448ba4d6", "packages": [ { "name": "monolog/monolog", @@ -86,16 +86,16 @@ }, { "name": "psr/log", - "version": "1.1.2", + "version": "1.1.3", "source": { "type": "git", "url": "https://github.com/php-fig/log.git", - "reference": "446d54b4cb6bf489fc9d75f55843658e6f25d801" + "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/446d54b4cb6bf489fc9d75f55843658e6f25d801", - "reference": "446d54b4cb6bf489fc9d75f55843658e6f25d801", + "url": "https://api.github.com/repos/php-fig/log/zipball/0f73288fd15629204f9d42b7055f72dacbe811fc", + "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc", "shasum": "" }, "require": { @@ -129,7 +129,7 @@ "psr", "psr-3" ], - "time": "2019-11-01T11:05:21+00:00" + "time": "2020-03-23T09:12:05+00:00" } ], "packages-dev": [ @@ -196,16 +196,16 @@ }, { "name": "composer/xdebug-handler", - "version": "1.4.0", + "version": "1.4.1", "source": { "type": "git", "url": "https://github.com/composer/xdebug-handler.git", - "reference": "cbe23383749496fe0f373345208b79568e4bc248" + "reference": "1ab9842d69e64fb3a01be6b656501032d1b78cb7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/cbe23383749496fe0f373345208b79568e4bc248", - "reference": "cbe23383749496fe0f373345208b79568e4bc248", + "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/1ab9842d69e64fb3a01be6b656501032d1b78cb7", + "reference": "1ab9842d69e64fb3a01be6b656501032d1b78cb7", "shasum": "" }, "require": { @@ -236,25 +236,31 @@ "Xdebug", "performance" ], - "time": "2019-11-06T16:40:04+00:00" + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + } + ], + "time": "2020-03-01T12:26:26+00:00" }, { "name": "dms/phpunit-arraysubset-asserts", - "version": "v0.1.0", + "version": "v0.2.0", "source": { "type": "git", "url": "https://github.com/rdohms/phpunit-arraysubset-asserts.git", - "reference": "d618ece5d53e05be87eba835b079377eaafbd7c8" + "reference": "d33fd352dbe1ca1c7dfe2b9f516ab9a852e3e516" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/rdohms/phpunit-arraysubset-asserts/zipball/d618ece5d53e05be87eba835b079377eaafbd7c8", - "reference": "d618ece5d53e05be87eba835b079377eaafbd7c8", + "url": "https://api.github.com/repos/rdohms/phpunit-arraysubset-asserts/zipball/d33fd352dbe1ca1c7dfe2b9f516ab9a852e3e516", + "reference": "d33fd352dbe1ca1c7dfe2b9f516ab9a852e3e516", "shasum": "" }, "require": { - "php": "^7.2", - "phpunit/phpunit": "^8.0" + "php": "^7.3", + "phpunit/phpunit": "^9.0" }, "require-dev": { "dms/coding-standard": "^1.0", @@ -276,25 +282,26 @@ "email": "rdohms@gmail.com" } ], - "description": "This package provides Array Subset and related asserts once depracated in PHPunit 8", - "time": "2019-02-17T14:29:58+00:00" + "description": "This package provides ArraySubset and related asserts once deprecated in PHPUnit 8", + "time": "2020-02-12T15:25:06+00:00" }, { "name": "doctrine/annotations", - "version": "v1.8.0", + "version": "1.10.2", "source": { "type": "git", "url": "https://github.com/doctrine/annotations.git", - "reference": "904dca4eb10715b92569fbcd79e201d5c349b6bc" + "reference": "b9d758e831c70751155c698c2f7df4665314a1cb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/annotations/zipball/904dca4eb10715b92569fbcd79e201d5c349b6bc", - "reference": "904dca4eb10715b92569fbcd79e201d5c349b6bc", + "url": "https://api.github.com/repos/doctrine/annotations/zipball/b9d758e831c70751155c698c2f7df4665314a1cb", + "reference": "b9d758e831c70751155c698c2f7df4665314a1cb", "shasum": "" }, "require": { "doctrine/lexer": "1.*", + "ext-tokenizer": "*", "php": "^7.1" }, "require-dev": { @@ -304,7 +311,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.7.x-dev" + "dev-master": "1.9.x-dev" } }, "autoload": { @@ -345,7 +352,7 @@ "docblock", "parser" ], - "time": "2019-10-01T18:55:10+00:00" + "time": "2020-04-20T09:18:32+00:00" }, { "name": "doctrine/instantiator", @@ -467,16 +474,16 @@ }, { "name": "friendsofphp/php-cs-fixer", - "version": "v2.16.1", + "version": "v2.16.3", "source": { "type": "git", "url": "https://github.com/FriendsOfPHP/PHP-CS-Fixer.git", - "reference": "c8afb599858876e95e8ebfcd97812d383fa23f02" + "reference": "83baf823a33a1cbd5416c8626935cf3f843c10b0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/FriendsOfPHP/PHP-CS-Fixer/zipball/c8afb599858876e95e8ebfcd97812d383fa23f02", - "reference": "c8afb599858876e95e8ebfcd97812d383fa23f02", + "url": "https://api.github.com/repos/FriendsOfPHP/PHP-CS-Fixer/zipball/83baf823a33a1cbd5416c8626935cf3f843c10b0", + "reference": "83baf823a33a1cbd5416c8626935cf3f843c10b0", "shasum": "" }, "require": { @@ -512,6 +519,7 @@ "symfony/yaml": "^3.0 || ^4.0 || ^5.0" }, "suggest": { + "ext-dom": "For handling output formats in XML", "ext-mbstring": "For handling non-UTF8 characters in cache signature.", "php-cs-fixer/phpunit-constraint-isidenticalstring": "For IsIdenticalString constraint.", "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "For XmlMatchesXsd constraint.", @@ -534,6 +542,7 @@ "tests/Test/IntegrationCaseFactory.php", "tests/Test/IntegrationCaseFactoryInterface.php", "tests/Test/InternalIntegrationCaseFactory.php", + "tests/Test/IsIdenticalConstraint.php", "tests/TestCase.php" ] }, @@ -552,27 +561,34 @@ } ], "description": "A tool to automatically fix PHP code style", - "time": "2019-11-25T22:10:32+00:00" + "funding": [ + { + "url": "https://github.com/keradus", + "type": "github" + } + ], + "time": "2020-04-15T18:51:10+00:00" }, { "name": "guzzlehttp/guzzle", - "version": "6.5.2", + "version": "6.5.3", "source": { "type": "git", "url": "https://github.com/guzzle/guzzle.git", - "reference": "43ece0e75098b7ecd8d13918293029e555a50f82" + "reference": "aab4ebd862aa7d04f01a4b51849d657db56d882e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/43ece0e75098b7ecd8d13918293029e555a50f82", - "reference": "43ece0e75098b7ecd8d13918293029e555a50f82", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/aab4ebd862aa7d04f01a4b51849d657db56d882e", + "reference": "aab4ebd862aa7d04f01a4b51849d657db56d882e", "shasum": "" }, "require": { "ext-json": "*", "guzzlehttp/promises": "^1.0", "guzzlehttp/psr7": "^1.6.1", - "php": ">=5.5" + "php": ">=5.5", + "symfony/polyfill-intl-idn": "^1.11" }, "require-dev": { "ext-curl": "*", @@ -580,7 +596,6 @@ "psr/log": "^1.1" }, "suggest": { - "ext-intl": "Required for Internationalized Domain Name (IDN) support", "psr/log": "Required for using the Log middleware" }, "type": "library", @@ -619,7 +634,7 @@ "rest", "web service" ], - "time": "2019-12-23T11:57:10+00:00" + "time": "2020-04-18T10:38:46+00:00" }, { "name": "guzzlehttp/promises", @@ -1074,24 +1089,21 @@ }, { "name": "phpdocumentor/reflection-common", - "version": "2.0.0", + "version": "2.1.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionCommon.git", - "reference": "63a995caa1ca9e5590304cd845c15ad6d482a62a" + "reference": "6568f4687e5b41b054365f9ae03fcb1ed5f2069b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/63a995caa1ca9e5590304cd845c15ad6d482a62a", - "reference": "63a995caa1ca9e5590304cd845c15ad6d482a62a", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/6568f4687e5b41b054365f9ae03fcb1ed5f2069b", + "reference": "6568f4687e5b41b054365f9ae03fcb1ed5f2069b", "shasum": "" }, "require": { "php": ">=7.1" }, - "require-dev": { - "phpunit/phpunit": "~6" - }, "type": "library", "extra": { "branch-alias": { @@ -1122,45 +1134,42 @@ "reflection", "static analysis" ], - "time": "2018-08-07T13:53:10+00:00" + "time": "2020-04-27T09:25:28+00:00" }, { "name": "phpdocumentor/reflection-docblock", - "version": "4.3.4", + "version": "5.1.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "da3fd972d6bafd628114f7e7e036f45944b62e9c" + "reference": "cd72d394ca794d3466a3b2fc09d5a6c1dc86b47e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/da3fd972d6bafd628114f7e7e036f45944b62e9c", - "reference": "da3fd972d6bafd628114f7e7e036f45944b62e9c", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/cd72d394ca794d3466a3b2fc09d5a6c1dc86b47e", + "reference": "cd72d394ca794d3466a3b2fc09d5a6c1dc86b47e", "shasum": "" }, "require": { - "php": "^7.0", - "phpdocumentor/reflection-common": "^1.0.0 || ^2.0.0", - "phpdocumentor/type-resolver": "~0.4 || ^1.0.0", - "webmozart/assert": "^1.0" + "ext-filter": "^7.1", + "php": "^7.2", + "phpdocumentor/reflection-common": "^2.0", + "phpdocumentor/type-resolver": "^1.0", + "webmozart/assert": "^1" }, "require-dev": { - "doctrine/instantiator": "^1.0.5", - "mockery/mockery": "^1.0", - "phpdocumentor/type-resolver": "0.4.*", - "phpunit/phpunit": "^6.4" + "doctrine/instantiator": "^1", + "mockery/mockery": "^1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.x-dev" + "dev-master": "5.x-dev" } }, "autoload": { "psr-4": { - "phpDocumentor\\Reflection\\": [ - "src/" - ] + "phpDocumentor\\Reflection\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -1171,33 +1180,36 @@ { "name": "Mike van Riel", "email": "me@mikevanriel.com" + }, + { + "name": "Jaap van Otterdijk", + "email": "account@ijaap.nl" } ], "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", - "time": "2019-12-28T18:55:12+00:00" + "time": "2020-02-22T12:28:44+00:00" }, { "name": "phpdocumentor/type-resolver", - "version": "1.0.1", + "version": "1.1.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "2e32a6d48972b2c1976ed5d8967145b6cec4a4a9" + "reference": "7462d5f123dfc080dfdf26897032a6513644fc95" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/2e32a6d48972b2c1976ed5d8967145b6cec4a4a9", - "reference": "2e32a6d48972b2c1976ed5d8967145b6cec4a4a9", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/7462d5f123dfc080dfdf26897032a6513644fc95", + "reference": "7462d5f123dfc080dfdf26897032a6513644fc95", "shasum": "" }, "require": { - "php": "^7.1", + "php": "^7.2", "phpdocumentor/reflection-common": "^2.0" }, "require-dev": { - "ext-tokenizer": "^7.1", - "mockery/mockery": "~1", - "phpunit/phpunit": "^7.0" + "ext-tokenizer": "^7.2", + "mockery/mockery": "~1" }, "type": "library", "extra": { @@ -1221,20 +1233,20 @@ } ], "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", - "time": "2019-08-22T18:11:29+00:00" + "time": "2020-02-18T18:59:58+00:00" }, { "name": "phpspec/prophecy", - "version": "v1.10.2", + "version": "v1.10.3", "source": { "type": "git", "url": "https://github.com/phpspec/prophecy.git", - "reference": "b4400efc9d206e83138e2bb97ed7f5b14b831cd9" + "reference": "451c3cd1418cf640de218914901e51b064abb093" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/b4400efc9d206e83138e2bb97ed7f5b14b831cd9", - "reference": "b4400efc9d206e83138e2bb97ed7f5b14b831cd9", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/451c3cd1418cf640de218914901e51b064abb093", + "reference": "451c3cd1418cf640de218914901e51b064abb093", "shasum": "" }, "require": { @@ -1284,44 +1296,45 @@ "spy", "stub" ], - "time": "2020-01-20T15:57:02+00:00" + "time": "2020-03-05T15:02:03+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "7.0.10", + "version": "8.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "f1884187926fbb755a9aaf0b3836ad3165b478bf" + "reference": "31e94ccc084025d6abee0585df533eb3a792b96a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/f1884187926fbb755a9aaf0b3836ad3165b478bf", - "reference": "f1884187926fbb755a9aaf0b3836ad3165b478bf", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/31e94ccc084025d6abee0585df533eb3a792b96a", + "reference": "31e94ccc084025d6abee0585df533eb3a792b96a", "shasum": "" }, "require": { "ext-dom": "*", "ext-xmlwriter": "*", - "php": "^7.2", - "phpunit/php-file-iterator": "^2.0.2", - "phpunit/php-text-template": "^1.2.1", - "phpunit/php-token-stream": "^3.1.1", - "sebastian/code-unit-reverse-lookup": "^1.0.1", - "sebastian/environment": "^4.2.2", - "sebastian/version": "^2.0.1", + "php": "^7.3", + "phpunit/php-file-iterator": "^3.0", + "phpunit/php-text-template": "^2.0", + "phpunit/php-token-stream": "^4.0", + "sebastian/code-unit-reverse-lookup": "^2.0", + "sebastian/environment": "^5.0", + "sebastian/version": "^3.0", "theseer/tokenizer": "^1.1.3" }, "require-dev": { - "phpunit/phpunit": "^8.2.2" + "phpunit/phpunit": "^9.0" }, "suggest": { - "ext-xdebug": "^2.7.2" + "ext-pcov": "*", + "ext-xdebug": "*" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "7.0-dev" + "dev-master": "8.0-dev" } }, "autoload": { @@ -1347,32 +1360,32 @@ "testing", "xunit" ], - "time": "2019-11-20T13:55:58+00:00" + "time": "2020-02-19T13:41:19+00:00" }, { "name": "phpunit/php-file-iterator", - "version": "2.0.2", + "version": "3.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "050bedf145a257b1ff02746c31894800e5122946" + "reference": "4ac5b3e13df14829daa60a2eb4fdd2f2b7d33cf4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/050bedf145a257b1ff02746c31894800e5122946", - "reference": "050bedf145a257b1ff02746c31894800e5122946", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/4ac5b3e13df14829daa60a2eb4fdd2f2b7d33cf4", + "reference": "4ac5b3e13df14829daa60a2eb4fdd2f2b7d33cf4", "shasum": "" }, "require": { - "php": "^7.1" + "php": "^7.3" }, "require-dev": { - "phpunit/phpunit": "^7.1" + "phpunit/phpunit": "^9.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "3.0-dev" } }, "autoload": { @@ -1397,26 +1410,90 @@ "filesystem", "iterator" ], - "time": "2018-09-13T20:33:42+00:00" + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-04-18T05:02:12+00:00" + }, + { + "name": "phpunit/php-invoker", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-invoker.git", + "reference": "7579d5a1ba7f3ac11c80004d205877911315ae7a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/7579d5a1ba7f3ac11c80004d205877911315ae7a", + "reference": "7579d5a1ba7f3ac11c80004d205877911315ae7a", + "shasum": "" + }, + "require": { + "php": "^7.3" + }, + "require-dev": { + "ext-pcntl": "*", + "phpunit/phpunit": "^9.0" + }, + "suggest": { + "ext-pcntl": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Invoke callables with a timeout", + "homepage": "https://github.com/sebastianbergmann/php-invoker/", + "keywords": [ + "process" + ], + "time": "2020-02-07T06:06:11+00:00" }, { "name": "phpunit/php-text-template", - "version": "1.2.1", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" + "reference": "526dc996cc0ebdfa428cd2dfccd79b7b53fee346" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", - "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/526dc996cc0ebdfa428cd2dfccd79b7b53fee346", + "reference": "526dc996cc0ebdfa428cd2dfccd79b7b53fee346", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": "^7.3" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, "autoload": { "classmap": [ "src/" @@ -1438,32 +1515,32 @@ "keywords": [ "template" ], - "time": "2015-06-21T13:50:34+00:00" + "time": "2020-02-01T07:43:44+00:00" }, { "name": "phpunit/php-timer", - "version": "2.1.2", + "version": "3.1.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "1038454804406b0b5f5f520358e78c1c2f71501e" + "reference": "dc9368fae6ef2ffa57eba80a7410bcef81df6258" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/1038454804406b0b5f5f520358e78c1c2f71501e", - "reference": "1038454804406b0b5f5f520358e78c1c2f71501e", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/dc9368fae6ef2ffa57eba80a7410bcef81df6258", + "reference": "dc9368fae6ef2ffa57eba80a7410bcef81df6258", "shasum": "" }, "require": { - "php": "^7.1" + "php": "^7.3" }, "require-dev": { - "phpunit/phpunit": "^7.0" + "phpunit/phpunit": "^9.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.1-dev" + "dev-master": "3.1-dev" } }, "autoload": { @@ -1487,33 +1564,39 @@ "keywords": [ "timer" ], - "time": "2019-06-07T04:22:29+00:00" + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-04-20T06:00:37+00:00" }, { "name": "phpunit/php-token-stream", - "version": "3.1.1", + "version": "4.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-token-stream.git", - "reference": "995192df77f63a59e47f025390d2d1fdf8f425ff" + "reference": "cdc0db5aed8fbfaf475fbd95bfd7bab83c7a779c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/995192df77f63a59e47f025390d2d1fdf8f425ff", - "reference": "995192df77f63a59e47f025390d2d1fdf8f425ff", + "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/cdc0db5aed8fbfaf475fbd95bfd7bab83c7a779c", + "reference": "cdc0db5aed8fbfaf475fbd95bfd7bab83c7a779c", "shasum": "" }, "require": { "ext-tokenizer": "*", - "php": "^7.1" + "php": "^7.3" }, "require-dev": { - "phpunit/phpunit": "^7.0" + "phpunit/phpunit": "^9.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.1-dev" + "dev-master": "4.0-dev" } }, "autoload": { @@ -1536,20 +1619,26 @@ "keywords": [ "tokenizer" ], - "time": "2019-09-17T06:23:10+00:00" + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-05-06T09:56:31+00:00" }, { "name": "phpunit/phpunit", - "version": "8.5.2", + "version": "9.1.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "018b6ac3c8ab20916db85fa91bf6465acb64d1e0" + "reference": "848f6521c906500e66229668768576d35de0227e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/018b6ac3c8ab20916db85fa91bf6465acb64d1e0", - "reference": "018b6ac3c8ab20916db85fa91bf6465acb64d1e0", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/848f6521c906500e66229668768576d35de0227e", + "reference": "848f6521c906500e66229668768576d35de0227e", "shasum": "" }, "require": { @@ -1563,29 +1652,30 @@ "myclabs/deep-copy": "^1.9.1", "phar-io/manifest": "^1.0.3", "phar-io/version": "^2.0.1", - "php": "^7.2", + "php": "^7.3", "phpspec/prophecy": "^1.8.1", - "phpunit/php-code-coverage": "^7.0.7", - "phpunit/php-file-iterator": "^2.0.2", - "phpunit/php-text-template": "^1.2.1", - "phpunit/php-timer": "^2.1.2", - "sebastian/comparator": "^3.0.2", - "sebastian/diff": "^3.0.2", - "sebastian/environment": "^4.2.2", - "sebastian/exporter": "^3.1.1", - "sebastian/global-state": "^3.0.0", - "sebastian/object-enumerator": "^3.0.3", - "sebastian/resource-operations": "^2.0.1", - "sebastian/type": "^1.1.3", - "sebastian/version": "^2.0.1" + "phpunit/php-code-coverage": "^8.0.1", + "phpunit/php-file-iterator": "^3.0", + "phpunit/php-invoker": "^3.0", + "phpunit/php-text-template": "^2.0", + "phpunit/php-timer": "^3.0", + "sebastian/code-unit": "^1.0", + "sebastian/comparator": "^4.0", + "sebastian/diff": "^4.0", + "sebastian/environment": "^5.0.1", + "sebastian/exporter": "^4.0", + "sebastian/global-state": "^4.0", + "sebastian/object-enumerator": "^4.0", + "sebastian/resource-operations": "^3.0", + "sebastian/type": "^2.0", + "sebastian/version": "^3.0" }, "require-dev": { "ext-pdo": "*" }, "suggest": { "ext-soap": "*", - "ext-xdebug": "*", - "phpunit/php-invoker": "^2.0.0" + "ext-xdebug": "*" }, "bin": [ "phpunit" @@ -1593,12 +1683,15 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "8.5-dev" + "dev-master": "9.1-dev" } }, "autoload": { "classmap": [ "src/" + ], + "files": [ + "src/Framework/Assert/Functions.php" ] }, "notification-url": "https://packagist.org/downloads/", @@ -1619,7 +1712,17 @@ "testing", "xunit" ], - "time": "2020-01-08T08:49:49+00:00" + "funding": [ + { + "url": "https://phpunit.de/donate.html", + "type": "custom" + }, + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-04-03T14:40:04+00:00" }, { "name": "psr/container", @@ -1806,30 +1909,82 @@ "description": "A polyfill for getallheaders.", "time": "2019-03-08T08:55:37+00:00" }, + { + "name": "sebastian/code-unit", + "version": "1.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit.git", + "reference": "ac958085bc19fcd1d36425c781ef4cbb5b06e2a5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/ac958085bc19fcd1d36425c781ef4cbb5b06e2a5", + "reference": "ac958085bc19fcd1d36425c781ef4cbb5b06e2a5", + "shasum": "" + }, + "require": { + "php": "^7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Collection of value objects that represent the PHP code units", + "homepage": "https://github.com/sebastianbergmann/code-unit", + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-04-30T05:58:10+00:00" + }, { "name": "sebastian/code-unit-reverse-lookup", - "version": "1.0.1", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18" + "reference": "5b5dbe0044085ac41df47e79d34911a15b96d82e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", - "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/5b5dbe0044085ac41df47e79d34911a15b96d82e", + "reference": "5b5dbe0044085ac41df47e79d34911a15b96d82e", "shasum": "" }, "require": { - "php": "^5.6 || ^7.0" + "php": "^7.3" }, "require-dev": { - "phpunit/phpunit": "^5.7 || ^6.0" + "phpunit/phpunit": "^9.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "2.0-dev" } }, "autoload": { @@ -1849,34 +2004,34 @@ ], "description": "Looks up which function or method a line of code belongs to", "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", - "time": "2017-03-04T06:30:41+00:00" + "time": "2020-02-07T06:20:13+00:00" }, { "name": "sebastian/comparator", - "version": "3.0.2", + "version": "4.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "5de4fc177adf9bce8df98d8d141a7559d7ccf6da" + "reference": "85b3435da967696ed618ff745f32be3ff4a2b8e8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/5de4fc177adf9bce8df98d8d141a7559d7ccf6da", - "reference": "5de4fc177adf9bce8df98d8d141a7559d7ccf6da", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/85b3435da967696ed618ff745f32be3ff4a2b8e8", + "reference": "85b3435da967696ed618ff745f32be3ff4a2b8e8", "shasum": "" }, "require": { - "php": "^7.1", - "sebastian/diff": "^3.0", - "sebastian/exporter": "^3.1" + "php": "^7.3", + "sebastian/diff": "^4.0", + "sebastian/exporter": "^4.0" }, "require-dev": { - "phpunit/phpunit": "^7.1" + "phpunit/phpunit": "^9.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-master": "4.0-dev" } }, "autoload": { @@ -1889,6 +2044,10 @@ "BSD-3-Clause" ], "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, { "name": "Jeff Welch", "email": "whatthejeff@gmail.com" @@ -1900,10 +2059,6 @@ { "name": "Bernhard Schussek", "email": "bschussek@2bepublished.at" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" } ], "description": "Provides the functionality to compare PHP values for equality", @@ -1913,33 +2068,33 @@ "compare", "equality" ], - "time": "2018-07-12T15:12:46+00:00" + "time": "2020-02-07T06:08:51+00:00" }, { "name": "sebastian/diff", - "version": "3.0.2", + "version": "4.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "720fcc7e9b5cf384ea68d9d930d480907a0c1a29" + "reference": "3e523c576f29dacecff309f35e4cc5a5c168e78a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/720fcc7e9b5cf384ea68d9d930d480907a0c1a29", - "reference": "720fcc7e9b5cf384ea68d9d930d480907a0c1a29", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3e523c576f29dacecff309f35e4cc5a5c168e78a", + "reference": "3e523c576f29dacecff309f35e4cc5a5c168e78a", "shasum": "" }, "require": { - "php": "^7.1" + "php": "^7.3" }, "require-dev": { - "phpunit/phpunit": "^7.5 || ^8.0", - "symfony/process": "^2 || ^3.3 || ^4" + "phpunit/phpunit": "^9.0", + "symfony/process": "^4.2 || ^5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-master": "4.0-dev" } }, "autoload": { @@ -1952,13 +2107,13 @@ "BSD-3-Clause" ], "authors": [ - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - }, { "name": "Sebastian Bergmann", "email": "sebastian@phpunit.de" + }, + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" } ], "description": "Diff implementation", @@ -1969,27 +2124,33 @@ "unidiff", "unified diff" ], - "time": "2019-02-04T06:01:07+00:00" + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-05-08T05:01:12+00:00" }, { "name": "sebastian/environment", - "version": "4.2.3", + "version": "5.1.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "464c90d7bdf5ad4e8a6aea15c091fec0603d4368" + "reference": "c753f04d68cd489b6973cf9b4e505e191af3b05c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/464c90d7bdf5ad4e8a6aea15c091fec0603d4368", - "reference": "464c90d7bdf5ad4e8a6aea15c091fec0603d4368", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/c753f04d68cd489b6973cf9b4e505e191af3b05c", + "reference": "c753f04d68cd489b6973cf9b4e505e191af3b05c", "shasum": "" }, "require": { - "php": "^7.1" + "php": "^7.3" }, "require-dev": { - "phpunit/phpunit": "^7.5" + "phpunit/phpunit": "^9.0" }, "suggest": { "ext-posix": "*" @@ -1997,7 +2158,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.2-dev" + "dev-master": "5.0-dev" } }, "autoload": { @@ -2022,34 +2183,34 @@ "environment", "hhvm" ], - "time": "2019-11-20T08:46:58+00:00" + "time": "2020-04-14T13:36:52+00:00" }, { "name": "sebastian/exporter", - "version": "3.1.2", + "version": "4.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "68609e1261d215ea5b21b7987539cbfbe156ec3e" + "reference": "80c26562e964016538f832f305b2286e1ec29566" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/68609e1261d215ea5b21b7987539cbfbe156ec3e", - "reference": "68609e1261d215ea5b21b7987539cbfbe156ec3e", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/80c26562e964016538f832f305b2286e1ec29566", + "reference": "80c26562e964016538f832f305b2286e1ec29566", "shasum": "" }, "require": { - "php": "^7.0", - "sebastian/recursion-context": "^3.0" + "php": "^7.3", + "sebastian/recursion-context": "^4.0" }, "require-dev": { "ext-mbstring": "*", - "phpunit/phpunit": "^6.0" + "phpunit/phpunit": "^9.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.1.x-dev" + "dev-master": "4.0-dev" } }, "autoload": { @@ -2089,30 +2250,30 @@ "export", "exporter" ], - "time": "2019-09-14T09:02:43+00:00" + "time": "2020-02-07T06:10:52+00:00" }, { "name": "sebastian/global-state", - "version": "3.0.0", + "version": "4.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "edf8a461cf1d4005f19fb0b6b8b95a9f7fa0adc4" + "reference": "bdb1e7c79e592b8c82cb1699be3c8743119b8a72" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/edf8a461cf1d4005f19fb0b6b8b95a9f7fa0adc4", - "reference": "edf8a461cf1d4005f19fb0b6b8b95a9f7fa0adc4", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bdb1e7c79e592b8c82cb1699be3c8743119b8a72", + "reference": "bdb1e7c79e592b8c82cb1699be3c8743119b8a72", "shasum": "" }, "require": { - "php": "^7.2", - "sebastian/object-reflector": "^1.1.1", - "sebastian/recursion-context": "^3.0" + "php": "^7.3", + "sebastian/object-reflector": "^2.0", + "sebastian/recursion-context": "^4.0" }, "require-dev": { "ext-dom": "*", - "phpunit/phpunit": "^8.0" + "phpunit/phpunit": "^9.0" }, "suggest": { "ext-uopz": "*" @@ -2120,7 +2281,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-master": "4.0-dev" } }, "autoload": { @@ -2143,34 +2304,34 @@ "keywords": [ "global state" ], - "time": "2019-02-01T05:30:01+00:00" + "time": "2020-02-07T06:11:37+00:00" }, { "name": "sebastian/object-enumerator", - "version": "3.0.3", + "version": "4.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5" + "reference": "e67516b175550abad905dc952f43285957ef4363" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/7cfd9e65d11ffb5af41198476395774d4c8a84c5", - "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/e67516b175550abad905dc952f43285957ef4363", + "reference": "e67516b175550abad905dc952f43285957ef4363", "shasum": "" }, "require": { - "php": "^7.0", - "sebastian/object-reflector": "^1.1.1", - "sebastian/recursion-context": "^3.0" + "php": "^7.3", + "sebastian/object-reflector": "^2.0", + "sebastian/recursion-context": "^4.0" }, "require-dev": { - "phpunit/phpunit": "^6.0" + "phpunit/phpunit": "^9.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0.x-dev" + "dev-master": "4.0-dev" } }, "autoload": { @@ -2190,32 +2351,32 @@ ], "description": "Traverses array structures and object graphs to enumerate all referenced objects", "homepage": "https://github.com/sebastianbergmann/object-enumerator/", - "time": "2017-08-03T12:35:26+00:00" + "time": "2020-02-07T06:12:23+00:00" }, { "name": "sebastian/object-reflector", - "version": "1.1.1", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "773f97c67f28de00d397be301821b06708fca0be" + "reference": "f4fd0835cabb0d4a6546d9fe291e5740037aa1e7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/773f97c67f28de00d397be301821b06708fca0be", - "reference": "773f97c67f28de00d397be301821b06708fca0be", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/f4fd0835cabb0d4a6546d9fe291e5740037aa1e7", + "reference": "f4fd0835cabb0d4a6546d9fe291e5740037aa1e7", "shasum": "" }, "require": { - "php": "^7.0" + "php": "^7.3" }, "require-dev": { - "phpunit/phpunit": "^6.0" + "phpunit/phpunit": "^9.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.1-dev" + "dev-master": "2.0-dev" } }, "autoload": { @@ -2235,32 +2396,32 @@ ], "description": "Allows reflection of object attributes, including inherited and non-public ones", "homepage": "https://github.com/sebastianbergmann/object-reflector/", - "time": "2017-03-29T09:07:27+00:00" + "time": "2020-02-07T06:19:40+00:00" }, { "name": "sebastian/recursion-context", - "version": "3.0.0", + "version": "4.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8" + "reference": "cdd86616411fc3062368b720b0425de10bd3d579" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", - "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cdd86616411fc3062368b720b0425de10bd3d579", + "reference": "cdd86616411fc3062368b720b0425de10bd3d579", "shasum": "" }, "require": { - "php": "^7.0" + "php": "^7.3" }, "require-dev": { - "phpunit/phpunit": "^6.0" + "phpunit/phpunit": "^9.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0.x-dev" + "dev-master": "4.0-dev" } }, "autoload": { @@ -2273,14 +2434,14 @@ "BSD-3-Clause" ], "authors": [ - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, { "name": "Sebastian Bergmann", "email": "sebastian@phpunit.de" }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, { "name": "Adam Harvey", "email": "aharvey@php.net" @@ -2288,29 +2449,32 @@ ], "description": "Provides functionality to recursively process PHP variables", "homepage": "http://www.github.com/sebastianbergmann/recursion-context", - "time": "2017-03-03T06:23:57+00:00" + "time": "2020-02-07T06:18:20+00:00" }, { "name": "sebastian/resource-operations", - "version": "2.0.1", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "4d7a795d35b889bf80a0cc04e08d77cedfa917a9" + "reference": "8c98bf0dfa1f9256d0468b9803a1e1df31b6fa98" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/4d7a795d35b889bf80a0cc04e08d77cedfa917a9", - "reference": "4d7a795d35b889bf80a0cc04e08d77cedfa917a9", + "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/8c98bf0dfa1f9256d0468b9803a1e1df31b6fa98", + "reference": "8c98bf0dfa1f9256d0468b9803a1e1df31b6fa98", "shasum": "" }, "require": { - "php": "^7.1" + "php": "^7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-master": "3.0-dev" } }, "autoload": { @@ -2330,32 +2494,32 @@ ], "description": "Provides a list of PHP built-in functions that operate on resources", "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "time": "2018-10-04T04:07:39+00:00" + "time": "2020-02-07T06:13:02+00:00" }, { "name": "sebastian/type", - "version": "1.1.3", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/type.git", - "reference": "3aaaa15fa71d27650d62a948be022fe3b48541a3" + "reference": "9e8f42f740afdea51f5f4e8cec2035580e797ee1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/3aaaa15fa71d27650d62a948be022fe3b48541a3", - "reference": "3aaaa15fa71d27650d62a948be022fe3b48541a3", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/9e8f42f740afdea51f5f4e8cec2035580e797ee1", + "reference": "9e8f42f740afdea51f5f4e8cec2035580e797ee1", "shasum": "" }, "require": { - "php": "^7.2" + "php": "^7.3" }, "require-dev": { - "phpunit/phpunit": "^8.2" + "phpunit/phpunit": "^9.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.1-dev" + "dev-master": "2.0-dev" } }, "autoload": { @@ -2376,29 +2540,29 @@ ], "description": "Collection of value objects that represent the types of the PHP type system", "homepage": "https://github.com/sebastianbergmann/type", - "time": "2019-07-02T08:10:15+00:00" + "time": "2020-02-07T06:13:43+00:00" }, { "name": "sebastian/version", - "version": "2.0.1", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/version.git", - "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019" + "reference": "0411bde656dce64202b39c2f4473993a9081d39e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019", - "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/0411bde656dce64202b39c2f4473993a9081d39e", + "reference": "0411bde656dce64202b39c2f4473993a9081d39e", "shasum": "" }, "require": { - "php": ">=5.6" + "php": "^7.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "3.0-dev" } }, "autoload": { @@ -2419,7 +2583,7 @@ ], "description": "Library that helps with managing the version number of Git-hosted PHP projects", "homepage": "https://github.com/sebastianbergmann/version", - "time": "2016-10-03T07:35:21+00:00" + "time": "2020-01-21T06:36:37+00:00" }, { "name": "squizlabs/php_codesniffer", @@ -2474,16 +2638,16 @@ }, { "name": "symfony/config", - "version": "v5.0.3", + "version": "v5.0.8", "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "7640c6704f56bf64045066bc5d93fd9d664baa63" + "reference": "db1674e1a261148429f123871f30d211992294e7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/7640c6704f56bf64045066bc5d93fd9d664baa63", - "reference": "7640c6704f56bf64045066bc5d93fd9d664baa63", + "url": "https://api.github.com/repos/symfony/config/zipball/db1674e1a261148429f123871f30d211992294e7", + "reference": "db1674e1a261148429f123871f30d211992294e7", "shasum": "" }, "require": { @@ -2534,20 +2698,34 @@ ], "description": "Symfony Config Component", "homepage": "https://symfony.com", - "time": "2020-01-04T14:08:26+00:00" + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-04-15T15:59:10+00:00" }, { "name": "symfony/console", - "version": "v5.0.3", + "version": "v5.0.8", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "345ab6ecb456b5147ea3b3271d7f1f00aadfd257" + "reference": "5fa1caadc8cdaa17bcfb25219f3b53fe294a9935" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/345ab6ecb456b5147ea3b3271d7f1f00aadfd257", - "reference": "345ab6ecb456b5147ea3b3271d7f1f00aadfd257", + "url": "https://api.github.com/repos/symfony/console/zipball/5fa1caadc8cdaa17bcfb25219f3b53fe294a9935", + "reference": "5fa1caadc8cdaa17bcfb25219f3b53fe294a9935", "shasum": "" }, "require": { @@ -2610,20 +2788,34 @@ ], "description": "Symfony Console Component", "homepage": "https://symfony.com", - "time": "2020-01-19T11:13:19+00:00" + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-03-30T11:42:42+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v5.0.3", + "version": "v5.0.8", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "4a7a8cdca1120c091b4797f0e5bba69c1e783224" + "reference": "24f40d95385774ed5c71dbf014edd047e2f2f3dc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/4a7a8cdca1120c091b4797f0e5bba69c1e783224", - "reference": "4a7a8cdca1120c091b4797f0e5bba69c1e783224", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/24f40d95385774ed5c71dbf014edd047e2f2f3dc", + "reference": "24f40d95385774ed5c71dbf014edd047e2f2f3dc", "shasum": "" }, "require": { @@ -2680,7 +2872,21 @@ ], "description": "Symfony EventDispatcher Component", "homepage": "https://symfony.com", - "time": "2020-01-10T21:57:37+00:00" + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-03-27T16:56:45+00:00" }, { "name": "symfony/event-dispatcher-contracts", @@ -2742,16 +2948,16 @@ }, { "name": "symfony/filesystem", - "version": "v5.0.3", + "version": "v5.0.8", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "3afadc0f57cd74f86379d073e694b0f2cda2a88c" + "reference": "7cd0dafc4353a0f62e307df90b48466379c8cc91" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/3afadc0f57cd74f86379d073e694b0f2cda2a88c", - "reference": "3afadc0f57cd74f86379d073e694b0f2cda2a88c", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/7cd0dafc4353a0f62e307df90b48466379c8cc91", + "reference": "7cd0dafc4353a0f62e307df90b48466379c8cc91", "shasum": "" }, "require": { @@ -2788,20 +2994,34 @@ ], "description": "Symfony Filesystem Component", "homepage": "https://symfony.com", - "time": "2020-01-21T08:40:24+00:00" + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-04-12T14:40:17+00:00" }, { "name": "symfony/finder", - "version": "v5.0.3", + "version": "v5.0.8", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "4176e7cb846fe08f32518b7e0ed8462e2db8d9bb" + "reference": "600a52c29afc0d1caa74acbec8d3095ca7e9910d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/4176e7cb846fe08f32518b7e0ed8462e2db8d9bb", - "reference": "4176e7cb846fe08f32518b7e0ed8462e2db8d9bb", + "url": "https://api.github.com/repos/symfony/finder/zipball/600a52c29afc0d1caa74acbec8d3095ca7e9910d", + "reference": "600a52c29afc0d1caa74acbec8d3095ca7e9910d", "shasum": "" }, "require": { @@ -2837,20 +3057,34 @@ ], "description": "Symfony Finder Component", "homepage": "https://symfony.com", - "time": "2020-01-04T14:08:26+00:00" + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-03-27T16:56:45+00:00" }, { "name": "symfony/options-resolver", - "version": "v5.0.3", + "version": "v5.0.8", "source": { "type": "git", "url": "https://github.com/symfony/options-resolver.git", - "reference": "b1ab86ce52b0c0abe031367a173005a025e30e04" + "reference": "3707e3caeff2b797c0bfaadd5eba723dd44e6bf1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/b1ab86ce52b0c0abe031367a173005a025e30e04", - "reference": "b1ab86ce52b0c0abe031367a173005a025e30e04", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/3707e3caeff2b797c0bfaadd5eba723dd44e6bf1", + "reference": "3707e3caeff2b797c0bfaadd5eba723dd44e6bf1", "shasum": "" }, "require": { @@ -2891,20 +3125,34 @@ "configuration", "options" ], - "time": "2020-01-04T14:08:26+00:00" + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-04-06T10:40:56+00:00" }, { "name": "symfony/polyfill-ctype", - "version": "v1.13.1", + "version": "v1.17.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "f8f0b461be3385e56d6de3dbb5a0df24c0c275e3" + "reference": "e94c8b1bbe2bc77507a1056cdb06451c75b427f9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/f8f0b461be3385e56d6de3dbb5a0df24c0c275e3", - "reference": "f8f0b461be3385e56d6de3dbb5a0df24c0c275e3", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/e94c8b1bbe2bc77507a1056cdb06451c75b427f9", + "reference": "e94c8b1bbe2bc77507a1056cdb06451c75b427f9", "shasum": "" }, "require": { @@ -2916,7 +3164,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.13-dev" + "dev-master": "1.17-dev" } }, "autoload": { @@ -2949,20 +3197,110 @@ "polyfill", "portable" ], - "time": "2019-11-27T13:56:44+00:00" + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-05-12T16:14:59+00:00" + }, + { + "name": "symfony/polyfill-intl-idn", + "version": "v1.17.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-idn.git", + "reference": "3bff59ea7047e925be6b7f2059d60af31bb46d6a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/3bff59ea7047e925be6b7f2059d60af31bb46d6a", + "reference": "3bff59ea7047e925be6b7f2059d60af31bb46d6a", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "symfony/polyfill-mbstring": "^1.3", + "symfony/polyfill-php72": "^1.10" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.17-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Intl\\Idn\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Laurent Bassin", + "email": "laurent@bassin.info" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "idn", + "intl", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-05-12T16:47:27+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.13.1", + "version": "v1.17.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "7b4aab9743c30be783b73de055d24a39cf4b954f" + "reference": "fa79b11539418b02fc5e1897267673ba2c19419c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/7b4aab9743c30be783b73de055d24a39cf4b954f", - "reference": "7b4aab9743c30be783b73de055d24a39cf4b954f", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/fa79b11539418b02fc5e1897267673ba2c19419c", + "reference": "fa79b11539418b02fc5e1897267673ba2c19419c", "shasum": "" }, "require": { @@ -2974,7 +3312,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.13-dev" + "dev-master": "1.17-dev" } }, "autoload": { @@ -3008,20 +3346,34 @@ "portable", "shim" ], - "time": "2019-11-27T14:18:11+00:00" + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-05-12T16:47:27+00:00" }, { "name": "symfony/polyfill-php70", - "version": "v1.13.1", + "version": "v1.17.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php70.git", - "reference": "af23c7bb26a73b850840823662dda371484926c4" + "reference": "82225c2d7d23d7e70515496d249c0152679b468e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/af23c7bb26a73b850840823662dda371484926c4", - "reference": "af23c7bb26a73b850840823662dda371484926c4", + "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/82225c2d7d23d7e70515496d249c0152679b468e", + "reference": "82225c2d7d23d7e70515496d249c0152679b468e", "shasum": "" }, "require": { @@ -3031,7 +3383,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.13-dev" + "dev-master": "1.17-dev" } }, "autoload": { @@ -3067,20 +3419,34 @@ "portable", "shim" ], - "time": "2019-11-27T13:56:44+00:00" + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-05-12T16:47:27+00:00" }, { "name": "symfony/polyfill-php72", - "version": "v1.13.1", + "version": "v1.17.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "66fea50f6cb37a35eea048d75a7d99a45b586038" + "reference": "f048e612a3905f34931127360bdd2def19a5e582" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/66fea50f6cb37a35eea048d75a7d99a45b586038", - "reference": "66fea50f6cb37a35eea048d75a7d99a45b586038", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/f048e612a3905f34931127360bdd2def19a5e582", + "reference": "f048e612a3905f34931127360bdd2def19a5e582", "shasum": "" }, "require": { @@ -3089,7 +3455,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.13-dev" + "dev-master": "1.17-dev" } }, "autoload": { @@ -3122,20 +3488,34 @@ "portable", "shim" ], - "time": "2019-11-27T13:56:44+00:00" + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-05-12T16:47:27+00:00" }, { "name": "symfony/polyfill-php73", - "version": "v1.13.1", + "version": "v1.17.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php73.git", - "reference": "4b0e2222c55a25b4541305a053013d5647d3a25f" + "reference": "a760d8964ff79ab9bf057613a5808284ec852ccc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/4b0e2222c55a25b4541305a053013d5647d3a25f", - "reference": "4b0e2222c55a25b4541305a053013d5647d3a25f", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/a760d8964ff79ab9bf057613a5808284ec852ccc", + "reference": "a760d8964ff79ab9bf057613a5808284ec852ccc", "shasum": "" }, "require": { @@ -3144,7 +3524,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.13-dev" + "dev-master": "1.17-dev" } }, "autoload": { @@ -3180,20 +3560,34 @@ "portable", "shim" ], - "time": "2019-11-27T16:25:15+00:00" + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-05-12T16:47:27+00:00" }, { "name": "symfony/process", - "version": "v5.0.3", + "version": "v5.0.8", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "f9ffd870f5ac01abec7b2b5e15f904ca9400ecd1" + "reference": "3179f68dff5bad14d38c4114a1dab98030801fd7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/f9ffd870f5ac01abec7b2b5e15f904ca9400ecd1", - "reference": "f9ffd870f5ac01abec7b2b5e15f904ca9400ecd1", + "url": "https://api.github.com/repos/symfony/process/zipball/3179f68dff5bad14d38c4114a1dab98030801fd7", + "reference": "3179f68dff5bad14d38c4114a1dab98030801fd7", "shasum": "" }, "require": { @@ -3229,7 +3623,21 @@ ], "description": "Symfony Process Component", "homepage": "https://symfony.com", - "time": "2020-01-09T09:53:06+00:00" + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-04-15T15:59:10+00:00" }, { "name": "symfony/service-contracts", @@ -3291,16 +3699,16 @@ }, { "name": "symfony/stopwatch", - "version": "v5.0.3", + "version": "v5.0.8", "source": { "type": "git", "url": "https://github.com/symfony/stopwatch.git", - "reference": "5d9add8034135b9a5f7b101d1e42c797e7f053e4" + "reference": "a1d86d30d4522423afc998f32404efa34fcf5a73" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/5d9add8034135b9a5f7b101d1e42c797e7f053e4", - "reference": "5d9add8034135b9a5f7b101d1e42c797e7f053e4", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/a1d86d30d4522423afc998f32404efa34fcf5a73", + "reference": "a1d86d30d4522423afc998f32404efa34fcf5a73", "shasum": "" }, "require": { @@ -3337,20 +3745,34 @@ ], "description": "Symfony Stopwatch Component", "homepage": "https://symfony.com", - "time": "2020-01-04T14:08:26+00:00" + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-03-27T16:56:45+00:00" }, { "name": "symfony/yaml", - "version": "v5.0.3", + "version": "v5.0.8", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "69b44e3b8f90949aee2eb3aa9b86ceeb01cbf62a" + "reference": "482fb4e710e5af3e0e78015f19aa716ad953392f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/69b44e3b8f90949aee2eb3aa9b86ceeb01cbf62a", - "reference": "69b44e3b8f90949aee2eb3aa9b86ceeb01cbf62a", + "url": "https://api.github.com/repos/symfony/yaml/zipball/482fb4e710e5af3e0e78015f19aa716ad953392f", + "reference": "482fb4e710e5af3e0e78015f19aa716ad953392f", "shasum": "" }, "require": { @@ -3396,7 +3818,21 @@ ], "description": "Symfony Yaml Component", "homepage": "https://symfony.com", - "time": "2020-01-21T11:12:28+00:00" + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-04-28T17:58:55+00:00" }, { "name": "theseer/tokenizer", @@ -3440,16 +3876,16 @@ }, { "name": "webmozart/assert", - "version": "1.6.0", + "version": "1.8.0", "source": { "type": "git", "url": "https://github.com/webmozart/assert.git", - "reference": "573381c0a64f155a0d9a23f4b0c797194805b925" + "reference": "ab2cb0b3b559010b75981b1bdce728da3ee90ad6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webmozart/assert/zipball/573381c0a64f155a0d9a23f4b0c797194805b925", - "reference": "573381c0a64f155a0d9a23f4b0c797194805b925", + "url": "https://api.github.com/repos/webmozart/assert/zipball/ab2cb0b3b559010b75981b1bdce728da3ee90ad6", + "reference": "ab2cb0b3b559010b75981b1bdce728da3ee90ad6", "shasum": "" }, "require": { @@ -3457,7 +3893,7 @@ "symfony/polyfill-ctype": "^1.8" }, "conflict": { - "vimeo/psalm": "<3.6.0" + "vimeo/psalm": "<3.9.1" }, "require-dev": { "phpunit/phpunit": "^4.8.36 || ^7.5.13" @@ -3484,7 +3920,7 @@ "check", "validate" ], - "time": "2019-11-24T13:36:37+00:00" + "time": "2020-04-18T12:12:48+00:00" } ], "aliases": [], @@ -3497,5 +3933,6 @@ }, "platform-dev": { "ext-json": "*" - } + }, + "plugin-api-version": "1.1.0" } diff --git a/tests/Unit/CheckoutTest.php b/tests/Unit/CheckoutTest.php index dd247e11b..d71ad9fbf 100644 --- a/tests/Unit/CheckoutTest.php +++ b/tests/Unit/CheckoutTest.php @@ -108,16 +108,10 @@ public function testPaymentMethodsFailure( $service = new \Adyen\Service\Checkout($client); $params = array('merchantAccount' => "YourMerchantAccount"); - try { - $result = $service->paymentMethods($params); - $this->fail(); - } catch (\Exception $e) { - $this->assertInstanceOf('Adyen\AdyenException', $e); - $this->assertStringContainsString($expectedExceptionMessage, $e->getMessage()); - if ($httpStatus != null) { - $this->assertEquals($httpStatus, $e->getStatus()); - } - } + + $this->expectException('Adyen\AdyenException'); + $this->expectExceptionMessage($expectedExceptionMessage); + $service->paymentMethods($params); } public static function failurePaymentMethodsProvider() @@ -205,16 +199,9 @@ public function testPaymentsFailure($jsonFile, $httpStatus, $expectedExceptionMe $params['reference'] = 'yourownreference'; - try { - $result = $service->payments($params); - $this->fail(); - } catch (\Exception $e) { - $this->assertInstanceOf('Adyen\AdyenException', $e); - $this->assertStringContainsString($expectedExceptionMessage, $e->getMessage()); - if ($httpStatus != null) { - $this->assertEquals($httpStatus, $e->getStatus()); - } - } + $this->expectException('Adyen\AdyenException'); + $this->expectExceptionMessage($expectedExceptionMessage); + $service->payments($params); } diff --git a/tests/Unit/NotificationTest.php b/tests/Unit/NotificationTest.php index ee4ecec19..be5bbffcc 100755 --- a/tests/Unit/NotificationTest.php +++ b/tests/Unit/NotificationTest.php @@ -66,7 +66,7 @@ public function testNotificationCreateSuccess($jsonFile, $httpStatus) $result = $service->createNotificationConfiguration($params); - $this->assertContains($result['configurationDetails']['active'], array(true)); + $this->assertEquals('true', $result['configurationDetails']['active']); } public static function successNotificationCreateProvider() @@ -101,7 +101,7 @@ public function testNotificationGetlistSuccess($jsonFile, $httpStatus) ); $result = $service->getNotificationConfigurationList($params); - $this->assertContains($result['configurations'][0]['NotificationConfigurationDetails']['active'], array(true)); + $this->assertEquals('true', $result['configurations'][0]['NotificationConfigurationDetails']['active']); } public static function successNotificationGetlistProvider() diff --git a/tests/Unit/PaymentTest.php b/tests/Unit/PaymentTest.php index d3d38ac4b..faec78e73 100644 --- a/tests/Unit/PaymentTest.php +++ b/tests/Unit/PaymentTest.php @@ -127,6 +127,7 @@ public function testAuthoriseSuccessInLiveEnvironment($jsonFile, $httpStatus) $this->assertArrayHasKey('resultCode', $result); $this->assertEquals('Authorised', $result['resultCode']); + $this->markTestSkipped('Move this checks to integration test'); $this->assertFalse($handler->hasInfoThatContains('4111111111111111')); $this->assertFalse($handler->hasInfoThatContains('737')); $this->assertFalse($handler->hasInfoThatContains('adyenjs_0897248234342242524232...')); @@ -144,13 +145,11 @@ public static function successAuthoriseProvider() * @param $jsonFile Json file location * @param $httpStatus expected http status code * @param $errno - * @param $expectedExceptionMessage * @dataProvider connectionFailureAuthoriseProvider */ - public function testAuthoriseConnectionFailure($jsonFile, $httpStatus, $errno, $expectedExceptionMessage) + public function testAuthoriseConnectionFailure($jsonFile, $httpStatus, $errno) { $this->expectException('Adyen\ConnectionException'); - $this->expectExceptionMessage($expectedExceptionMessage); $this->expectExceptionCode($errno); // create client $client = $this->createMockClient($jsonFile, $httpStatus, $errno); @@ -177,7 +176,6 @@ public function testAuthoriseConnectionFailure($jsonFile, $httpStatus, $errno, $ $params = json_decode($json, true); $service->authorise($params); - $this->fail(); } public static function connectionFailureAuthoriseProvider() @@ -222,16 +220,10 @@ public function testAuthoriseResultFailure($jsonFile, $httpStatus, $expectedExce $params = json_decode($json, true); - try { - $result = $service->authorise($params); - $this->fail(); - } catch (\Exception $e) { - $this->assertInstanceOf('Adyen\AdyenException', $e); - $this->assertStringContainsString($expectedExceptionMessage, $e->getMessage()); - if ($httpStatus != null) { - $this->assertEquals($httpStatus, $e->getStatus()); - } - } + $this->expectException('Adyen\AdyenException'); + $this->expectExceptionMessage($expectedExceptionMessage); + + $service->authorise($params); } public static function resultFailureAuthoriseProvider() diff --git a/tests/Unit/TestCaseMock.php b/tests/Unit/TestCaseMock.php index b72e625c5..efb90d788 100644 --- a/tests/Unit/TestCaseMock.php +++ b/tests/Unit/TestCaseMock.php @@ -23,26 +23,51 @@ namespace Adyen\Unit; +use Adyen\AdyenException; +use Adyen\ConnectionException; + class TestCaseMock extends \PHPUnit\Framework\TestCase { protected function createMockClient($jsonFile, $httpStatus, $errno = null, $environment = \Adyen\Environment::TEST) { + $client = new \Adyen\Client(); + $client->setApplicationName("My Test Application"); + $client->setEnvironment($environment); + $client->setXApiKey("MockAPIKey"); + $json = null; if ($jsonFile != null) { $json = file_get_contents($jsonFile, true); } $curlClient = $this->getMockBuilder(get_class(new \Adyen\HttpClient\CurlClient)) - ->setMethods(array('curlRequest', 'curlError')) + ->onlyMethods(array('curlRequest', 'curlError', 'requestJson')) ->getMock(); $curlClient->method('curlRequest') ->willReturn(array($json, $httpStatus)); $curlClient->method('curlError') ->willReturn(array($errno, null)); + $curlClient->method('requestJson') + ->willReturnCallback(function (\Adyen\Service $service, $requestUrl, $params) use ($json, $client, $errno) { + $result = json_decode($json, true); + if ($client->getLogger()) { + $client->getLogger()->info(json_encode($params)); + $client->getLogger()->info($json); + } + if (isset($result['errorCode'])) { + throw new AdyenException($result['message']); + } + if (isset($result['error'])) { + throw new AdyenException($result['error']['message']); + } + if (!$client->getConfig()->getXApiKey()) { + throw new AdyenException('Please provide a valid Checkout API Key'); + } + if (isset($errno) && $errno !== null) { + throw new ConnectionException('', $errno); + } + return $result; + }); - $client = new \Adyen\Client(); - $client->setApplicationName("My Test Application"); - $client->setEnvironment($environment); - $client->setXApiKey("MockAPIKey"); $client->setHttpClient($curlClient); return $client; } From 4c6eac0034f4ac628c2d5b0b4a461c13485ac8a9 Mon Sep 17 00:00:00 2001 From: Marcos Garcia Date: Mon, 18 May 2020 16:43:02 +0200 Subject: [PATCH 11/27] Create a GitHub Actions workflow --- .github/workflows/main.yml | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 .github/workflows/main.yml diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 000000000..572efa767 --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,32 @@ +on: ["push", "pull_request"] +name: Main Workflow + +jobs: + run: + name: Run + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v2 + + - name: Validate composer.json and composer.lock + run: composer validate + + - name: Install dependencies + run: composer install --prefer-dist --no-progress + + - name: Run test suite + run: vendor/bin/phpunit --testsuite=unit + + - name: Run PHP Code Sniffer + run: vendor/bin/phpcs + + - name: Make sure project files are compilable + run: find -L . -path ./vendor -prune -o -path ./tests -prune -o -name '*.php' -print0 | xargs -0 -n 1 -P 4 php -l + + - name: SonarCloud integration + uses: sonarsource/sonarcloud-github-action@master + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} From e468edb86d7da4c9cbc65677837ba94b264c234e Mon Sep 17 00:00:00 2001 From: marcoss Date: Mon, 18 May 2020 16:52:09 +0200 Subject: [PATCH 12/27] Fix PHP CodeSniffer problems --- src/Adyen/HttpClient/CurlClient.php | 1 - src/Adyen/Service/BinLookup.php | 48 +++++++++---------- .../DisputeService/DefendDispute.php | 3 +- .../DeleteDisputeDefenseDocument.php | 3 +- .../RetrieveApplicableDefenseReasons.php | 3 +- .../DisputeService/SupplyDefenseDocument.php | 3 +- 6 files changed, 32 insertions(+), 29 deletions(-) diff --git a/src/Adyen/HttpClient/CurlClient.php b/src/Adyen/HttpClient/CurlClient.php index 2a617f7c8..f07dd7c1b 100644 --- a/src/Adyen/HttpClient/CurlClient.php +++ b/src/Adyen/HttpClient/CurlClient.php @@ -368,7 +368,6 @@ private function maskParametersRecursive($paramsToMaskList, $params) { if (is_array($paramsToMaskList)) { foreach ($paramsToMaskList as $key => $paramsToMask) { - if (is_array($paramsToMask) && isset($params[$key])) { // if $paramsToMask is an array and $params[$key] exists, $paramsToMask is an array of keys $params[$key] = $this->maskParametersRecursive($paramsToMask, $params[$key]); diff --git a/src/Adyen/Service/BinLookup.php b/src/Adyen/Service/BinLookup.php index f333c6ac4..0f204122e 100644 --- a/src/Adyen/Service/BinLookup.php +++ b/src/Adyen/Service/BinLookup.php @@ -12,32 +12,32 @@ class BinLookup extends \Adyen\Service /** * @var \Adyen\Service\ResourceModel\BinLookup\GetCostEstimate */ - protected $getCostEstimate; + protected $getCostEstimate; - /** - * BinLookup constructor. - * - * @param \Adyen\Client $client - * @throws \Adyen\AdyenException - */ - public function __construct(\Adyen\Client $client) - { - parent::__construct($client); - $this->get3dsAvailability = new \Adyen\Service\ResourceModel\BinLookup\Get3dsAvailability($this); - $this->getCostEstimate = new \Adyen\Service\ResourceModel\BinLookup\GetCostEstimate($this); - } + /** + * BinLookup constructor. + * + * @param \Adyen\Client $client + * @throws \Adyen\AdyenException + */ + public function __construct(\Adyen\Client $client) + { + parent::__construct($client); + $this->get3dsAvailability = new \Adyen\Service\ResourceModel\BinLookup\Get3dsAvailability($this); + $this->getCostEstimate = new \Adyen\Service\ResourceModel\BinLookup\GetCostEstimate($this); + } - /** - * @param $params - * @return mixed - * @throws \Adyen\AdyenException - */ - public function get3dsAvailability($params) - { - $result = $this->get3dsAvailability->request($params); - return $result; - } + /** + * @param $params + * @return mixed + * @throws \Adyen\AdyenException + */ + public function get3dsAvailability($params) + { + $result = $this->get3dsAvailability->request($params); + return $result; + } /** * /getCostEstimate endpoint handler @@ -50,5 +50,5 @@ public function get3dsAvailability($params) public function getCostEstimate($params) { return $this->getCostEstimate->request($params); - } + } } diff --git a/src/Adyen/Service/ResourceModel/DisputeService/DefendDispute.php b/src/Adyen/Service/ResourceModel/DisputeService/DefendDispute.php index 9c538254b..2d7fb5fc1 100644 --- a/src/Adyen/Service/ResourceModel/DisputeService/DefendDispute.php +++ b/src/Adyen/Service/ResourceModel/DisputeService/DefendDispute.php @@ -11,7 +11,8 @@ class DefendDispute extends AbstractResource * * @param \Adyen\Service\DisputeService $service */ - public function __construct($service) { + public function __construct($service) + { parent::__construct($service, $service->getResourceURL('defendDispute')); } } diff --git a/src/Adyen/Service/ResourceModel/DisputeService/DeleteDisputeDefenseDocument.php b/src/Adyen/Service/ResourceModel/DisputeService/DeleteDisputeDefenseDocument.php index db8008239..460c2dbdd 100644 --- a/src/Adyen/Service/ResourceModel/DisputeService/DeleteDisputeDefenseDocument.php +++ b/src/Adyen/Service/ResourceModel/DisputeService/DeleteDisputeDefenseDocument.php @@ -11,7 +11,8 @@ class DeleteDisputeDefenseDocument extends AbstractResource * * @param \Adyen\Service\DisputeService $service */ - public function __construct($service) { + public function __construct($service) + { parent::__construct($service, $service->getResourceURL('deleteDisputeDefenseDocument')); } } diff --git a/src/Adyen/Service/ResourceModel/DisputeService/RetrieveApplicableDefenseReasons.php b/src/Adyen/Service/ResourceModel/DisputeService/RetrieveApplicableDefenseReasons.php index 800194203..ead4db482 100644 --- a/src/Adyen/Service/ResourceModel/DisputeService/RetrieveApplicableDefenseReasons.php +++ b/src/Adyen/Service/ResourceModel/DisputeService/RetrieveApplicableDefenseReasons.php @@ -11,7 +11,8 @@ class RetrieveApplicableDefenseReasons extends AbstractResource * * @param \Adyen\Service\DisputeService $service */ - public function __construct($service) { + public function __construct($service) + { parent::__construct($service, $service->getResourceURL('retrieveApplicableDefenseReasons')); } } diff --git a/src/Adyen/Service/ResourceModel/DisputeService/SupplyDefenseDocument.php b/src/Adyen/Service/ResourceModel/DisputeService/SupplyDefenseDocument.php index 97b6f028a..87c5788aa 100644 --- a/src/Adyen/Service/ResourceModel/DisputeService/SupplyDefenseDocument.php +++ b/src/Adyen/Service/ResourceModel/DisputeService/SupplyDefenseDocument.php @@ -11,7 +11,8 @@ class SupplyDefenseDocument extends AbstractResource * * @param \Adyen\Service\DisputeService $service */ - public function __construct($service) { + public function __construct($service) + { parent::__construct($service, $service->getResourceURL('supplyDefenseDocument')); } } From a176d755d2b8c45cae620735de83186f233ea0f4 Mon Sep 17 00:00:00 2001 From: marcoss Date: Mon, 18 May 2020 17:06:11 +0200 Subject: [PATCH 13/27] Fix PHP CodeSniffer problems --- src/Adyen/HttpClient/CurlClient.php | 3 ++- src/Adyen/Service/DisputeService.php | 3 ++- src/Adyen/Service/ResourceModel/BinLookup/GetCostEstimate.php | 3 ++- tests/Unit/AbstractResourceTest.php | 2 +- 4 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/Adyen/HttpClient/CurlClient.php b/src/Adyen/HttpClient/CurlClient.php index f07dd7c1b..500a39ed5 100644 --- a/src/Adyen/HttpClient/CurlClient.php +++ b/src/Adyen/HttpClient/CurlClient.php @@ -372,7 +372,8 @@ private function maskParametersRecursive($paramsToMaskList, $params) // if $paramsToMask is an array and $params[$key] exists, $paramsToMask is an array of keys $params[$key] = $this->maskParametersRecursive($paramsToMask, $params[$key]); } elseif (!is_array($paramsToMask) && isset($params[$paramsToMask])) { - // if $paramsToMask is not an array and $params[$paramsToMask] exists, $params[$paramsToMask] is a parameter that needs to be masked + // if $paramsToMask is not an array and $params[$paramsToMask] exists, $params[$paramsToMask] is + // a parameter that needs to be masked $params[$paramsToMask] = $this->maskParameter($params[$paramsToMask]); } } diff --git a/src/Adyen/Service/DisputeService.php b/src/Adyen/Service/DisputeService.php index 4c309c6e4..3f2b19e7b 100644 --- a/src/Adyen/Service/DisputeService.php +++ b/src/Adyen/Service/DisputeService.php @@ -102,6 +102,7 @@ public function defendDispute($params) */ public function getResourceURL($endpoint) { - return $this->getClient()->getConfig()->get('endpointDisputeService') . '/' . $this->getClient()->getDisputeServiceVersion() . '/' . $endpoint; + return $this->getClient()->getConfig()->get('endpointDisputeService') . '/' + . $this->getClient()->getDisputeServiceVersion() . '/' . $endpoint; } } diff --git a/src/Adyen/Service/ResourceModel/BinLookup/GetCostEstimate.php b/src/Adyen/Service/ResourceModel/BinLookup/GetCostEstimate.php index a91902aa0..2a06adc76 100644 --- a/src/Adyen/Service/ResourceModel/BinLookup/GetCostEstimate.php +++ b/src/Adyen/Service/ResourceModel/BinLookup/GetCostEstimate.php @@ -24,7 +24,8 @@ class GetCostEstimate extends \Adyen\Service\AbstractResource */ public function __construct($service) { - $this->endpoint = $service->getClient()->getConfig()->get('endpoint') . '/pal/servlet/BinLookup/' . $service->getClient()->getApiBinLookupVersion() . '/getCostEstimate'; + $this->endpoint = $service->getClient()->getConfig()->get('endpoint') . '/pal/servlet/BinLookup/' + . $service->getClient()->getApiBinLookupVersion() . '/getCostEstimate'; parent::__construct($service, $this->endpoint, $this->allowApplicationInfo); } } diff --git a/tests/Unit/AbstractResourceTest.php b/tests/Unit/AbstractResourceTest.php index 1a4fad9dc..8bea11005 100644 --- a/tests/Unit/AbstractResourceTest.php +++ b/tests/Unit/AbstractResourceTest.php @@ -209,7 +209,7 @@ public function testHandleApplicationInfoInRequestPOSShouldAddBase64EncodedAppli $this->assertArrayHasKey("adyenLibrary", $resultArray['applicationInfo']); } - public function testHandleApplicationInfoInRequestPOSWithQueryStringSaleToAcquirerDataAddBase64EncodedApplicationInfo() + public function testHandleApplicationInfoInRequestPOSQueryStringSaleToAcquirerDataAddBase64EncodedApplicationInfo() { $json = '{ "SaleToPOIRequest": { From aae732284a38962e7945c3c0b034cc613f1bdc7f Mon Sep 17 00:00:00 2001 From: marcoss Date: Mon, 18 May 2020 17:21:27 +0200 Subject: [PATCH 14/27] Update SonarCloud settings --- sonar-project.properties | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 sonar-project.properties diff --git a/sonar-project.properties b/sonar-project.properties new file mode 100644 index 000000000..ae71bb6a9 --- /dev/null +++ b/sonar-project.properties @@ -0,0 +1,3 @@ +sonar.organization=adyen +sonar.projectKey=Adyen_adyen-php-api-library +sonar.sources=. From 65af4e130488bf25c58d967232658e581b008224 Mon Sep 17 00:00:00 2001 From: marcoss Date: Tue, 19 May 2020 09:37:06 +0200 Subject: [PATCH 15/27] Generate coverage reports --- .github/workflows/main.yml | 2 +- sonar-project.properties | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 572efa767..d86229a65 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -17,7 +17,7 @@ jobs: run: composer install --prefer-dist --no-progress - name: Run test suite - run: vendor/bin/phpunit --testsuite=unit + run: vendor/bin/phpunit --testsuite=unit --coverage-clover build/clover.xml - name: Run PHP Code Sniffer run: vendor/bin/phpcs diff --git a/sonar-project.properties b/sonar-project.properties index ae71bb6a9..210e7a53d 100644 --- a/sonar-project.properties +++ b/sonar-project.properties @@ -1,3 +1,4 @@ sonar.organization=adyen sonar.projectKey=Adyen_adyen-php-api-library sonar.sources=. +sonar.php.tests.reportPath=build/clover.xml From b21cefeecdf5d361b753c5c42c32b12c6a5e730b Mon Sep 17 00:00:00 2001 From: marcoss Date: Tue, 19 May 2020 09:46:35 +0200 Subject: [PATCH 16/27] Fix SonarCloud configuration --- sonar-project.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sonar-project.properties b/sonar-project.properties index 210e7a53d..656baa87c 100644 --- a/sonar-project.properties +++ b/sonar-project.properties @@ -1,4 +1,4 @@ sonar.organization=adyen sonar.projectKey=Adyen_adyen-php-api-library sonar.sources=. -sonar.php.tests.reportPath=build/clover.xml +sonar.php.coverage.reportPaths=build/clover.xml From ac1ac9ef8f82416141d9b27b21028d6c2faa1b2c Mon Sep 17 00:00:00 2001 From: marcoss Date: Tue, 19 May 2020 09:56:11 +0200 Subject: [PATCH 17/27] Improve reporting relevancy --- .github/workflows/main.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index d86229a65..791fc214b 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -9,6 +9,9 @@ jobs: steps: - name: Checkout uses: actions/checkout@v2 + with: + # Disabling shallow clone to improve relevancy of SonarCloud reporting + fetch-depth: 0 - name: Validate composer.json and composer.lock run: composer validate From e97baa7c5a41a83b0c2d87f1e4436c2ce50a1704 Mon Sep 17 00:00:00 2001 From: WhiteSource Renovate Date: Tue, 19 May 2020 14:29:02 +0200 Subject: [PATCH 18/27] Update dependency squizlabs/php_codesniffer to v3.5.5 (#187) --- composer.json | 2 +- composer.lock | 18 ++++++++++++------ 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/composer.json b/composer.json index dbce35377..6db024004 100644 --- a/composer.json +++ b/composer.json @@ -16,7 +16,7 @@ "friendsofphp/php-cs-fixer": "*", "phpunit/phpunit": "9.1.1", "php-coveralls/php-coveralls": "2.2.0", - "squizlabs/php_codesniffer": "3.5.4", + "squizlabs/php_codesniffer": "3.5.5", "ext-json": "*" }, "autoload": { diff --git a/composer.lock b/composer.lock index 36665bca0..4d273e2ac 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": "f830561e0e9d837909693167448ba4d6", + "content-hash": "bee5449f9ef8e3383a40c7da2ae8c70a", "packages": [ { "name": "monolog/monolog", @@ -2183,6 +2183,12 @@ "environment", "hhvm" ], + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], "time": "2020-04-14T13:36:52+00:00" }, { @@ -2587,16 +2593,16 @@ }, { "name": "squizlabs/php_codesniffer", - "version": "3.5.4", + "version": "3.5.5", "source": { "type": "git", "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "dceec07328401de6211037abbb18bda423677e26" + "reference": "73e2e7f57d958e7228fce50dc0c61f58f017f9f6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/dceec07328401de6211037abbb18bda423677e26", - "reference": "dceec07328401de6211037abbb18bda423677e26", + "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/73e2e7f57d958e7228fce50dc0c61f58f017f9f6", + "reference": "73e2e7f57d958e7228fce50dc0c61f58f017f9f6", "shasum": "" }, "require": { @@ -2634,7 +2640,7 @@ "phpcs", "standards" ], - "time": "2020-01-30T22:20:29+00:00" + "time": "2020-04-17T01:09:41+00:00" }, { "name": "symfony/config", From 7e0b0195b2b3e1882348a8d357b6f5113a6901d4 Mon Sep 17 00:00:00 2001 From: WhiteSource Renovate Date: Tue, 19 May 2020 14:40:56 +0200 Subject: [PATCH 19/27] Update dependency phpunit/phpunit to v9.1.4 (#191) --- composer.json | 2 +- composer.lock | 19 ++++++++++--------- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/composer.json b/composer.json index 6db024004..ccbad1485 100644 --- a/composer.json +++ b/composer.json @@ -14,7 +14,7 @@ "require-dev": { "dms/phpunit-arraysubset-asserts": "0.2.0", "friendsofphp/php-cs-fixer": "*", - "phpunit/phpunit": "9.1.1", + "phpunit/phpunit": "9.1.4", "php-coveralls/php-coveralls": "2.2.0", "squizlabs/php_codesniffer": "3.5.5", "ext-json": "*" diff --git a/composer.lock b/composer.lock index 4d273e2ac..aa9a6e13a 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": "bee5449f9ef8e3383a40c7da2ae8c70a", + "content-hash": "85031998711320b31a3ae00a8d7ff9cd", "packages": [ { "name": "monolog/monolog", @@ -1629,16 +1629,16 @@ }, { "name": "phpunit/phpunit", - "version": "9.1.1", + "version": "9.1.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "848f6521c906500e66229668768576d35de0227e" + "reference": "2d7080c622cf7884992e7c3cf87853877bae8ff4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/848f6521c906500e66229668768576d35de0227e", - "reference": "848f6521c906500e66229668768576d35de0227e", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/2d7080c622cf7884992e7c3cf87853877bae8ff4", + "reference": "2d7080c622cf7884992e7c3cf87853877bae8ff4", "shasum": "" }, "require": { @@ -1658,8 +1658,8 @@ "phpunit/php-file-iterator": "^3.0", "phpunit/php-invoker": "^3.0", "phpunit/php-text-template": "^2.0", - "phpunit/php-timer": "^3.0", - "sebastian/code-unit": "^1.0", + "phpunit/php-timer": "^3.1.4", + "sebastian/code-unit": "^1.0.2", "sebastian/comparator": "^4.0", "sebastian/diff": "^4.0", "sebastian/environment": "^5.0.1", @@ -1671,7 +1671,8 @@ "sebastian/version": "^3.0" }, "require-dev": { - "ext-pdo": "*" + "ext-pdo": "*", + "phpspec/prophecy-phpunit": "^2.0" }, "suggest": { "ext-soap": "*", @@ -1722,7 +1723,7 @@ "type": "github" } ], - "time": "2020-04-03T14:40:04+00:00" + "time": "2020-04-30T06:32:53+00:00" }, { "name": "psr/container", From 5eefb785a8cea5d93a898b447606337e46c53eec Mon Sep 17 00:00:00 2001 From: acampos1916 Date: Wed, 20 May 2020 12:18:50 +0200 Subject: [PATCH 20/27] Version bump to 6.2.0 --- src/Adyen/Client.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Adyen/Client.php b/src/Adyen/Client.php index cc9afab25..7b456d07a 100644 --- a/src/Adyen/Client.php +++ b/src/Adyen/Client.php @@ -10,7 +10,7 @@ class Client { - const LIB_VERSION = "6.1.0"; + const LIB_VERSION = "6.2.0"; const LIB_NAME = "adyen-php-api-library"; const USER_AGENT_SUFFIX = "adyen-php-api-library/"; const ENDPOINT_TEST = "https://pal-test.adyen.com"; From 491f74f3cf0614db277ee86bd0c529bba8bb774e Mon Sep 17 00:00:00 2001 From: acampos1916 Date: Wed, 20 May 2020 12:29:11 +0200 Subject: [PATCH 21/27] Update README.md --- README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index fd4863aa0..f192f7d66 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,8 @@ The Library supports all APIs under the following services: * Terminal API (Cloud based) ## Requirements -PHP 5.3 or higher +PHP >=5.3 for production +PHP >=7.3 for development ## Installation ## You can use Composer or simply Download the Release @@ -36,7 +37,7 @@ composer require adyen/php-api-library ``` ## Usage -To make the automatice testing cases working for your account change the credentials in the config/test.ini file. +To make the automatic testing cases work for your account change the credentials in the config/test.ini file. ### Examples ### From a18c530a6f2828630cfb102924cccf12460bc20f Mon Sep 17 00:00:00 2001 From: Marcos Garcia Date: Wed, 20 May 2020 12:49:32 +0200 Subject: [PATCH 22/27] Add Code Coverage metrics to SonarCloud (#195) PHPUnit generates the Clover coverage files with absolute file paths, and I couldn't find a way to change that. So, instead, I set up a step in the Continuous Integration workflow to clean up the report files after it runs. --- .github/workflows/main.yml | 7 ++++++- sonar-project.properties | 1 + 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 791fc214b..c2f8d72eb 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -20,7 +20,12 @@ jobs: run: composer install --prefer-dist --no-progress - name: Run test suite - run: vendor/bin/phpunit --testsuite=unit --coverage-clover build/clover.xml + run: vendor/bin/phpunit --testsuite=unit --coverage-clover build/clover.xml --log-junit build/tests-log.xml + + # PHPUnit generates absolute file paths and SonarCloud expects relative file paths. This command removes the + # current working directory from the report files. + - name: Clean up reports + run: sed -i "s;`pwd`/;;g" build/*.xml - name: Run PHP Code Sniffer run: vendor/bin/phpcs diff --git a/sonar-project.properties b/sonar-project.properties index 656baa87c..881c18393 100644 --- a/sonar-project.properties +++ b/sonar-project.properties @@ -2,3 +2,4 @@ sonar.organization=adyen sonar.projectKey=Adyen_adyen-php-api-library sonar.sources=. sonar.php.coverage.reportPaths=build/clover.xml +sonar.php.tests.reportPath=build/tests-log.xml \ No newline at end of file From 54bfbfb7ed90e87e0b2b9ea23a6981288a9b315c Mon Sep 17 00:00:00 2001 From: Alexandros Moraitis Date: Fri, 22 May 2020 15:49:35 +0200 Subject: [PATCH 23/27] [PW-2385] Add check notification event code supports hmac. (#197) * Add a check method for hmac supported notification event codes * Add unit test for isHmacSupportedEventCode * Fix test * Fix eventcode array * Add error handling in testIsHmacSupportedEventCode * Fix code smell * EVENTCODE to EVENT_CODE --- src/Adyen/Util/HmacSignature.php | 58 ++++++++++++++++++++++++++- tests/Unit/Util/HmacSignatureTest.php | 22 ++++++++++ 2 files changed, 79 insertions(+), 1 deletion(-) diff --git a/src/Adyen/Util/HmacSignature.php b/src/Adyen/Util/HmacSignature.php index f0fe8b8cd..0e9a2ed70 100644 --- a/src/Adyen/Util/HmacSignature.php +++ b/src/Adyen/Util/HmacSignature.php @@ -27,6 +27,7 @@ class HmacSignature { + const EVENT_CODE = "eventCode"; /** * @param string $hmacKey Can be found in Customer Area * @param array $params The response from Adyen @@ -69,7 +70,7 @@ private function getNotificationDataToSign($params) // `empty` treats too many value types as empty. `isset` should prevent some of these cases. $value = (isset($params['amount']['value'])) ? $params['amount']['value'] : ""; $currency = (!empty($params['amount']['currency'])) ? $params['amount']['currency'] : ""; - $eventCode = (!empty($params['eventCode'])) ? $params['eventCode'] : ""; + $eventCode = (!empty($params[self::EVENT_CODE])) ? $params[self::EVENT_CODE] : ""; $success = (!empty($params['success'])) ? $params['success'] : ""; $dataToSign = array( @@ -103,4 +104,59 @@ public function isValidNotificationHMAC($hmacKey, $params) return $expectedSign == $merchantSign; } + /** + * Returns true when the event code support HMAC validation + * + * @param $response + */ + public function isHmacSupportedEventCode($response) + { + $eventCodes = array( + "ADVICE_OF_DEBIT", + "AUTHORISATION", + "AUTHORISATION_PENDING", + "AUTHORISE_REFERRAL", + "CANCELLATION", + "CANCEL_OR_REFUND", + "CAPTURE", + "CAPTURE_FAILED", + "CAPTURE_WITH_EXTERNAL_AUTH", + "CHARGEBACK", + "CHARGEBACK_REVERSED", + "DEACTIVATE_RECURRING", + "FRAUD_ONLY", + "FUND_TRANSFER", + "HANDLED_EXTERNALLY", + "MANUAL_REVIEW_ACCEPT", + "NOTIFICATION_OF_CHARGEBACK", + "NOTIFICATION_OF_FRAUD", + "OFFER_CLOSED", + "ORDER_OPENED", + "PAIDOUT_REVERSED", + "PAYOUT_DECLINE", + "PAYOUT_EXPIRE", + "PAYOUT_THIRDPARTY", + "PREARBITRATION_LOST", + "PREARBITRATION_WON", + "PROCESS_RETRY", + "RECURRING_CONTRACT", + "REFUND", + "REFUNDED_REVERSED", + "REFUND_FAILED", + "REFUND_WITH_DATA", + "REQUEST_FOR_INFORMATION", + "SECOND_CHARGEBACK", + "SUBMIT_RECURRING", + "VOID_PENDING_REFUND", + "POSTPONED_REFUND", + "TECHNICAL_CANCEL", + "AUTHORISATION_ADJUSTMENT", + "CANCEL_AUTORESCUE", + "AUTORESCUE" + ); + if (array_key_exists(self::EVENT_CODE, $response) && in_array($response[self::EVENT_CODE], $eventCodes)) { + return true; + } + return false; + } } diff --git a/tests/Unit/Util/HmacSignatureTest.php b/tests/Unit/Util/HmacSignatureTest.php index 4a6baa4ea..a2e41abe7 100644 --- a/tests/Unit/Util/HmacSignatureTest.php +++ b/tests/Unit/Util/HmacSignatureTest.php @@ -127,4 +127,26 @@ public function testHmacSignatureEscaping() $this->fail('Unexpected exception'); } } + + public function testIsHmacSupportedEventCode() + { + $params = json_decode('{ + "pspReference": "7914073381342284", + "merchantAccountCode": "TestMerchant", + "merchantReference": "TestPayment-1407325143704", + "amount": { + "value": 0, + "currency": "EUR" + }, + "eventCode": "AUTHORISATION", + "success": "true" + }', true); + $hmac = new HmacSignature(); + try { + $hmacSupportedEventCode = $hmac->isHmacSupportedEventCode($params); + $this->assertTrue($hmacSupportedEventCode); + } catch (AdyenException $e) { + $this->fail('Unexpected exception'); + } + } } From d23ceb5203f74cd080e2a288fa56797c22ac6254 Mon Sep 17 00:00:00 2001 From: Marcos Garcia Date: Mon, 25 May 2020 09:00:45 +0200 Subject: [PATCH 24/27] [PW-2409] Add integration tests to continuous integration (#198) This runs the integration tests as GitHub Actions on every push and every pull request. --- .github/workflows/main.yml | 16 +++++- phpunit.xml | 3 ++ tests/{ => Integration}/BinLookupTest.php | 5 +- tests/{ => Integration}/CheckoutTest.php | 4 +- .../CreatePaymentRequestTest.php | 26 +++++++++- .../{ => Integration}/DirectoryLookupTest.php | 4 +- tests/{ => Integration}/ExceptionTest.php | 27 +++++++++- tests/{ => Integration}/ModificationTest.php | 35 +++++++++++-- .../PayoutThirdPartyTest.php | 19 +++++-- tests/{ => Integration}/PosPaymentTest.php | 30 +++++++++-- tests/{ => Integration}/RecurringTest.php | 27 +++++++++- tests/TestCase.php | 52 ++++++++++++++++++- tests/config/{test.ini => test.ini.sample} | 3 +- 13 files changed, 227 insertions(+), 24 deletions(-) rename tests/{ => Integration}/BinLookupTest.php (96%) rename tests/{ => Integration}/CheckoutTest.php (98%) rename tests/{ => Integration}/CreatePaymentRequestTest.php (86%) rename tests/{ => Integration}/DirectoryLookupTest.php (98%) rename tests/{ => Integration}/ExceptionTest.php (73%) rename tests/{ => Integration}/ModificationTest.php (72%) rename tests/{ => Integration}/PayoutThirdPartyTest.php (96%) rename tests/{ => Integration}/PosPaymentTest.php (94%) rename tests/{ => Integration}/RecurringTest.php (57%) rename tests/config/{test.ini => test.ini.sample} (81%) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index c2f8d72eb..a4b36576d 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -19,7 +19,21 @@ jobs: - name: Install dependencies run: composer install --prefer-dist --no-progress - - name: Run test suite + - name: Run integration tests + run: vendor/bin/phpunit --testsuite=integration --no-coverage + env: + INTEGRATION_USERNAME: ${{ secrets.INTEGRATION_USERNAME }} + INTEGRATION_PASSWORD: ${{ secrets.INTEGRATION_PASSWORD }} + INTEGRATION_X_API_KEY: ${{ secrets.INTEGRATION_X_API_KEY }} + INTEGRATION_MERCHANT_ACCOUNT: ${{ secrets.INTEGRATION_MERCHANT_ACCOUNT }} + INTEGRATION_SKIN_CODE: ${{ secrets.INTEGRATION_SKIN_CODE }} + INTEGRATION_HMAC_SIGNATURE: ${{ secrets.INTEGRATION_HMAC_SIGNATURE }} + INTEGRATION_STORE_PAYOUT_USERNAME: ${{ secrets.INTEGRATION_STORE_PAYOUT_USERNAME }} + INTEGRATION_STORE_PAYOUT_PASSWORD: ${{ secrets.INTEGRATION_STORE_PAYOUT_PASSWORD }} + INTEGRATION_REVIEW_PAYOUT_USERNAME: ${{ secrets.INTEGRATION_REVIEW_PAYOUT_USERNAME }} + INTEGRATION_REVIEW_PAYOUT_PASSWORD: ${{ secrets.INTEGRATION_REVIEW_PAYOUT_PASSWORD }} + + - name: Run unit tests run: vendor/bin/phpunit --testsuite=unit --coverage-clover build/clover.xml --log-junit build/tests-log.xml # PHPUnit generates absolute file paths and SonarCloud expects relative file paths. This command removes the diff --git a/phpunit.xml b/phpunit.xml index d791e48d2..f54081198 100644 --- a/phpunit.xml +++ b/phpunit.xml @@ -30,6 +30,9 @@ ./tests/Unit + + ./tests/Integration + ./tests diff --git a/tests/BinLookupTest.php b/tests/Integration/BinLookupTest.php similarity index 96% rename from tests/BinLookupTest.php rename to tests/Integration/BinLookupTest.php index b62993aec..11e6ebd66 100644 --- a/tests/BinLookupTest.php +++ b/tests/Integration/BinLookupTest.php @@ -21,9 +21,10 @@ * */ -namespace Adyen; +namespace Adyen\Integration; -use Adyen\Util\Util; +use Adyen\TestCase; +use Adyen\Service; class BinLookupTest extends TestCase { diff --git a/tests/CheckoutTest.php b/tests/Integration/CheckoutTest.php similarity index 98% rename from tests/CheckoutTest.php rename to tests/Integration/CheckoutTest.php index 5b4dbe175..4713979c3 100644 --- a/tests/CheckoutTest.php +++ b/tests/Integration/CheckoutTest.php @@ -21,8 +21,10 @@ * */ -namespace Adyen; +namespace Adyen\Integration; +use Adyen\TestCase; +use Adyen\Service; use Adyen\Util\Uuid; class CheckoutTest extends TestCase diff --git a/tests/CreatePaymentRequestTest.php b/tests/Integration/CreatePaymentRequestTest.php similarity index 86% rename from tests/CreatePaymentRequestTest.php rename to tests/Integration/CreatePaymentRequestTest.php index 8b662ca41..dfc86fc7e 100644 --- a/tests/CreatePaymentRequestTest.php +++ b/tests/Integration/CreatePaymentRequestTest.php @@ -1,6 +1,30 @@ testCreatePaymentSuccess(); @@ -33,7 +58,7 @@ public function testCancelModification() public function testRefundModification() { // create a payment - require_once __DIR__.'/CreatePaymentRequestTest.php'; + require_once __DIR__ . '/CreatePaymentRequestTest.php'; $test = new CreatePaymentRequestTest(); $result = $test->testCreatePaymentSuccess(); @@ -63,7 +88,7 @@ public function testRefundModification() public function testAdjustDecreaseModification() { // create a payment - require_once __DIR__.'/CreatePaymentRequestTest.php'; + require_once __DIR__ . '/CreatePaymentRequestTest.php'; $test = new CreatePaymentRequestTest(); $result = $test->testCreatePaymentSuccess(); @@ -90,7 +115,7 @@ public function testAdjustDecreaseModification() public function testAdjustIncreaseModification() { // create a payment - require_once __DIR__.'/CreatePaymentRequestTest.php'; + require_once __DIR__ . '/CreatePaymentRequestTest.php'; $test = new CreatePaymentRequestTest(); $result = $test->testCreatePaymentSuccess(); diff --git a/tests/PayoutThirdPartyTest.php b/tests/Integration/PayoutThirdPartyTest.php similarity index 96% rename from tests/PayoutThirdPartyTest.php rename to tests/Integration/PayoutThirdPartyTest.php index 4e5664da6..9f3f16294 100644 --- a/tests/PayoutThirdPartyTest.php +++ b/tests/Integration/PayoutThirdPartyTest.php @@ -21,10 +21,23 @@ * */ -namespace Adyen; +namespace Adyen\Integration; +use Adyen\TestCase; +use Adyen\Service; + +/** + * Class PayoutThirdPartyTest + * + * @package Adyen\Integration + */ class PayoutThirdPartyTest extends TestCase { + protected function setUp(): void + { + $this->markTestIncomplete('Configure Payout accounts'); + } + public function testStoreDetailAndSubmitPayoutThirdPartyMissingReference() { // initialize client @@ -326,7 +339,7 @@ public function testConfirmPayoutThirdPartyInvalidReference() // check if exception is correct $this->assertEquals('Adyen\AdyenException', get_class($e)); $this->assertEquals( - 'Invalid Request: Original pspReference is invalid for this environment!', + 'Original pspReference required for this operation', $e->getMessage() ); } @@ -367,7 +380,7 @@ public function testDeclinePayoutThirdPartySuccess() public function testDeclinePayoutThirdPartyInvalidReference() { $this->expectException('Adyen\AdyenException'); - $this->expectExceptionMessage('Invalid Request: Original pspReference is invalid for this environment!'); + $this->expectExceptionMessage('Original pspReference required for this operation'); // initialize client $client = $this->createReviewPayoutClient(); diff --git a/tests/PosPaymentTest.php b/tests/Integration/PosPaymentTest.php similarity index 94% rename from tests/PosPaymentTest.php rename to tests/Integration/PosPaymentTest.php index 6634cf726..7aeafce67 100644 --- a/tests/PosPaymentTest.php +++ b/tests/Integration/PosPaymentTest.php @@ -1,8 +1,30 @@ settings = $this->loadConfigIni(); + $this->settings = $this->loadConfig(); $this->merchantAccount = $this->getMerchantAccount(); $this->skinCode = $this->getSkinCode(); $this->hmacSignature = $this->getHmacSignature(); @@ -252,6 +273,25 @@ protected function getPOIID() return $settings['POIID']; } + protected function loadConfig() + { + if (file_exists($this->getTestFilePath())) { + return $this->loadConfigIni(); + } + return array( + 'username' => getenv('INTEGRATION_USERNAME'), + 'password' => getenv('INTEGRATION_PASSWORD'), + 'x-api-key' => getenv('INTEGRATION_X_API_KEY'), + 'merchantAccount' => getenv('INTEGRATION_MERCHANT_ACCOUNT'), + 'skinCode' => getenv('INTEGRATION_SKIN_CODE'), + 'hmacSignature' => getenv('INTEGRATION_HMAC_SIGNATURE'), + 'storePayoutUsername' => getenv('INTEGRATION_STORE_PAYOUT_USERNAME'), + 'storePayoutPassword' => getenv('INTEGRATION_STORE_PAYOUT_PASSWORD'), + 'reviewPayoutUsername' => getenv('INTEGRATION_REVIEW_PAYOUT_USERNAME'), + 'reviewPayoutPassword' => getenv('INTEGRATION_REVIEW_PAYOUT_PASSWORD'), + ); + } + /** * Loads the settings into and array from the config/test.ini file * @@ -259,7 +299,7 @@ protected function getPOIID() */ protected function loadConfigIni() { - return parse_ini_file(__DIR__ . DIRECTORY_SEPARATOR . 'config' . DIRECTORY_SEPARATOR . 'test.ini', true); + return parse_ini_file($this->getTestFilePath(), true); } @@ -313,4 +353,12 @@ protected function getMethod($class, $name) $method->setAccessible(true); return $method; } + + /** + * @return string + */ + protected function getTestFilePath() + { + return __DIR__ . DIRECTORY_SEPARATOR . 'config' . DIRECTORY_SEPARATOR . 'test.ini'; + } } diff --git a/tests/config/test.ini b/tests/config/test.ini.sample similarity index 81% rename from tests/config/test.ini rename to tests/config/test.ini.sample index b79a75dbe..f1946c6d9 100644 --- a/tests/config/test.ini +++ b/tests/config/test.ini.sample @@ -5,9 +5,8 @@ merchantAccount = YOUR MERCHANT ACCOUNT skinCode = YOUR SKIN CODE hmacSignature = YOUR HMAC SIGNATURE x-api-key = YOUR X-API KEY -POIID = UNIQUETERMINALID storePayoutUsername = YOUR STORE PAYOUT USERNAME storePayoutPassword = "YOUR STORE PAYOUT PASSWORD" reviewPayoutUsername = YOUR REVIEW PAYOUT USERNAME -reviewPayoutPassword = "YOUR REVIEW PAYOUT PASSWORD" \ No newline at end of file +reviewPayoutPassword = "YOUR REVIEW PAYOUT PASSWORD" From 0c2499cca6d57da59ab075d84cb8d552332dc2e8 Mon Sep 17 00:00:00 2001 From: Attila Kiss <42297201+cyattilakiss@users.noreply.github.com> Date: Tue, 9 Jun 2020 14:32:26 +0200 Subject: [PATCH 25/27] Update CODEOWNERS --- .github/CODEOWNERS | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 23ae528e2..cb62deaed 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1 +1,5 @@ -* @msilvagarcia @cyattilakiss @Aleffio @AlexandrosMor @rikterbeek @acampos1916 +# Developers +* @msilvagarcia @cyattilakiss @AlexandrosMor @acampos1916 + +# Reviewers +* @Aleffio @rikterbeek From 4d5ff0dcc8aa5aecf5bd00125ed71c4507ec95dc Mon Sep 17 00:00:00 2001 From: Attila Kiss <42297201+cyattilakiss@users.noreply.github.com> Date: Wed, 10 Jun 2020 10:54:39 +0200 Subject: [PATCH 26/27] Update CODEOWNERS --- .github/CODEOWNERS | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index cb62deaed..0e620eca4 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1,5 +1 @@ -# Developers -* @msilvagarcia @cyattilakiss @AlexandrosMor @acampos1916 - -# Reviewers -* @Aleffio @rikterbeek +* @msilvagarcia @cyattilakiss @AlexandrosMor @acampos1916 @Aleffio @rikterbeek From 462aa2a693468ab0acb056f72e74ec1b1e9831b9 Mon Sep 17 00:00:00 2001 From: attilak Date: Fri, 26 Jun 2020 11:00:22 +0200 Subject: [PATCH 27/27] Version bump 6.3.0 --- src/Adyen/Client.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Adyen/Client.php b/src/Adyen/Client.php index 7b456d07a..1169e8ad3 100644 --- a/src/Adyen/Client.php +++ b/src/Adyen/Client.php @@ -10,7 +10,7 @@ class Client { - const LIB_VERSION = "6.2.0"; + const LIB_VERSION = "6.3.0"; const LIB_NAME = "adyen-php-api-library"; const USER_AGENT_SUFFIX = "adyen-php-api-library/"; const ENDPOINT_TEST = "https://pal-test.adyen.com";