diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 000000000..4dddcaa4e --- /dev/null +++ b/.editorconfig @@ -0,0 +1,17 @@ +# http://editorconfig.org + +root = true + +[*] +indent_style = space +indent_size = 2 +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true + +[*.md] +trim_trailing_whitespace = false + +[*.php] +indent_size = 4 \ No newline at end of file diff --git a/.github/workflows/cd.yaml b/.github/workflows/cd.yaml new file mode 100644 index 000000000..5575cc46c --- /dev/null +++ b/.github/workflows/cd.yaml @@ -0,0 +1,24 @@ +name: CD + +on: + push: + branches: + - main + +jobs: + release-please: + name: Release + runs-on: ubuntu-latest + permissions: + contents: write + pull-requests: write + outputs: + tag_name: ${{ steps.release.outputs.tag_name }} + release_created: ${{ steps.release.outputs.release_created }} + sha: ${{ steps.release.outputs.sha }} + steps: + - uses: google-github-actions/release-please-action@v3 + id: release + with: + release-type: php + package-name: olcs-selfserve diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml new file mode 100644 index 000000000..c31ef5836 --- /dev/null +++ b/.github/workflows/ci.yaml @@ -0,0 +1,23 @@ +name: CI + +on: + pull_request: + schedule: + - cron: '0 0 * * 1' + +jobs: + security: + uses: dvsa/.github/.github/workflows/php-security.yml@main + secrets: + SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }} + + static-analysis: + uses: dvsa/.github/.github/workflows/php-static.yml@main + with: + php-version: '7.4' + + tests: + uses: dvsa/.github/.github/workflows/php-tests.yml@main + with: + php-versions: "[\"7.4\"]" + fail-fast: false diff --git a/.gitignore b/.gitignore index be0c4fd40..4442103b3 100644 --- a/.gitignore +++ b/.gitignore @@ -6,7 +6,7 @@ nbproject .idea .project .settings -vendor/ +vendor test/coverage-report config/autoload/*.php .sublime-project @@ -17,3 +17,12 @@ node_modules .vscode/ test/coverage/ .scannerwork/ +/vendor-bin/*/composer.lock +.phpunit.result.cache + +# Non-dist files for the static analysis. +# This allows developers to set a different (more strict) static analysis locally. +phpcs.xml +phpstan.neon +phpunit.xml +psalm.xml diff --git a/composer.json b/composer.json index db105bdab..051cc0237 100644 --- a/composer.json +++ b/composer.json @@ -1,40 +1,36 @@ { "name": "olcs/olcs-selfserve", "description": "OLCS Self Service Web Site", - "repositories": [ - { - "packagist": false - }, - { - "type": "composer", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy", - "only": [ - "olcs/olcs-logging", - "olcs/olcs-utils", - "olcs/olcs-transfer", - "olcs/olcs-auth", - "olcs/olcs-common" - ] - }, - { - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/OLCS", - "type": "composer" - }, - { - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy", - "type": "composer" - } - ], "require": { - "php": ">=7.4", - "dvsa/laminas-config-cloud-parameters": "^0.1.0", - "olcs/olcs-frontend-deps": "~4.206.0", - "olcs/olcs-laminas": "~2.5.0" + "php": "^7.4", + "container-interop/container-interop": "^1.2", + "doctrine/annotations": "^1.14.2", + "doctrine/doctrine-module": "^1", + "dvsa/laminas-config-cloud-parameters": "^0.2.0", + "laminas/laminas-authentication": "^2.6", + "laminas/laminas-eventmanager": "^2.6", + "laminas/laminas-form": "^2.13", + "laminas/laminas-http": "^2.8", + "laminas/laminas-i18n": "^2.14", + "laminas/laminas-mvc": "^2.7", + "laminas/laminas-serializer": "^2.10", + "laminas/laminas-servicemanager": "^2.7", + "laminas/laminas-session": "^2.8", + "laminas/laminas-stdlib": "^2.7", + "laminas/laminas-view": "^2.11", + "lm-commons/lmc-rbac-mvc": "^2.6", + "olcs/olcs-auth": "^5.0.0", + "olcs/olcs-common": "^5.0.0", + "olcs/olcs-logging": "^5.0.0", + "olcs/olcs-transfer": "^5.0.0", + "olcs/olcs-utils": "^5.0.0" }, "require-dev": { + "bamarni/composer-bin-plugin": "^1.8", + "johnkary/phpunit-speedtrap": "^4.0", "laminas/laminas-developer-tools": "*", - "olcs/olcs-devtools": "~4.206.0", - "phpstan/phpstan": "^0.12.100", + "mockery/mockery": "^1.6", + "phpunit/phpunit": "^9.6", "san/san-session-toolbar": "*" }, "autoload": { @@ -47,38 +43,41 @@ "Common\\": "vendor/olcs/olcs-common/Common/src/Common" } }, + "autoload-dev": { + "psr-4": { + "OlcsTest\\": "test/Olcs/src", + "PermitsTest\\": "test/Permits/src" + } + }, "minimum-stability": "dev", "prefer-stable": true, "config": { - "preferred-install": "dist", - "secure-http": false, - "platform": { - "php": "7.4.33" - }, "sort-packages": true, "allow-plugins": { - "laminas/laminas-component-installer": true, - "laminas/laminas-dependency-plugin": true, - "elendev/composer-push": true, - "phpstan/extension-installer": true + "bamarni/composer-bin-plugin": true, + "laminas/laminas-dependency-plugin": true } }, - "scripts": { - "ut": "vendor/bin/phpunit -c test/phpunit.xml --stop-on-failure", - "review": "vendor/bin/review", - "cs": "vendor/bin/phpcs --severity=1 --standard=vendor/dvsa/coding-standards/src/Profiles/DVSA/CS/ruleset.xml", - "coverage": "vendor/bin/phpunit -c test/phpunit.xml --coverage-html ./test/coverage/html", - "sonar": "vendor/bin/phpunit -c test/phpunit.xml --coverage-clover ./test/coverage/coverage-report.clover --log-junit ./test/coverage/log.junit", - "update-syms": "vendor/bin/composer-update-syms" - }, + "scripts": { + "bin": "echo 'bin not installed'", + "post-install-cmd": [ + "@composer bin all install" + ], + "test": "phpunit", + "phpcs": "phpcs", + "psalm": "psalm", + "phpstan": "phpstan", + "all": [ + "@test", + "@phpcs", + "@psalm", + "@phpstan" + ] + }, "extra": { - "nexus-push": { - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/olcs-selfserve", - "ignore": [ - "test/", - "config/autoload/local.php", - "node_modules/" - ] - } + "bamarni-bin": { + "bin-links": true, + "forward-command": true + } } } diff --git a/composer.lock b/composer.lock index 695b45ec2..444049080 100644 --- a/composer.lock +++ b/composer.lock @@ -4,14 +4,19 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "3cb79b91a181949f3067cf83a339cece", + "content-hash": "cb780a3f42a77a5ef183645c8186ac32", "packages": [ { "name": "brick/varexporter", "version": "0.3.8", + "source": { + "type": "git", + "url": "https://github.com/brick/varexporter.git", + "reference": "b5853edea6204ff8fa10633c3a4cccc4058410ed" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/brick/varexporter/0.3.8/brick-varexporter-0.3.8.zip", + "url": "https://api.github.com/repos/brick/varexporter/zipball/b5853edea6204ff8fa10633c3a4cccc4058410ed", "reference": "b5853edea6204ff8fa10633c3a4cccc4058410ed", "shasum": "" }, @@ -30,6 +35,7 @@ "Brick\\VarExporter\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -52,9 +58,14 @@ { "name": "container-interop/container-interop", "version": "1.2.0", + "source": { + "type": "git", + "url": "https://github.com/container-interop/container-interop.git", + "reference": "79cbf1341c22ec75643d841642dd5d6acd83bdb8" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/container-interop/container-interop/1.2.0/container-interop-container-interop-1.2.0.zip", + "url": "https://api.github.com/repos/container-interop/container-interop/zipball/79cbf1341c22ec75643d841642dd5d6acd83bdb8", "reference": "79cbf1341c22ec75643d841642dd5d6acd83bdb8", "shasum": "" }, @@ -67,6 +78,7 @@ "Interop\\Container\\": "src/Interop/Container/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -82,9 +94,14 @@ { "name": "doctrine/annotations", "version": "1.14.3", + "source": { + "type": "git", + "url": "https://github.com/doctrine/annotations.git", + "reference": "fb0d71a7393298a7b232cbf4c8b1f73f3ec3d5af" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/doctrine/annotations/1.14.3/doctrine-annotations-1.14.3.zip", + "url": "https://api.github.com/repos/doctrine/annotations/zipball/fb0d71a7393298a7b232cbf4c8b1f73f3ec3d5af", "reference": "fb0d71a7393298a7b232cbf4c8b1f73f3ec3d5af", "shasum": "" }, @@ -111,6 +128,7 @@ "Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -152,9 +170,14 @@ { "name": "doctrine/cache", "version": "1.13.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/cache.git", + "reference": "56cd022adb5514472cb144c087393c1821911d09" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/doctrine/cache/1.13.0/doctrine-cache-1.13.0.zip", + "url": "https://api.github.com/repos/doctrine/cache/zipball/56cd022adb5514472cb144c087393c1821911d09", "reference": "56cd022adb5514472cb144c087393c1821911d09", "shasum": "" }, @@ -184,6 +207,7 @@ "Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -245,9 +269,14 @@ { "name": "doctrine/collections", "version": "1.8.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/collections.git", + "reference": "2b44dd4cbca8b5744327de78bafef5945c7e7b5e" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/doctrine/collections/1.8.0/doctrine-collections-1.8.0.zip", + "url": "https://api.github.com/repos/doctrine/collections/zipball/2b44dd4cbca8b5744327de78bafef5945c7e7b5e", "reference": "2b44dd4cbca8b5744327de78bafef5945c7e7b5e", "shasum": "" }, @@ -267,6 +296,7 @@ "Doctrine\\Common\\Collections\\": "lib/Doctrine/Common/Collections" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -309,9 +339,14 @@ { "name": "doctrine/common", "version": "2.13.3", + "source": { + "type": "git", + "url": "https://github.com/doctrine/common.git", + "reference": "f3812c026e557892c34ef37f6ab808a6b567da7f" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/doctrine/common/2.13.3/doctrine-common-2.13.3.zip", + "url": "https://api.github.com/repos/doctrine/common/zipball/f3812c026e557892c34ef37f6ab808a6b567da7f", "reference": "f3812c026e557892c34ef37f6ab808a6b567da7f", "shasum": "" }, @@ -345,6 +380,7 @@ "Doctrine\\Common\\": "lib/Doctrine/Common" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -404,9 +440,14 @@ { "name": "doctrine/deprecations", "version": "1.1.2", + "source": { + "type": "git", + "url": "https://github.com/doctrine/deprecations.git", + "reference": "4f2d4f2836e7ec4e7a8625e75c6aa916004db931" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/doctrine/deprecations/1.1.2/doctrine-deprecations-1.1.2.zip", + "url": "https://api.github.com/repos/doctrine/deprecations/zipball/4f2d4f2836e7ec4e7a8625e75c6aa916004db931", "reference": "4f2d4f2836e7ec4e7a8625e75c6aa916004db931", "shasum": "" }, @@ -431,6 +472,7 @@ "Doctrine\\Deprecations\\": "lib/Doctrine/Deprecations" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -445,9 +487,14 @@ { "name": "doctrine/doctrine-module", "version": "1.2.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/DoctrineModule.git", + "reference": "9407d04d0b08e7071dab05c9d068cefda9dc5a6f" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/doctrine/doctrine-module/1.2.0/doctrine-doctrine-module-1.2.0.zip", + "url": "https://api.github.com/repos/doctrine/DoctrineModule/zipball/9407d04d0b08e7071dab05c9d068cefda9dc5a6f", "reference": "9407d04d0b08e7071dab05c9d068cefda9dc5a6f", "shasum": "" }, @@ -495,6 +542,7 @@ "DoctrineModule\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -549,9 +597,14 @@ { "name": "doctrine/event-manager", "version": "1.2.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/event-manager.git", + "reference": "95aa4cb529f1e96576f3fda9f5705ada4056a520" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/doctrine/event-manager/1.2.0/doctrine-event-manager-1.2.0.zip", + "url": "https://api.github.com/repos/doctrine/event-manager/zipball/95aa4cb529f1e96576f3fda9f5705ada4056a520", "reference": "95aa4cb529f1e96576f3fda9f5705ada4056a520", "shasum": "" }, @@ -574,6 +627,7 @@ "Doctrine\\Common\\": "src" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -635,9 +689,14 @@ { "name": "doctrine/inflector", "version": "1.4.4", + "source": { + "type": "git", + "url": "https://github.com/doctrine/inflector.git", + "reference": "4bd5c1cdfcd00e9e2d8c484f79150f67e5d355d9" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/doctrine/inflector/1.4.4/doctrine-inflector-1.4.4.zip", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/4bd5c1cdfcd00e9e2d8c484f79150f67e5d355d9", "reference": "4bd5c1cdfcd00e9e2d8c484f79150f67e5d355d9", "shasum": "" }, @@ -663,6 +722,7 @@ "Doctrine\\Common\\Inflector\\": "lib/Doctrine/Common/Inflector" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -725,9 +785,14 @@ { "name": "doctrine/lexer", "version": "1.2.3", + "source": { + "type": "git", + "url": "https://github.com/doctrine/lexer.git", + "reference": "c268e882d4dbdd85e36e4ad69e02dc284f89d229" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/doctrine/lexer/1.2.3/doctrine-lexer-1.2.3.zip", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/c268e882d4dbdd85e36e4ad69e02dc284f89d229", "reference": "c268e882d4dbdd85e36e4ad69e02dc284f89d229", "shasum": "" }, @@ -746,6 +811,7 @@ "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -795,9 +861,14 @@ { "name": "doctrine/persistence", "version": "1.3.8", + "source": { + "type": "git", + "url": "https://github.com/doctrine/persistence.git", + "reference": "7a6eac9fb6f61bba91328f15aa7547f4806ca288" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/doctrine/persistence/1.3.8/doctrine-persistence-1.3.8.zip", + "url": "https://api.github.com/repos/doctrine/persistence/zipball/7a6eac9fb6f61bba91328f15aa7547f4806ca288", "reference": "7a6eac9fb6f61bba91328f15aa7547f4806ca288", "shasum": "" }, @@ -830,6 +901,7 @@ "Doctrine\\Persistence\\": "lib/Doctrine/Persistence" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -891,9 +963,14 @@ { "name": "doctrine/reflection", "version": "1.2.4", + "source": { + "type": "git", + "url": "https://github.com/doctrine/reflection.git", + "reference": "6bcea3e81ab8b3d0abe5fde5300bbc8a968960c7" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/doctrine/reflection/1.2.4/doctrine-reflection-1.2.4.zip", + "url": "https://api.github.com/repos/doctrine/reflection/zipball/6bcea3e81ab8b3d0abe5fde5300bbc8a968960c7", "reference": "6bcea3e81ab8b3d0abe5fde5300bbc8a968960c7", "shasum": "" }, @@ -918,6 +995,7 @@ "Doctrine\\Common\\": "lib/Doctrine/Common" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -962,11 +1040,16 @@ }, { "name": "dvsa/laminas-config-cloud-parameters", - "version": "v0.1.1", + "version": "v0.2.0", + "source": { + "type": "git", + "url": "https://github.com/dvsa/dvsa-laminas-config-cloud-parameters.git", + "reference": "073c97dd6fb426e31bec5a592e3119c3ffcb668d" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/dvsa/laminas-config-cloud-parameters/v0.1.1/dvsa-laminas-config-cloud-parameters-v0.1.1.zip", - "reference": "1cec4e8cdf16bf61c848be45f758697977659c1e", + "url": "https://api.github.com/repos/dvsa/dvsa-laminas-config-cloud-parameters/zipball/073c97dd6fb426e31bec5a592e3119c3ffcb668d", + "reference": "073c97dd6fb426e31bec5a592e3119c3ffcb668d", "shasum": "" }, "require": { @@ -975,7 +1058,8 @@ "laminas/laminas-config-aggregator": "^1.7", "laminas/laminas-modulemanager": "^2.4|^3.0", "php": "^7.4 || ^8.0", - "symfony/dependency-injection": "^5.4" + "symfony/dependency-injection": "^5.4", + "symfony/property-access": "^5.4|^6.3" }, "require-dev": { "aws/aws-sdk-php": "^3.281", @@ -999,21 +1083,27 @@ "Dvsa\\LaminasConfigCloudParameters\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "support": { "issues": "https://github.com/dvsa/dvsa-laminas-config-cloud-parameters/issues", - "source": "https://github.com/dvsa/dvsa-laminas-config-cloud-parameters/tree/v0.1.1" + "source": "https://github.com/dvsa/dvsa-laminas-config-cloud-parameters/tree/v0.2.0" }, - "time": "2023-11-06T10:01:58+00:00" + "time": "2023-11-17T11:31:22+00:00" }, { "name": "ezyang/htmlpurifier", "version": "v4.17.0", + "source": { + "type": "git", + "url": "https://github.com/ezyang/htmlpurifier.git", + "reference": "bbc513d79acf6691fa9cf10f192c90dd2957f18c" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/ezyang/htmlpurifier/v4.17.0/ezyang-htmlpurifier-v4.17.0.zip", + "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/bbc513d79acf6691fa9cf10f192c90dd2957f18c", "reference": "bbc513d79acf6691fa9cf10f192c90dd2957f18c", "shasum": "" }, @@ -1042,6 +1132,7 @@ "/library/HTMLPurifier/Language/" ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ "LGPL-2.1-or-later" ], @@ -1063,69 +1154,17 @@ }, "time": "2023-11-17T15:01:25+00:00" }, - { - "name": "firebase/php-jwt", - "version": "v6.9.0", - "dist": { - "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/firebase/php-jwt/v6.9.0/firebase-php-jwt-v6.9.0.zip", - "reference": "f03270e63eaccf3019ef0f32849c497385774e11", - "shasum": "" - }, - "require": { - "php": "^7.4||^8.0" - }, - "require-dev": { - "guzzlehttp/guzzle": "^6.5||^7.4", - "phpspec/prophecy-phpunit": "^2.0", - "phpunit/phpunit": "^9.5", - "psr/cache": "^1.0||^2.0", - "psr/http-client": "^1.0", - "psr/http-factory": "^1.0" - }, - "suggest": { - "ext-sodium": "Support EdDSA (Ed25519) signatures", - "paragonie/sodium_compat": "Support EdDSA (Ed25519) signatures when libsodium is not present" - }, - "type": "library", - "autoload": { - "psr-4": { - "Firebase\\JWT\\": "src" - } - }, - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Neuman Vong", - "email": "neuman+pear@twilio.com", - "role": "Developer" - }, - { - "name": "Anant Narayanan", - "email": "anant@php.net", - "role": "Developer" - } - ], - "description": "A simple library to encode and decode JSON Web Tokens (JWT) in PHP. Should conform to the current spec.", - "homepage": "https://github.com/firebase/php-jwt", - "keywords": [ - "jwt", - "php" - ], - "support": { - "issues": "https://github.com/firebase/php-jwt/issues", - "source": "https://github.com/firebase/php-jwt/tree/v6.9.0" - }, - "time": "2023-10-05T00:24:42+00:00" - }, { "name": "laminas/laminas-authentication", "version": "2.6.0", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-authentication.git", + "reference": "0c87644aee1b2ea8b8d040f97f4345f6695d5906" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/laminas/laminas-authentication/2.6.0/laminas-laminas-authentication-2.6.0.zip", + "url": "https://api.github.com/repos/laminas/laminas-authentication/zipball/0c87644aee1b2ea8b8d040f97f4345f6695d5906", "reference": "0c87644aee1b2ea8b8d040f97f4345f6695d5906", "shasum": "" }, @@ -1169,6 +1208,7 @@ "Laminas\\Authentication\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], @@ -1191,9 +1231,14 @@ { "name": "laminas/laminas-cache", "version": "2.8.3", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-cache.git", + "reference": "8ee8877d9f7d27f73ec30d948ab3a8b1b7873514" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/laminas/laminas-cache/2.8.3/laminas-laminas-cache-2.8.3.zip", + "url": "https://api.github.com/repos/laminas/laminas-cache/zipball/8ee8877d9f7d27f73ec30d948ab3a8b1b7873514", "reference": "8ee8877d9f7d27f73ec30d948ab3a8b1b7873514", "shasum": "" }, @@ -1256,6 +1301,7 @@ "Laminas\\Cache\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], @@ -1280,9 +1326,14 @@ { "name": "laminas/laminas-code", "version": "3.4.1", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-code.git", + "reference": "1cb8f203389ab1482bf89c0e70a04849bacd7766" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/laminas/laminas-code/3.4.1/laminas-laminas-code-3.4.1.zip", + "url": "https://api.github.com/repos/laminas/laminas-code/zipball/1cb8f203389ab1482bf89c0e70a04849bacd7766", "reference": "1cb8f203389ab1482bf89c0e70a04849bacd7766", "shasum": "" }, @@ -1321,6 +1372,7 @@ "Laminas\\Code\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], @@ -1343,9 +1395,14 @@ { "name": "laminas/laminas-config", "version": "3.5.1", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-config.git", + "reference": "e4d714780b2d0b3ad748d715fff6ab0a5f37c6a5" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/laminas/laminas-config/3.5.1/laminas-laminas-config-3.5.1.zip", + "url": "https://api.github.com/repos/laminas/laminas-config/zipball/e4d714780b2d0b3ad748d715fff6ab0a5f37c6a5", "reference": "e4d714780b2d0b3ad748d715fff6ab0a5f37c6a5", "shasum": "" }, @@ -1381,6 +1438,7 @@ "Laminas\\Config\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], @@ -1409,9 +1467,14 @@ { "name": "laminas/laminas-config-aggregator", "version": "1.7.0", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-config-aggregator.git", + "reference": "8f1b66dd825dff95026844bdcf4ea0f5b604e907" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/laminas/laminas-config-aggregator/1.7.0/laminas-laminas-config-aggregator-1.7.0.zip", + "url": "https://api.github.com/repos/laminas/laminas-config-aggregator/zipball/8f1b66dd825dff95026844bdcf4ea0f5b604e907", "reference": "8f1b66dd825dff95026844bdcf4ea0f5b604e907", "shasum": "" }, @@ -1445,6 +1508,7 @@ "Laminas\\ConfigAggregator\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], @@ -1473,9 +1537,14 @@ { "name": "laminas/laminas-console", "version": "2.7.0", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-console.git", + "reference": "bf9a61dddf0d64ff18d2582c2529761932e8872f" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/laminas/laminas-console/2.7.0/laminas-laminas-console-2.7.0.zip", + "url": "https://api.github.com/repos/laminas/laminas-console/zipball/bf9a61dddf0d64ff18d2582c2529761932e8872f", "reference": "bf9a61dddf0d64ff18d2582c2529761932e8872f", "shasum": "" }, @@ -1510,6 +1579,7 @@ "Laminas\\Console\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], @@ -1533,9 +1603,14 @@ { "name": "laminas/laminas-crypt", "version": "3.4.0", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-crypt.git", + "reference": "a058eeb2fe57824b958ac56753faff790a649e18" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/laminas/laminas-crypt/3.4.0/laminas-laminas-crypt-3.4.0.zip", + "url": "https://api.github.com/repos/laminas/laminas-crypt/zipball/a058eeb2fe57824b958ac56753faff790a649e18", "reference": "a058eeb2fe57824b958ac56753faff790a649e18", "shasum": "" }, @@ -1563,6 +1638,7 @@ "Laminas\\Crypt\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], @@ -1588,59 +1664,17 @@ ], "time": "2021-02-11T19:40:03+00:00" }, - { - "name": "laminas/laminas-dependency-plugin", - "version": "2.2.0", - "dist": { - "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/laminas/laminas-dependency-plugin/2.2.0/laminas-laminas-dependency-plugin-2.2.0.zip", - "reference": "73cfb63ddca9d6bfedad5e0a038f6d55063975a3", - "shasum": "" - }, - "require": { - "composer-plugin-api": "^1.1 || ^2.0", - "php": "^7.3 || ~8.0.0 || ~8.1.0" - }, - "require-dev": { - "composer/composer": "^1.9 || ^2.0", - "laminas/laminas-coding-standard": "^2.2.1", - "mikey179/vfsstream": "^1.6.10@alpha", - "phpunit/phpunit": "^9.5.5", - "psalm/plugin-phpunit": "^0.15.1", - "roave/security-advisories": "dev-master", - "vimeo/psalm": "^4.5" - }, - "type": "composer-plugin", - "extra": { - "class": "Laminas\\DependencyPlugin\\DependencyRewriterPluginDelegator" - }, - "autoload": { - "psr-4": { - "Laminas\\DependencyPlugin\\": "src/" - } - }, - "license": [ - "BSD-3-Clause" - ], - "description": "Replace zendframework and zfcampus packages with their Laminas Project equivalents.", - "support": { - "issues": "https://github.com/laminas/laminas-dependency-plugin/issues", - "source": "https://github.com/laminas/laminas-dependency-plugin/tree/2.2.0" - }, - "funding": [ - { - "url": "https://funding.communitybridge.org/projects/laminas-project", - "type": "community_bridge" - } - ], - "time": "2021-09-08T17:51:35+00:00" - }, { "name": "laminas/laminas-diactoros", "version": "1.8.7p2", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-diactoros.git", + "reference": "6991c1af7c8d2c8efee81b22ba97024781824aaa" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/laminas/laminas-diactoros/1.8.7p2/laminas-laminas-diactoros-1.8.7p2.zip", + "url": "https://api.github.com/repos/laminas/laminas-diactoros/zipball/6991c1af7c8d2c8efee81b22ba97024781824aaa", "reference": "6991c1af7c8d2c8efee81b22ba97024781824aaa", "shasum": "" }, @@ -1691,6 +1725,7 @@ "Laminas\\Diactoros\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], @@ -1715,9 +1750,14 @@ { "name": "laminas/laminas-escaper", "version": "2.12.0", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-escaper.git", + "reference": "ee7a4c37bf3d0e8c03635d5bddb5bb3184ead490" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/laminas/laminas-escaper/2.12.0/laminas-laminas-escaper-2.12.0.zip", + "url": "https://api.github.com/repos/laminas/laminas-escaper/zipball/ee7a4c37bf3d0e8c03635d5bddb5bb3184ead490", "reference": "ee7a4c37bf3d0e8c03635d5bddb5bb3184ead490", "shasum": "" }, @@ -1743,6 +1783,7 @@ "Laminas\\Escaper\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], @@ -1771,9 +1812,14 @@ { "name": "laminas/laminas-eventmanager", "version": "2.6.4", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-eventmanager.git", + "reference": "c894f427e40b9599284bfebf76480934b78e665b" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/laminas/laminas-eventmanager/2.6.4/laminas-laminas-eventmanager-2.6.4.zip", + "url": "https://api.github.com/repos/laminas/laminas-eventmanager/zipball/c894f427e40b9599284bfebf76480934b78e665b", "reference": "c894f427e40b9599284bfebf76480934b78e665b", "shasum": "" }, @@ -1803,6 +1849,7 @@ "Laminas\\EventManager\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], @@ -1824,9 +1871,14 @@ { "name": "laminas/laminas-filter", "version": "2.9.4", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-filter.git", + "reference": "3c4476e772a062cef7531c6793377ae585d89c82" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/laminas/laminas-filter/2.9.4/laminas-laminas-filter-2.9.4.zip", + "url": "https://api.github.com/repos/laminas/laminas-filter/zipball/3c4476e772a062cef7531c6793377ae585d89c82", "reference": "3c4476e772a062cef7531c6793377ae585d89c82", "shasum": "" }, @@ -1873,6 +1925,7 @@ "Laminas\\Filter\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], @@ -1895,9 +1948,14 @@ { "name": "laminas/laminas-form", "version": "2.13.0", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-form.git", + "reference": "b9f267b9ebac27fa804306f05241cd49d5902261" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/laminas/laminas-form/2.13.0/laminas-laminas-form-2.13.0.zip", + "url": "https://api.github.com/repos/laminas/laminas-form/zipball/b9f267b9ebac27fa804306f05241cd49d5902261", "reference": "b9f267b9ebac27fa804306f05241cd49d5902261", "shasum": "" }, @@ -1957,6 +2015,7 @@ "Laminas\\Form\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], @@ -1979,9 +2038,14 @@ { "name": "laminas/laminas-http", "version": "2.8.4", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-http.git", + "reference": "c38959d605f225baf7f94e04c62f5f432d4ea5b2" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/laminas/laminas-http/2.8.4/laminas-laminas-http-2.8.4.zip", + "url": "https://api.github.com/repos/laminas/laminas-http/zipball/c38959d605f225baf7f94e04c62f5f432d4ea5b2", "reference": "c38959d605f225baf7f94e04c62f5f432d4ea5b2", "shasum": "" }, @@ -2016,6 +2080,7 @@ "Laminas\\Http\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], @@ -2039,9 +2104,14 @@ { "name": "laminas/laminas-hydrator", "version": "1.1.0", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-hydrator.git", + "reference": "1ae0a72885be9d74a6af5086c052191e7cbcae83" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/laminas/laminas-hydrator/1.1.0/laminas-laminas-hydrator-1.1.0.zip", + "url": "https://api.github.com/repos/laminas/laminas-hydrator/zipball/1ae0a72885be9d74a6af5086c052191e7cbcae83", "reference": "1ae0a72885be9d74a6af5086c052191e7cbcae83", "shasum": "" }, @@ -2082,6 +2152,7 @@ "Laminas\\Hydrator\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], @@ -2103,9 +2174,14 @@ { "name": "laminas/laminas-i18n", "version": "2.14.0", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-i18n.git", + "reference": "1fa15c41b683bedb2a846af54491868ddc73db38" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/laminas/laminas-i18n/2.14.0/laminas-laminas-i18n-2.14.0.zip", + "url": "https://api.github.com/repos/laminas/laminas-i18n/zipball/1fa15c41b683bedb2a846af54491868ddc73db38", "reference": "1fa15c41b683bedb2a846af54491868ddc73db38", "shasum": "" }, @@ -2156,6 +2232,7 @@ "Laminas\\I18n\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], @@ -2184,9 +2261,14 @@ { "name": "laminas/laminas-inputfilter", "version": "2.10.1", + "source": { + "type": "git", + "url": "git@github.com:laminas/laminas-inputfilter.git", + "reference": "b29ce8f512c966468eee37ea4873ae5fb545d00a" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/laminas/laminas-inputfilter/2.10.1/laminas-laminas-inputfilter-2.10.1.zip", + "url": "https://api.github.com/repos/laminas/laminas-inputfilter/zipball/b29ce8f512c966468eee37ea4873ae5fb545d00a", "reference": "b29ce8f512c966468eee37ea4873ae5fb545d00a", "shasum": "" }, @@ -2225,6 +2307,7 @@ "Laminas\\InputFilter\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], @@ -2246,46 +2329,40 @@ }, { "name": "laminas/laminas-json", - "version": "2.6.1", + "version": "3.3.0", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-json.git", + "reference": "9a0ce9f330b7d11e70c4acb44d67e8c4f03f437f" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/laminas/laminas-json/2.6.1/laminas-laminas-json-2.6.1.zip", - "reference": "db58425b7f0eba44a7539450cc926af80915951a", + "url": "https://api.github.com/repos/laminas/laminas-json/zipball/9a0ce9f330b7d11e70c4acb44d67e8c4f03f437f", + "reference": "9a0ce9f330b7d11e70c4acb44d67e8c4f03f437f", "shasum": "" }, "require": { - "laminas/laminas-zendframework-bridge": "^1.0", - "php": "^5.5 || ^7.0" + "php": "^7.3 || ~8.0.0 || ~8.1.0" }, - "replace": { - "zendframework/zend-json": "self.version" + "conflict": { + "zendframework/zend-json": "*" }, "require-dev": { - "fabpot/php-cs-fixer": "1.7.*", - "laminas/laminas-http": "^2.5.4", - "laminas/laminas-server": "^2.6.1", - "laminas/laminas-stdlib": "^2.5 || ^3.0", - "laminas/laminas-xml": "^1.0.2", - "phpunit/phpunit": "~4.0" + "laminas/laminas-coding-standard": "~2.2.1", + "laminas/laminas-stdlib": "^2.7.7 || ^3.1", + "phpunit/phpunit": "^9.3" }, "suggest": { - "laminas/laminas-http": "Laminas\\Http component, required to use Laminas\\Json\\Server", - "laminas/laminas-server": "Laminas\\Server component, required to use Laminas\\Json\\Server", - "laminas/laminas-stdlib": "Laminas\\Stdlib component, for use with caching Laminas\\Json\\Server responses", - "laminas/laminas-xml": "To support Laminas\\Json\\Json::fromXml() usage" + "laminas/laminas-json-server": "For implementing JSON-RPC servers", + "laminas/laminas-xml2json": "For converting XML documents to JSON" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.6-dev", - "dev-develop": "2.7-dev" - } - }, "autoload": { "psr-4": { "Laminas\\Json\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], @@ -2303,14 +2380,25 @@ "rss": "https://github.com/laminas/laminas-json/releases.atom", "source": "https://github.com/laminas/laminas-json" }, - "time": "2019-12-31T17:15:00+00:00" + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], + "time": "2021-09-02T18:02:31+00:00" }, { "name": "laminas/laminas-loader", "version": "2.8.0", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-loader.git", + "reference": "d0589ec9dd48365fd95ad10d1c906efd7711c16b" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/laminas/laminas-loader/2.8.0/laminas-laminas-loader-2.8.0.zip", + "url": "https://api.github.com/repos/laminas/laminas-loader/zipball/d0589ec9dd48365fd95ad10d1c906efd7711c16b", "reference": "d0589ec9dd48365fd95ad10d1c906efd7711c16b", "shasum": "" }, @@ -2330,6 +2418,7 @@ "Laminas\\Loader\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], @@ -2358,9 +2447,14 @@ { "name": "laminas/laminas-log", "version": "2.12.0", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-log.git", + "reference": "4e92d841b48868714a070b10866e94be80fc92ff" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/laminas/laminas-log/2.12.0/laminas-laminas-log-2.12.0.zip", + "url": "https://api.github.com/repos/laminas/laminas-log/zipball/4e92d841b48868714a070b10866e94be80fc92ff", "reference": "4e92d841b48868714a070b10866e94be80fc92ff", "shasum": "" }, @@ -2411,6 +2505,7 @@ "Laminas\\Log\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], @@ -2431,87 +2526,17 @@ }, "time": "2019-12-31T17:18:59+00:00" }, - { - "name": "laminas/laminas-mail", - "version": "2.14.3", - "dist": { - "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/laminas/laminas-mail/2.14.3/laminas-laminas-mail-2.14.3.zip", - "reference": "a496ab1c708b91809de211522057a6d6781bd0aa", - "shasum": "" - }, - "require": { - "ext-iconv": "*", - "laminas/laminas-loader": "^2.5", - "laminas/laminas-mime": "^2.5", - "laminas/laminas-stdlib": "^2.7 || ^3.0", - "laminas/laminas-validator": "^2.10.2", - "laminas/laminas-zendframework-bridge": "^1.0", - "php": "^7.3 || ~8.0.0", - "symfony/polyfill-mbstring": "^1.12.0", - "true/punycode": "^2.1" - }, - "replace": { - "zendframework/zend-mail": "^2.10.0" - }, - "require-dev": { - "laminas/laminas-coding-standard": "~1.0.0", - "laminas/laminas-config": "^3.4", - "laminas/laminas-crypt": "^2.6 || ^3.0", - "laminas/laminas-db": "^2.12", - "laminas/laminas-servicemanager": "^3.2.1", - "phpunit/phpunit": "^9.3", - "psalm/plugin-phpunit": "^0.15.1", - "symfony/process": "^5.3", - "vimeo/psalm": "^4.7" - }, - "suggest": { - "laminas/laminas-crypt": "Crammd5 support in SMTP Auth", - "laminas/laminas-servicemanager": "^2.7.10 || ^3.3.1 when using SMTP to deliver messages" - }, - "type": "library", - "extra": { - "laminas": { - "component": "Laminas\\Mail", - "config-provider": "Laminas\\Mail\\ConfigProvider" - } - }, - "autoload": { - "psr-4": { - "Laminas\\Mail\\": "src/" - } - }, - "license": [ - "BSD-3-Clause" - ], - "description": "Provides generalized functionality to compose and send both text and MIME-compliant multipart e-mail messages", - "homepage": "https://laminas.dev", - "keywords": [ - "laminas", - "mail" - ], - "support": { - "chat": "https://laminas.dev/chat", - "docs": "https://docs.laminas.dev/laminas-mail/", - "forum": "https://discourse.laminas.dev", - "issues": "https://github.com/laminas/laminas-mail/issues", - "rss": "https://github.com/laminas/laminas-mail/releases.atom", - "source": "https://github.com/laminas/laminas-mail" - }, - "funding": [ - { - "url": "https://funding.communitybridge.org/projects/laminas-project", - "type": "community_bridge" - } - ], - "time": "2021-09-23T07:17:22+00:00" - }, { "name": "laminas/laminas-math", "version": "3.5.0", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-math.git", + "reference": "146d8187ab247ae152e811a6704a953d43537381" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/laminas/laminas-math/3.5.0/laminas-laminas-math-3.5.0.zip", + "url": "https://api.github.com/repos/laminas/laminas-math/zipball/146d8187ab247ae152e811a6704a953d43537381", "reference": "146d8187ab247ae152e811a6704a953d43537381", "shasum": "" }, @@ -2542,6 +2567,7 @@ "Laminas\\Math\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], @@ -2567,67 +2593,17 @@ ], "time": "2021-12-06T02:02:07+00:00" }, - { - "name": "laminas/laminas-mime", - "version": "2.10.0", - "dist": { - "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/laminas/laminas-mime/2.10.0/laminas-laminas-mime-2.10.0.zip", - "reference": "62a899a7c9100889c2d2386b1357003a2cb52fa9", - "shasum": "" - }, - "require": { - "laminas/laminas-stdlib": "^2.7 || ^3.0", - "php": "^7.3 || ~8.0.0 || ~8.1.0" - }, - "conflict": { - "zendframework/zend-mime": "*" - }, - "require-dev": { - "laminas/laminas-coding-standard": "~2.2.1", - "laminas/laminas-mail": "^2.12", - "phpunit/phpunit": "^9.5" - }, - "suggest": { - "laminas/laminas-mail": "Laminas\\Mail component" - }, - "type": "library", - "autoload": { - "psr-4": { - "Laminas\\Mime\\": "src/" - } - }, - "license": [ - "BSD-3-Clause" - ], - "description": "Create and parse MIME messages and parts", - "homepage": "https://laminas.dev", - "keywords": [ - "laminas", - "mime" - ], - "support": { - "chat": "https://laminas.dev/chat", - "docs": "https://docs.laminas.dev/laminas-mime/", - "forum": "https://discourse.laminas.dev", - "issues": "https://github.com/laminas/laminas-mime/issues", - "rss": "https://github.com/laminas/laminas-mime/releases.atom", - "source": "https://github.com/laminas/laminas-mime" - }, - "funding": [ - { - "url": "https://funding.communitybridge.org/projects/laminas-project", - "type": "community_bridge" - } - ], - "time": "2022-08-30T09:38:41+00:00" - }, { "name": "laminas/laminas-modulemanager", "version": "2.9.0", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-modulemanager.git", + "reference": "789bbd4ab391da9221f265f6bb2d594f8f11855b" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/laminas/laminas-modulemanager/2.9.0/laminas-laminas-modulemanager-2.9.0.zip", + "url": "https://api.github.com/repos/laminas/laminas-modulemanager/zipball/789bbd4ab391da9221f265f6bb2d594f8f11855b", "reference": "789bbd4ab391da9221f265f6bb2d594f8f11855b", "shasum": "" }, @@ -2669,6 +2645,7 @@ "Laminas\\ModuleManager\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], @@ -2697,9 +2674,14 @@ { "name": "laminas/laminas-mvc", "version": "2.7.15", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-mvc.git", + "reference": "7e7198b03556a57fb5fd3ed919d9e1cf71500642" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/laminas/laminas-mvc/2.7.15/laminas-laminas-mvc-2.7.15.zip", + "url": "https://api.github.com/repos/laminas/laminas-mvc/zipball/7e7198b03556a57fb5fd3ed919d9e1cf71500642", "reference": "7e7198b03556a57fb5fd3ed919d9e1cf71500642", "shasum": "" }, @@ -2774,6 +2756,7 @@ "Laminas\\Mvc\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], @@ -2795,9 +2778,14 @@ { "name": "laminas/laminas-navigation", "version": "2.13.0", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-navigation.git", + "reference": "1d29047b49ea978756e6f10921ec3e96f5bc6147" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/laminas/laminas-navigation/2.13.0/laminas-laminas-navigation-2.13.0.zip", + "url": "https://api.github.com/repos/laminas/laminas-navigation/zipball/1d29047b49ea978756e6f10921ec3e96f5bc6147", "reference": "1d29047b49ea978756e6f10921ec3e96f5bc6147", "shasum": "" }, @@ -2843,6 +2831,7 @@ "Laminas\\Navigation\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], @@ -2869,138 +2858,78 @@ "time": "2021-12-06T01:40:32+00:00" }, { - "name": "laminas/laminas-paginator", - "version": "2.8.2", + "name": "laminas/laminas-psr7bridge", + "version": "0.2.2", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-psr7bridge.git", + "reference": "14780ef1d40effd59d77ab29c6d439b2af42cdfa" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/laminas/laminas-paginator/2.8.2/laminas-laminas-paginator-2.8.2.zip", - "reference": "5e53d927776b2d20e420bc2b289fa0c364a6b0bd", + "url": "https://api.github.com/repos/laminas/laminas-psr7bridge/zipball/14780ef1d40effd59d77ab29c6d439b2af42cdfa", + "reference": "14780ef1d40effd59d77ab29c6d439b2af42cdfa", "shasum": "" }, "require": { - "laminas/laminas-stdlib": "^2.7 || ^3.0", + "laminas/laminas-diactoros": "^1.1", + "laminas/laminas-http": "^2.5", "laminas/laminas-zendframework-bridge": "^1.0", - "php": "^7.0 || ^5.6" + "php": ">=5.5", + "psr/http-message": "^1.0" }, "replace": { - "zendframework/zend-paginator": "self.version" + "zendframework/zend-psr7bridge": "self.version" }, "require-dev": { - "laminas/laminas-cache": "^2.6.1", - "laminas/laminas-coding-standard": "~1.0.0", - "laminas/laminas-config": "^2.6.0", - "laminas/laminas-db": "^2.9.2", - "laminas/laminas-filter": "^2.6.1", - "laminas/laminas-json": "^2.6.1", - "laminas/laminas-servicemanager": "^2.7.5 || ^3.0.3", - "laminas/laminas-view": "^2.6.3", - "phpunit/phpunit": "^6.2.1 || ^5.7.15" - }, - "suggest": { - "laminas/laminas-cache": "Laminas\\Cache component to support cache features", - "laminas/laminas-db": "Laminas\\Db component", - "laminas/laminas-filter": "Laminas\\Filter component", - "laminas/laminas-json": "Laminas\\Json component", - "laminas/laminas-servicemanager": "Laminas\\ServiceManager component", - "laminas/laminas-view": "Laminas\\View component" + "phpunit/phpunit": "^4.7", + "squizlabs/php_codesniffer": "^2.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.8.x-dev", - "dev-develop": "2.9.x-dev" - }, - "laminas": { - "component": "Laminas\\Paginator", - "config-provider": "Laminas\\Paginator\\ConfigProvider" + "dev-master": "1.0-dev", + "dev-develop": "1.1-dev" } }, "autoload": { "psr-4": { - "Laminas\\Paginator\\": "src/" + "Laminas\\Psr7Bridge\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], - "description": "Paginate collections of data from arbitrary sources", + "description": "PSR-7 <-> Laminas\\Http bridge", "homepage": "https://laminas.dev", "keywords": [ + "http", "laminas", - "paginator" + "psr", + "psr-7" ], "support": { "chat": "https://laminas.dev/chat", - "docs": "https://docs.laminas.dev/laminas-paginator/", + "docs": "https://docs.laminas.dev/laminas-psr7bridge/", "forum": "https://discourse.laminas.dev", - "issues": "https://github.com/laminas/laminas-paginator/issues", - "rss": "https://github.com/laminas/laminas-paginator/releases.atom", - "source": "https://github.com/laminas/laminas-paginator" - }, - "time": "2019-12-31T17:36:22+00:00" - }, - { - "name": "laminas/laminas-psr7bridge", - "version": "0.2.2", - "dist": { - "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/laminas/laminas-psr7bridge/0.2.2/laminas-laminas-psr7bridge-0.2.2.zip", - "reference": "14780ef1d40effd59d77ab29c6d439b2af42cdfa", - "shasum": "" - }, - "require": { - "laminas/laminas-diactoros": "^1.1", - "laminas/laminas-http": "^2.5", - "laminas/laminas-zendframework-bridge": "^1.0", - "php": ">=5.5", - "psr/http-message": "^1.0" - }, - "replace": { - "zendframework/zend-psr7bridge": "self.version" - }, - "require-dev": { - "phpunit/phpunit": "^4.7", - "squizlabs/php_codesniffer": "^2.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev", - "dev-develop": "1.1-dev" - } - }, - "autoload": { - "psr-4": { - "Laminas\\Psr7Bridge\\": "src/" - } - }, - "license": [ - "BSD-3-Clause" - ], - "description": "PSR-7 <-> Laminas\\Http bridge", - "homepage": "https://laminas.dev", - "keywords": [ - "http", - "laminas", - "psr", - "psr-7" - ], - "support": { - "chat": "https://laminas.dev/chat", - "docs": "https://docs.laminas.dev/laminas-psr7bridge/", - "forum": "https://discourse.laminas.dev", - "issues": "https://github.com/laminas/laminas-psr7bridge/issues", - "rss": "https://github.com/laminas/laminas-psr7bridge/releases.atom", - "source": "https://github.com/laminas/laminas-psr7bridge" + "issues": "https://github.com/laminas/laminas-psr7bridge/issues", + "rss": "https://github.com/laminas/laminas-psr7bridge/releases.atom", + "source": "https://github.com/laminas/laminas-psr7bridge" }, "time": "2019-12-31T17:38:47+00:00" }, { "name": "laminas/laminas-serializer", "version": "2.10.0", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-serializer.git", + "reference": "1c57f1bdf05da078493b774c9e8d77ee8b46b4bb" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/laminas/laminas-serializer/2.10.0/laminas-laminas-serializer-2.10.0.zip", + "url": "https://api.github.com/repos/laminas/laminas-serializer/zipball/1c57f1bdf05da078493b774c9e8d77ee8b46b4bb", "reference": "1c57f1bdf05da078493b774c9e8d77ee8b46b4bb", "shasum": "" }, @@ -3035,6 +2964,7 @@ "Laminas\\Serializer\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], @@ -3063,9 +2993,14 @@ { "name": "laminas/laminas-servicemanager", "version": "2.7.11", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-servicemanager.git", + "reference": "841abb656c6018afebeec1f355be438426d6a3dd" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/laminas/laminas-servicemanager/2.7.11/laminas-laminas-servicemanager-2.7.11.zip", + "url": "https://api.github.com/repos/laminas/laminas-servicemanager/zipball/841abb656c6018afebeec1f355be438426d6a3dd", "reference": "841abb656c6018afebeec1f355be438426d6a3dd", "shasum": "" }, @@ -3100,6 +3035,7 @@ "Laminas\\ServiceManager\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], @@ -3121,9 +3057,14 @@ { "name": "laminas/laminas-session", "version": "2.8.7", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-session.git", + "reference": "92cbffa0460e15425993047845c2298e81c24899" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/laminas/laminas-session/2.8.7/laminas-laminas-session-2.8.7.zip", + "url": "https://api.github.com/repos/laminas/laminas-session/zipball/92cbffa0460e15425993047845c2298e81c24899", "reference": "92cbffa0460e15425993047845c2298e81c24899", "shasum": "" }, @@ -3172,6 +3113,7 @@ "Laminas\\Session\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], @@ -3194,9 +3136,14 @@ { "name": "laminas/laminas-stdlib", "version": "2.7.9", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-stdlib.git", + "reference": "2b7ee69318bf08ed094ebf0b30f860bb26ddd9f6" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/laminas/laminas-stdlib/2.7.9/laminas-laminas-stdlib-2.7.9.zip", + "url": "https://api.github.com/repos/laminas/laminas-stdlib/zipball/2b7ee69318bf08ed094ebf0b30f860bb26ddd9f6", "reference": "2b7ee69318bf08ed094ebf0b30f860bb26ddd9f6", "shasum": "" }, @@ -3232,6 +3179,7 @@ "Laminas\\Stdlib\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], @@ -3256,66 +3204,17 @@ ], "time": "2022-01-20T16:23:34+00:00" }, - { - "name": "laminas/laminas-text", - "version": "2.7.1", - "dist": { - "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/laminas/laminas-text/2.7.1/laminas-laminas-text-2.7.1.zip", - "reference": "3601b5eacb06ed0a12f658df860cc0f9613cf4db", - "shasum": "" - }, - "require": { - "laminas/laminas-servicemanager": "^2.7.5 || ^3.0.3", - "laminas/laminas-stdlib": "^2.7 || ^3.0", - "laminas/laminas-zendframework-bridge": "^1.0", - "php": "^5.6 || ^7.0" - }, - "replace": { - "zendframework/zend-text": "self.version" - }, - "require-dev": { - "laminas/laminas-coding-standard": "~1.0.0", - "laminas/laminas-config": "^2.6", - "phpunit/phpunit": "^5.7.27 || ^6.5.8 || ^7.1.4" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.7.x-dev", - "dev-develop": "2.8.x-dev" - } - }, - "autoload": { - "psr-4": { - "Laminas\\Text\\": "src/" - } - }, - "license": [ - "BSD-3-Clause" - ], - "description": "Create FIGlets and text-based tables", - "homepage": "https://laminas.dev", - "keywords": [ - "laminas", - "text" - ], - "support": { - "chat": "https://laminas.dev/chat", - "docs": "https://docs.laminas.dev/laminas-text/", - "forum": "https://discourse.laminas.dev", - "issues": "https://github.com/laminas/laminas-text/issues", - "rss": "https://github.com/laminas/laminas-text/releases.atom", - "source": "https://github.com/laminas/laminas-text" - }, - "time": "2019-12-31T17:54:52+00:00" - }, { "name": "laminas/laminas-uri", "version": "2.8.1", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-uri.git", + "reference": "79bd4c614c8cf9a6ba715a49fca8061e84933d87" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/laminas/laminas-uri/2.8.1/laminas-laminas-uri-2.8.1.zip", + "url": "https://api.github.com/repos/laminas/laminas-uri/zipball/79bd4c614c8cf9a6ba715a49fca8061e84933d87", "reference": "79bd4c614c8cf9a6ba715a49fca8061e84933d87", "shasum": "" }, @@ -3338,6 +3237,7 @@ "Laminas\\Uri\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], @@ -3366,9 +3266,14 @@ { "name": "laminas/laminas-validator", "version": "2.11.1", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-validator.git", + "reference": "1c2be519684c6ec5fd6d02f36167d95292682977" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/laminas/laminas-validator/2.11.1/laminas-laminas-validator-2.11.1.zip", + "url": "https://api.github.com/repos/laminas/laminas-validator/zipball/1c2be519684c6ec5fd6d02f36167d95292682977", "reference": "1c2be519684c6ec5fd6d02f36167d95292682977", "shasum": "" }, @@ -3423,6 +3328,7 @@ "Laminas\\Validator\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], @@ -3445,9 +3351,14 @@ { "name": "laminas/laminas-view", "version": "2.11.5", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-view.git", + "reference": "16611035d7b3a6ef2c636a9268c213146123b663" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/laminas/laminas-view/2.11.5/laminas-laminas-view-2.11.5.zip", + "url": "https://api.github.com/repos/laminas/laminas-view/zipball/16611035d7b3a6ef2c636a9268c213146123b663", "reference": "16611035d7b3a6ef2c636a9268c213146123b663", "shasum": "" }, @@ -3510,6 +3421,7 @@ "Laminas\\View\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], @@ -3538,9 +3450,14 @@ { "name": "laminas/laminas-xml", "version": "1.4.0", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-xml.git", + "reference": "dcadeefdb6d7ed6b39d772b47e3845003d6ea60f" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/laminas/laminas-xml/1.4.0/laminas-laminas-xml-1.4.0.zip", + "url": "https://api.github.com/repos/laminas/laminas-xml/zipball/dcadeefdb6d7ed6b39d772b47e3845003d6ea60f", "reference": "dcadeefdb6d7ed6b39d772b47e3845003d6ea60f", "shasum": "" }, @@ -3564,6 +3481,7 @@ "Laminas\\Xml\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], @@ -3592,9 +3510,14 @@ { "name": "laminas/laminas-zendframework-bridge", "version": "1.6.1", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-zendframework-bridge.git", + "reference": "e112dd2c099f4f6142c16fc65fda89a638e06885" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/laminas/laminas-zendframework-bridge/1.6.1/laminas-laminas-zendframework-bridge-1.6.1.zip", + "url": "https://api.github.com/repos/laminas/laminas-zendframework-bridge/zipball/e112dd2c099f4f6142c16fc65fda89a638e06885", "reference": "e112dd2c099f4f6142c16fc65fda89a638e06885", "shasum": "" }, @@ -3621,6 +3544,7 @@ "Laminas\\ZendFrameworkBridge\\": "src//" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], @@ -3649,9 +3573,14 @@ { "name": "lm-commons/lmc-rbac-mvc", "version": "v2.6.3", + "source": { + "type": "git", + "url": "https://github.com/LM-Commons/LmcRbacMvc.git", + "reference": "dd1857a88474e2a77996b1fb858f927510762819" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/lm-commons/lmc-rbac-mvc/v2.6.3/lm-commons-lmc-rbac-mvc-v2.6.3.zip", + "url": "https://api.github.com/repos/LM-Commons/LmcRbacMvc/zipball/dd1857a88474e2a77996b1fb858f927510762819", "reference": "dd1857a88474e2a77996b1fb858f927510762819", "shasum": "" }, @@ -3694,6 +3623,7 @@ "ZfcRbac\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -3729,11 +3659,16 @@ }, { "name": "nikic/php-parser", - "version": "v4.17.1", + "version": "v4.18.0", + "source": { + "type": "git", + "url": "https://github.com/nikic/PHP-Parser.git", + "reference": "1bcbb2179f97633e98bbbc87044ee2611c7d7999" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/nikic/php-parser/v4.17.1/nikic-php-parser-v4.17.1.zip", - "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/1bcbb2179f97633e98bbbc87044ee2611c7d7999", + "reference": "1bcbb2179f97633e98bbbc87044ee2611c7d7999", "shasum": "" }, "require": { @@ -3758,6 +3693,7 @@ "PhpParser\\": "lib/PhpParser" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], @@ -3773,16 +3709,21 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.17.1" + "source": "https://github.com/nikic/PHP-Parser/tree/v4.18.0" }, - "time": "2023-08-13T19:53:39+00:00" + "time": "2023-12-10T21:03:43+00:00" }, { "name": "olcs/olcs-auth", "version": "5.0.0.alpha1", + "source": { + "type": "git", + "url": "https://github.com/dvsa/olcs-auth.git", + "reference": "18c095f2dd4c89da0a7dae8a43588cf002234eef" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/olcs/olcs-auth/5.0.0.alpha1/olcs-olcs-auth-5.0.0.alpha1.zip", + "url": "https://api.github.com/repos/dvsa/olcs-auth/zipball/18c095f2dd4c89da0a7dae8a43588cf002234eef", "reference": "18c095f2dd4c89da0a7dae8a43588cf002234eef", "shasum": "" }, @@ -3819,6 +3760,7 @@ "Dvsa\\Olcs\\Auth\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -3831,9 +3773,14 @@ { "name": "olcs/olcs-common", "version": "5.0.0-alpha.1", + "source": { + "type": "git", + "url": "https://github.com/dvsa/olcs-common.git", + "reference": "0a9748ed58e43b414dbe572383a0ff85bf98f3de" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/olcs/olcs-common/5.0.0-alpha.1/olcs-olcs-common-5.0.0-alpha.1.zip", + "url": "https://api.github.com/repos/dvsa/olcs-common/zipball/0a9748ed58e43b414dbe572383a0ff85bf98f3de", "reference": "0a9748ed58e43b414dbe572383a0ff85bf98f3de", "shasum": "" }, @@ -3889,108 +3836,24 @@ "./Common/Module.php" ] }, + "notification-url": "https://packagist.org/downloads/", "description": "Common library for the OLCS Project", "support": { "source": "https://github.com/dvsa/olcs-common/tree/5.0.0-alpha.1" }, "time": "2023-12-15T09:41:55+00:00" }, - { - "name": "olcs/olcs-frontend-deps", - "version": "4.206.7", - "dist": { - "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/OLCS/olcs/olcs-frontend-deps/4.206.7/olcs-olcs-frontend-deps-4.206.7.zip", - "reference": "d9cdc7c021ecb4e1ff7d88c8c6f55a3905f6366f", - "shasum": "d9cdc7c021ecb4e1ff7d88c8c6f55a3905f6366f" - }, - "require": { - "doctrine/annotations": "^1.14.2", - "doctrine/doctrine-module": "^1", - "ext-intl": "*", - "firebase/php-jwt": "^6.0", - "olcs/olcs-auth": "^5.0.0", - "olcs/olcs-common": "^5.0.0", - "olcs/olcs-logging": "^5.0.0", - "olcs/olcs-transfer": "^5.0.0", - "olcs/olcs-utils": "^5.0.0", - "php": ">=7.4", - "soflomo/purifier": "^1.0", - "symfony/filesystem": "^5", - "symfony/lock": "^5" - }, - "type": "library", - "extra": { - "nexus-push": { - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/olcs-frontend-deps" - } - }, - "description": "List of front end dependencies, shared between internal and selfserve nodes", - "time": "2023-12-15T11:08:53+00:00" - }, - { - "name": "olcs/olcs-laminas", - "version": "2.5.2", - "dist": { - "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/OLCS/olcs/olcs-laminas/2.5.2/olcs-olcs-laminas-2.5.2.zip", - "reference": "2905575ee2fd04fd364c9dc31289ff8aea92d912", - "shasum": "2905575ee2fd04fd364c9dc31289ff8aea92d912" - }, - "require": { - "laminas/laminas-authentication": "^2.5", - "laminas/laminas-cache": "^2.5", - "laminas/laminas-code": "~3.4.1", - "laminas/laminas-console": "^2.5", - "laminas/laminas-crypt": "^3.0", - "laminas/laminas-dependency-plugin": "^2.0", - "laminas/laminas-escaper": "^2.5", - "laminas/laminas-eventmanager": "^2.5", - "laminas/laminas-filter": "^2.5", - "laminas/laminas-form": "^2.5", - "laminas/laminas-http": "^2.5", - "laminas/laminas-i18n": "^2.5", - "laminas/laminas-inputfilter": "^2.5", - "laminas/laminas-json": "^2.5", - "laminas/laminas-loader": "^2.5", - "laminas/laminas-log": "^2.5", - "laminas/laminas-mail": "^2.5", - "laminas/laminas-math": "^3.0", - "laminas/laminas-mime": "^2.5", - "laminas/laminas-modulemanager": "^2.5", - "laminas/laminas-mvc": "^2.5", - "laminas/laminas-navigation": "<=2.13.0", - "laminas/laminas-serializer": "^2.5", - "laminas/laminas-servicemanager": "^2.5", - "laminas/laminas-session": "^2.5", - "laminas/laminas-stdlib": "^2.5", - "laminas/laminas-text": "^2.5", - "laminas/laminas-uri": "^2.5", - "laminas/laminas-validator": "^2.5", - "laminas/laminas-view": "^2.5", - "laminas/laminas-xml": "^1.2.0", - "lm-commons/lmc-rbac-mvc": "^2.6" - }, - "require-dev": { - "elendev/composer-push": "1.0.3", - "laminas/laminas-developer-tools": "*", - "san/san-session-toolbar": "*" - }, - "type": "library", - "extra": { - "nexus-push": { - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/olcs-laminas" - } - }, - "description": "List of olcs laminas dependencies that are common across all repos", - "time": "2023-03-01T11:33:40+00:00" - }, { "name": "olcs/olcs-logging", "version": "5.0.0.alpha1", + "source": { + "type": "git", + "url": "https://github.com/dvsa/olcs-logging.git", + "reference": "2312891aeb3e67cd17c4fce9dbafe0f0e7c2e099" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/olcs/olcs-logging/5.0.0.alpha1/olcs-olcs-logging-5.0.0.alpha1.zip", + "url": "https://api.github.com/repos/dvsa/olcs-logging/zipball/2312891aeb3e67cd17c4fce9dbafe0f0e7c2e099", "reference": "2312891aeb3e67cd17c4fce9dbafe0f0e7c2e099", "shasum": "" }, @@ -4022,6 +3885,7 @@ "Olcs\\Logging\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -4033,11 +3897,16 @@ }, { "name": "olcs/olcs-transfer", - "version": "5.0.0.alpha1", + "version": "5.0.0-alpha.3", + "source": { + "type": "git", + "url": "https://github.com/dvsa/olcs-transfer.git", + "reference": "d83cd24b3a180167ed17add4a2557dff2d03a460" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/olcs/olcs-transfer/5.0.0.alpha1/olcs-olcs-transfer-5.0.0.alpha1.zip", - "reference": "9d457fdb8d4bac53e7d484021c3d952979b12109", + "url": "https://api.github.com/repos/dvsa/olcs-transfer/zipball/d83cd24b3a180167ed17add4a2557dff2d03a460", + "reference": "d83cd24b3a180167ed17add4a2557dff2d03a460", "shasum": "" }, "require": { @@ -4071,19 +3940,25 @@ "Dvsa\\Olcs\\Transfer\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "description": "OLCS Transfer", "support": { - "source": "https://github.com/dvsa/olcs-transfer/tree/5.0.0.alpha1" + "source": "https://github.com/dvsa/olcs-transfer/tree/5.0.0-alpha.3" }, - "time": "2023-12-01T11:59:16+00:00" + "time": "2023-12-13T13:42:29+00:00" }, { "name": "olcs/olcs-utils", - "version": "5.0.0.alpha1", + "version": "5.0.0-alpha.2", + "source": { + "type": "git", + "url": "https://github.com/dvsa/olcs-utils.git", + "reference": "032a00a8e5dad25d771864acfe170ae9facbb626" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/olcs/olcs-utils/5.0.0.alpha1/olcs-olcs-utils-5.0.0.alpha1.zip", - "reference": "82b2c2986397dfc8b5e615b48259747fb28ca1a8", + "url": "https://api.github.com/repos/dvsa/olcs-utils/zipball/032a00a8e5dad25d771864acfe170ae9facbb626", + "reference": "032a00a8e5dad25d771864acfe170ae9facbb626", "shasum": "" }, "require": { @@ -4116,18 +3991,24 @@ "Dvsa\\Olcs\\Utils\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "description": "OLCS Utils", "support": { - "source": "https://github.com/dvsa/olcs-utils/tree/5.0.0.alpha1" + "source": "https://github.com/dvsa/olcs-utils/tree/5.0.0-alpha.2" }, - "time": "2023-11-27T14:10:02+00:00" + "time": "2023-12-19T15:10:07+00:00" }, { "name": "psr/cache", "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/cache.git", + "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/psr/cache/1.0.1/psr-cache-1.0.1.zip", + "url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8", "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8", "shasum": "" }, @@ -4145,6 +4026,7 @@ "Psr\\Cache\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -4168,9 +4050,14 @@ { "name": "psr/container", "version": "1.1.2", + "source": { + "type": "git", + "url": "https://github.com/php-fig/container.git", + "reference": "513e0666f7216c7459170d56df27dfcefe1689ea" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/psr/container/1.1.2/psr-container-1.1.2.zip", + "url": "https://api.github.com/repos/php-fig/container/zipball/513e0666f7216c7459170d56df27dfcefe1689ea", "reference": "513e0666f7216c7459170d56df27dfcefe1689ea", "shasum": "" }, @@ -4183,6 +4070,7 @@ "Psr\\Container\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -4210,9 +4098,14 @@ { "name": "psr/http-message", "version": "1.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-message.git", + "reference": "cb6ce4845ce34a8ad9e68117c10ee90a29919eba" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/psr/http-message/1.1/psr-http-message-1.1.zip", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/cb6ce4845ce34a8ad9e68117c10ee90a29919eba", "reference": "cb6ce4845ce34a8ad9e68117c10ee90a29919eba", "shasum": "" }, @@ -4230,6 +4123,7 @@ "Psr\\Http\\Message\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -4257,9 +4151,14 @@ { "name": "psr/log", "version": "1.1.4", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "d49695b909c3b7628b6289db5479a1c204601f11" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/psr/log/1.1.4/psr-log-1.1.4.zip", + "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11", "reference": "d49695b909c3b7628b6289db5479a1c204601f11", "shasum": "" }, @@ -4277,6 +4176,7 @@ "Psr\\Log\\": "Psr/Log/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -4301,9 +4201,14 @@ { "name": "psr/simple-cache", "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/simple-cache.git", + "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/psr/simple-cache/1.0.1/psr-simple-cache-1.0.1.zip", + "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", "shasum": "" }, @@ -4321,6 +4226,7 @@ "Psr\\SimpleCache\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -4343,89 +4249,17 @@ }, "time": "2017-10-23T01:57:42+00:00" }, - { - "name": "soflomo/purifier", - "version": "1.0.2", - "dist": { - "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/soflomo/purifier/1.0.2/soflomo-purifier-1.0.2.zip", - "reference": "9302c64d0f2853e3486ff6b619a90083674136b4", - "shasum": "" - }, - "require": { - "ezyang/htmlpurifier": "^4.5", - "php": ">=5.5", - "zendframework/zend-filter": "^2.5" - }, - "require-dev": { - "fabpot/php-cs-fixer": "^1.11", - "php-vfs/php-vfs": "^1.3", - "phpunit/phpunit": "^4.8", - "zendframework/zend-console": "^2.5", - "zendframework/zend-http": "^2.5", - "zendframework/zend-i18n": "^2.5", - "zendframework/zend-log": "^2.6", - "zendframework/zend-modulemanager": "^2.5", - "zendframework/zend-mvc": "^2.5", - "zendframework/zend-serializer": "^2.5", - "zendframework/zend-servicemanager": "^2.5", - "zendframework/zend-view": "^2.5" - }, - "suggest": { - "zendframework/zend-modulemanager": "To load the filter as a module in a ZF2 application", - "zendframework/zend-servicemanager": "For creating the filter with the SM factory", - "zendframework/zend-view": "For using the purifier as view helper" - }, - "bin": [ - "bin/purifier-generate-standalone" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "autoload": { - "psr-4": { - "Soflomo\\Purifier\\": "src/" - } - }, - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Jurian Sluiman", - "email": "jurian@juriansluiman.nl", - "homepage": "https://juriansluiman.nl" - }, - { - "name": "Stefano Torresi", - "email": "stefano@torresi.io", - "homepage": "https://stefanotorresi.it" - } - ], - "description": "HTML Purifier integration module for Zend Framework 2 ", - "homepage": "https://github.com/juriansluiman/Soflomo-Purifier", - "keywords": [ - "Purifier", - "filter", - "html", - "purify", - "zf2" - ], - "support": { - "issues": "https://github.com/juriansluiman/Soflomo-Purifier/issues", - "source": "https://github.com/juriansluiman/Soflomo-Purifier/tree/1.0.2" - }, - "time": "2016-03-10T20:32:46+00:00" - }, { "name": "symfony/console", "version": "v3.4.47", + "source": { + "type": "git", + "url": "https://github.com/symfony/console.git", + "reference": "a10b1da6fc93080c180bba7219b5ff5b7518fe81" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/symfony/console/v3.4.47/symfony-console-v3.4.47.zip", + "url": "https://api.github.com/repos/symfony/console/zipball/a10b1da6fc93080c180bba7219b5ff5b7518fe81", "reference": "a10b1da6fc93080c180bba7219b5ff5b7518fe81", "shasum": "" }, @@ -4464,6 +4298,7 @@ "/Tests/" ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -4501,9 +4336,14 @@ { "name": "symfony/debug", "version": "v4.4.44", + "source": { + "type": "git", + "url": "https://github.com/symfony/debug.git", + "reference": "1a692492190773c5310bc7877cb590c04c2f05be" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/symfony/debug/v4.4.44/symfony-debug-v4.4.44.zip", + "url": "https://api.github.com/repos/symfony/debug/zipball/1a692492190773c5310bc7877cb590c04c2f05be", "reference": "1a692492190773c5310bc7877cb590c04c2f05be", "shasum": "" }, @@ -4526,6 +4366,7 @@ "/Tests/" ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -4563,11 +4404,16 @@ }, { "name": "symfony/dependency-injection", - "version": "v5.4.32", + "version": "v5.4.34", + "source": { + "type": "git", + "url": "https://github.com/symfony/dependency-injection.git", + "reference": "75d568165a65fa7d8124869ec7c3a90424352e6c" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/symfony/dependency-injection/v5.4.32/symfony-dependency-injection-v5.4.32.zip", - "reference": "d5d48f215ed73f7973d01256b9a2fac729bef759", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/75d568165a65fa7d8124869ec7c3a90424352e6c", + "reference": "75d568165a65fa7d8124869ec7c3a90424352e6c", "shasum": "" }, "require": { @@ -4610,6 +4456,7 @@ "/Tests/" ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -4626,7 +4473,7 @@ "description": "Allows you to standardize and centralize the way objects are constructed in your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dependency-injection/tree/v5.4.32" + "source": "https://github.com/symfony/dependency-injection/tree/v5.4.34" }, "funding": [ { @@ -4642,14 +4489,19 @@ "type": "tidelift" } ], - "time": "2023-11-29T06:58:28+00:00" + "time": "2023-12-28T09:31:38+00:00" }, { "name": "symfony/deprecation-contracts", "version": "v2.5.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/symfony/deprecation-contracts/v2.5.2/symfony-deprecation-contracts-v2.5.2.zip", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e8b495ea28c1d97b5e0c121748d6f9b53d075c66", "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66", "shasum": "" }, @@ -4671,6 +4523,7 @@ "function.php" ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -4706,46 +4559,70 @@ "time": "2022-01-02T09:53:40+00:00" }, { - "name": "symfony/filesystem", - "version": "v5.4.25", + "name": "symfony/polyfill-ctype", + "version": "v1.28.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/symfony/filesystem/v5.4.25/symfony-filesystem-v5.4.25.zip", - "reference": "0ce3a62c9579a53358d3a7eb6b3dfb79789a6364", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb", + "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-mbstring": "~1.8", - "symfony/polyfill-php80": "^1.16" + "php": ">=7.1" + }, + "provide": { + "ext-ctype": "*" + }, + "suggest": { + "ext-ctype": "For best performance" }, "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.28-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, "autoload": { + "files": [ + "bootstrap.php" + ], "psr-4": { - "Symfony\\Component\\Filesystem\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Symfony\\Polyfill\\Ctype\\": "" + } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Provides basic utilities for the filesystem", + "description": "Symfony polyfill for ctype functions", "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], "support": { - "source": "https://github.com/symfony/filesystem/tree/v5.4.25" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.28.0" }, "funding": [ { @@ -4761,64 +4638,72 @@ "type": "tidelift" } ], - "time": "2023-05-31T13:04:02+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { - "name": "symfony/lock", - "version": "v5.4.32", + "name": "symfony/polyfill-intl-grapheme", + "version": "v1.28.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-grapheme.git", + "reference": "875e90aeea2777b6f135677f618529449334a612" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/symfony/lock/v5.4.32/symfony-lock-v5.4.32.zip", - "reference": "a6d7d829f4907134775a0e1b162780e61f80ed87", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/875e90aeea2777b6f135677f618529449334a612", + "reference": "875e90aeea2777b6f135677f618529449334a612", "shasum": "" }, "require": { - "php": ">=7.2.5", - "psr/log": "^1|^2|^3", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-php80": "^1.16" - }, - "conflict": { - "doctrine/dbal": "<2.13" + "php": ">=7.1" }, - "require-dev": { - "doctrine/dbal": "^2.13|^3|^4", - "predis/predis": "~1.0" + "suggest": { + "ext-intl": "For best performance" }, "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Lock\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "extra": { + "branch-alias": { + "dev-main": "1.28-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Grapheme\\": "" + } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { - "name": "Jérémy Derussé", - "email": "jeremy@derusse.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Creates and manages locks, a mechanism to provide exclusive access to a shared resource", + "description": "Symfony polyfill for intl's grapheme_* functions", "homepage": "https://symfony.com", "keywords": [ - "cas", - "flock", - "locking", - "mutex", - "redlock", - "semaphore" + "compatibility", + "grapheme", + "intl", + "polyfill", + "portable", + "shim" ], "support": { - "source": "https://github.com/symfony/lock/tree/v5.4.32" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.28.0" }, "funding": [ { @@ -4834,25 +4719,27 @@ "type": "tidelift" } ], - "time": "2023-11-20T15:40:25+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { - "name": "symfony/polyfill-ctype", + "name": "symfony/polyfill-intl-normalizer", "version": "v1.28.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-normalizer.git", + "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/symfony/polyfill-ctype/v1.28.0/symfony-polyfill-ctype-v1.28.0.zip", - "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92", + "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92", "shasum": "" }, "require": { "php": ">=7.1" }, - "provide": { - "ext-ctype": "*" - }, "suggest": { - "ext-ctype": "For best performance" + "ext-intl": "For best performance" }, "type": "library", "extra": { @@ -4869,32 +4756,38 @@ "bootstrap.php" ], "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - } + "Symfony\\Polyfill\\Intl\\Normalizer\\": "" + }, + "classmap": [ + "Resources/stubs" + ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { - "name": "Gert de Pagter", - "email": "BackEndTea@gmail.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill for ctype functions", + "description": "Symfony polyfill for intl's Normalizer class and related functions", "homepage": "https://symfony.com", "keywords": [ "compatibility", - "ctype", + "intl", + "normalizer", "polyfill", - "portable" + "portable", + "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.28.0" }, "funding": [ { @@ -4915,9 +4808,14 @@ { "name": "symfony/polyfill-mbstring", "version": "v1.28.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "42292d99c55abe617799667f454222c54c60e229" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/symfony/polyfill-mbstring/v1.28.0/symfony-polyfill-mbstring-v1.28.0.zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/42292d99c55abe617799667f454222c54c60e229", "reference": "42292d99c55abe617799667f454222c54c60e229", "shasum": "" }, @@ -4948,6 +4846,7 @@ "Symfony\\Polyfill\\Mbstring\\": "" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -4992,9 +4891,14 @@ { "name": "symfony/polyfill-php73", "version": "v1.28.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php73.git", + "reference": "fe2f306d1d9d346a7fee353d0d5012e401e984b5" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/symfony/polyfill-php73/v1.28.0/symfony-polyfill-php73-v1.28.0.zip", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/fe2f306d1d9d346a7fee353d0d5012e401e984b5", "reference": "fe2f306d1d9d346a7fee353d0d5012e401e984b5", "shasum": "" }, @@ -5022,6 +4926,7 @@ "Resources/stubs" ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -5065,9 +4970,14 @@ { "name": "symfony/polyfill-php80", "version": "v1.28.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/symfony/polyfill-php80/v1.28.0/symfony-polyfill-php80-v1.28.0.zip", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/6caa57379c4aec19c0a12a38b59b26487dcfe4b5", "reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5", "shasum": "" }, @@ -5095,6 +5005,7 @@ "Resources/stubs" ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -5142,9 +5053,14 @@ { "name": "symfony/polyfill-php81", "version": "v1.28.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php81.git", + "reference": "7581cd600fa9fd681b797d00b02f068e2f13263b" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/symfony/polyfill-php81/v1.28.0/symfony-polyfill-php81-v1.28.0.zip", + "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/7581cd600fa9fd681b797d00b02f068e2f13263b", "reference": "7581cd600fa9fd681b797d00b02f068e2f13263b", "shasum": "" }, @@ -5172,6 +5088,7 @@ "Resources/stubs" ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -5212,12 +5129,189 @@ ], "time": "2023-01-26T09:26:14+00:00" }, + { + "name": "symfony/property-access", + "version": "v5.4.26", + "source": { + "type": "git", + "url": "https://github.com/symfony/property-access.git", + "reference": "0249e46f69e92049a488f39fcf531cb42c50caaa" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/property-access/zipball/0249e46f69e92049a488f39fcf531cb42c50caaa", + "reference": "0249e46f69e92049a488f39fcf531cb42c50caaa", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-php80": "^1.16", + "symfony/property-info": "^5.2|^6.0" + }, + "require-dev": { + "symfony/cache": "^4.4|^5.0|^6.0" + }, + "suggest": { + "psr/cache-implementation": "To cache access methods." + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\PropertyAccess\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides functions to read and write from/to an object or array using a simple string notation", + "homepage": "https://symfony.com", + "keywords": [ + "access", + "array", + "extraction", + "index", + "injection", + "object", + "property", + "property-path", + "reflection" + ], + "support": { + "source": "https://github.com/symfony/property-access/tree/v5.4.26" + }, + "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": "2023-07-13T15:20:41+00:00" + }, + { + "name": "symfony/property-info", + "version": "v5.4.24", + "source": { + "type": "git", + "url": "https://github.com/symfony/property-info.git", + "reference": "d43b85b00699b4484964c297575b5c6f9dc5f6e1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/property-info/zipball/d43b85b00699b4484964c297575b5c6f9dc5f6e1", + "reference": "d43b85b00699b4484964c297575b5c6f9dc5f6e1", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-php80": "^1.16", + "symfony/string": "^5.1|^6.0" + }, + "conflict": { + "phpdocumentor/reflection-docblock": "<3.2.2", + "phpdocumentor/type-resolver": "<1.4.0", + "symfony/dependency-injection": "<4.4" + }, + "require-dev": { + "doctrine/annotations": "^1.10.4|^2", + "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", + "phpstan/phpdoc-parser": "^1.0", + "symfony/cache": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/serializer": "^4.4|^5.0|^6.0" + }, + "suggest": { + "phpdocumentor/reflection-docblock": "To use the PHPDoc", + "psr/cache-implementation": "To cache results", + "symfony/doctrine-bridge": "To use Doctrine metadata", + "symfony/serializer": "To use Serializer metadata" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\PropertyInfo\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Kévin Dunglas", + "email": "dunglas@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Extracts information about PHP class' properties using metadata of popular sources", + "homepage": "https://symfony.com", + "keywords": [ + "doctrine", + "phpdoc", + "property", + "symfony", + "type", + "validator" + ], + "support": { + "source": "https://github.com/symfony/property-info/tree/v5.4.24" + }, + "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": "2023-05-15T20:11:03+00:00" + }, { "name": "symfony/service-contracts", "version": "v2.5.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/service-contracts.git", + "reference": "4b426aac47d6427cc1a1d0f7e2ac724627f5966c" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/symfony/service-contracts/v2.5.2/symfony-service-contracts-v2.5.2.zip", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/4b426aac47d6427cc1a1d0f7e2ac724627f5966c", "reference": "4b426aac47d6427cc1a1d0f7e2ac724627f5966c", "shasum": "" }, @@ -5247,6 +5341,7 @@ "Symfony\\Contracts\\Service\\": "" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -5290,56 +5385,102 @@ "time": "2022-05-30T19:17:29+00:00" }, { - "name": "true/punycode", - "version": "v2.1.1", + "name": "symfony/string", + "version": "v5.4.34", + "source": { + "type": "git", + "url": "https://github.com/symfony/string.git", + "reference": "e3f98bfc7885c957488f443df82d97814a3ce061" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/true/punycode/v2.1.1/true-punycode-v2.1.1.zip", - "reference": "a4d0c11a36dd7f4e7cd7096076cab6d3378a071e", + "url": "https://api.github.com/repos/symfony/string/zipball/e3f98bfc7885c957488f443df82d97814a3ce061", + "reference": "e3f98bfc7885c957488f443df82d97814a3ce061", "shasum": "" }, "require": { - "php": ">=5.3.0", - "symfony/polyfill-mbstring": "^1.3" + "php": ">=7.2.5", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-intl-grapheme": "~1.0", + "symfony/polyfill-intl-normalizer": "~1.0", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "~1.15" + }, + "conflict": { + "symfony/translation-contracts": ">=3.0" }, "require-dev": { - "phpunit/phpunit": "~4.7", - "squizlabs/php_codesniffer": "~2.0" + "symfony/error-handler": "^4.4|^5.0|^6.0", + "symfony/http-client": "^4.4|^5.0|^6.0", + "symfony/translation-contracts": "^1.1|^2", + "symfony/var-exporter": "^4.4|^5.0|^6.0" }, "type": "library", "autoload": { + "files": [ + "Resources/functions.php" + ], "psr-4": { - "TrueBV\\": "src/" - } + "Symfony\\Component\\String\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { - "name": "Renan Gonçalves", - "email": "renan.saddam@gmail.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "A Bootstring encoding of Unicode for Internationalized Domain Names in Applications (IDNA)", - "homepage": "https://github.com/true/php-punycode", + "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", + "homepage": "https://symfony.com", "keywords": [ - "idna", - "punycode" + "grapheme", + "i18n", + "string", + "unicode", + "utf-8", + "utf8" ], "support": { - "issues": "https://github.com/true/php-punycode/issues", - "source": "https://github.com/true/php-punycode/tree/master" + "source": "https://github.com/symfony/string/tree/v5.4.34" }, - "abandoned": true, - "time": "2016-11-16T10:37:54+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": "2023-12-09T13:20:28+00:00" }, { "name": "webimpress/safe-writer", "version": "2.2.0", + "source": { + "type": "git", + "url": "https://github.com/webimpress/safe-writer.git", + "reference": "9d37cc8bee20f7cb2f58f6e23e05097eab5072e6" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/webimpress/safe-writer/2.2.0/webimpress-safe-writer-2.2.0.zip", + "url": "https://api.github.com/repos/webimpress/safe-writer/zipball/9d37cc8bee20f7cb2f58f6e23e05097eab5072e6", "reference": "9d37cc8bee20f7cb2f58f6e23e05097eab5072e6", "shasum": "" }, @@ -5364,6 +5505,7 @@ "Webimpress\\SafeWriter\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-2-Clause" ], @@ -5387,12 +5529,91 @@ ], "time": "2021-04-19T16:34:45+00:00" }, + { + "name": "zendframework/zend-paginator", + "version": "2.8.2", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-paginator.git", + "reference": "2b4d07d9475ed581278a28d065b238a0941402e2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-paginator/zipball/2b4d07d9475ed581278a28d065b238a0941402e2", + "reference": "2b4d07d9475ed581278a28d065b238a0941402e2", + "shasum": "" + }, + "require": { + "php": "^7.0 || ^5.6", + "zendframework/zend-stdlib": "^2.7 || ^3.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.2.1 || ^5.7.15", + "zendframework/zend-cache": "^2.6.1", + "zendframework/zend-coding-standard": "~1.0.0", + "zendframework/zend-config": "^2.6.0", + "zendframework/zend-db": "^2.9.2", + "zendframework/zend-filter": "^2.6.1", + "zendframework/zend-json": "^2.6.1", + "zendframework/zend-servicemanager": "^2.7.5 || ^3.0.3", + "zendframework/zend-view": "^2.6.3" + }, + "suggest": { + "zendframework/zend-cache": "Zend\\Cache component to support cache features", + "zendframework/zend-db": "Zend\\Db component", + "zendframework/zend-filter": "Zend\\Filter component", + "zendframework/zend-json": "Zend\\Json component", + "zendframework/zend-servicemanager": "Zend\\ServiceManager component", + "zendframework/zend-view": "Zend\\View component" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.8.x-dev", + "dev-develop": "2.9.x-dev" + }, + "zf": { + "component": "Zend\\Paginator", + "config-provider": "Zend\\Paginator\\ConfigProvider" + } + }, + "autoload": { + "psr-4": { + "Zend\\Paginator\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Paginate collections of data from arbitrary sources", + "keywords": [ + "ZendFramework", + "paginator", + "zf" + ], + "support": { + "chat": "https://zendframework-slack.herokuapp.com", + "docs": "https://docs.zendframework.com/zend-paginator/", + "forum": "https://discourse.zendframework.com/c/questions/components", + "issues": "https://github.com/zendframework/zend-paginator/issues", + "rss": "https://github.com/zendframework/zend-paginator/releases.atom", + "source": "https://github.com/zendframework/zend-paginator" + }, + "abandoned": "laminas/laminas-paginator", + "time": "2019-08-21T13:31:03+00:00" + }, { "name": "zfr/rbac", "version": "1.2.0", + "source": { + "type": "git", + "url": "https://github.com/zf-fr/rbac.git", + "reference": "493711bfc2a637fd7c6f23b71b7b55a621c35d9d" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/zfr/rbac/1.2.0/zfr-rbac-1.2.0.zip", + "url": "https://api.github.com/repos/zf-fr/rbac/zipball/493711bfc2a637fd7c6f23b71b7b55a621c35d9d", "reference": "493711bfc2a637fd7c6f23b71b7b55a621c35d9d", "shasum": "" }, @@ -5411,6 +5632,7 @@ "Rbac\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -5438,175 +5660,73 @@ ], "packages-dev": [ { - "name": "composer/pcre", - "version": "3.1.1", + "name": "bamarni/composer-bin-plugin", + "version": "1.8.2", + "source": { + "type": "git", + "url": "https://github.com/bamarni/composer-bin-plugin.git", + "reference": "92fd7b1e6e9cdae19b0d57369d8ad31a37b6a880" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/composer/pcre/3.1.1/composer-pcre-3.1.1.zip", - "reference": "00104306927c7a0919b4ced2aaa6782c1e61a3c9", + "url": "https://api.github.com/repos/bamarni/composer-bin-plugin/zipball/92fd7b1e6e9cdae19b0d57369d8ad31a37b6a880", + "reference": "92fd7b1e6e9cdae19b0d57369d8ad31a37b6a880", "shasum": "" }, "require": { - "php": "^7.4 || ^8.0" + "composer-plugin-api": "^2.0", + "php": "^7.2.5 || ^8.0" }, "require-dev": { - "phpstan/phpstan": "^1.3", - "phpstan/phpstan-strict-rules": "^1.1", - "symfony/phpunit-bridge": "^5" + "composer/composer": "^2.0", + "ext-json": "*", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-phpunit": "^1.1", + "phpunit/phpunit": "^8.5 || ^9.5", + "symfony/console": "^2.8.52 || ^3.4.35 || ^4.4 || ^5.0 || ^6.0", + "symfony/finder": "^2.8.52 || ^3.4.35 || ^4.4 || ^5.0 || ^6.0", + "symfony/process": "^2.8.52 || ^3.4.35 || ^4.4 || ^5.0 || ^6.0" }, - "type": "library", + "type": "composer-plugin", "extra": { - "branch-alias": { - "dev-main": "3.x-dev" - } + "class": "Bamarni\\Composer\\Bin\\BamarniBinPlugin" }, "autoload": { "psr-4": { - "Composer\\Pcre\\": "src" + "Bamarni\\Composer\\Bin\\": "src" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "authors": [ - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" - } - ], - "description": "PCRE wrapping library that offers type-safe preg_* replacements.", - "keywords": [ - "PCRE", - "preg", - "regex", - "regular expression" - ], - "support": { - "issues": "https://github.com/composer/pcre/issues", - "source": "https://github.com/composer/pcre/tree/3.1.1" - }, - "funding": [ - { - "url": "https://packagist.com", - "type": "custom" - }, - { - "url": "https://github.com/composer", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/composer/composer", - "type": "tidelift" - } - ], - "time": "2023-10-11T07:11:09+00:00" - }, - { - "name": "composer/xdebug-handler", - "version": "3.0.3", - "dist": { - "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/composer/xdebug-handler/3.0.3/composer-xdebug-handler-3.0.3.zip", - "reference": "ced299686f41dce890debac69273b47ffe98a40c", - "shasum": "" - }, - "require": { - "composer/pcre": "^1 || ^2 || ^3", - "php": "^7.2.5 || ^8.0", - "psr/log": "^1 || ^2 || ^3" - }, - "require-dev": { - "phpstan/phpstan": "^1.0", - "phpstan/phpstan-strict-rules": "^1.1", - "symfony/phpunit-bridge": "^6.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Composer\\XdebugHandler\\": "src" - } - }, - "license": [ - "MIT" - ], - "authors": [ - { - "name": "John Stevenson", - "email": "john-stevenson@blueyonder.co.uk" - } - ], - "description": "Restarts a process without Xdebug.", + "description": "No conflicts for your bin dependencies", "keywords": [ - "Xdebug", - "performance" - ], - "support": { - "irc": "irc://irc.freenode.org/composer", - "issues": "https://github.com/composer/xdebug-handler/issues", - "source": "https://github.com/composer/xdebug-handler/tree/3.0.3" - }, - "funding": [ - { - "url": "https://packagist.com", - "type": "custom" - }, - { - "url": "https://github.com/composer", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/composer/composer", - "type": "tidelift" - } - ], - "time": "2022-02-25T21:32:43+00:00" - }, - { - "name": "dms/phpunit-arraysubset-asserts", - "version": "v0.3.1", - "dist": { - "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/dms/phpunit-arraysubset-asserts/v0.3.1/dms-phpunit-arraysubset-asserts-v0.3.1.zip", - "reference": "e1b47df99cd0dbb3f63528adc5c990256218c707", - "shasum": "" - }, - "require": { - "php": "^5.4 || ^7.0 || ^8.0", - "phpunit/phpunit": "^4.8.36 || ^5.7.21 || ^6.0 || ^7.0 || ^8.0 || ^9.0" - }, - "require-dev": { - "dms/coding-standard": "^9", - "squizlabs/php_codesniffer": "^3.4" - }, - "type": "library", - "autoload": { - "files": [ - "assertarraysubset-autoload.php" - ] - }, - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Rafael Dohms", - "email": "rdohms@gmail.com" - } + "composer", + "conflict", + "dependency", + "executable", + "isolation", + "tool" ], - "description": "This package provides ArraySubset and related asserts once deprecated in PHPUnit 8", "support": { - "issues": "https://github.com/rdohms/phpunit-arraysubset-asserts/issues", - "source": "https://github.com/rdohms/phpunit-arraysubset-asserts/tree/v0.3.1" + "issues": "https://github.com/bamarni/composer-bin-plugin/issues", + "source": "https://github.com/bamarni/composer-bin-plugin/tree/1.8.2" }, - "time": "2021-10-17T18:50:58+00:00" + "time": "2022-10-31T08:38:03+00:00" }, { "name": "doctrine/instantiator", "version": "1.5.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/instantiator.git", + "reference": "0a0fa9780f5d4e507415a065172d26a98d02047b" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/doctrine/instantiator/1.5.0/doctrine-instantiator-1.5.0.zip", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/0a0fa9780f5d4e507415a065172d26a98d02047b", "reference": "0a0fa9780f5d4e507415a065172d26a98d02047b", "shasum": "" }, @@ -5629,6 +5749,7 @@ "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -5666,718 +5787,245 @@ "time": "2022-12-30T00:15:36+00:00" }, { - "name": "dvsa/coding-standards", - "version": "v2.0.0", - "dist": { - "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/dvsa/coding-standards/v2.0.0/dvsa-coding-standards-v2.0.0.zip", - "reference": "22da6f5cbed2a3ba619d1552727a908fbf0f2098", - "shasum": "" - }, - "require": { - "php": "^7.4|^8.0", - "squizlabs/php_codesniffer": "^3.1" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^2.0" - }, - "suggest": { - "friendsofphp/php-cs-fixer": "To use the shared coding standards ruleset for PHP CS Fixer" - }, - "type": "library", - "autoload": { - "psr-4": { - "Dvsa\\PhpCodingStandards\\PhpCsFixer\\": "src/Profiles/DVSA/PhpCsFixer" - } - }, - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Shaun Hare", - "email": "shaun.hare@dvsa.gov.uk" - }, - { - "name": "Igor Stimoli", - "email": "igor.stimoli@bjss.com" - }, - { - "name": "Chris Emerson", - "email": "chris.emerson@bjss.com" - } - ], - "description": "Coding Standards used for PHP in the Driver and Vehicle Standards Agency. PSR Compliant.", - "support": { - "issues": "https://github.com/dvsa/php-coding-standards/issues", - "source": "https://github.com/dvsa/php-coding-standards/tree/v2.0.0" + "name": "hamcrest/hamcrest-php", + "version": "v2.0.1", + "source": { + "type": "git", + "url": "https://github.com/hamcrest/hamcrest-php.git", + "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3" }, - "time": "2022-01-17T15:41:57+00:00" - }, - { - "name": "elendev/composer-push", - "version": "1.0.4", "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/elendev/composer-push/1.0.4/elendev-composer-push-1.0.4.zip", - "reference": "74cd140d8481b68284291628c37d92e4c7caebbe", + "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", + "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", "shasum": "" }, "require": { - "composer-plugin-api": "^1.1|^2.0", - "ext-curl": "*", - "ext-json": "*", - "ext-zip": "*", - "guzzlehttp/guzzle": "^6.0|^7.0", - "php": ">=7.2 || ^8.0", - "symfony/filesystem": "^4.0|^5.0|^6.0", - "symfony/finder": "^4.0|^5.0|^6.0" + "php": "^5.3|^7.0|^8.0" }, "replace": { - "elendev/nexus-composer-push": "*" + "cordoval/hamcrest-php": "*", + "davedevelopment/hamcrest-php": "*", + "kodova/hamcrest-php": "*" }, "require-dev": { - "composer/composer": "^1.8 || ^2.0", - "friendsofphp/php-cs-fixer": "^2.18|^3.4.0", - "phpunit/phpunit": "^8 || ^9 || ^10" - }, - "suggest": { - "elendev/composer-push": "Replaces the elendev/nexus-composer-push repository, which is deprecated." + "phpunit/php-file-iterator": "^1.4 || ^2.0", + "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0" }, - "type": "composer-plugin", + "type": "library", "extra": { - "class": "Elendev\\ComposerPush\\Plugin" + "branch-alias": { + "dev-master": "2.1-dev" + } }, "autoload": { - "psr-4": { - "Elendev\\ComposerPush\\": "src/" - } + "classmap": [ + "hamcrest" + ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ - "Apache-2.0" + "BSD-3-Clause" ], - "authors": [ - { - "name": "Elendev", - "email": "jonas.renaudot@gmail.com" - } + "description": "This is the PHP port of Hamcrest Matchers", + "keywords": [ + "test" ], - "description": "Provide a Push command to composer to push to repositories", "support": { - "issues": "https://github.com/Elendev/composer-push/issues", - "source": "https://github.com/Elendev/composer-push/tree/1.0.4" + "issues": "https://github.com/hamcrest/hamcrest-php/issues", + "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1" }, - "time": "2023-02-21T09:59:18+00:00" + "time": "2020-07-09T08:09:16+00:00" }, { - "name": "fzaninotto/faker", - "version": "v1.9.2", + "name": "johnkary/phpunit-speedtrap", + "version": "v4.0.1", + "source": { + "type": "git", + "url": "https://github.com/johnkary/phpunit-speedtrap.git", + "reference": "d6600d2218396b78856c335f83479503957a5fa9" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/fzaninotto/faker/v1.9.2/fzaninotto-faker-v1.9.2.zip", - "reference": "848d8125239d7dbf8ab25cb7f054f1a630e68c2e", + "url": "https://api.github.com/repos/johnkary/phpunit-speedtrap/zipball/d6600d2218396b78856c335f83479503957a5fa9", + "reference": "d6600d2218396b78856c335f83479503957a5fa9", "shasum": "" }, "require": { - "php": "^5.3.3 || ^7.0" - }, - "require-dev": { - "ext-intl": "*", - "phpunit/phpunit": "^4.8.35 || ^5.7", - "squizlabs/php_codesniffer": "^2.9.2" + "php": ">=7.1", + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.9-dev" + "dev-master": "4.0-dev" } }, "autoload": { "psr-4": { - "Faker\\": "src/Faker/" + "JohnKary\\PHPUnit\\Listener\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { - "name": "François Zaninotto" + "name": "John Kary", + "email": "john@johnkary.net" } ], - "description": "Faker is a PHP library that generates fake data for you.", + "description": "Find and report on slow tests in your PHPUnit test suite", + "homepage": "https://github.com/johnkary/phpunit-speedtrap", "keywords": [ - "data", - "faker", - "fixtures" + "phpunit", + "profile", + "slow" ], "support": { - "issues": "https://github.com/fzaninotto/Faker/issues", - "source": "https://github.com/fzaninotto/Faker/tree/v1.9.2" + "issues": "https://github.com/johnkary/phpunit-speedtrap/issues", + "source": "https://github.com/johnkary/phpunit-speedtrap/tree/v4.0.1" }, - "abandoned": true, - "time": "2020-12-11T09:56:16+00:00" + "time": "2022-10-17T00:56:56+00:00" }, { - "name": "guzzlehttp/guzzle", - "version": "7.8.0", + "name": "laminas/laminas-developer-tools", + "version": "2.0.3", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-developer-tools.git", + "reference": "f6a6cfe65a36f9284e106381d002c216be6df0bc" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/guzzlehttp/guzzle/7.8.0/guzzlehttp-guzzle-7.8.0.zip", - "reference": "1110f66a6530a40fe7aea0378fe608ee2b2248f9", + "url": "https://api.github.com/repos/laminas/laminas-developer-tools/zipball/f6a6cfe65a36f9284e106381d002c216be6df0bc", + "reference": "f6a6cfe65a36f9284e106381d002c216be6df0bc", "shasum": "" }, "require": { - "ext-json": "*", - "guzzlehttp/promises": "^1.5.3 || ^2.0.1", - "guzzlehttp/psr7": "^1.9.1 || ^2.5.1", - "php": "^7.2.5 || ^8.0", - "psr/http-client": "^1.0", - "symfony/deprecation-contracts": "^2.2 || ^3.0" + "laminas/laminas-eventmanager": "^2.6.2 || ^3.0", + "laminas/laminas-modulemanager": "^2.7", + "laminas/laminas-mvc": "^2.7 || ^3.0.1", + "laminas/laminas-servicemanager": "^2.7.5 || ^3.0.3", + "laminas/laminas-stdlib": "^2.7 || ^3.0", + "laminas/laminas-view": "^2.6", + "laminas/laminas-zendframework-bridge": "^1.0", + "php": "^5.6 || ^7.0", + "symfony/var-dumper": "^3.4.36 || ^4.4.1 || ^5.0.1" }, - "provide": { - "psr/http-client-implementation": "1.0" + "replace": { + "zendframework/zend-developer-tools": "^2.0.0" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.8.1", - "ext-curl": "*", - "php-http/client-integration-tests": "dev-master#2c025848417c1135031fdf9c728ee53d0a7ceaee as 3.0.999", - "php-http/message-factory": "^1.1", - "phpunit/phpunit": "^8.5.29 || ^9.5.23", - "psr/log": "^1.1 || ^2.0 || ^3.0" + "laminas/laminas-coding-standard": "~1.0.0", + "phpunit/phpunit": "^5.7.25 || ^6.4.4 || ^7.1" }, "suggest": { - "ext-curl": "Required for CURL handler support", - "ext-intl": "Required for Internationalized Domain Name (IDN) support", - "psr/log": "Required for using the Log middleware" + "aist/aist-git-tools": "Show you information about current GIT repository", + "bjyoungblood/bjy-profiler": "Version: dev-master, allows the usage of the (Laminas) Db collector.", + "doctrine/doctrine-orm-module": "Profile DoctrineORM queries", + "jhuet/zdt-logger-module": "Show you log data from Laminas\\Log", + "ocramius/ocra-service-manager": "OcraServiceManager can help you track dependencies within your application.", + "san/san-session-toolbar": "SanSessionToolbar can help you see current Laminas\\Session data you're using within your application.", + "snapshotpl/api-tools-snap-event-debugger": "ZfSnapEventDebugger can help you debug events from Laminas\\EventManager" }, "type": "library", "extra": { - "bamarni-bin": { - "bin-links": true, - "forward-command": false + "laminas": { + "module": "Laminas\\DeveloperTools" } }, "autoload": { - "files": [ - "src/functions_include.php" - ], "psr-4": { - "GuzzleHttp\\": "src/" + "Laminas\\DeveloperTools\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" - ], - "authors": [ - { - "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk", - "homepage": "https://github.com/GrahamCampbell" - }, - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - }, - { - "name": "Jeremy Lindblom", - "email": "jeremeamia@gmail.com", - "homepage": "https://github.com/jeremeamia" - }, - { - "name": "George Mponos", - "email": "gmponos@gmail.com", - "homepage": "https://github.com/gmponos" - }, - { - "name": "Tobias Nyholm", - "email": "tobias.nyholm@gmail.com", - "homepage": "https://github.com/Nyholm" - }, - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com", - "homepage": "https://github.com/sagikazarmark" - }, - { - "name": "Tobias Schultze", - "email": "webmaster@tubo-world.de", - "homepage": "https://github.com/Tobion" - } + "BSD-3-Clause" ], - "description": "Guzzle is a PHP HTTP client library", + "description": "Module for developer and debug tools for use with laminas-mvc applications.", + "homepage": "https://laminas.dev", "keywords": [ - "client", - "curl", - "framework", - "http", - "http client", - "psr-18", - "psr-7", - "rest", - "web service" + "debug", + "developer", + "laminas", + "module" ], "support": { - "issues": "https://github.com/guzzle/guzzle/issues", - "source": "https://github.com/guzzle/guzzle/tree/7.8.0" + "chat": "https://laminas.dev/chat", + "forum": "https://discourse.laminas.dev", + "issues": "https://github.com/laminas/laminas-developer-tools/issues", + "rss": "https://github.com/laminas/laminas-developer-tools/releases.atom", + "source": "https://github.com/laminas/laminas-developer-tools" }, "funding": [ { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/guzzle", - "type": "tidelift" + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" } ], - "time": "2023-08-27T10:20:53+00:00" + "time": "2020-11-02T03:12:47+00:00" }, { - "name": "guzzlehttp/promises", - "version": "2.0.1", + "name": "mockery/mockery", + "version": "1.6.7", + "source": { + "type": "git", + "url": "https://github.com/mockery/mockery.git", + "reference": "0cc058854b3195ba21dc6b1f7b1f60f4ef3a9c06" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/guzzlehttp/promises/2.0.1/guzzlehttp-promises-2.0.1.zip", - "reference": "111166291a0f8130081195ac4556a5587d7f1b5d", + "url": "https://api.github.com/repos/mockery/mockery/zipball/0cc058854b3195ba21dc6b1f7b1f60f4ef3a9c06", + "reference": "0cc058854b3195ba21dc6b1f7b1f60f4ef3a9c06", "shasum": "" }, "require": { - "php": "^7.2.5 || ^8.0" + "hamcrest/hamcrest-php": "^2.0.1", + "lib-pcre": ">=7.0", + "php": ">=7.3" + }, + "conflict": { + "phpunit/phpunit": "<8.0" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.8.1", - "phpunit/phpunit": "^8.5.29 || ^9.5.23" + "phpunit/phpunit": "^8.5 || ^9.6.10", + "symplify/easy-coding-standard": "^12.0.8" }, "type": "library", - "extra": { - "bamarni-bin": { - "bin-links": true, - "forward-command": false - } - }, "autoload": { + "files": [ + "library/helpers.php", + "library/Mockery.php" + ], "psr-4": { - "GuzzleHttp\\Promise\\": "src/" + "Mockery\\": "library/Mockery" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk", - "homepage": "https://github.com/GrahamCampbell" - }, - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" + "name": "Pádraic Brady", + "email": "padraic.brady@gmail.com", + "homepage": "https://github.com/padraic", + "role": "Author" }, { - "name": "Tobias Nyholm", - "email": "tobias.nyholm@gmail.com", - "homepage": "https://github.com/Nyholm" + "name": "Dave Marshall", + "email": "dave.marshall@atstsolutions.co.uk", + "homepage": "https://davedevelopment.co.uk", + "role": "Developer" }, { - "name": "Tobias Schultze", - "email": "webmaster@tubo-world.de", - "homepage": "https://github.com/Tobion" - } - ], - "description": "Guzzle promises library", - "keywords": [ - "promise" - ], - "support": { - "issues": "https://github.com/guzzle/promises/issues", - "source": "https://github.com/guzzle/promises/tree/2.0.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", - "type": "tidelift" - } - ], - "time": "2023-08-03T15:11:55+00:00" - }, - { - "name": "guzzlehttp/psr7", - "version": "2.6.1", - "dist": { - "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/guzzlehttp/psr7/2.6.1/guzzlehttp-psr7-2.6.1.zip", - "reference": "be45764272e8873c72dbe3d2edcfdfcc3bc9f727", - "shasum": "" - }, - "require": { - "php": "^7.2.5 || ^8.0", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.1 || ^2.0", - "ralouphie/getallheaders": "^3.0" - }, - "provide": { - "psr/http-factory-implementation": "1.0", - "psr/http-message-implementation": "1.0" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.8.1", - "http-interop/http-factory-tests": "^0.9", - "phpunit/phpunit": "^8.5.29 || ^9.5.23" - }, - "suggest": { - "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" - }, - "type": "library", - "extra": { - "bamarni-bin": { - "bin-links": true, - "forward-command": false - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\Psr7\\": "src/" - } - }, - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk", - "homepage": "https://github.com/GrahamCampbell" - }, - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - }, - { - "name": "George Mponos", - "email": "gmponos@gmail.com", - "homepage": "https://github.com/gmponos" - }, - { - "name": "Tobias Nyholm", - "email": "tobias.nyholm@gmail.com", - "homepage": "https://github.com/Nyholm" - }, - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com", - "homepage": "https://github.com/sagikazarmark" - }, - { - "name": "Tobias Schultze", - "email": "webmaster@tubo-world.de", - "homepage": "https://github.com/Tobion" - }, - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com", - "homepage": "https://sagikazarmark.hu" - } - ], - "description": "PSR-7 message implementation that also provides common utility methods", - "keywords": [ - "http", - "message", - "psr-7", - "request", - "response", - "stream", - "uri", - "url" - ], - "support": { - "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/2.6.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/psr7", - "type": "tidelift" - } - ], - "time": "2023-08-27T10:13:57+00:00" - }, - { - "name": "hamcrest/hamcrest-php", - "version": "v2.0.1", - "dist": { - "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/hamcrest/hamcrest-php/v2.0.1/hamcrest-hamcrest-php-v2.0.1.zip", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "shasum": "" - }, - "require": { - "php": "^5.3|^7.0|^8.0" - }, - "replace": { - "cordoval/hamcrest-php": "*", - "davedevelopment/hamcrest-php": "*", - "kodova/hamcrest-php": "*" - }, - "require-dev": { - "phpunit/php-file-iterator": "^1.4 || ^2.0", - "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "classmap": [ - "hamcrest" - ] - }, - "license": [ - "BSD-3-Clause" - ], - "description": "This is the PHP port of Hamcrest Matchers", - "keywords": [ - "test" - ], - "support": { - "issues": "https://github.com/hamcrest/hamcrest-php/issues", - "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1" - }, - "time": "2020-07-09T08:09:16+00:00" - }, - { - "name": "johnkary/phpunit-speedtrap", - "version": "v3.3.0", - "dist": { - "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/johnkary/phpunit-speedtrap/v3.3.0/johnkary-phpunit-speedtrap-v3.3.0.zip", - "reference": "9ba81d42676da31366c85d3ff8c10a8352d02030", - "shasum": "" - }, - "require": { - "php": ">=7.1", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "psr-4": { - "JohnKary\\PHPUnit\\Listener\\": "src/" - } - }, - "license": [ - "MIT" - ], - "authors": [ - { - "name": "John Kary", - "email": "john@johnkary.net" - } - ], - "description": "Find and report on slow tests in your PHPUnit test suite", - "homepage": "https://github.com/johnkary/phpunit-speedtrap", - "keywords": [ - "phpunit", - "profile", - "slow" - ], - "support": { - "issues": "https://github.com/johnkary/phpunit-speedtrap/issues", - "source": "https://github.com/johnkary/phpunit-speedtrap/tree/v3.3.0" - }, - "time": "2020-12-18T16:20:16+00:00" - }, - { - "name": "laminas/laminas-developer-tools", - "version": "2.0.3", - "dist": { - "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/laminas/laminas-developer-tools/2.0.3/laminas-laminas-developer-tools-2.0.3.zip", - "reference": "f6a6cfe65a36f9284e106381d002c216be6df0bc", - "shasum": "" - }, - "require": { - "laminas/laminas-eventmanager": "^2.6.2 || ^3.0", - "laminas/laminas-modulemanager": "^2.7", - "laminas/laminas-mvc": "^2.7 || ^3.0.1", - "laminas/laminas-servicemanager": "^2.7.5 || ^3.0.3", - "laminas/laminas-stdlib": "^2.7 || ^3.0", - "laminas/laminas-view": "^2.6", - "laminas/laminas-zendframework-bridge": "^1.0", - "php": "^5.6 || ^7.0", - "symfony/var-dumper": "^3.4.36 || ^4.4.1 || ^5.0.1" - }, - "replace": { - "zendframework/zend-developer-tools": "^2.0.0" - }, - "require-dev": { - "laminas/laminas-coding-standard": "~1.0.0", - "phpunit/phpunit": "^5.7.25 || ^6.4.4 || ^7.1" - }, - "suggest": { - "aist/aist-git-tools": "Show you information about current GIT repository", - "bjyoungblood/bjy-profiler": "Version: dev-master, allows the usage of the (Laminas) Db collector.", - "doctrine/doctrine-orm-module": "Profile DoctrineORM queries", - "jhuet/zdt-logger-module": "Show you log data from Laminas\\Log", - "ocramius/ocra-service-manager": "OcraServiceManager can help you track dependencies within your application.", - "san/san-session-toolbar": "SanSessionToolbar can help you see current Laminas\\Session data you're using within your application.", - "snapshotpl/api-tools-snap-event-debugger": "ZfSnapEventDebugger can help you debug events from Laminas\\EventManager" - }, - "type": "library", - "extra": { - "laminas": { - "module": "Laminas\\DeveloperTools" - } - }, - "autoload": { - "psr-4": { - "Laminas\\DeveloperTools\\": "src/" - } - }, - "license": [ - "BSD-3-Clause" - ], - "description": "Module for developer and debug tools for use with laminas-mvc applications.", - "homepage": "https://laminas.dev", - "keywords": [ - "debug", - "developer", - "laminas", - "module" - ], - "support": { - "chat": "https://laminas.dev/chat", - "forum": "https://discourse.laminas.dev", - "issues": "https://github.com/laminas/laminas-developer-tools/issues", - "rss": "https://github.com/laminas/laminas-developer-tools/releases.atom", - "source": "https://github.com/laminas/laminas-developer-tools" - }, - "funding": [ - { - "url": "https://funding.communitybridge.org/projects/laminas-project", - "type": "community_bridge" - } - ], - "time": "2020-11-02T03:12:47+00:00" - }, - { - "name": "mikey179/vfsstream", - "version": "v1.6.11", - "dist": { - "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/mikey179/vfsstream/v1.6.11/mikey179-vfsstream-v1.6.11.zip", - "reference": "17d16a85e6c26ce1f3e2fa9ceeacdc2855db1e9f", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.5|^5.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.6.x-dev" - } - }, - "autoload": { - "psr-0": { - "org\\bovigo\\vfs\\": "src/main/php" - } - }, - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Frank Kleine", - "homepage": "http://frankkleine.de/", - "role": "Developer" - } - ], - "description": "Virtual file system to mock the real file system in unit tests.", - "homepage": "http://vfs.bovigo.org/", - "support": { - "issues": "https://github.com/bovigo/vfsStream/issues", - "source": "https://github.com/bovigo/vfsStream/tree/master", - "wiki": "https://github.com/bovigo/vfsStream/wiki" - }, - "time": "2022-02-23T02:02:42+00:00" - }, - { - "name": "mockery/mockery", - "version": "1.4.4", - "dist": { - "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/mockery/mockery/1.4.4/mockery-mockery-1.4.4.zip", - "reference": "e01123a0e847d52d186c5eb4b9bf58b0c6d00346", - "shasum": "" - }, - "require": { - "hamcrest/hamcrest-php": "^2.0.1", - "lib-pcre": ">=7.0", - "php": "^7.3 || ^8.0" - }, - "conflict": { - "phpunit/phpunit": "<8.0" - }, - "require-dev": { - "phpunit/phpunit": "^8.5 || ^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4.x-dev" - } - }, - "autoload": { - "psr-0": { - "Mockery": "library/" - } - }, - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Pádraic Brady", - "email": "padraic.brady@gmail.com", - "homepage": "http://blog.astrumfutura.com" - }, - { - "name": "Dave Marshall", - "email": "dave.marshall@atstsolutions.co.uk", - "homepage": "http://davedevelopment.co.uk" + "name": "Nathanael Esayeas", + "email": "nathanael.esayeas@protonmail.com", + "homepage": "https://github.com/ghostwriter", + "role": "Lead Developer" } ], "description": "Mockery is a simple yet flexible PHP mock object framework", @@ -6388,211 +6036,91 @@ "library", "mock", "mock objects", - "mockery", - "stub", - "test", - "test double", - "testing" - ], - "support": { - "issues": "https://github.com/mockery/mockery/issues", - "source": "https://github.com/mockery/mockery/tree/1.4.4" - }, - "time": "2021-09-13T15:28:59+00:00" - }, - { - "name": "myclabs/deep-copy", - "version": "1.11.1", - "dist": { - "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/myclabs/deep-copy/1.11.1/myclabs-deep-copy-1.11.1.zip", - "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "conflict": { - "doctrine/collections": "<1.6.8", - "doctrine/common": "<2.13.3 || >=3,<3.2.2" - }, - "require-dev": { - "doctrine/collections": "^1.6.8", - "doctrine/common": "^2.13.3 || ^3.2.2", - "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" - }, - "type": "library", - "autoload": { - "files": [ - "src/DeepCopy/deep_copy.php" - ], - "psr-4": { - "DeepCopy\\": "src/DeepCopy/" - } - }, - "license": [ - "MIT" - ], - "description": "Create deep copies (clones) of your objects", - "keywords": [ - "clone", - "copy", - "duplicate", - "object", - "object graph" - ], - "support": { - "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.11.1" - }, - "funding": [ - { - "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", - "type": "tidelift" - } - ], - "time": "2023-03-08T13:26:56+00:00" - }, - { - "name": "olcs/olcs-devtools", - "version": "4.206.21", - "dist": { - "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/OLCS/olcs/olcs-devtools/4.206.21/olcs-olcs-devtools-4.206.21.zip", - "reference": "08058c29491b81313069fc373000d581101fede2", - "shasum": "08058c29491b81313069fc373000d581101fede2" - }, - "require": { - "dms/phpunit-arraysubset-asserts": "^0.3.1", - "dvsa/coding-standards": "^2.0.0", - "elendev/composer-push": "^1.0.3", - "fzaninotto/faker": "^1.9", - "johnkary/phpunit-speedtrap": "^3.2", - "mikey179/vfsstream": "^1.6", - "mockery/mockery": "~1.4.4", - "olcs/olcs-testhelpers": "~4.206.0", - "php": ">=7.4", - "phpmd/phpmd": "^2.11.1", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-doctrine": "^0.12", - "phpstan/phpstan-mockery": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpcov": "8.*", - "phpunit/phpunit": "^9", - "squizlabs/php_codesniffer": "~3.6.2" - }, - "bin": [ - "bin/review", - "bin/composer-install-syms", - "bin/composer-update-syms" - ], - "type": "library", - "extra": { - "nexus-push": { - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/olcs-devtools/" - } - }, - "autoload": { - "psr-4": { - "Devtools\\": "src/" - } + "mockery", + "stub", + "test", + "test double", + "testing" + ], + "support": { + "docs": "https://docs.mockery.io/", + "issues": "https://github.com/mockery/mockery/issues", + "rss": "https://github.com/mockery/mockery/releases.atom", + "security": "https://github.com/mockery/mockery/security/advisories", + "source": "https://github.com/mockery/mockery" }, - "description": "Dev tools", - "time": "2023-06-16T14:43:09+00:00" + "time": "2023-12-10T02:24:34+00:00" }, { - "name": "olcs/olcs-testhelpers", - "version": "4.206.22", - "dist": { - "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/OLCS/olcs/olcs-testhelpers/4.206.22/olcs-olcs-testhelpers-4.206.22.zip", - "reference": "ab4c0103cf90ca52c4340ea776f3349b98931c16", - "shasum": "ab4c0103cf90ca52c4340ea776f3349b98931c16" - }, - "require": { - "elendev/composer-push": "^1.0.3", - "olcs/olcs-laminas": "~2.5.0 || ~3.0.0", - "php": ">=7.4" - }, - "type": "library", - "extra": { - "nexus-push": { - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/olcs-testhelpers" - } - }, - "autoload": { - "psr-4": { - "Olcs\\TestHelpers\\": "src/TestHelpers/" - } + "name": "myclabs/deep-copy", + "version": "1.11.1", + "source": { + "type": "git", + "url": "https://github.com/myclabs/DeepCopy.git", + "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c" }, - "description": "OLCS Test helpers", - "time": "2023-10-18T11:28:11+00:00" - }, - { - "name": "pdepend/pdepend", - "version": "2.16.0", "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/pdepend/pdepend/2.16.0/pdepend-pdepend-2.16.0.zip", - "reference": "8dfc0c46529e2073fa97986552f80646eedac562", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", + "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", "shasum": "" }, "require": { - "php": ">=5.3.7", - "symfony/config": "^2.3.0|^3|^4|^5|^6.0|^7.0", - "symfony/dependency-injection": "^2.3.0|^3|^4|^5|^6.0|^7.0", - "symfony/filesystem": "^2.3.0|^3|^4|^5|^6.0|^7.0", - "symfony/polyfill-mbstring": "^1.19" + "php": "^7.1 || ^8.0" + }, + "conflict": { + "doctrine/collections": "<1.6.8", + "doctrine/common": "<2.13.3 || >=3,<3.2.2" }, "require-dev": { - "easy-doc/easy-doc": "0.0.0|^1.2.3", - "gregwar/rst": "^1.0", - "phpunit/phpunit": "^4.8.36|^5.7.27", - "squizlabs/php_codesniffer": "^2.0.0" + "doctrine/collections": "^1.6.8", + "doctrine/common": "^2.13.3 || ^3.2.2", + "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" }, - "bin": [ - "src/bin/pdepend" - ], "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.x-dev" - } - }, "autoload": { + "files": [ + "src/DeepCopy/deep_copy.php" + ], "psr-4": { - "PDepend\\": "src/main/php/PDepend" + "DeepCopy\\": "src/DeepCopy/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], - "description": "Official version of pdepend to be handled with Composer", + "description": "Create deep copies (clones) of your objects", "keywords": [ - "PHP Depend", - "PHP_Depend", - "dev", - "pdepend" + "clone", + "copy", + "duplicate", + "object", + "object graph" ], "support": { - "issues": "https://github.com/pdepend/pdepend/issues", - "source": "https://github.com/pdepend/pdepend/tree/2.16.0" + "issues": "https://github.com/myclabs/DeepCopy/issues", + "source": "https://github.com/myclabs/DeepCopy/tree/1.11.1" }, "funding": [ { - "url": "https://tidelift.com/funding/github/packagist/pdepend/pdepend", + "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", "type": "tidelift" } ], - "time": "2023-11-29T08:52:35+00:00" + "time": "2023-03-08T13:26:56+00:00" }, { "name": "phar-io/manifest", "version": "2.0.3", + "source": { + "type": "git", + "url": "https://github.com/phar-io/manifest.git", + "reference": "97803eca37d319dfa7826cc2437fc020857acb53" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/phar-io/manifest/2.0.3/phar-io-manifest-2.0.3.zip", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53", "reference": "97803eca37d319dfa7826cc2437fc020857acb53", "shasum": "" }, @@ -6614,6 +6142,7 @@ "src/" ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], @@ -6626,407 +6155,91 @@ { "name": "Sebastian Heuer", "email": "sebastian@phpeople.de", - "role": "Developer" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "Developer" - } - ], - "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", - "support": { - "issues": "https://github.com/phar-io/manifest/issues", - "source": "https://github.com/phar-io/manifest/tree/2.0.3" - }, - "time": "2021-07-20T11:28:43+00:00" - }, - { - "name": "phar-io/version", - "version": "3.2.1", - "dist": { - "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/phar-io/version/3.2.1/phar-io-version-3.2.1.zip", - "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - }, - { - "name": "Sebastian Heuer", - "email": "sebastian@phpeople.de", - "role": "Developer" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "Developer" - } - ], - "description": "Library for handling version information and constraints", - "support": { - "issues": "https://github.com/phar-io/version/issues", - "source": "https://github.com/phar-io/version/tree/3.2.1" - }, - "time": "2022-02-21T01:04:05+00:00" - }, - { - "name": "phpmd/phpmd", - "version": "2.14.1", - "dist": { - "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/phpmd/phpmd/2.14.1/phpmd-phpmd-2.14.1.zip", - "reference": "442fc2c34edcd5198b442d8647c7f0aec3afabe8", - "shasum": "" - }, - "require": { - "composer/xdebug-handler": "^1.0 || ^2.0 || ^3.0", - "ext-xml": "*", - "pdepend/pdepend": "^2.15.1", - "php": ">=5.3.9" - }, - "require-dev": { - "easy-doc/easy-doc": "0.0.0 || ^1.3.2", - "ext-json": "*", - "ext-simplexml": "*", - "gregwar/rst": "^1.0", - "mikey179/vfsstream": "^1.6.8", - "phpunit/phpunit": "^4.8.36 || ^5.7.27", - "squizlabs/php_codesniffer": "^2.9.2 || ^3.7.2" - }, - "bin": [ - "src/bin/phpmd" - ], - "type": "library", - "autoload": { - "psr-0": { - "PHPMD\\": "src/main/php" - } - }, - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Manuel Pichler", - "email": "github@manuel-pichler.de", - "homepage": "https://github.com/manuelpichler", - "role": "Project Founder" - }, - { - "name": "Marc Würth", - "email": "ravage@bluewin.ch", - "homepage": "https://github.com/ravage84", - "role": "Project Maintainer" - }, - { - "name": "Other contributors", - "homepage": "https://github.com/phpmd/phpmd/graphs/contributors", - "role": "Contributors" - } - ], - "description": "PHPMD is a spin-off project of PHP Depend and aims to be a PHP equivalent of the well known Java tool PMD.", - "homepage": "https://phpmd.org/", - "keywords": [ - "dev", - "mess detection", - "mess detector", - "pdepend", - "phpmd", - "pmd" - ], - "support": { - "irc": "irc://irc.freenode.org/phpmd", - "issues": "https://github.com/phpmd/phpmd/issues", - "source": "https://github.com/phpmd/phpmd/tree/2.14.1" - }, - "funding": [ - { - "url": "https://tidelift.com/funding/github/packagist/phpmd/phpmd", - "type": "tidelift" - } - ], - "time": "2023-09-28T13:07:44+00:00" - }, - { - "name": "phpstan/extension-installer", - "version": "1.1.0", - "dist": { - "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/phpstan/extension-installer/1.1.0/phpstan-extension-installer-1.1.0.zip", - "reference": "66c7adc9dfa38b6b5838a9fb728b68a7d8348051", - "shasum": "" - }, - "require": { - "composer-plugin-api": "^1.1 || ^2.0", - "php": "^7.1 || ^8.0", - "phpstan/phpstan": ">=0.11.6" - }, - "require-dev": { - "composer/composer": "^1.8", - "phing/phing": "^2.16.3", - "php-parallel-lint/php-parallel-lint": "^1.2.0", - "phpstan/phpstan-strict-rules": "^0.11 || ^0.12" - }, - "type": "composer-plugin", - "extra": { - "class": "PHPStan\\ExtensionInstaller\\Plugin" - }, - "autoload": { - "psr-4": { - "PHPStan\\ExtensionInstaller\\": "src/" - } - }, - "license": [ - "MIT" - ], - "description": "Composer plugin for automatic installation of PHPStan extensions", - "support": { - "issues": "https://github.com/phpstan/extension-installer/issues", - "source": "https://github.com/phpstan/extension-installer/tree/1.1.0" - }, - "time": "2020-12-13T13:06:13+00:00" - }, - { - "name": "phpstan/phpstan", - "version": "0.12.100", - "dist": { - "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/phpstan/phpstan/0.12.100/phpstan-phpstan-0.12.100.zip", - "reference": "48236ddf823547081b2b153d1cd2994b784328c3", - "shasum": "" - }, - "require": { - "php": "^7.1|^8.0" - }, - "conflict": { - "phpstan/phpstan-shim": "*" - }, - "bin": [ - "phpstan", - "phpstan.phar" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "0.12-dev" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ] - }, - "license": [ - "MIT" - ], - "description": "PHPStan - PHP Static Analysis Tool", - "support": { - "issues": "https://github.com/phpstan/phpstan/issues", - "source": "https://github.com/phpstan/phpstan/tree/0.12.100" - }, - "funding": [ - { - "url": "https://github.com/ondrejmirtes", - "type": "github" - }, - { - "url": "https://github.com/phpstan", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpstan/phpstan", - "type": "tidelift" - } - ], - "time": "2022-11-01T09:52:08+00:00" - }, - { - "name": "phpstan/phpstan-doctrine", - "version": "0.12.44", - "dist": { - "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/phpstan/phpstan-doctrine/0.12.44/phpstan-phpstan-doctrine-0.12.44.zip", - "reference": "5fe9a9b15707d9bc5178fa7cf0899e904d112ccd", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0", - "phpstan/phpstan": "^0.12.85" - }, - "conflict": { - "doctrine/collections": "<1.0", - "doctrine/common": "<2.7", - "doctrine/mongodb-odm": "<1.2", - "doctrine/orm": "<2.5", - "doctrine/persistence": "<1.3" - }, - "require-dev": { - "doctrine/annotations": "^1.11.0", - "doctrine/collections": "^1.6", - "doctrine/common": "^2.7 || ^3.0", - "doctrine/dbal": "^2.13.1", - "doctrine/mongodb-odm": "^1.3 || ^2.1", - "doctrine/orm": "^2.9.1", - "doctrine/persistence": "^1.1 || ^2.0", - "nesbot/carbon": "^2.49", - "php-parallel-lint/php-parallel-lint": "^1.2", - "phpstan/phpstan-phpunit": "^0.12.16", - "phpstan/phpstan-strict-rules": "^0.12.5", - "phpunit/phpunit": "^9.5", - "ramsey/uuid-doctrine": "^1.5.0" - }, - "type": "phpstan-extension", - "extra": { - "branch-alias": { - "dev-master": "0.12-dev" - }, - "phpstan": { - "includes": [ - "extension.neon", - "rules.neon" - ] - } - }, - "autoload": { - "psr-4": { - "PHPStan\\": "src/" - } - }, - "license": [ - "MIT" - ], - "description": "Doctrine extensions for PHPStan", - "support": { - "issues": "https://github.com/phpstan/phpstan-doctrine/issues", - "source": "https://github.com/phpstan/phpstan-doctrine/tree/0.12.44" - }, - "time": "2021-09-01T06:46:16+00:00" - }, - { - "name": "phpstan/phpstan-mockery", - "version": "0.12.14", - "dist": { - "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/phpstan/phpstan-mockery/0.12.14/phpstan-phpstan-mockery-0.12.14.zip", - "reference": "7cc74bf434b3c2190f7f4cfc08c74f7c0b65667f", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0", - "phpstan/phpstan": "^0.12.60" - }, - "require-dev": { - "mockery/mockery": "^1.2.4", - "php-parallel-lint/php-parallel-lint": "^1.2", - "phpstan/phpstan-phpunit": "^0.12.16", - "phpstan/phpstan-strict-rules": "^0.12.5", - "phpunit/phpunit": "^9.5" - }, - "type": "phpstan-extension", - "extra": { - "branch-alias": { - "dev-master": "0.12-dev" + "role": "Developer" }, - "phpstan": { - "includes": [ - "extension.neon" - ] - } - }, - "autoload": { - "psr-4": { - "PHPStan\\": "src/" + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" } - }, - "license": [ - "MIT" ], - "description": "PHPStan Mockery extension", + "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", "support": { - "issues": "https://github.com/phpstan/phpstan-mockery/issues", - "source": "https://github.com/phpstan/phpstan-mockery/tree/0.12.14" + "issues": "https://github.com/phar-io/manifest/issues", + "source": "https://github.com/phar-io/manifest/tree/2.0.3" }, - "time": "2021-06-10T12:12:36+00:00" + "time": "2021-07-20T11:28:43+00:00" }, { - "name": "phpstan/phpstan-phpunit", - "version": "0.12.22", + "name": "phar-io/version", + "version": "3.2.1", + "source": { + "type": "git", + "url": "https://github.com/phar-io/version.git", + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/phpstan/phpstan-phpunit/0.12.22/phpstan-phpstan-phpunit-0.12.22.zip", - "reference": "7c01ef93bf128b4ac8bdad38c54b2a4fd6b0b3cc", + "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74", + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74", "shasum": "" }, "require": { - "php": "^7.1 || ^8.0", - "phpstan/phpstan": "^0.12.92" - }, - "conflict": { - "phpunit/phpunit": "<7.0" - }, - "require-dev": { - "php-parallel-lint/php-parallel-lint": "^1.2", - "phpstan/phpstan-strict-rules": "^0.12.6", - "phpunit/phpunit": "^9.5" - }, - "type": "phpstan-extension", - "extra": { - "branch-alias": { - "dev-master": "0.12-dev" - }, - "phpstan": { - "includes": [ - "extension.neon", - "rules.neon" - ] - } + "php": "^7.2 || ^8.0" }, + "type": "library", "autoload": { - "psr-4": { - "PHPStan\\": "src/" - } + "classmap": [ + "src/" + ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } ], - "description": "PHPUnit extensions and rules for PHPStan", + "description": "Library for handling version information and constraints", "support": { - "issues": "https://github.com/phpstan/phpstan-phpunit/issues", - "source": "https://github.com/phpstan/phpstan-phpunit/tree/0.12.22" + "issues": "https://github.com/phar-io/version/issues", + "source": "https://github.com/phar-io/version/tree/3.2.1" }, - "time": "2021-08-12T10:53:43+00:00" + "time": "2022-02-21T01:04:05+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "9.2.29", + "version": "9.2.30", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "ca2bd87d2f9215904682a9cb9bb37dda98e76089" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/phpunit/php-code-coverage/9.2.29/phpunit-php-code-coverage-9.2.29.zip", - "reference": "6a3a87ac2bbe33b25042753df8195ba4aa534c76", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/ca2bd87d2f9215904682a9cb9bb37dda98e76089", + "reference": "ca2bd87d2f9215904682a9cb9bb37dda98e76089", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", "ext-xmlwriter": "*", - "nikic/php-parser": "^4.15", + "nikic/php-parser": "^4.18 || ^5.0", "php": ">=7.3", "phpunit/php-file-iterator": "^3.0.3", "phpunit/php-text-template": "^2.0.2", @@ -7055,6 +6268,7 @@ "src/" ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], @@ -7075,7 +6289,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.29" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.30" }, "funding": [ { @@ -7083,14 +6297,19 @@ "type": "github" } ], - "time": "2023-09-19T04:57:46+00:00" + "time": "2023-12-22T06:47:57+00:00" }, { "name": "phpunit/php-file-iterator", "version": "3.0.6", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/phpunit/php-file-iterator/3.0.6/phpunit-php-file-iterator-3.0.6.zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", "shasum": "" }, @@ -7111,6 +6330,7 @@ "src/" ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], @@ -7142,9 +6362,14 @@ { "name": "phpunit/php-invoker", "version": "3.1.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-invoker.git", + "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/phpunit/php-invoker/3.1.1/phpunit-php-invoker-3.1.1.zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", "shasum": "" }, @@ -7169,6 +6394,7 @@ "src/" ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], @@ -7199,9 +6425,14 @@ { "name": "phpunit/php-text-template", "version": "2.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/phpunit/php-text-template/2.0.4/phpunit-php-text-template-2.0.4.zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", "shasum": "" }, @@ -7222,6 +6453,7 @@ "src/" ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], @@ -7252,9 +6484,14 @@ { "name": "phpunit/php-timer", "version": "5.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/phpunit/php-timer/5.0.3/phpunit-php-timer-5.0.3.zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", "shasum": "" }, @@ -7275,6 +6512,7 @@ "src/" ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], @@ -7302,69 +6540,18 @@ ], "time": "2020-10-26T13:16:10+00:00" }, - { - "name": "phpunit/phpcov", - "version": "8.2.1", - "dist": { - "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/phpunit/phpcov/8.2.1/phpunit-phpcov-8.2.1.zip", - "reference": "8ec45dde34a84914a0ace355fbd6d7af2242c9a4", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "phpunit/php-code-coverage": "^9.2", - "phpunit/php-file-iterator": "^3.0", - "phpunit/phpunit": "^9.3", - "sebastian/cli-parser": "^1.0", - "sebastian/diff": "^4.0", - "sebastian/version": "^3.0" - }, - "bin": [ - "phpcov" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "8.2-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "CLI frontend for php-code-coverage", - "homepage": "https://github.com/sebastianbergmann/phpcov", - "support": { - "issues": "https://github.com/sebastianbergmann/phpcov/issues", - "source": "https://github.com/sebastianbergmann/phpcov/tree/8.2.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2022-03-24T12:07:05+00:00" - }, { "name": "phpunit/phpunit", - "version": "9.6.14", + "version": "9.6.15", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "05017b80304e0eb3f31d90194a563fd53a6021f1" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/phpunit/phpunit/9.6.14/phpunit-phpunit-9.6.14.zip", - "reference": "43653e6ad7adc22e7b667dd561bf8fcb74c10cf0", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/05017b80304e0eb3f31d90194a563fd53a6021f1", + "reference": "05017b80304e0eb3f31d90194a563fd53a6021f1", "shasum": "" }, "require": { @@ -7382,238 +6569,111 @@ "phpunit/php-code-coverage": "^9.2.28", "phpunit/php-file-iterator": "^3.0.5", "phpunit/php-invoker": "^3.1.1", - "phpunit/php-text-template": "^2.0.3", - "phpunit/php-timer": "^5.0.2", - "sebastian/cli-parser": "^1.0.1", - "sebastian/code-unit": "^1.0.6", - "sebastian/comparator": "^4.0.8", - "sebastian/diff": "^4.0.3", - "sebastian/environment": "^5.1.3", - "sebastian/exporter": "^4.0.5", - "sebastian/global-state": "^5.0.1", - "sebastian/object-enumerator": "^4.0.3", - "sebastian/resource-operations": "^3.0.3", - "sebastian/type": "^3.2", - "sebastian/version": "^3.0.2" - }, - "suggest": { - "ext-soap": "To be able to generate mocks based on WSDL files", - "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" - }, - "bin": [ - "phpunit" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.6-dev" - } - }, - "autoload": { - "files": [ - "src/Framework/Assert/Functions.php" - ], - "classmap": [ - "src/" - ] - }, - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "The PHP Unit Testing framework.", - "homepage": "https://phpunit.de/", - "keywords": [ - "phpunit", - "testing", - "xunit" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/phpunit/issues", - "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.14" - }, - "funding": [ - { - "url": "https://phpunit.de/sponsors.html", - "type": "custom" - }, - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit", - "type": "tidelift" - } - ], - "time": "2023-12-01T06:10:48+00:00" - }, - { - "name": "psr/http-client", - "version": "1.0.3", - "dist": { - "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/psr/http-client/1.0.3/psr-http-client-1.0.3.zip", - "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "psr/http-message": "^1.0 || ^2.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Http\\Client\\": "src/" - } - }, - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Common interface for HTTP clients", - "homepage": "https://github.com/php-fig/http-client", - "keywords": [ - "http", - "http-client", - "psr", - "psr-18" - ], - "support": { - "source": "https://github.com/php-fig/http-client" - }, - "time": "2023-09-23T14:17:50+00:00" - }, - { - "name": "psr/http-factory", - "version": "1.0.2", - "dist": { - "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/psr/http-factory/1.0.2/psr-http-factory-1.0.2.zip", - "reference": "e616d01114759c4c489f93b099585439f795fe35", - "shasum": "" - }, - "require": { - "php": ">=7.0.0", - "psr/http-message": "^1.0 || ^2.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Http\\Message\\": "src/" - } - }, - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Common interfaces for PSR-7 HTTP message factories", - "keywords": [ - "factory", - "http", - "message", - "psr", - "psr-17", - "psr-7", - "request", - "response" - ], - "support": { - "source": "https://github.com/php-fig/http-factory/tree/1.0.2" - }, - "time": "2023-04-10T20:10:41+00:00" - }, - { - "name": "ralouphie/getallheaders", - "version": "3.0.3", - "dist": { - "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/ralouphie/getallheaders/3.0.3/ralouphie-getallheaders-3.0.3.zip", - "reference": "120b605dfeb996808c31b6477290a714d356e822", - "shasum": "" - }, - "require": { - "php": ">=5.6" + "phpunit/php-text-template": "^2.0.3", + "phpunit/php-timer": "^5.0.2", + "sebastian/cli-parser": "^1.0.1", + "sebastian/code-unit": "^1.0.6", + "sebastian/comparator": "^4.0.8", + "sebastian/diff": "^4.0.3", + "sebastian/environment": "^5.1.3", + "sebastian/exporter": "^4.0.5", + "sebastian/global-state": "^5.0.1", + "sebastian/object-enumerator": "^4.0.3", + "sebastian/resource-operations": "^3.0.3", + "sebastian/type": "^3.2", + "sebastian/version": "^3.0.2" }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.1", - "phpunit/phpunit": "^5 || ^6.5" + "suggest": { + "ext-soap": "To be able to generate mocks based on WSDL files", + "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" }, + "bin": [ + "phpunit" + ], "type": "library", + "extra": { + "branch-alias": { + "dev-master": "9.6-dev" + } + }, "autoload": { "files": [ - "src/getallheaders.php" + "src/Framework/Assert/Functions.php" + ], + "classmap": [ + "src/" ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Ralph Khattar", - "email": "ralph.khattar@gmail.com" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" } ], - "description": "A polyfill for getallheaders.", + "description": "The PHP Unit Testing framework.", + "homepage": "https://phpunit.de/", + "keywords": [ + "phpunit", + "testing", + "xunit" + ], "support": { - "issues": "https://github.com/ralouphie/getallheaders/issues", - "source": "https://github.com/ralouphie/getallheaders/tree/develop" + "issues": "https://github.com/sebastianbergmann/phpunit/issues", + "security": "https://github.com/sebastianbergmann/phpunit/security/policy", + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.15" }, - "time": "2019-03-08T08:55:37+00:00" + "funding": [ + { + "url": "https://phpunit.de/sponsors.html", + "type": "custom" + }, + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit", + "type": "tidelift" + } + ], + "time": "2023-12-01T16:55:19+00:00" }, { "name": "san/san-session-toolbar", - "version": "1.0.12", + "version": "0.6.0", + "source": { + "type": "git", + "url": "https://github.com/samsonasik/SanSessionToolbar.git", + "reference": "453fb0557ea45de984fa7702b9e2477aba0a489a" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/san/san-session-toolbar/1.0.12/san-san-session-toolbar-1.0.12.zip", - "reference": "8dcabb057041ee80c258795ca2ce1a736367e8df", + "url": "https://api.github.com/repos/samsonasik/SanSessionToolbar/zipball/453fb0557ea45de984fa7702b9e2477aba0a489a", + "reference": "453fb0557ea45de984fa7702b9e2477aba0a489a", "shasum": "" }, "require": { - "php": "^5.6 || ^7.0", - "zendframework/zend-json": "^2.5 || ^3.0", - "zendframework/zend-session": "^2.8.4" + "php": ">=5.3.23,<8", + "zendframework/zend-debug": "~2.3", + "zendframework/zend-session": "~2.3" }, "require-dev": { "container-interop/container-interop": "^1.1", - "zendframework/zend-developer-tools": "^1.0.0 || ^1.1.0", - "zendframework/zend-i18n": "^2.5", - "zendframework/zend-log": "^2.5", - "zendframework/zend-serializer": "^2.5", - "zendframework/zend-test": "^2.5", - "zendframework/zend-view": "^2.5" + "phpunit/phpcov": "~2.0", + "satooshi/php-coveralls": "^1.0", + "zendframework/zend-developer-tools": "dev-master", + "zendframework/zend-i18n": "~2.3", + "zendframework/zend-log": "~2.3", + "zendframework/zend-serializer": "~2.3", + "zendframework/zend-test": "~2.3" }, "suggest": { - "ext-xdebug": "For better output format of session data, Xdebug should already installed", - "zendframework/zend-mvc-plugin-flashmessenger": "^1.0 for zend-mvc ^3.0 usage to be able to use flashMessenger" + "ext-xdebug": "For better output format of session data, Xdebug should already installed" }, "type": "library", "autoload": { @@ -7621,6 +6681,7 @@ "SanSessionToolbar\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -7632,25 +6693,29 @@ "role": "Developer" } ], - "description": "ZF2/ZF3 Session Toolbar for ZendDeveloperTools ", + "description": "ZF2 Session Toolbar for ZendDeveloperTools ", "homepage": "https://github.com/samsonasik/SanSessionToolbar", "keywords": [ "session", - "zf2", - "zf3" + "zf2" ], "support": { "issues": "https://github.com/samsonasik/SanSessionToolbar/issues", "source": "https://github.com/samsonasik/SanSessionToolbar/tree/master" }, - "time": "2018-01-31T23:17:00+00:00" + "time": "2016-05-04T21:13:28+00:00" }, { "name": "sebastian/cli-parser", "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/cli-parser.git", + "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/sebastian/cli-parser/1.0.1/sebastian-cli-parser-1.0.1.zip", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", "shasum": "" }, @@ -7671,6 +6736,7 @@ "src/" ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], @@ -7698,9 +6764,14 @@ { "name": "sebastian/code-unit", "version": "1.0.8", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit.git", + "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/sebastian/code-unit/1.0.8/sebastian-code-unit-1.0.8.zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", "shasum": "" }, @@ -7721,6 +6792,7 @@ "src/" ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], @@ -7748,9 +6820,14 @@ { "name": "sebastian/code-unit-reverse-lookup", "version": "2.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", + "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/sebastian/code-unit-reverse-lookup/2.0.3/sebastian-code-unit-reverse-lookup-2.0.3.zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", "shasum": "" }, @@ -7771,6 +6848,7 @@ "src/" ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], @@ -7797,9 +6875,14 @@ { "name": "sebastian/comparator", "version": "4.0.8", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "fa0f136dd2334583309d32b62544682ee972b51a" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/sebastian/comparator/4.0.8/sebastian-comparator-4.0.8.zip", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/fa0f136dd2334583309d32b62544682ee972b51a", "reference": "fa0f136dd2334583309d32b62544682ee972b51a", "shasum": "" }, @@ -7822,6 +6905,7 @@ "src/" ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], @@ -7864,15 +6948,20 @@ }, { "name": "sebastian/complexity", - "version": "2.0.2", + "version": "2.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/complexity.git", + "reference": "25f207c40d62b8b7aa32f5ab026c53561964053a" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/sebastian/complexity/2.0.2/sebastian-complexity-2.0.2.zip", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/25f207c40d62b8b7aa32f5ab026c53561964053a", + "reference": "25f207c40d62b8b7aa32f5ab026c53561964053a", "shasum": "" }, "require": { - "nikic/php-parser": "^4.7", + "nikic/php-parser": "^4.18 || ^5.0", "php": ">=7.3" }, "require-dev": { @@ -7889,6 +6978,7 @@ "src/" ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], @@ -7903,7 +6993,7 @@ "homepage": "https://github.com/sebastianbergmann/complexity", "support": { "issues": "https://github.com/sebastianbergmann/complexity/issues", - "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" + "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.3" }, "funding": [ { @@ -7911,14 +7001,19 @@ "type": "github" } ], - "time": "2020-10-26T15:52:27+00:00" + "time": "2023-12-22T06:19:30+00:00" }, { "name": "sebastian/diff", "version": "4.0.5", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "74be17022044ebaaecfdf0c5cd504fc9cd5a7131" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/sebastian/diff/4.0.5/sebastian-diff-4.0.5.zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/74be17022044ebaaecfdf0c5cd504fc9cd5a7131", "reference": "74be17022044ebaaecfdf0c5cd504fc9cd5a7131", "shasum": "" }, @@ -7940,6 +7035,7 @@ "src/" ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], @@ -7976,9 +7072,14 @@ { "name": "sebastian/environment", "version": "5.1.5", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/sebastian/environment/5.1.5/sebastian-environment-5.1.5.zip", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/830c43a844f1f8d5b7a1f6d6076b784454d8b7ed", "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed", "shasum": "" }, @@ -8002,6 +7103,7 @@ "src/" ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], @@ -8033,9 +7135,14 @@ { "name": "sebastian/exporter", "version": "4.0.5", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/sebastian/exporter/4.0.5/sebastian-exporter-4.0.5.zip", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d", "reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d", "shasum": "" }, @@ -8058,6 +7165,7 @@ "src/" ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], @@ -8104,9 +7212,14 @@ { "name": "sebastian/global-state", "version": "5.0.6", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/global-state.git", + "reference": "bde739e7565280bda77be70044ac1047bc007e34" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/sebastian/global-state/5.0.6/sebastian-global-state-5.0.6.zip", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bde739e7565280bda77be70044ac1047bc007e34", "reference": "bde739e7565280bda77be70044ac1047bc007e34", "shasum": "" }, @@ -8133,6 +7246,7 @@ "src/" ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], @@ -8161,15 +7275,20 @@ }, { "name": "sebastian/lines-of-code", - "version": "1.0.3", + "version": "1.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/lines-of-code.git", + "reference": "e1e4a170560925c26d424b6a03aed157e7dcc5c5" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/sebastian/lines-of-code/1.0.3/sebastian-lines-of-code-1.0.3.zip", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/e1e4a170560925c26d424b6a03aed157e7dcc5c5", + "reference": "e1e4a170560925c26d424b6a03aed157e7dcc5c5", "shasum": "" }, "require": { - "nikic/php-parser": "^4.6", + "nikic/php-parser": "^4.18 || ^5.0", "php": ">=7.3" }, "require-dev": { @@ -8186,6 +7305,7 @@ "src/" ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], @@ -8200,7 +7320,7 @@ "homepage": "https://github.com/sebastianbergmann/lines-of-code", "support": { "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.4" }, "funding": [ { @@ -8208,14 +7328,19 @@ "type": "github" } ], - "time": "2020-11-28T06:42:11+00:00" + "time": "2023-12-22T06:20:34+00:00" }, { "name": "sebastian/object-enumerator", "version": "4.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/sebastian/object-enumerator/4.0.4/sebastian-object-enumerator-4.0.4.zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", "shasum": "" }, @@ -8238,6 +7363,7 @@ "src/" ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], @@ -8264,9 +7390,14 @@ { "name": "sebastian/object-reflector", "version": "2.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-reflector.git", + "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/sebastian/object-reflector/2.0.4/sebastian-object-reflector-2.0.4.zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", "shasum": "" }, @@ -8287,6 +7418,7 @@ "src/" ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], @@ -8313,9 +7445,14 @@ { "name": "sebastian/recursion-context", "version": "4.0.5", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/sebastian/recursion-context/4.0.5/sebastian-recursion-context-4.0.5.zip", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1", "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1", "shasum": "" }, @@ -8336,6 +7473,7 @@ "src/" ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], @@ -8370,9 +7508,14 @@ { "name": "sebastian/resource-operations", "version": "3.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/resource-operations.git", + "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/sebastian/resource-operations/3.0.3/sebastian-resource-operations-3.0.3.zip", + "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", "shasum": "" }, @@ -8393,6 +7536,7 @@ "src/" ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], @@ -8419,9 +7563,14 @@ { "name": "sebastian/type", "version": "3.2.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/type.git", + "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/sebastian/type/3.2.1/sebastian-type-3.2.1.zip", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7", "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7", "shasum": "" }, @@ -8442,6 +7591,7 @@ "src/" ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], @@ -8469,9 +7619,14 @@ { "name": "sebastian/version", "version": "3.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "c6c1022351a901512170118436c764e473f6de8c" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/sebastian/version/3.0.2/sebastian-version-3.0.2.zip", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", "reference": "c6c1022351a901512170118436c764e473f6de8c", "shasum": "" }, @@ -8489,6 +7644,7 @@ "src/" ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], @@ -8513,192 +7669,17 @@ ], "time": "2020-09-28T06:39:44+00:00" }, - { - "name": "squizlabs/php_codesniffer", - "version": "3.6.2", - "dist": { - "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/squizlabs/php_codesniffer/3.6.2/squizlabs-php_codesniffer-3.6.2.zip", - "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a", - "shasum": "" - }, - "require": { - "ext-simplexml": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": ">=5.4.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0" - }, - "bin": [ - "bin/phpcs", - "bin/phpcbf" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.x-dev" - } - }, - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Greg Sherwood", - "role": "lead" - } - ], - "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", - "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", - "keywords": [ - "phpcs", - "standards" - ], - "support": { - "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues", - "source": "https://github.com/squizlabs/PHP_CodeSniffer", - "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" - }, - "time": "2021-12-12T21:44:58+00:00" - }, - { - "name": "symfony/config", - "version": "v5.4.31", - "dist": { - "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/symfony/config/v5.4.31/symfony-config-v5.4.31.zip", - "reference": "dd5ea39de228813aba0c23c3a4153da2a4cf3cd9", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/filesystem": "^4.4|^5.0|^6.0", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-php80": "^1.16", - "symfony/polyfill-php81": "^1.22" - }, - "conflict": { - "symfony/finder": "<4.4" - }, - "require-dev": { - "symfony/event-dispatcher": "^4.4|^5.0|^6.0", - "symfony/finder": "^4.4|^5.0|^6.0", - "symfony/messenger": "^4.4|^5.0|^6.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/yaml": "^4.4|^5.0|^6.0" - }, - "suggest": { - "symfony/yaml": "To use the yaml reference dumper" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Config\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Helps you find, load, combine, autofill and validate configuration values of any kind", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/config/tree/v5.4.31" - }, - "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": "2023-11-09T08:22:43+00:00" - }, - { - "name": "symfony/finder", - "version": "v5.4.27", - "dist": { - "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/symfony/finder/v5.4.27/symfony-finder-v5.4.27.zip", - "reference": "ff4bce3c33451e7ec778070e45bd23f74214cd5d", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-php80": "^1.16" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Finder\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Finds files and directories via an intuitive fluent interface", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/finder/tree/v5.4.27" - }, - "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": "2023-07-31T08:02:31+00:00" - }, { "name": "symfony/polyfill-php72", "version": "v1.28.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php72.git", + "reference": "70f4aebd92afca2f865444d30a4d2151c13c3179" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/symfony/polyfill-php72/v1.28.0/symfony-polyfill-php72-v1.28.0.zip", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/70f4aebd92afca2f865444d30a4d2151c13c3179", "reference": "70f4aebd92afca2f865444d30a4d2151c13c3179", "shasum": "" }, @@ -8723,6 +7704,7 @@ "Symfony\\Polyfill\\Php72\\": "" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -8766,9 +7748,14 @@ { "name": "symfony/var-dumper", "version": "v4.4.47", + "source": { + "type": "git", + "url": "https://github.com/symfony/var-dumper.git", + "reference": "1069c7a3fca74578022fab6f81643248d02f8e63" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/symfony/var-dumper/v4.4.47/symfony-var-dumper-v4.4.47.zip", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/1069c7a3fca74578022fab6f81643248d02f8e63", "reference": "1069c7a3fca74578022fab6f81643248d02f8e63", "shasum": "" }, @@ -8808,6 +7795,7 @@ "/Tests/" ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -8849,9 +7837,14 @@ { "name": "theseer/tokenizer", "version": "1.2.2", + "source": { + "type": "git", + "url": "https://github.com/theseer/tokenizer.git", + "reference": "b2ad5003ca10d4ee50a12da31de12a5774ba6b96" + }, "dist": { "type": "zip", - "url": "https://nexus.olcs.dev-dvsacloud.uk/repository/Packagist-Proxy/theseer/tokenizer/1.2.2/theseer-tokenizer-1.2.2.zip", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/b2ad5003ca10d4ee50a12da31de12a5774ba6b96", "reference": "b2ad5003ca10d4ee50a12da31de12a5774ba6b96", "shasum": "" }, @@ -8867,6 +7860,7 @@ "src/" ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], @@ -8889,6 +7883,60 @@ } ], "time": "2023-11-20T00:12:19+00:00" + }, + { + "name": "zendframework/zend-debug", + "version": "2.5.1", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-debug.git", + "reference": "b6f9df59155391ca683c479a0d758f66ef73b3b3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-debug/zipball/b6f9df59155391ca683c479a0d758f66ef73b3b3", + "reference": "b6f9df59155391ca683c479a0d758f66ef73b3b3", + "shasum": "" + }, + "require": { + "php": ">=5.3.23" + }, + "require-dev": { + "fabpot/php-cs-fixer": "1.7.*", + "phpunit/phpunit": "~4.0", + "zendframework/zend-escaper": "2.*" + }, + "suggest": { + "ext/xdebug": "XDebug, for better backtrace output", + "zendframework/zend-escaper": "To support escaped output" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.5-dev", + "dev-develop": "2.6-dev" + } + }, + "autoload": { + "psr-4": { + "Zend\\Debug\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "homepage": "https://github.com/zendframework/zend-debug", + "keywords": [ + "debug", + "zf2" + ], + "support": { + "issues": "https://github.com/zendframework/zend-debug/issues", + "source": "https://github.com/zendframework/zend-debug/tree/release-2.5.0" + }, + "abandoned": true, + "time": "2015-06-03T14:05:35+00:00" } ], "aliases": [], @@ -8897,11 +7945,8 @@ "prefer-stable": true, "prefer-lowest": false, "platform": { - "php": ">=7.4" + "php": "^7.4" }, "platform-dev": [], - "platform-overrides": { - "php": "7.4.33" - }, "plugin-api-version": "2.6.0" } diff --git a/phpcs.xml.dist b/phpcs.xml.dist new file mode 100644 index 000000000..e9328f469 --- /dev/null +++ b/phpcs.xml.dist @@ -0,0 +1,9 @@ + + + ./module + ./test + + */vendor/* + + + diff --git a/phpstan.neon.dist b/phpstan.neon.dist new file mode 100644 index 000000000..afa6c17b4 --- /dev/null +++ b/phpstan.neon.dist @@ -0,0 +1,5 @@ +parameters: + level: 1 + paths: + - module + - test diff --git a/phpunit.xml.dist b/phpunit.xml.dist new file mode 100644 index 000000000..14eafd084 --- /dev/null +++ b/phpunit.xml.dist @@ -0,0 +1,19 @@ + + + + + + + + test + + + + + + + diff --git a/psalm.xml.dist b/psalm.xml.dist new file mode 100644 index 000000000..be5908bf0 --- /dev/null +++ b/psalm.xml.dist @@ -0,0 +1,13 @@ + + + + + + diff --git a/test/Bootstrap.php b/test/Bootstrap.php deleted file mode 100644 index b023f96a9..000000000 --- a/test/Bootstrap.php +++ /dev/null @@ -1,106 +0,0 @@ -addPsr4('OlcsTest\\', __DIR__ . '/Olcs/src'); - - // Grab the application config - $config = include dirname(__DIR__) . '/config/application.config.php'; - - self::$config = $config; - - // call this once to load module config - self::getRealServiceManager(); - - self::setupLogger(); - } - - public static function setupLogger() - { - $logWriter = new \Laminas\Log\Writer\Mock(); - $logger = new \Laminas\Log\Logger(); - $logger->addWriter($logWriter); - - Logger::setLogger($logger); - } - - /** - * Changed this method to return a mock - * - * @return \Laminas\ServiceManager\ServiceManager - */ - public static function getServiceManager() - { - $sm = m::mock('\Laminas\ServiceManager\ServiceManager') - ->makePartial() - ->setAllowOverride(true); - - // inject a real string helper - $sm->setService('Helper\String', new \Common\Service\Helper\StringHelperService()); - - return $sm; - } - - /** - * Added this method for backwards compatibility - * - * @return \Laminas\ServiceManager\ServiceManager - */ - public static function getRealServiceManager() - { - $serviceManager = new ServiceManager(new ServiceManagerConfig()); - $serviceManager->setService('ApplicationConfig', self::$config); - $serviceManager->get('ModuleManager')->loadModules(); - $serviceManager->setAllowOverride(true); - - $mockTranslationLoader = m::mock(TranslationLoader::class); - $mockTranslationLoader->shouldReceive('load')->andReturn(['default' => ['en_GB' => []]]); - $mockTranslationLoader->shouldReceive('loadReplacements')->andReturn([]); - $serviceManager->setService(TranslationLoader::class, $mockTranslationLoader); - - $pluginManager = new LoaderPluginManager($serviceManager); - $pluginManager->setService(TranslationLoader::class, $mockTranslationLoader); - $serviceManager->setService('TranslatorPluginManager', $pluginManager); - - // Mess up the backend, so any real rest calls will fail - $config = $serviceManager->get('Config'); - $config['service_api_mapping']['endpoints']['backend'] = 'http://some-fake-backend/'; - $serviceManager->setService('Config', $config); - - return $serviceManager; - } - - protected static function initAutoloader() - { - require('init_autoloader.php'); - - return $loader; - } -} - -Bootstrap::init(); diff --git a/test/Olcs/src/Controller/Auth/LoginControllerFactoryTest.php b/test/Olcs/src/Controller/Auth/LoginControllerFactoryTest.php index 8704b8a96..8946de34c 100644 --- a/test/Olcs/src/Controller/Auth/LoginControllerFactoryTest.php +++ b/test/Olcs/src/Controller/Auth/LoginControllerFactoryTest.php @@ -15,8 +15,8 @@ use Olcs\Auth\Adapter\SelfserveCommandAdapter; use Olcs\Controller\Auth\LoginController; use Olcs\Controller\Auth\LoginControllerFactory; -use Olcs\TestHelpers\MockeryTestCase; -use Olcs\TestHelpers\Service\MocksServicesTrait; +use Mockery\Adapter\Phpunit\MockeryTestCase; +use Common\Test\MocksServicesTrait; use Mockery as m; class LoginControllerFactoryTest extends MockeryTestCase diff --git a/test/Olcs/src/Controller/Auth/LoginControllerTest.php b/test/Olcs/src/Controller/Auth/LoginControllerTest.php index e08cd97f9..26e4cf2a9 100644 --- a/test/Olcs/src/Controller/Auth/LoginControllerTest.php +++ b/test/Olcs/src/Controller/Auth/LoginControllerTest.php @@ -25,8 +25,9 @@ use Olcs\Auth\Adapter\SelfserveCommandAdapter; use Olcs\Controller\Auth\LoginController; use Olcs\Form\Model\Form\Auth\Login; -use Olcs\TestHelpers\MockeryTestCase; -use Olcs\TestHelpers\Service\MocksServicesTrait; +use Mockery\Adapter\Phpunit\MockeryTestCase; +use Common\Test\MocksServicesTrait; +use Olcs\Logging\Log\Logger; class LoginControllerTest extends MockeryTestCase { @@ -75,6 +76,7 @@ class LoginControllerTest extends MockeryTestCase protected function setUp(): void { $this->setUpServiceManager(); + self::setupLogger(); } /** @@ -651,4 +653,13 @@ protected function postRequest(array $data = null, array $query = null): Request $request->setUri('https://localhost'); return $request; } + + private static function setupLogger() + { + $logWriter = new \Laminas\Log\Writer\Mock(); + $logger = new \Laminas\Log\Logger(); + $logger->addWriter($logWriter); + + Logger::setLogger($logger); + } } diff --git a/test/Olcs/src/Controller/DashboardControllerTest.php b/test/Olcs/src/Controller/DashboardControllerTest.php index 03a4ba7e8..d8348697f 100644 --- a/test/Olcs/src/Controller/DashboardControllerTest.php +++ b/test/Olcs/src/Controller/DashboardControllerTest.php @@ -15,7 +15,7 @@ use Common\RefData; use Dvsa\Olcs\Transfer\Query\Organisation\Dashboard as DashboardQry; use Olcs\Service\Processing\DashboardProcessingService; -use Olcs\TestHelpers\Controller\Traits\ControllerTestTrait; +use OlcsTest\Controller\Traits\ControllerTestTrait; use Olcs\Mvc\Controller\Plugin\Placeholder; use Common\Service\Cqrs\Response as QueryResponse; use ReflectionClass; diff --git a/test/Olcs/src/Controller/Entity/ViewControllerTest.php b/test/Olcs/src/Controller/Entity/ViewControllerTest.php index a38ada231..2e781263e 100644 --- a/test/Olcs/src/Controller/Entity/ViewControllerTest.php +++ b/test/Olcs/src/Controller/Entity/ViewControllerTest.php @@ -10,7 +10,7 @@ use Mockery as m; use Mockery\Adapter\Phpunit\MockeryTestCase; use Olcs\Controller\Entity\ViewController; -use Olcs\TestHelpers\ControllerPluginManagerHelper; +use OlcsTest\TestHelpers\ControllerPluginManagerHelper; use Laminas\View\Model\ViewModel; use ZfcRbac\Mvc\Controller\Plugin\IsGranted; diff --git a/test/Olcs/src/Controller/Lva/AbstractLvaControllerTestCase.php b/test/Olcs/src/Controller/Lva/AbstractLvaControllerTestCase.php index 9e76e3ab7..8d3683cf7 100644 --- a/test/Olcs/src/Controller/Lva/AbstractLvaControllerTestCase.php +++ b/test/Olcs/src/Controller/Lva/AbstractLvaControllerTestCase.php @@ -4,7 +4,7 @@ use OlcsTest\Bootstrap; use Mockery\Adapter\Phpunit\MockeryTestCase; -use Olcs\TestHelpers\Controller\Traits\ControllerTestTrait; +use OlcsTest\Controller\Traits\ControllerTestTrait; /** * Helper functions for testing LVA controllers diff --git a/test/Olcs/src/Controller/SessionTimeoutControllerTest.php b/test/Olcs/src/Controller/SessionTimeoutControllerTest.php index 4e4de03a7..c86c8d13f 100644 --- a/test/Olcs/src/Controller/SessionTimeoutControllerTest.php +++ b/test/Olcs/src/Controller/SessionTimeoutControllerTest.php @@ -7,7 +7,9 @@ use Common\Rbac\JWTIdentityProvider; use Common\Rbac\PidIdentityProvider; use Common\Rbac\User; -use Common\Test\MockeryTestCase; +use Common\Test\MocksServicesTrait; +use Laminas\ServiceManager\ServiceManager; +use Mockery\Adapter\Phpunit\MockeryTestCase; use Dvsa\Olcs\Auth\Service\Auth\CookieService; use Dvsa\Olcs\Auth\Service\Auth\LogoutService; use Laminas\Http\Request; @@ -21,9 +23,9 @@ use Laminas\Uri\Http; use Laminas\View\Model\ViewModel; use Mockery as m; +use Mockery\MockInterface; use Olcs\Controller\SessionTimeoutController; use Olcs\Controller\SessionTimeoutControllerFactory; -use Olcs\TestHelpers\Service\MocksServicesTrait; use ZfcRbac\Identity\IdentityProviderInterface; /** @@ -37,13 +39,27 @@ class SessionTimeoutControllerTest extends MockeryTestCase private $identityProviderClass = PidIdentityProvider::class; + /** + * @var ServiceManager + */ + private $serviceManager; + + /** + * @return ServiceManager + */ + protected function serviceManager(): ServiceManager + { + assert(null !== $this->serviceManager, 'Expected service manager to be set. Hint: You may need to call `setUpServiceManager` before trying to get a service manager'); + return $this->serviceManager; + } + /** * @test */ public function indexAction_IsCallable() { // Setup - $serviceLocator = $this->setUpServiceLocator(); + $serviceLocator = $this->setUpServiceManager(); $sut = $this->setUpSut($serviceLocator, new Request()); @@ -51,6 +67,30 @@ public function indexAction_IsCallable() $this->assertTrue(method_exists($sut, 'indexAction') && is_callable([$sut, 'indexAction'])); } + /** + * @return ServiceManager + */ + protected function setUpServiceManager(): ServiceManager + { + $this->serviceManager = new ServiceManager(); + $this->serviceManager->setAllowOverride(true); + $services = $this->setUpDefaultServices($this->serviceManager); + + // Maintain support for deprecated way of registering services via an array of services. Instead, services + // should be registered by calling the available setter methods on the ServiceManager instance. + if (is_array($services)) { + foreach ($services as $serviceName => $service) { + $this->serviceManager->setService($serviceName, $service); + } + } + + // Set controller plugin manager to the main service manager so that all services can be resolved from the one + // service manager instance. + $this->serviceManager->setService('ControllerPluginManager', $this->serviceManager); + + return $this->serviceManager; + } + /** * @test * @depends indexAction_IsCallable @@ -286,6 +326,18 @@ protected function setUpIdentity(string $identityProvider): m\MockInterface return $currentUser; } + protected function getMockServiceWithName(string $class, string $serviceName): MockInterface + { + if (!$this->serviceManager->has($serviceName)) { + $this->serviceManager->setService( + $serviceName, + $this->setUpMockService($class) + ); + } + + return $this->serviceManager->get($serviceName); + } + protected function setUpIdentityWithClearSession(string $identityProvider): void { $identity = $this->setUpMockService(User::class); diff --git a/test/Olcs/src/Controller/Traits/ControllerTestTrait.php b/test/Olcs/src/Controller/Traits/ControllerTestTrait.php new file mode 100644 index 000000000..c34b6f378 --- /dev/null +++ b/test/Olcs/src/Controller/Traits/ControllerTestTrait.php @@ -0,0 +1,176 @@ + + */ +trait ControllerTestTrait +{ + protected $sut; + protected $request; + protected $form; + protected $view; + protected $formHelper; + protected $services = []; + + protected function mockController($className, array $constructorParams = []) + { + $this->request = m::mock('\Laminas\Http\Request')->makePartial(); + + // If constructor params are provided, pass them to the mock, otherwise mock without them + if (!empty($constructorParams)) { + $this->sut = m::mock($className, $constructorParams) + ->makePartial() + ->shouldAllowMockingProtectedMethods(); + } else { + $this->sut = m::mock($className) + ->makePartial() + ->shouldAllowMockingProtectedMethods(); + } + + $this->sut + ->shouldReceive('getRequest') + ->andReturn($this->request); + } + + protected function mockRender() + { + $this->sut->shouldReceive('render') + ->once() + ->andReturnUsing( + function ($view, $form = null) { + + /** + * assign the view variable so we can interrogate it later + */ + $this->view = $view; + + /* + * but also return it, since that's a closer simulation + * of what 'render' would normally do + */ + + return $this->view; + } + ); + + return $this->sut; + } + + protected function setPost($data = []) + { + $this->request + ->shouldReceive('isPost') + ->andReturn(true) + ->shouldReceive('getPost') + ->andReturn($data); + } + + protected function shouldRemoveElements($form, $elements) + { + $helper = $this->mockFormHelper; + foreach ($elements as $e) { + $helper->shouldReceive('remove') + ->with($form, $e) + ->andReturn($helper); + } + } + + protected function createMockForm($formName) + { + $mockForm = m::mock('\Common\Form\Form'); + + $formHelper = $this->getMockFormHelper(); + + $formHelper + ->shouldReceive('createForm') + ->with($formName) + ->andReturn($mockForm) + ->shouldReceive('createFormWithRequest') + ->with($formName, $this->request) + ->andReturn($mockForm); + + return $mockForm; + } + + protected function getMockFormHelper() + { + if ($this->formHelper === null) { + $this->formHelper = m::mock('\Common\Service\Helper\FormHelperService'); + $this->setService('Helper\Form', $this->formHelper); + } + return $this->formHelper; + } + + /** + * @param string $class expected Command class name + * @param array $expectedDtoData + * @param array $result to be returned by $response->getResult() + * @param boolean $ok to be returned by $response->isOk() + * @param int $times call count + */ + protected function expectCommand($class, array $expectedDtoData, array $result, $ok = true, $times = 1) + { + return $this->mockCommandOrQueryCall('handleCommand', $class, $expectedDtoData, $result, $ok, $times); + } + + /** + * @param string $class expected Query class name + * @param array $expectedDtoData + * @param array $result to be returned by $response->getResult() + * @param boolean $ok to be returned by $response->isOk() + * @param int $times call count + */ + protected function expectQuery($class, array $expectedDtoData, array $result, $ok = true, $times = 1) + { + return $this->mockCommandOrQueryCall('handleQuery', $class, $expectedDtoData, $result, $ok, $times); + } + + /** + * @param string $method controller/plugin method to mock 'handleQuery'|'handleCommand' + * @param string $class expected Query/Command class name + * @param array $expectedDtoData + * @param array $result to be returned by $response->getResult() + * @param boolean $ok to be returned by $response->isOk() + * @param int $times call count + */ + private function mockCommandOrQueryCall( + $method, + $class, + array $expectedDtoData, + array $result, + $ok = true, + $times = 1 + ) { + $response = m::mock() + ->shouldReceive('isOk') + ->andReturn($ok) + ->shouldReceive('isForbidden') + ->andReturn(false) + ->shouldReceive('getResult') + ->andReturn($result) + ->getMock(); + + $this->sut + ->shouldReceive($method) + ->with( + m::on( + function ($cmd) use ($expectedDtoData, $class) { + $matched = ( + is_a($cmd, $class) + && + $cmd->getArrayCopy() == $expectedDtoData + ); + return $matched; + } + ) + ) + ->times($times) + ->andReturn($response); + } +} diff --git a/test/Olcs/src/Form/Model/Form/BusRegApplicationsFilterFormTest.php b/test/Olcs/src/Form/Model/Form/BusRegApplicationsFilterFormTest.php index 40f2e853e..39e26d5b0 100644 --- a/test/Olcs/src/Form/Model/Form/BusRegApplicationsFilterFormTest.php +++ b/test/Olcs/src/Form/Model/Form/BusRegApplicationsFilterFormTest.php @@ -2,7 +2,7 @@ namespace OlcsTest\Form\Model\Form; -use Olcs\TestHelpers\FormTester\AbstractFormValidationTestCase; +use OlcsTest\TestHelpers\AbstractFormValidationTestCase; /** * Class BusRegApplicationsFilterFormTest diff --git a/test/Olcs/src/Form/Model/Form/BusRegApplicationsOperatorFilterFormTest.php b/test/Olcs/src/Form/Model/Form/BusRegApplicationsOperatorFilterFormTest.php index f52b7da17..ec833ed87 100644 --- a/test/Olcs/src/Form/Model/Form/BusRegApplicationsOperatorFilterFormTest.php +++ b/test/Olcs/src/Form/Model/Form/BusRegApplicationsOperatorFilterFormTest.php @@ -2,7 +2,7 @@ namespace OlcsTest\Form\Model\Form; -use Olcs\TestHelpers\FormTester\AbstractFormValidationTestCase; +use OlcsTest\TestHelpers\AbstractFormValidationTestCase; /** * Class BusRegApplicationsOperatorFilterFormTest diff --git a/test/Olcs/src/Form/Model/Form/BusRegBrowseFormTest.php b/test/Olcs/src/Form/Model/Form/BusRegBrowseFormTest.php index c856cd57b..e04dd6b69 100644 --- a/test/Olcs/src/Form/Model/Form/BusRegBrowseFormTest.php +++ b/test/Olcs/src/Form/Model/Form/BusRegBrowseFormTest.php @@ -2,7 +2,7 @@ namespace OlcsTest\Form\Model\Form; -use Olcs\TestHelpers\FormTester\AbstractFormValidationTestCase; +use OlcsTest\TestHelpers\AbstractFormValidationTestCase; /** * Class BusRegBrowseFormTest diff --git a/test/Olcs/src/Form/Model/Form/BusRegRegistrationsFilterFormTest.php b/test/Olcs/src/Form/Model/Form/BusRegRegistrationsFilterFormTest.php index 6f1e60f6b..1ab0b62c3 100644 --- a/test/Olcs/src/Form/Model/Form/BusRegRegistrationsFilterFormTest.php +++ b/test/Olcs/src/Form/Model/Form/BusRegRegistrationsFilterFormTest.php @@ -2,7 +2,7 @@ namespace OlcsTest\Form\Model\Form; -use Olcs\TestHelpers\FormTester\AbstractFormValidationTestCase; +use OlcsTest\TestHelpers\AbstractFormValidationTestCase; /** * Class BusRegRegistrationsFilterFormTest diff --git a/test/Olcs/src/Form/Model/Form/EbsrPackUploadTest.php b/test/Olcs/src/Form/Model/Form/EbsrPackUploadTest.php index 30d236591..4ed83f3ff 100644 --- a/test/Olcs/src/Form/Model/Form/EbsrPackUploadTest.php +++ b/test/Olcs/src/Form/Model/Form/EbsrPackUploadTest.php @@ -2,7 +2,7 @@ namespace OlcsTest\Form\Model\Form; -use Olcs\TestHelpers\FormTester\AbstractFormValidationTestCase; +use OlcsTest\TestHelpers\AbstractFormValidationTestCase; /** * Class EbsrPackUploadTest diff --git a/test/Olcs/src/Form/Model/Form/FeePaymentTest.php b/test/Olcs/src/Form/Model/Form/FeePaymentTest.php index 3061b5a27..dd62ed076 100644 --- a/test/Olcs/src/Form/Model/Form/FeePaymentTest.php +++ b/test/Olcs/src/Form/Model/Form/FeePaymentTest.php @@ -2,7 +2,7 @@ namespace OlcsTest\Form\Model\Form; -use Olcs\TestHelpers\FormTester\AbstractFormValidationTestCase; +use OlcsTest\TestHelpers\AbstractFormValidationTestCase; /** * Class FeePaymentTest diff --git a/test/Olcs/src/Form/Model/Form/Lva/AddGoodsVehicleTest.php b/test/Olcs/src/Form/Model/Form/Lva/AddGoodsVehicleTest.php index 1b62e738e..b4ba624ad 100644 --- a/test/Olcs/src/Form/Model/Form/Lva/AddGoodsVehicleTest.php +++ b/test/Olcs/src/Form/Model/Form/Lva/AddGoodsVehicleTest.php @@ -2,7 +2,7 @@ namespace OlcsTest\Form\Model\Form\Lva; -use Olcs\TestHelpers\FormTester\AbstractFormValidationTestCase; +use OlcsTest\TestHelpers\AbstractFormValidationTestCase; /** * Class AddGoodsVehicleTest diff --git a/test/Olcs/src/Form/Model/Form/Lva/ApplicationUndertakingsTest.php b/test/Olcs/src/Form/Model/Form/Lva/ApplicationUndertakingsTest.php index 33a1a93e3..539879f4e 100644 --- a/test/Olcs/src/Form/Model/Form/Lva/ApplicationUndertakingsTest.php +++ b/test/Olcs/src/Form/Model/Form/Lva/ApplicationUndertakingsTest.php @@ -2,7 +2,7 @@ namespace OlcsTest\Form\Model\Form\Lva; -use Olcs\TestHelpers\FormTester\AbstractFormValidationTestCase; +use OlcsTest\TestHelpers\AbstractFormValidationTestCase; /** * Class ApplicationUndertakingsTest diff --git a/test/Olcs/src/Form/Model/Form/Lva/EditGoodsVehicleTest.php b/test/Olcs/src/Form/Model/Form/Lva/EditGoodsVehicleTest.php index 3144d97d0..2cdf5f0dd 100644 --- a/test/Olcs/src/Form/Model/Form/Lva/EditGoodsVehicleTest.php +++ b/test/Olcs/src/Form/Model/Form/Lva/EditGoodsVehicleTest.php @@ -2,7 +2,7 @@ namespace OlcsTest\Form\Model\Form\Lva; -use Olcs\TestHelpers\FormTester\AbstractFormValidationTestCase; +use OlcsTest\TestHelpers\AbstractFormValidationTestCase; /** * Class EditGoodsVehicleTest diff --git a/test/Olcs/src/Form/Model/Form/Lva/NewTmUserTest.php b/test/Olcs/src/Form/Model/Form/Lva/NewTmUserTest.php index 5ad1337a4..a51d4adc7 100644 --- a/test/Olcs/src/Form/Model/Form/Lva/NewTmUserTest.php +++ b/test/Olcs/src/Form/Model/Form/Lva/NewTmUserTest.php @@ -2,7 +2,7 @@ namespace OlcsTest\Form\Model\Form\Lva; -use Olcs\TestHelpers\FormTester\AbstractFormValidationTestCase; +use OlcsTest\TestHelpers\AbstractFormValidationTestCase; /** * Class NewTmUserTest diff --git a/test/Olcs/src/Form/Model/Form/Lva/VariationUndertakingsTest.php b/test/Olcs/src/Form/Model/Form/Lva/VariationUndertakingsTest.php index 453f96619..26c8af5bb 100644 --- a/test/Olcs/src/Form/Model/Form/Lva/VariationUndertakingsTest.php +++ b/test/Olcs/src/Form/Model/Form/Lva/VariationUndertakingsTest.php @@ -2,7 +2,7 @@ namespace OlcsTest\Form\Model\Form\Lva; -use Olcs\TestHelpers\FormTester\AbstractFormValidationTestCase; +use OlcsTest\TestHelpers\AbstractFormValidationTestCase; /** * Class VariationUndertakingsTest diff --git a/test/Olcs/src/Form/Model/Form/MyDetailsTest.php b/test/Olcs/src/Form/Model/Form/MyDetailsTest.php index c7c11661c..b5c8b515e 100644 --- a/test/Olcs/src/Form/Model/Form/MyDetailsTest.php +++ b/test/Olcs/src/Form/Model/Form/MyDetailsTest.php @@ -2,7 +2,7 @@ namespace OlcsTest\Form\Model\Form; -use Olcs\TestHelpers\FormTester\AbstractFormValidationTestCase; +use OlcsTest\TestHelpers\AbstractFormValidationTestCase; /** * Class MyDetailsTest diff --git a/test/Olcs/src/Form/Model/Form/SearchFilterTest.php b/test/Olcs/src/Form/Model/Form/SearchFilterTest.php index a98b1878c..3229cd726 100644 --- a/test/Olcs/src/Form/Model/Form/SearchFilterTest.php +++ b/test/Olcs/src/Form/Model/Form/SearchFilterTest.php @@ -2,7 +2,7 @@ namespace OlcsTest\Form\Model\Form; -use Olcs\TestHelpers\FormTester\AbstractFormValidationTestCase; +use OlcsTest\TestHelpers\AbstractFormValidationTestCase; /** * Class SearchFilterTest diff --git a/test/Olcs/src/Form/Model/Form/SearchOperatorTest.php b/test/Olcs/src/Form/Model/Form/SearchOperatorTest.php index 5e4e94286..e768f5e07 100644 --- a/test/Olcs/src/Form/Model/Form/SearchOperatorTest.php +++ b/test/Olcs/src/Form/Model/Form/SearchOperatorTest.php @@ -2,7 +2,7 @@ namespace OlcsTest\Form\Model\Form; -use Olcs\TestHelpers\FormTester\AbstractFormValidationTestCase; +use OlcsTest\TestHelpers\AbstractFormValidationTestCase; /** * Class SearchOperatorTest diff --git a/test/Olcs/src/Form/Model/Form/SimpleSearchTest.php b/test/Olcs/src/Form/Model/Form/SimpleSearchTest.php index 0a3925bb5..561b9109f 100644 --- a/test/Olcs/src/Form/Model/Form/SimpleSearchTest.php +++ b/test/Olcs/src/Form/Model/Form/SimpleSearchTest.php @@ -2,7 +2,7 @@ namespace OlcsTest\Form\Model\Form; -use Olcs\TestHelpers\FormTester\AbstractFormValidationTestCase; +use OlcsTest\TestHelpers\AbstractFormValidationTestCase; /** * Class SimpleSearchTest diff --git a/test/Olcs/src/Form/Model/Form/Surrender/CurrentDiscsTest.php b/test/Olcs/src/Form/Model/Form/Surrender/CurrentDiscsTest.php index 5f4b610a5..4c8fc79f0 100644 --- a/test/Olcs/src/Form/Model/Form/Surrender/CurrentDiscsTest.php +++ b/test/Olcs/src/Form/Model/Form/Surrender/CurrentDiscsTest.php @@ -4,7 +4,7 @@ use Common\Form\Elements\Custom\OlcsCheckbox; use Common\Form\Elements\Types\HtmlTranslated; -use Olcs\TestHelpers\FormTester\AbstractFormValidationTestCase; +use OlcsTest\TestHelpers\AbstractFormValidationTestCase; use Olcs\Form\Model\Form\Surrender\CurrentDiscs\CurrentDiscs; use Laminas\Form\Element\Button; use Laminas\Form\Element\Checkbox; diff --git a/test/Olcs/src/Form/Model/Form/Surrender/OperatorLicenceTest.php b/test/Olcs/src/Form/Model/Form/Surrender/OperatorLicenceTest.php index 14ae95bf6..665fa72f9 100644 --- a/test/Olcs/src/Form/Model/Form/Surrender/OperatorLicenceTest.php +++ b/test/Olcs/src/Form/Model/Form/Surrender/OperatorLicenceTest.php @@ -5,7 +5,7 @@ use Common\Form\Elements\InputFilters\ActionButton; use Common\Form\Elements\Types\Radio; use Common\Form\Elements\Types\HtmlTranslated; -use Olcs\TestHelpers\FormTester\AbstractFormValidationTestCase; +use OlcsTest\TestHelpers\AbstractFormValidationTestCase; use Laminas\Form\Element\Button; use Laminas\Form\Element\Textarea; diff --git a/test/Olcs/src/Form/Model/Form/TransportManagerApplicationResendTest.php b/test/Olcs/src/Form/Model/Form/TransportManagerApplicationResendTest.php index d86d85592..e31ff1fe8 100644 --- a/test/Olcs/src/Form/Model/Form/TransportManagerApplicationResendTest.php +++ b/test/Olcs/src/Form/Model/Form/TransportManagerApplicationResendTest.php @@ -2,7 +2,7 @@ namespace OlcsTest\Form\Model\Form; -use Olcs\TestHelpers\FormTester\AbstractFormValidationTestCase; +use OlcsTest\TestHelpers\AbstractFormValidationTestCase; /** * Class TransportManagerApplicationResendTest diff --git a/test/Olcs/src/Form/Model/Form/UserForgotUsernameTest.php b/test/Olcs/src/Form/Model/Form/UserForgotUsernameTest.php index f0d0930a5..662de75cf 100644 --- a/test/Olcs/src/Form/Model/Form/UserForgotUsernameTest.php +++ b/test/Olcs/src/Form/Model/Form/UserForgotUsernameTest.php @@ -2,7 +2,7 @@ namespace OlcsTest\Form\Model\Form; -use Olcs\TestHelpers\FormTester\AbstractFormValidationTestCase; +use OlcsTest\TestHelpers\AbstractFormValidationTestCase; /** * Class UserForgotUsernameTest diff --git a/test/Olcs/src/Form/Model/Form/UserRegistrationAddressTest.php b/test/Olcs/src/Form/Model/Form/UserRegistrationAddressTest.php index 7acfdfb44..187ba165c 100644 --- a/test/Olcs/src/Form/Model/Form/UserRegistrationAddressTest.php +++ b/test/Olcs/src/Form/Model/Form/UserRegistrationAddressTest.php @@ -2,7 +2,7 @@ namespace OlcsTest\Form\Model\Form; -use Olcs\TestHelpers\FormTester\AbstractFormValidationTestCase; +use OlcsTest\TestHelpers\AbstractFormValidationTestCase; /** * Class UserRegistrationAddressTest diff --git a/test/Olcs/src/Form/Model/Form/UserRegistrationTest.php b/test/Olcs/src/Form/Model/Form/UserRegistrationTest.php index 9ba4c3d57..e49b2cd62 100644 --- a/test/Olcs/src/Form/Model/Form/UserRegistrationTest.php +++ b/test/Olcs/src/Form/Model/Form/UserRegistrationTest.php @@ -2,7 +2,7 @@ namespace OlcsTest\Form\Model\Form; -use Olcs\TestHelpers\FormTester\AbstractFormValidationTestCase; +use OlcsTest\TestHelpers\AbstractFormValidationTestCase; /** * Class UserRegistrationTest diff --git a/test/Olcs/src/Form/Model/Form/UserTest.php b/test/Olcs/src/Form/Model/Form/UserTest.php index baf9bcbb9..1539ec3ae 100644 --- a/test/Olcs/src/Form/Model/Form/UserTest.php +++ b/test/Olcs/src/Form/Model/Form/UserTest.php @@ -2,7 +2,7 @@ namespace OlcsTest\Form\Model\Form; -use Olcs\TestHelpers\FormTester\AbstractFormValidationTestCase; +use OlcsTest\TestHelpers\AbstractFormValidationTestCase; /** * Class UserTest diff --git a/test/Olcs/src/Form/Model/Form/Vehicle/OCRSOptInTest.php b/test/Olcs/src/Form/Model/Form/Vehicle/OCRSOptInTest.php index aeb8c298c..50ee77258 100644 --- a/test/Olcs/src/Form/Model/Form/Vehicle/OCRSOptInTest.php +++ b/test/Olcs/src/Form/Model/Form/Vehicle/OCRSOptInTest.php @@ -2,7 +2,7 @@ namespace OlcsTest\Form\Model\Form; -use Olcs\TestHelpers\FormTester\AbstractFormValidationTestCase; +use OlcsTest\TestHelpers\AbstractFormValidationTestCase; /** * Class OCRSOptInTest diff --git a/test/Olcs/src/FormService/Form/Lva/AbstractOverviewSubmissionTest.php b/test/Olcs/src/FormService/Form/Lva/AbstractOverviewSubmissionTest.php index 635c53305..0da9274c1 100644 --- a/test/Olcs/src/FormService/Form/Lva/AbstractOverviewSubmissionTest.php +++ b/test/Olcs/src/FormService/Form/Lva/AbstractOverviewSubmissionTest.php @@ -2,10 +2,16 @@ namespace OlcsTest\FormService\Form\Lva; +use Common\Form\Element\DynamicMultiCheckbox; +use Common\Form\Element\DynamicRadio; +use Common\Form\Element\DynamicSelect; +use Common\Service\Translator\TranslationLoader; +use Laminas\I18n\Translator\LoaderPluginManager; use Laminas\I18n\View\Helper\Translate; +use Laminas\Mvc\Service\ServiceManagerConfig; +use Laminas\ServiceManager\ServiceManager; use Mockery as m; use Mockery\Adapter\Phpunit\MockeryTestCase; -use OlcsTest\Bootstrap; use OlcsTest\FormService\Form\Lva\Stub\AbstractOverviewSubmissionStub; /** @@ -25,11 +31,99 @@ class AbstractOverviewSubmissionTest extends MockeryTestCase private $mockTranslationHelper; + /** + * We can access service manager if we need to add a mock for certain applications + * + * @return \Laminas\ServiceManager\ServiceLocatorInterface + */ + public function getServiceManager() + { + $serviceManager = $this->getRealServiceManager(); + $serviceManager->setAllowOverride(true); + + $serviceManager->get('FormElementManager')->setFactory( + 'DynamicSelect', + function ($serviceLocator, $name, $requestedName) { + $element = new DynamicSelect(); + $element->setValueOptions( + [ + '1' => 'one', + '2' => 'two', + '3' => 'three' + ] + ); + return $element; + } + ); + + $serviceManager->get('FormElementManager')->setFactory( + 'DynamicRadio', + function ($serviceLocator, $name, $requestedName) { + $element = new DynamicRadio(); + $element->setValueOptions( + [ + '1' => 'one', + '2' => 'two', + '3' => 'three' + ] + ); + return $element; + } + ); + + $serviceManager->get('FormElementManager')->setFactory( + 'Common\Form\Element\DynamicMultiCheckbox', + function ($serviceLocator, $name, $requestedName) { + $element = new DynamicMultiCheckbox(); + $element->setValueOptions( + [ + '1' => 'one', + '2' => 'two', + '3' => 'three' + ] + ); + return $element; + } + ); + + return $serviceManager; + } + + /** + * We can access service manager if we need to add a mock for certain applications + * + * @return \Laminas\ServiceManager\ServiceLocatorInterface + */ + public function getRealServiceManager() + { + $serviceManager = new ServiceManager(new ServiceManagerConfig()); + $config = include 'config/application.config.php'; + $serviceManager->setService('ApplicationConfig', $config); + $serviceManager->get('ModuleManager')->loadModules(); + $serviceManager->setAllowOverride(true); + + $mockTranslationLoader = m::mock(TranslationLoader::class); + $mockTranslationLoader->shouldReceive('load')->andReturn(['default' => ['en_GB' => []]]); + $mockTranslationLoader->shouldReceive('loadReplacements')->andReturn([]); + $serviceManager->setService(TranslationLoader::class, $mockTranslationLoader); + + $pluginManager = new LoaderPluginManager($serviceManager); + $pluginManager->setService(TranslationLoader::class, $mockTranslationLoader); + $serviceManager->setService('TranslatorPluginManager', $pluginManager); + + // Mess up the backend, so any real rest calls will fail + $config = $serviceManager->get('Config'); + $config['service_api_mapping']['endpoints']['backend'] = 'http://some-fake-backend/'; + $serviceManager->setService('Config', $config); + + return $serviceManager; + } + public function setUp(): void { $this->mockForm = m::mock(\Laminas\Form\FormInterface::class); - $this->mockSm = Bootstrap::getServiceManager(); + $this->mockSm = $this->getServiceManager(); $this->mockTranslationHelper = m::mock(Translate::class); $this->mockTranslationHelper diff --git a/test/Olcs/src/FormService/Form/Lva/ApplicationFinancialEvidenceTest.php b/test/Olcs/src/FormService/Form/Lva/ApplicationFinancialEvidenceTest.php index 45879886f..b88bc2b95 100644 --- a/test/Olcs/src/FormService/Form/Lva/ApplicationFinancialEvidenceTest.php +++ b/test/Olcs/src/FormService/Form/Lva/ApplicationFinancialEvidenceTest.php @@ -2,16 +2,22 @@ namespace OlcsTest\FormService\Form\Lva; +use Common\Form\Element\DynamicMultiCheckbox; +use Common\Form\Element\DynamicRadio; +use Common\Form\Element\DynamicSelect; use Common\Service\Helper\FormHelperService; use Common\Service\Helper\TranslationHelperService; use Common\Service\Helper\UrlHelperService; +use Common\Service\Translator\TranslationLoader; +use Laminas\I18n\Translator\LoaderPluginManager; +use Laminas\Mvc\Service\ServiceManagerConfig; +use Laminas\ServiceManager\ServiceManager; use Mockery as m; use Mockery\Adapter\Phpunit\MockeryTestCase; use Olcs\FormService\Form\Lva\ApplicationFinancialEvidence; use Laminas\Form\Form; use Laminas\Http\Request; use OlcsTest\FormService\Form\Lva\Traits\ButtonsAlterations; -use OlcsTest\Bootstrap; use ZfcRbac\Service\AuthorizationService; /** @@ -37,6 +43,94 @@ class ApplicationFinancialEvidenceTest extends MockeryTestCase /** @var m\MockInterface */ protected $translator; + /** + * We can access service manager if we need to add a mock for certain applications + * + * @return \Laminas\ServiceManager\ServiceLocatorInterface + */ + public function getServiceManager() + { + $serviceManager = self::getRealServiceManager(); + $serviceManager->setAllowOverride(true); + + $serviceManager->get('FormElementManager')->setFactory( + 'DynamicSelect', + function ($serviceLocator, $name, $requestedName) { + $element = new DynamicSelect(); + $element->setValueOptions( + [ + '1' => 'one', + '2' => 'two', + '3' => 'three' + ] + ); + return $element; + } + ); + + $serviceManager->get('FormElementManager')->setFactory( + 'DynamicRadio', + function ($serviceLocator, $name, $requestedName) { + $element = new DynamicRadio(); + $element->setValueOptions( + [ + '1' => 'one', + '2' => 'two', + '3' => 'three' + ] + ); + return $element; + } + ); + + $serviceManager->get('FormElementManager')->setFactory( + 'Common\Form\Element\DynamicMultiCheckbox', + function ($serviceLocator, $name, $requestedName) { + $element = new DynamicMultiCheckbox(); + $element->setValueOptions( + [ + '1' => 'one', + '2' => 'two', + '3' => 'three' + ] + ); + return $element; + } + ); + + return $serviceManager; + } + + /** + * Added this method for backwards compatibility + * + * @return \Laminas\ServiceManager\ServiceManager + */ + public static function getRealServiceManager() + { + $serviceManager = new ServiceManager(new ServiceManagerConfig()); + $config = include 'config/application.config.php'; + $serviceManager->setService('ApplicationConfig', $config); + $serviceManager->get('ModuleManager')->loadModules(); + $serviceManager->setAllowOverride(true); + + $mockTranslationLoader = m::mock(TranslationLoader::class); + $mockTranslationLoader->shouldReceive('load')->andReturn(['default' => ['en_GB' => []]]); + $mockTranslationLoader->shouldReceive('loadReplacements')->andReturn([]); + $serviceManager->setService(TranslationLoader::class, $mockTranslationLoader); + + $pluginManager = new LoaderPluginManager($serviceManager); + $pluginManager->setService(TranslationLoader::class, $mockTranslationLoader); + $serviceManager->setService('TranslatorPluginManager', $pluginManager); + + // Mess up the backend, so any real rest calls will fail + $config = $serviceManager->get('Config'); + $config['service_api_mapping']['endpoints']['backend'] = 'http://some-fake-backend/'; + $serviceManager->setService('Config', $config); + + return $serviceManager; + } + public function setUp(): void { $this->fh = m::mock(FormHelperService::class)->makePartial(); @@ -44,7 +138,7 @@ public function setUp(): void $this->urlHelper = m::mock(UrlHelperService::class); $this->translator = m::mock(TranslationHelperService::class); - $sm = Bootstrap::getServiceManager(); + $sm = $this->getServiceManager(); $sm->setService('Helper\Url', $this->urlHelper); $sm->setService('Helper\Translation', $this->translator); diff --git a/test/Olcs/src/FormService/Form/Lva/OperatingCentres/VariationOperatingCentresTest.php b/test/Olcs/src/FormService/Form/Lva/OperatingCentres/VariationOperatingCentresTest.php index e8e92c9b3..82390b6ba 100644 --- a/test/Olcs/src/FormService/Form/Lva/OperatingCentres/VariationOperatingCentresTest.php +++ b/test/Olcs/src/FormService/Form/Lva/OperatingCentres/VariationOperatingCentresTest.php @@ -2,11 +2,17 @@ namespace OlcsTest\FormService\Form\Lva\OperatingCentres; +use Common\Form\Element\DynamicMultiCheckbox; +use Common\Form\Element\DynamicRadio; +use Common\Form\Element\DynamicSelect; use Common\Service\Helper\TranslationHelperService; +use Common\Service\Translator\TranslationLoader; +use Laminas\I18n\Translator\LoaderPluginManager; +use Laminas\Mvc\Service\ServiceManagerConfig; +use Laminas\ServiceManager\ServiceManager; use Olcs\FormService\Form\Lva\OperatingCentres\VariationOperatingCentres; use Common\FormService\FormServiceManager; use Common\Service\Table\TableBuilder; -use OlcsTest\Bootstrap; use Mockery as m; use Mockery\Adapter\Phpunit\MockeryTestCase; use Laminas\Form\Element; @@ -31,13 +37,101 @@ class VariationOperatingCentresTest extends MockeryTestCase protected $translator; + /** + * We can access service manager if we need to add a mock for certain applications + * + * @return \Laminas\ServiceManager\ServiceLocatorInterface + */ + public function getServiceManager() + { + $serviceManager = self::getRealServiceManager(); + $serviceManager->setAllowOverride(true); + + $serviceManager->get('FormElementManager')->setFactory( + 'DynamicSelect', + function ($serviceLocator, $name, $requestedName) { + $element = new DynamicSelect(); + $element->setValueOptions( + [ + '1' => 'one', + '2' => 'two', + '3' => 'three' + ] + ); + return $element; + } + ); + + $serviceManager->get('FormElementManager')->setFactory( + 'DynamicRadio', + function ($serviceLocator, $name, $requestedName) { + $element = new DynamicRadio(); + $element->setValueOptions( + [ + '1' => 'one', + '2' => 'two', + '3' => 'three' + ] + ); + return $element; + } + ); + + $serviceManager->get('FormElementManager')->setFactory( + 'Common\Form\Element\DynamicMultiCheckbox', + function ($serviceLocator, $name, $requestedName) { + $element = new DynamicMultiCheckbox(); + $element->setValueOptions( + [ + '1' => 'one', + '2' => 'two', + '3' => 'three' + ] + ); + return $element; + } + ); + + return $serviceManager; + } + + /** + * Added this method for backwards compatibility + * + * @return \Laminas\ServiceManager\ServiceManager + */ + public static function getRealServiceManager() + { + $serviceManager = new ServiceManager(new ServiceManagerConfig()); + $config = include 'config/application.config.php'; + $serviceManager->setService('ApplicationConfig', $config); + $serviceManager->get('ModuleManager')->loadModules(); + $serviceManager->setAllowOverride(true); + + $mockTranslationLoader = m::mock(TranslationLoader::class); + $mockTranslationLoader->shouldReceive('load')->andReturn(['default' => ['en_GB' => []]]); + $mockTranslationLoader->shouldReceive('loadReplacements')->andReturn([]); + $serviceManager->setService(TranslationLoader::class, $mockTranslationLoader); + + $pluginManager = new LoaderPluginManager($serviceManager); + $pluginManager->setService(TranslationLoader::class, $mockTranslationLoader); + $serviceManager->setService('TranslatorPluginManager', $pluginManager); + + // Mess up the backend, so any real rest calls will fail + $config = $serviceManager->get('Config'); + $config['service_api_mapping']['endpoints']['backend'] = 'http://some-fake-backend/'; + $serviceManager->setService('Config', $config); + + return $serviceManager; + } + public function setUp(): void { $this->tableBuilder = m::mock(); $this->translator = m::mock(TranslationHelperService::class); - $sm = Bootstrap::getServiceManager(); + $sm = $this->getServiceManager(); $sm->setService('Table', $this->tableBuilder); $sm->setService('Helper\Translation', $this->translator); diff --git a/test/Olcs/src/FormService/Form/Lva/People/SoleTrader/ApplicationSoleTraderTest.php b/test/Olcs/src/FormService/Form/Lva/People/SoleTrader/ApplicationSoleTraderTest.php index 25c9dfeba..d998daefe 100644 --- a/test/Olcs/src/FormService/Form/Lva/People/SoleTrader/ApplicationSoleTraderTest.php +++ b/test/Olcs/src/FormService/Form/Lva/People/SoleTrader/ApplicationSoleTraderTest.php @@ -2,11 +2,17 @@ namespace OlcsTest\FormService\Form\Lva\People\SoleTrader; +use Common\Form\Element\DynamicMultiCheckbox; +use Common\Form\Element\DynamicRadio; +use Common\Form\Element\DynamicSelect; use Common\FormService\FormServiceManager; use Common\Service\Helper\FormHelperService; use Common\Service\Lva\PeopleLvaService; +use Common\Service\Translator\TranslationLoader; +use Laminas\I18n\Translator\LoaderPluginManager; +use Laminas\Mvc\Service\ServiceManagerConfig; +use Laminas\ServiceManager\ServiceManager; use Olcs\FormService\Form\Lva\People\SoleTrader\ApplicationSoleTrader; -use OlcsTest\Bootstrap; use Mockery as m; use Mockery\Adapter\Phpunit\MockeryTestCase; use Olcs\FormService\Form\Lva\People\SoleTrader\ApplicationSoleTrader as Sut; @@ -43,11 +49,100 @@ class ApplicationSoleTraderTest extends MockeryTestCase */ private $peopleLvaService; + /** + * We can access service manager if we need to add a mock for certain applications + * + * @return \Laminas\ServiceManager\ServiceLocatorInterface + */ + public function getServiceManager() + { + + $this->serviceManager = self::getRealServiceManager(); + $this->serviceManager->setAllowOverride(true); + + $this->serviceManager->get('FormElementManager')->setFactory( + 'DynamicSelect', + function ($serviceLocator, $name, $requestedName) { + $element = new DynamicSelect(); + $element->setValueOptions( + [ + '1' => 'one', + '2' => 'two', + '3' => 'three' + ] + ); + return $element; + } + ); + + $this->serviceManager->get('FormElementManager')->setFactory( + 'DynamicRadio', + function ($serviceLocator, $name, $requestedName) { + $element = new DynamicRadio(); + $element->setValueOptions( + [ + '1' => 'one', + '2' => 'two', + '3' => 'three' + ] + ); + return $element; + } + ); + + $this->serviceManager->get('FormElementManager')->setFactory( + 'Common\Form\Element\DynamicMultiCheckbox', + function ($serviceLocator, $name, $requestedName) { + $element = new DynamicMultiCheckbox(); + $element->setValueOptions( + [ + '1' => 'one', + '2' => 'two', + '3' => 'three' + ] + ); + return $element; + } + ); + + return $this->serviceManager; + } + + /** + * Added this method for backwards compatibility + * + * @return \Laminas\ServiceManager\ServiceManager + */ + public static function getRealServiceManager() + { + $serviceManager = new ServiceManager(new ServiceManagerConfig()); + $config = include 'config/application.config.php'; + $serviceManager->setService('ApplicationConfig', $config); + $serviceManager->get('ModuleManager')->loadModules(); + $serviceManager->setAllowOverride(true); + + $mockTranslationLoader = m::mock(TranslationLoader::class); + $mockTranslationLoader->shouldReceive('load')->andReturn(['default' => ['en_GB' => []]]); + $mockTranslationLoader->shouldReceive('loadReplacements')->andReturn([]); + $serviceManager->setService(TranslationLoader::class, $mockTranslationLoader); + + $pluginManager = new LoaderPluginManager($serviceManager); + $pluginManager->setService(TranslationLoader::class, $mockTranslationLoader); + $serviceManager->setService('TranslatorPluginManager', $pluginManager); + + // Mess up the backend, so any real rest calls will fail + $config = $serviceManager->get('Config'); + $config['service_api_mapping']['endpoints']['backend'] = 'http://some-fake-backend/'; + $serviceManager->setService('Config', $config); + + return $serviceManager; + } + public function setUp(): void { $this->formHelper = m::mock('\Common\Service\Helper\FormHelperService'); - $this->sm = Bootstrap::getServiceManager(); + $this->sm = self::getServiceManager(); /** @var FormServiceManager fsm */ $this->fsm = m::mock('\Common\FormService\FormServiceManager')->makePartial(); diff --git a/test/Olcs/src/FormService/Form/Lva/People/SoleTrader/LicenceSoleTraderTest.php b/test/Olcs/src/FormService/Form/Lva/People/SoleTrader/LicenceSoleTraderTest.php index 955b61a4d..16d3bcf1a 100644 --- a/test/Olcs/src/FormService/Form/Lva/People/SoleTrader/LicenceSoleTraderTest.php +++ b/test/Olcs/src/FormService/Form/Lva/People/SoleTrader/LicenceSoleTraderTest.php @@ -2,9 +2,15 @@ namespace OlcsTest\FormService\Form\Lva\People\SoleTrader; +use Common\Form\Element\DynamicMultiCheckbox; +use Common\Form\Element\DynamicRadio; +use Common\Form\Element\DynamicSelect; use Common\FormService\FormServiceManager; use Common\Service\Lva\PeopleLvaService; -use OlcsTest\Bootstrap; +use Common\Service\Translator\TranslationLoader; +use Laminas\I18n\Translator\LoaderPluginManager; +use Laminas\Mvc\Service\ServiceManagerConfig; +use Laminas\ServiceManager\ServiceManager; use Mockery as m; use Mockery\Adapter\Phpunit\MockeryTestCase; use Olcs\FormService\Form\Lva\People\SoleTrader\LicenceSoleTrader as Sut; @@ -24,6 +30,65 @@ class LicenceSoleTraderTest extends MockeryTestCase protected $mockLicenceService; private $peopleLvaService; + /** + * We can access service manager if we need to add a mock for certain applications + * + * @return \Laminas\ServiceManager\ServiceLocatorInterface + */ + public function getServiceManager() + { + $serviceManager = self::getRealServiceManager(); + $serviceManager->setAllowOverride(true); + + $serviceManager->get('FormElementManager')->setFactory( + 'DynamicSelect', + function ($serviceLocator, $name, $requestedName) { + $element = new DynamicSelect(); + $element->setValueOptions( + [ + '1' => 'one', + '2' => 'two', + '3' => 'three' + ] + ); + return $element; + } + ); + + $serviceManager->get('FormElementManager')->setFactory( + 'DynamicRadio', + function ($serviceLocator, $name, $requestedName) { + $element = new DynamicRadio(); + $element->setValueOptions( + [ + '1' => 'one', + '2' => 'two', + '3' => 'three' + ] + ); + return $element; + } + ); + + $serviceManager->get('FormElementManager')->setFactory( + 'Common\Form\Element\DynamicMultiCheckbox', + function ($serviceLocator, $name, $requestedName) { + $element = new DynamicMultiCheckbox(); + $element->setValueOptions( + [ + '1' => 'one', + '2' => 'two', + '3' => 'three' + ] + ); + return $element; + } + ); + + + return $serviceManager; + } + public function setUp(): void { $this->formHelper = m::mock('\Common\Service\Helper\FormHelperService'); @@ -31,7 +96,7 @@ public function setUp(): void $this->mockLicenceService = m::mock(Form::class); $this->peopleLvaService = m::mock(PeopleLvaService::class); - $this->sm = Bootstrap::getServiceManager(); + $this->sm = $this->getServiceManager(); /** @var FormServiceManager fsm */ $this->fsm = m::mock('\Common\FormService\FormServiceManager')->makePartial(); @@ -179,4 +244,34 @@ public function noDisqualifyProvider() ], ]; } + + /** + * Added this method for backwards compatibility + * + * @return \Laminas\ServiceManager\ServiceManager + */ + public static function getRealServiceManager() + { + $serviceManager = new ServiceManager(new ServiceManagerConfig()); + $config = include 'config/application.config.php'; + $serviceManager->setService('ApplicationConfig', $config); + $serviceManager->get('ModuleManager')->loadModules(); + $serviceManager->setAllowOverride(true); + + $mockTranslationLoader = m::mock(TranslationLoader::class); + $mockTranslationLoader->shouldReceive('load')->andReturn(['default' => ['en_GB' => []]]); + $mockTranslationLoader->shouldReceive('loadReplacements')->andReturn([]); + $serviceManager->setService(TranslationLoader::class, $mockTranslationLoader); + + $pluginManager = new LoaderPluginManager($serviceManager); + $pluginManager->setService(TranslationLoader::class, $mockTranslationLoader); + $serviceManager->setService('TranslatorPluginManager', $pluginManager); + + // Mess up the backend, so any real rest calls will fail + $config = $serviceManager->get('Config'); + $config['service_api_mapping']['endpoints']['backend'] = 'http://some-fake-backend/'; + $serviceManager->setService('Config', $config); + + return $serviceManager; + } } diff --git a/test/Olcs/src/FormService/Form/Lva/People/SoleTrader/VariationSoleTraderTest.php b/test/Olcs/src/FormService/Form/Lva/People/SoleTrader/VariationSoleTraderTest.php index 416fdc6de..e578a1eb5 100644 --- a/test/Olcs/src/FormService/Form/Lva/People/SoleTrader/VariationSoleTraderTest.php +++ b/test/Olcs/src/FormService/Form/Lva/People/SoleTrader/VariationSoleTraderTest.php @@ -4,7 +4,10 @@ use Common\FormService\FormServiceManager; use Common\Service\Lva\PeopleLvaService; -use OlcsTest\Bootstrap; +use Common\Service\Translator\TranslationLoader; +use Laminas\I18n\Translator\LoaderPluginManager; +use Laminas\Mvc\Service\ServiceManagerConfig; +use Laminas\ServiceManager\ServiceManager; use Mockery as m; use Mockery\Adapter\Phpunit\MockeryTestCase; use Olcs\FormService\Form\Lva\People\SoleTrader\VariationSoleTrader as Sut; @@ -28,13 +31,43 @@ class VariationSoleTraderTest extends MockeryTestCase protected $mockVariationService; + /** + * We can access service manager if we need to add a mock for certain applications + * + * @return \Laminas\ServiceManager\ServiceLocatorInterface + */ + public static function getRealServiceManager() + { + $serviceManager = new ServiceManager(new ServiceManagerConfig()); + $config = include 'config/application.config.php'; + $serviceManager->setService('ApplicationConfig', $config); + $serviceManager->get('ModuleManager')->loadModules(); + $serviceManager->setAllowOverride(true); + + $mockTranslationLoader = m::mock(TranslationLoader::class); + $mockTranslationLoader->shouldReceive('load')->andReturn(['default' => ['en_GB' => []]]); + $mockTranslationLoader->shouldReceive('loadReplacements')->andReturn([]); + $serviceManager->setService(TranslationLoader::class, $mockTranslationLoader); + + $pluginManager = new LoaderPluginManager($serviceManager); + $pluginManager->setService(TranslationLoader::class, $mockTranslationLoader); + $serviceManager->setService('TranslatorPluginManager', $pluginManager); + + // Mess up the backend, so any real rest calls will fail + $config = $serviceManager->get('Config'); + $config['service_api_mapping']['endpoints']['backend'] = 'http://some-fake-backend/'; + $serviceManager->setService('Config', $config); + + return $serviceManager; + } + public function setUp(): void { $this->formHelper = m::mock('\Common\Service\Helper\FormHelperService'); $this->mockVariationService = m::mock(Form::class); - $this->sm = Bootstrap::getServiceManager(); + $this->sm = $this->getRealServiceManager(); /** @var FormServiceManager fsm */ $this->fsm = m::mock('\Common\FormService\FormServiceManager')->makePartial(); diff --git a/test/Olcs/src/TestHelpers/AbstractFormValidationTestCase.php b/test/Olcs/src/TestHelpers/AbstractFormValidationTestCase.php new file mode 100644 index 000000000..3fa964725 --- /dev/null +++ b/test/Olcs/src/TestHelpers/AbstractFormValidationTestCase.php @@ -0,0 +1,1307 @@ +getName(), 'testMissingTest') === false) { + $this->sut = $this->getForm(); + } + } + + /** + * We can access service manager if we need to add a mock for certain applications + * + * @return \Laminas\ServiceManager\ServiceLocatorInterface + */ + protected function getServiceManager() + { + if ($this->serviceManager === null) { + + $this->serviceManager = self::getRealServiceManager(); + + // inject a real string helper + + $this->serviceManager->setAllowOverride(true); + + $this->serviceManager->get('FormElementManager')->setFactory( + 'DynamicSelect', + function ($serviceLocator, $name, $requestedName) { + $element = new DynamicSelect(); + $element->setValueOptions( + [ + '1' => 'one', + '2' => 'two', + '3' => 'three' + ] + ); + return $element; + } + ); + + $this->serviceManager->get('FormElementManager')->setFactory( + 'DynamicRadio', + function ($serviceLocator, $name, $requestedName) { + $element = new DynamicRadio(); + $element->setValueOptions( + [ + '1' => 'one', + '2' => 'two', + '3' => 'three' + ] + ); + return $element; + } + ); + + $this->serviceManager->get('FormElementManager')->setFactory( + 'Common\Form\Element\DynamicMultiCheckbox', + function ($serviceLocator, $name, $requestedName) { + $element = new DynamicMultiCheckbox(); + $element->setValueOptions( + [ + '1' => 'one', + '2' => 'two', + '3' => 'three' + ] + ); + return $element; + } + ); + } + + return $this->serviceManager; + } + + public static function getRealServiceManager() + { + $serviceManager = new ServiceManager(new ServiceManagerConfig()); + $serviceManager->setService('ApplicationConfig', include __DIR__. '/../../../../config/application.config.php'); + $serviceManager->get('ModuleManager')->loadModules(); + $serviceManager->setAllowOverride(true); + + $mockTranslationLoader = m::mock(TranslationLoader::class); + $mockTranslationLoader->shouldReceive('load')->andReturn(['default' => ['en_GB' => []]]); + $mockTranslationLoader->shouldReceive('loadReplacements')->andReturn([]); + $serviceManager->setService(TranslationLoader::class, $mockTranslationLoader); + + $pluginManager = new LoaderPluginManager($serviceManager); + $pluginManager->setService(TranslationLoader::class, $mockTranslationLoader); + $serviceManager->setService('TranslatorPluginManager', $pluginManager); + + // Mess up the backend, so any real rest calls will fail + $config = $serviceManager->get('Config'); + $config['service_api_mapping']['endpoints']['backend'] = 'http://some-fake-backend/'; + $serviceManager->setService('Config', $config); + + return $serviceManager; + } + + /** + * Get the form object + * + * @return \Common\Form\Form + */ + protected function getForm() + { + if ($this->formName == null) { + throw new \Exception('formName property is not defined'); + } + + if (!isset(self::$forms[$this->formName])) { + /** @var \Common\Form\Annotation\CustomAnnotationBuilder $c */ + $frmAnnotBuilder = $this->getServiceManager()->get('FormAnnotationBuilder'); + + self::$forms[$this->formName] = $frmAnnotBuilder->createForm($this->formName); + } + + return clone self::$forms[$this->formName]; + } + + /** + * Assert that a form element with a value is valid + * + * @param array $elementHierarchy Form element name eg ['fields','numOfCows'] + * @param mixed $value The value to be tested in the form element + * @param array $context Form data context required to test the validation + * + * @return void + */ + protected function assertFormElementValid(array $elementHierarchy, $value, array $context = []) + { + self::$testedElements[implode('.', $elementHierarchy)] = true; + + $this->assertElementExists($elementHierarchy); + $this->setData($elementHierarchy, $value, $context); + $this->setValidationGroup($elementHierarchy); + + $valid = $this->sut->isValid(); + $message = sprintf( + '"%s" form element with value "%s" should be valid : %s', + implode('.', $elementHierarchy), + print_r($value, true), + implode(', ', array_keys($this->getFormMessages($elementHierarchy))) + ); + + $this->assertTrue($valid, $message); + } + + /** + * Get the form validation messages for an element + * + * @param array $elementHierarchy Form element name eg ['fields','numOfCows'] + * + * @return array + */ + protected function getFormMessages(array $elementHierarchy) + { + $messages = $this->sut->getMessages(); + foreach ($elementHierarchy as $name) { + if (isset($messages[$name])) { + $messages = $messages[$name]; + } + } + return $messages; + } + + /** + * Set the validation group so that ony the form element is validated + * + * @param array $elementHierarchy Form element name eg ['fields','numOfCows'] + * + * @return void + */ + protected function setValidationGroup(array $elementHierarchy) + { + $array = null; + foreach (array_reverse($elementHierarchy) as $name) { + if ($array == null) { + $array = [$name]; + } else { + $array = [$name => $array]; + } + } + + $this->sut->setValidationGroup($array); + } + + /** + * Set the form data + * + * @param array $elementHierarchy Form element name eg ['fields','numOfCows'] + * @param mixed $value Form element (being tested) value + * @param array $context Form data context required to test the validation + * + * @return void + */ + protected function setData(array $elementHierarchy, $value, $context = []) + { + $element = $this->getElementByHierarchy($elementHierarchy); + if (empty($value) && $element instanceof MonthSelect) { + $value = [ + 'month' => null, + 'year' => null, + ]; + if($element instanceof DateSelect) { + $value['day'] = null; + } + if($element instanceof DateTimeSelect) { + $value['hour'] = null; + $value['minute'] = null; + $value['second'] = null; + } + } + + $array = $value; + foreach (array_reverse($elementHierarchy) as $name) { + $array = [$name => $array]; + } + $this->sut->setData(array_merge_recursive($context, $array)); + } + + /** + * Assert that the form element exists in the form + * + * @param array $elementHierarchy Form element name eg ['fields','numOfCows'] + * + * @return void + */ + protected function assertElementExists(array $elementHierarchy) + { + try { + $this->getFormElement($elementHierarchy); + } catch (\Exception $e) { + $this->fail($e->getMessage()); + } + } + + /** + * Get the form element + * + * @param array $elementHierarchy Form element name eg ['fields','numOfCows'] + * + * @return \Laminas\Form\Element + */ + protected function getFormElement(array $elementHierarchy) + { + $element = $this->sut; + foreach ($elementHierarchy as $name) { + if (!$element->has($name)) { + throw new \Exception( + sprintf('Cannot find element by name "%s" in "%s"', $name, implode('.', $elementHierarchy)) + ); + } + $element = $element->get($name); + } + return $element; + } + + /** + * Assert the type of a form element + * + * @param array $elementHierarchy Form element name eg ['fields','numOfCows'] + * @param string $type Class name of the type + * + * @return void + */ + protected function assertFormElementType(array $elementHierarchy, $type) + { + $this->assertInstanceOf($type, $this->getFormElement($elementHierarchy)); + } + + /** + * Assert that a form element with a value is NOT valid + * + * @param array $elementHierarchy Form element name eg ['fields','numOfCows'] + * @param mixed $value The value to be tested in the form element + * @param string|array $validationMessages A single or an array of expected validation messages keys + * @param array $context Form data context required to test the validation + * + * @return void + */ + protected function assertFormElementNotValid( + array $elementHierarchy, + $value, + $validationMessages, + array $context = [] + ) { + self::$testedElements[implode('.', $elementHierarchy)] = true; + + if (!is_array($validationMessages)) { + $validationMessages = [$validationMessages]; + } + + $this->assertElementExists($elementHierarchy); + $this->setData($elementHierarchy, $value, $context); + $this->setValidationGroup($elementHierarchy); + + $valid = $this->sut->isValid(); + + $this->assertFalse( + $valid, + sprintf( + '"%s" form element with value "%s" should *not* be valid', + implode('.', $elementHierarchy), + print_r($value, true) + ) + ); + + $errorMessages = array_keys($this->getFormMessages($elementHierarchy)); + // If error messages has no keys, it is probably because the top level ErrorMessage has been used + // therefore check the contents of the error, rather than the key + if (array_keys($this->getFormMessages($elementHierarchy)) === [0 => 0]) { + $errorMessages = $this->getFormMessages($elementHierarchy); + } + + $this->assertSame( + $validationMessages, + $errorMessages, + sprintf( + '"%s" form element with value "%s" error messages not as expected', + implode('.', $elementHierarchy), + print_r($value, true) + ) + ); + } + + /** + * Assert than a form element is a text input + * + * @param array $elementHierarchy Form element name eg ['fields','numOfCows'] + * @param int $min Minimum allowed string length + * @param int $max Maximum allowed string length + * @param array $context Any form context required for this validation + * + * @return void + */ + protected function assertFormElementText( + $elementHierarchy, + $min = 0, + $max = null, + array $context = [] + ) { + if ($min > 0) { + $this->assertFormElementValid($elementHierarchy, str_pad('', $min, 'x'), $context); + } + if ($min > 1) { + $this->assertFormElementNotValid( + $elementHierarchy, + str_pad('', $min - 1, 'x'), + Validator\StringLength::TOO_SHORT, + $context + ); + } else { + $this->assertFormElementValid($elementHierarchy, 'x', $context); + } + + if ($max !== null) { + $this->assertFormElementValid($elementHierarchy, str_pad('', $max, 'x'), $context); + $this->assertFormElementNotValid( + $elementHierarchy, + str_pad('', $max + 1, 'x'), + Validator\StringLength::TOO_LONG, + $context + ); + } + } + + /** + * Assert than a form element is a number input + * + * @param array $elementHierarchy Form element name eg ['fields','numOfCows'] + * @param int $min Minimum allowed value + * @param int $max Maximum allowed value + * @param string|array $validationMessages A single or an array of expected validation messages keys + * + * @return void + */ + protected function assertFormElementNumber($elementHierarchy, $min = 0, $max = null, $validationMessages = null) + { + $this->assertFormElementValid($elementHierarchy, $min); + $this->assertFormElementValid($elementHierarchy, $min + 1); + + if ($min > 0) { + $this->assertFormElementNotValid( + $elementHierarchy, + $min - 1, + $validationMessages ? : Validator\Between::NOT_BETWEEN + ); + } + + if ($max !== null) { + $this->assertFormElementValid($elementHierarchy, $max); + $this->assertFormElementNotValid( + $elementHierarchy, + $max + 1, + $validationMessages ? : Validator\Between::NOT_BETWEEN + ); + } + + if ($validationMessages === null) { + $validationMessages = [Validator\Digits::NOT_DIGITS]; + + if ($min > 0 || $max !== null) { + $validationMessages[] = Validator\Between::VALUE_NOT_NUMERIC; + } + + $this->assertFormElementNotValid($elementHierarchy, 'X', $validationMessages); + } + } + + /** + * Assert than a form element is a float input + * + * @param array $elementHierarchy Form element name eg ['fields','numOfCows'] + * @param int $min Minimum allowed value + * @param int $max Maximum allowed value + * + * @return void + */ + protected function assertFormElementFloat($elementHierarchy, $min = 0, $max = null) + { + $this->assertFormElementValid($elementHierarchy, $min); + $this->assertFormElementValid($elementHierarchy, $min + 0.1); + + if ($min > 0) { + $this->assertFormElementNotValid($elementHierarchy, $min - 0.1, Validator\Between::NOT_BETWEEN); + } + + if ($max !== null) { + $this->assertFormElementValid($elementHierarchy, $max); + $this->assertFormElementNotValid($elementHierarchy, $max + 0.1, Validator\LessThan::NOT_LESS_INCLUSIVE); + } + + $this->assertFormElementNotValid($elementHierarchy, 'X', [\Laminas\I18n\Validator\IsFloat::NOT_FLOAT]); + } + + /** + * Assert than a form element is a checkbox input + * + * @param array $elementHierarchy Form element name eg ['fields','numOfCows'] + * + * @return void + */ + protected function assertFormElementCheckbox($elementHierarchy, $uncheckedValue = 'N', $checkedValue = 'Y') + { + $this->assertFormElementValid($elementHierarchy, $checkedValue); + $this->assertFormElementValid($elementHierarchy, $uncheckedValue); + $this->assertFormElementNotValid($elementHierarchy, 'X', [Validator\InArray::NOT_IN_ARRAY]); + } + + /** + * Assert than a form element is a hidden input + * + * @param array $elementHierarchy Form element name eg ['fields','numOfCows'] + * + * @return void + */ + protected function assertFormElementHidden($elementHierarchy) + { + $this->assertFormElementRequired($elementHierarchy, false); + $this->assertFormElementAllowEmpty($elementHierarchy, true); + $this->assertFormElementValid($elementHierarchy, 'X'); + } + + /** + * Assert than a form element is a html input + * + * @param array $elementHierarchy Form element name eg ['fields','numOfCows'] + * + * @return void + */ + protected function assertFormElementHtml($elementHierarchy) + { + $this->assertFormElementRequired($elementHierarchy, false); + $this->assertFormElementAllowEmpty($elementHierarchy, true); + $this->assertFormElementValid($elementHierarchy, 'X'); + } + + /** + * Assert than a form element is a action button input + * + * @param array $elementHierarchy Form element name eg ['fields','numOfCows'] + * + * @return void + */ + protected function assertFormElementActionButton($elementHierarchy) + { + $this->assertFormElementRequired($elementHierarchy, false); + $this->assertFormElementAllowEmpty($elementHierarchy, true); + $this->assertFormElementValid($elementHierarchy, 'X'); + } + + /** + * Assert than a form element is a usernameCreate input + * + * @param array $elementHierarchy Form element name eg ['fields','numOfCows'] + * + * @return void + */ + protected function assertFormElementUsernameCreate($elementHierarchy) + { + $this->assertFormElementText($elementHierarchy, 4, 40); + + $this->assertFormElementValid($elementHierarchy, 'usr0001'); + $this->assertFormElementValid($elementHierarchy, 'USR0001'); // Should be transformed to lowercase + $this->assertFormElementValid($elementHierarchy, 'abcdefghijklmnoprstuvwxyz'); + $this->assertFormElementValid($elementHierarchy, 'ABCDEFGHIJKLMNOPRSTUVWXYZ'); // Should be transformed to lowercase + + $this->assertFormElementNotValid($elementHierarchy, '0usr0001', TransferValidator\UsernameCreate::USERNAME_INVALID); + + $this->assertFormElementNotValid($elementHierarchy, 'a¬bs', TransferValidator\UsernameCreate::USERNAME_INVALID); + $this->assertFormElementNotValid($elementHierarchy, 'a!bs', TransferValidator\UsernameCreate::USERNAME_INVALID); + $this->assertFormElementNotValid($elementHierarchy, 'a£bs', TransferValidator\UsernameCreate::USERNAME_INVALID); + $this->assertFormElementNotValid($elementHierarchy, 'a&bs', TransferValidator\UsernameCreate::USERNAME_INVALID); + $this->assertFormElementNotValid($elementHierarchy, 'a*bs', TransferValidator\UsernameCreate::USERNAME_INVALID); + $this->assertFormElementNotValid($elementHierarchy, 'a(bs', TransferValidator\UsernameCreate::USERNAME_INVALID); + $this->assertFormElementNotValid($elementHierarchy, 'a)bs', TransferValidator\UsernameCreate::USERNAME_INVALID); + $this->assertFormElementNotValid($elementHierarchy, 'a bs', TransferValidator\UsernameCreate::USERNAME_INVALID); + $this->assertFormElementNotValid($elementHierarchy, 'a+bs', TransferValidator\UsernameCreate::USERNAME_INVALID); + $this->assertFormElementNotValid($elementHierarchy, 'a_bs', TransferValidator\UsernameCreate::USERNAME_INVALID); + $this->assertFormElementNotValid($elementHierarchy, 'a.bs', TransferValidator\UsernameCreate::USERNAME_INVALID); + $this->assertFormElementNotValid($elementHierarchy, 'a\bs', TransferValidator\UsernameCreate::USERNAME_INVALID); + $this->assertFormElementNotValid($elementHierarchy, 'a/bs', TransferValidator\UsernameCreate::USERNAME_INVALID); + $this->assertFormElementNotValid($elementHierarchy, 'a=bs', TransferValidator\UsernameCreate::USERNAME_INVALID); + $this->assertFormElementNotValid($elementHierarchy, 'a@bs', TransferValidator\UsernameCreate::USERNAME_INVALID); + } + + /** + * Assert than a form element is a username legacy input (supporting legacy usernames) + * + * @deprecated + * + * @param array $elementHierarchy Form element name eg ['fields','numOfCows'] + * + * @return void + */ + protected function assertFormElementUsername($elementHierarchy) + { + $this->assertFormElementText($elementHierarchy, 2, 40); + + $this->assertFormElementValid($elementHierarchy, '0123456789'); + $this->assertFormElementValid($elementHierarchy, 'abcdefghijklmnoprstuvwxyz'); + $this->assertFormElementValid($elementHierarchy, 'ABCDEFGHIJKLMNOPRSTUVWXYZ'); + $this->assertFormElementValid($elementHierarchy, '#$%\'+-/=?^_.@`|~",:;<>'); + + $this->assertFormElementNotValid($elementHierarchy, 'a¬b', TransferValidator\Username::USERNAME_INVALID); + $this->assertFormElementNotValid($elementHierarchy, 'a!b', TransferValidator\Username::USERNAME_INVALID); + $this->assertFormElementNotValid($elementHierarchy, 'a£b', TransferValidator\Username::USERNAME_INVALID); + $this->assertFormElementNotValid($elementHierarchy, 'a&b', TransferValidator\Username::USERNAME_INVALID); + $this->assertFormElementNotValid($elementHierarchy, 'a*b', TransferValidator\Username::USERNAME_INVALID); + $this->assertFormElementNotValid($elementHierarchy, 'a(b', TransferValidator\Username::USERNAME_INVALID); + $this->assertFormElementNotValid($elementHierarchy, 'a)b', TransferValidator\Username::USERNAME_INVALID); + $this->assertFormElementNotValid($elementHierarchy, 'a b', TransferValidator\Username::USERNAME_INVALID); + } + + /** + * Assert than a form element is an email address + * + * @param array $elementHierarchy Form element name eg ['fields','numOfCows'] + * + * @return void + */ + protected function assertFormElementEmailAddress($elementHierarchy) + { + $this->assertFormElementValid($elementHierarchy, 'valid@email.com'); + $this->assertFormElementValid( + $elementHierarchy, + '1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890@'. + '123456789012345678901234567890123456789012345678901234567890.com' + ); + // total length greater than 254 + $this->assertFormElementNotValid( + $elementHierarchy, + '1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890@'. + '123456789012345678901234567890123456789012345678901234567890.'. + '123456789012345678901234567890123456789012345678901234567890.'. + '123456789012345678901234567890123456789012345678901234567890.com', + TransferValidator\EmailAddress::ERROR_INVALID + ); + // domain parts max greate than 63 chars + $this->assertFormElementNotValid( + $elementHierarchy, + '1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890'. + '@1234567890123456789012345678901234567890123456789012345678901234.com', + TransferValidator\EmailAddress::INVALID_FORMAT + ); + $this->assertFormElementNotValid( + $elementHierarchy, + '1234567890123456789012345678901234567890123456789012345678901', + TransferValidator\EmailAddress::INVALID_FORMAT + ); + } + + /** + * Assert than a form element is a postcode + * + * @param array $elementHierarchy Form element name eg ['fields','numOfCows'] + * + * @return void + */ + protected function assertFormElementPostcode($elementHierarchy) + { + $this->assertFormElementValid($elementHierarchy, 'LS9 6NF'); + $this->assertFormElementValid($elementHierarchy, 'ls9 6nf'); + $this->assertFormElementValid($elementHierarchy, 'ls96NF'); + $this->assertFormElementNotValid($elementHierarchy, 'not a postcode', Validator\StringLength::TOO_LONG); + } + + /** + * Assert than a form element is a phone + * + * @param array $elementHierarchy Form element name eg ['fields','numOfCows'] + * + * @return void + */ + protected function assertFormElementPhone($elementHierarchy) + { + $this->assertFormElementType($elementHierarchy, \Common\Form\Elements\InputFilters\Phone::class); + $this->assertFormElementValid($elementHierarchy, '0123456789'); + $this->assertFormElementValid($elementHierarchy, '+44123456789'); + $this->assertFormElementValid($elementHierarchy, '(0044)1234567889'); + $this->assertFormElementValid($elementHierarchy, '0123-456789'); + $this->assertFormElementNotValid($elementHierarchy, 'not a phone number', Validator\Regex::NOT_MATCH); + } + + /** + * Note for developers + * We are not really testing here. There is a custom validation on the + * frontend (mainly AJAX functionality). For this purpose there is no real + * use testing case. So we skip these searchPostcode elements. + * + * @param array $elementHierarchy Form element name eg ['fields','numOfCows'] + * + * @return void + */ + protected function assertFormElementPostcodeSearch($elementHierarchy) + { + $searchPostcodeElements = [ + 'postcode', + 'search', + 'addresses', + 'select', + 'manual-link', + ]; + + foreach ($searchPostcodeElements as $element) { + $elementToSkip = array_merge( + $elementHierarchy, + [ + $element, + ] + ); + + self::$testedElements[implode('.', $elementToSkip)] = true; + } + } + + /** + * Assert than a form element is a company number + * + * @param array $elementHierarchy Form element name eg ['fields','numOfCows'] + * + * @return void + */ + protected function assertFormElementCompanyNumber($elementHierarchy) + { + $this->assertFormElementText($elementHierarchy, 1, 8); + $this->assertFormElementNotValid($elementHierarchy, '#', \Laminas\I18n\Validator\Alnum::NOT_ALNUM); + } + + /** + * Assert than a form element is a company number type + * + * @param array $elementHierarchy Form element name eg ['fields','numOfCows'] + * + * @return void + */ + protected function assertFormElementCompanyNumberType($elementHierarchy) + { + $this->assertFormElementHtml(array_merge($elementHierarchy, ['description'])); + $this->assertFormElementCompanyNumber(array_merge($elementHierarchy, ['company_number'])); + $this->assertFormElementActionButton(array_merge($elementHierarchy, ['submit_lookup_company'])); + } + + /** + * Assert than a form element is a table + * + * @param array $elementHierarchy Form element name eg ['fields','numOfCows'] + * + * @return void + */ + protected function assertFormElementTable($elementHierarchy) + { + $this->assertFormElementType($elementHierarchy, \Common\Form\Elements\Types\Table::class); + } + + /** + * Assert than a form element is a NoRender + * + * @param array $elementHierarchy Form element name eg ['fields','numOfCows'] + * + * @return void + */ + protected function assertFormElementNoRender($elementHierarchy) + { + $this->assertFormElementRequired($elementHierarchy, false); + $this->assertFormElementAllowEmpty($elementHierarchy, true); + $this->assertFormElementType($elementHierarchy, \Common\Form\Elements\InputFilters\NoRender::class); + } + + /** + * Assert than a form element is an ActionLink + * + * @param array $elementHierarchy Form element name eg ['fields','numOfCows'] + * + * @return void + */ + protected function assertFormElementActionLink($elementHierarchy) + { + $this->assertFormElementRequired($elementHierarchy, false); + $this->assertFormElementAllowEmpty($elementHierarchy, true); + $this->assertFormElementType($elementHierarchy, \Common\Form\Elements\InputFilters\ActionLink::class); + } + + /** + * Assert than a form element is a MultipleFileUpload + * + * @param array $elementHierarchy Form element name eg ['fields','numOfCows'] + * + * @return void + */ + protected function assertFormElementMultipleFileUpload($elementHierarchy) + { + $fileCountElement = $fileElement = $messagesElement = $uploadElement = $elementHierarchy; + + $fileCountElement[] = 'fileCount'; + $this->assertFormElementRequired($fileCountElement, false); + $this->assertFormElementAllowEmpty($fileCountElement, true); + + $fileElement[] = 'file'; + $this->assertFormElementRequired($fileElement, false); + $this->assertFormElementAllowEmpty($fileElement, true); + $this->assertFormElementType($fileElement, \Common\Form\Elements\Types\AttachFilesButton::class); + + $messagesElement[] = '__messages__'; + $this->assertFormElementHidden($messagesElement); + + $uploadElement[] = 'upload'; + $this->assertFormElementType($uploadElement, \Common\Form\Elements\InputFilters\ActionButton::class); + $this->assertFormElementRequired($uploadElement, false); + + // FileUploadCountV2 validator + $this->assertFormElementValid($elementHierarchy, []); + $this->assertFormElementValid($elementHierarchy, ['fileCount' => 1, 'list' => [1]]); + $this->assertFormElementValid($elementHierarchy, ['fileCount' => 4, 'list' => [1, 2, 3, 4]]); + $this->assertFormElementNotValid( + $elementHierarchy, + ['fileCount' => 0], + 'fileCount' + ); + $this->assertFormElementNotValid( + $elementHierarchy, + ['fileCount' => 0, 'list' => []], + 'fileCount' + ); + $this->assertSame( + [ + 'fileCount' => [ + CommonValidator\FileUploadCountV2::TOO_FEW => 'Too few files uploaded', + ] + ], + $this->getFormMessages($elementHierarchy), + sprintf( + '"%s" form element with value "%s" error messages not as expected', + implode('.', $elementHierarchy), + print_r(['fileCount' => 0, 'list' => []], true) + ) + ); + } + + /** + * Assert than a form element is a VRM + * + * @param array $elementHierarchy Form element name eg ['fields','numOfCows'] + * + * @return void + */ + protected function assertFormElementVrm($elementHierarchy) + { + $this->assertFormElementValid($elementHierarchy, 'XX59 GTB'); + $this->assertFormElementValid($elementHierarchy, 'FOO1'); + $this->assertFormElementNotValid($elementHierarchy, 'FOO', 'invalid'); + $this->assertFormElementType($elementHierarchy, \Common\Form\Elements\Custom\VehicleVrm::class); + } + + /** + * Assert than a form element is a vehicle plated weight + * + * @param array $elementHierarchy Form element name eg ['fields','numOfCows'] + * + * @return void + */ + protected function assertFormElementVehiclePlatedWeight($elementHierarchy) + { + $this->assertFormElementNumber($elementHierarchy, 0, 999999); + $this->assertFormElementType($elementHierarchy, \Common\Form\Elements\Custom\VehiclePlatedWeight::class); + } + + /** + * Assert that a form element is a dynamic multi checkbox + * + * @param array $elementHierarchy Form element name eg ['fields','numOfCows'] + * @param bool $required Is the form element required + * + * @return void + * @SuppressWarnings(PHPMD.UnusedFormalParameter) + */ + protected function assertFormElementDynamicMultiCheckbox($elementHierarchy, $required = true) + { + $this->assertFormElementValid($elementHierarchy, 1); + $this->assertFormElementValid($elementHierarchy, '1'); + } + + /** + * Assert that a form element is a dynamic radio + * + * @param array $elementHierarchy Form element name eg ['fields','numOfCows'] + * @param bool $required Is the form element required + * + * @return void + */ + protected function assertFormElementDynamicRadio($elementHierarchy, $required = true) + { + $this->assertFormElementValid($elementHierarchy, 1); + $this->assertFormElementValid($elementHierarchy, '1'); + if ($required) { + $this->assertFormElementNotValid($elementHierarchy, 'X', Validator\InArray::NOT_IN_ARRAY); + } + } + + /** + * Assert that a form element is a dynamic select + * + * @param array $elementHierarchy Form element name eg ['fields','numOfCows'] + * @param bool $required Is the form element required + * + * @return void + */ + protected function assertFormElementDynamicSelect( + $elementHierarchy, + $required = true + ) { + $this->assertFormElementValid($elementHierarchy, 1); + $this->assertFormElementValid($elementHierarchy, '1'); + if ($required) { + //uncomment the following line once "prefer_form_input_filter": true has been removed from the forms + //$this->assertFormElementNotValid($elementHierarchy, 'X', Validator\InArray::NOT_IN_ARRAY); + } + } + + /** + * Assert that a form element is a month select input + * + * @param array $elementHierarchy Form element name eg ['fields','numOfCows'] + * + * @return void + */ + protected function assertFormElementMonthSelect($elementHierarchy) + { + $this->assertFormElementValid($elementHierarchy, ['month' => '2', 'year' => '1999']); + $this->assertFormElementNotValid( + $elementHierarchy, + ['month' => 'X', 'year' => '1999'], + [ + \Laminas\Validator\Regex::NOT_MATCH + ] + ); + $this->assertFormElementNotValid( + $elementHierarchy, + ['month' => '3', 'year' => 'XXXX'], + [ + \Laminas\Validator\Regex::NOT_MATCH + ] + ); + } + + /** + * Assert that a form element is a date input + * + * @param array $elementHierarchy Form element name eg ['fields','numOfCows'] + * + * @return void + */ + protected function assertFormElementDate($elementHierarchy, array $context = []) + { + $errorMessages = [ + \Common\Validator\Date::DATE_ERR_CONTAINS_STRING, + \Laminas\Validator\Date::INVALID_DATE + ]; + + $this->assertFormElementValid($elementHierarchy, ['day' => 1, 'month' => '2', 'year' => 1999], $context); + + $this->assertFormElementNotValid( + $elementHierarchy, + ['day' => 'X', 'month' => '2', 'year' => 1999], + $errorMessages, + $context + ); + + $this->assertFormElementNotValid( + $elementHierarchy, + ['day' => '1', 'month' => 'X', 'year' => 1999], + $errorMessages, + $context + ); + + $this->assertFormElementNotValid( + $elementHierarchy, + ['day' => 1, 'month' => 3, 'year' => 'XXXX'], + [ + \Common\Validator\Date::DATE_ERR_CONTAINS_STRING, + \Common\Validator\Date::DATE_ERR_YEAR_LENGTH, + Validator\Date::INVALID_DATE + ], + $context + ); + } + + /** + * Assert that a form element is a date time input. For any complex + * logic such as; `endDate` with contexts - use the individual methods. + * + * @param array $elementHierarchy Form element name eg ['fields','numOfCows'] + * @param bool|true $required Is this input required? Default is 'true' + * @param null $value Currently the default will be tomorrow's date + * + * @return void + */ + protected function assertFormElementDateTime(array $elementHierarchy, $required = true, $value = null) + { + if ($value === null) { + $currentDate = new \DateTimeImmutable('tomorrow'); + + // Date inputted will be exact time tomorrow. + $value = [ + 'year' => $currentDate->format('Y'), + 'month' => $currentDate->format('m'), + 'day' => $currentDate->format('j'), + 'hour' => $currentDate->format('h'), + 'minute' => $currentDate->format('i'), + 'second' => $currentDate->format('s'), + ]; + } + + $this->assertFormElementRequired($elementHierarchy, $required); + $this->assertFormElementDateTimeNotValidCheck($elementHierarchy); + $this->assertFormElementDateTimeValidCheck($elementHierarchy, $value); + } + + /** + * To avoid duplication, you can call this method separately and + * pass custom validation messages + * + * @param array $elementHierarchy Form element name eg ['fields','numOfCows'] + * @param array $validationMessages Specify if validation messages are expected to be different + * + * @return void + */ + protected function assertFormElementDateTimeNotValidCheck(array $elementHierarchy, $validationMessages = []) + { + if (empty($validationMessages)) { + $validationMessages = [ + \Common\Validator\Date::DATE_ERR_CONTAINS_STRING, + \Common\Validator\Date::DATE_ERR_YEAR_LENGTH, + Validator\Date::INVALID_DATE, + ]; + } + + // String in values + $this->assertFormElementNotValid( + $elementHierarchy, + [ + 'year' => 'XXXX', + 'month' => 'XX', + 'day' => 'XX', + 'hour' => 'XX', + 'minute' => 'XX', + 'second' => 'XX', + ], + $validationMessages + ); + + $validationMessages = [ + Validator\Date::INVALID_DATE + ]; + + // Invalid date + $this->assertFormElementNotValid( + $elementHierarchy, + [ + 'year' => 2000, + 'month' => 15, + 'day' => 35, + 'hour' => 27, + 'minute' => 100, + 'second' => 5000, + ], + $validationMessages + ); + } + + /** + * Developer note; + * Value is expected to be an array with 'year', 'month', 'day', 'hour', 'minute', 'second' + * + * @param array $elementHierarchy Form element name eg ['fields','numOfCows'] + * @param null|mixed $value Default date is tomorrows date. Can be changed if future not allowed + * @param array $context Context is normally used for startDate/endDates + * + * @return void + */ + protected function assertFormElementDateTimeValidCheck(array $elementHierarchy, $value = null, array $context = []) + { + if ($value === null) { + $currentDate = new \DateTimeImmutable('tomorrow'); + + // Date inputted will be exact time tomorrow. + $value = [ + 'year' => $currentDate->format('Y'), + 'month' => $currentDate->format('m'), + 'day' => $currentDate->format('j'), + 'hour' => $currentDate->format('h'), + 'minute' => $currentDate->format('i'), + 'second' => $currentDate->format('s'), + ]; + } + + // Valid scenario + $this->assertFormElementValid($elementHierarchy, $value, $context); + } + + /** + * Assert whether a form element allows empty + * + * @param array $elementHierarchy Form element name eg ['fields','numOfCows'] + * @param bool $allowEmpty if true, form element allows empty + * @param array $context Context + * @param string|array $validationMessages A single or an array of expected validation messages keys + * + * @return void + */ + protected function assertFormElementAllowEmpty( + $elementHierarchy, + $allowEmpty, + $context = [], + $validationMessages = null + ) { + if ($allowEmpty === true) { + $this->assertFormElementValid($elementHierarchy, '', $context); + } else { + $this->assertFormElementNotValid( + $elementHierarchy, + '', + $validationMessages ? : Validator\NotEmpty::IS_EMPTY, + $context + ); + } + } + + /** + * Assert whether a form element is required + * + * This method checks the value, but 'required' is about checking for the key. + * New method is: assertFormElementIsRequired. You will notice some of the field validations + * will fail after using the new method. In this scenario, check the requirement of the field + * and check for any clashes. AllowEmpty(true) and Required(true) fields make no sense. + * Resource: http://stackoverflow.com/questions/7242703/zend-framework-how-to-allow-empty-field-for-form-element + * + * @param string $elementHierarchy Form element name + * @param bool $required true, form element is required + * @param string|array $validationMessages A single or an array of expected validation messages keys + * + * @return void + * @deprecated + */ + protected function assertFormElementRequired($elementHierarchy, $required, $validationMessages = null) + { + if ($required === true) { + $this->assertFormElementNotValid( + $elementHierarchy, + null, + $validationMessages ? : Validator\NotEmpty::IS_EMPTY + ); + } else { + $this->assertFormElementValid($elementHierarchy, null); + } + } + + /** + * New method used apart from assertFormElementRequired() + * Avoid using assertFormElementRequired() + * + * @param array $elementHierarchy Element hierarchy as array (including fieldsets) + * @param bool|true $required true, form element is required + * @param array $expectedValidationMessages A single or an array of expected validation messages keys + * + * @return void + */ + protected function assertFormElementIsRequired( + $elementHierarchy, + $required = true, + $expectedValidationMessages = [Validator\NotEmpty::IS_EMPTY] + ) { + self::$testedElements[implode('.', $elementHierarchy)] = true; + + // set no data to get the response from the Validation Groups + $this->setData($elementHierarchy, null); + $this->setValidationGroup($elementHierarchy); + + $this->sut->isValid(); + + $formErrorMessages = $this->sut->getMessages(); + $elementErrorMessages = $this->getElementMessages( + $elementHierarchy, + $formErrorMessages + ); + + if ($required === true) { + $this->assertTrue((!empty($elementErrorMessages))); + $this->assertEquals( + array_keys($elementErrorMessages), + $expectedValidationMessages + ); + } else { + $this->assertFalse($elementErrorMessages); + } + } + + /** + * Test if service name as expected + * + * @param $elementHierarchy + * @param $serviceName + * + * @throws \Exception + */ + public function assertServiceEquals($elementHierarchy, $serviceName) + { + + $element = $this->getFormElement($elementHierarchy); + $this->assertContains('service_name', array_keys($element->getOptions()), "service name option not set"); + $this->assertEquals($element->getOption('service_name'), $serviceName, "service_name option does not match class name provided"); + } + + /** + * Get messages for specified element + * + * @param array $elementHierarchy Element and/or Fieldset hierarchy + * @param array $formErrorMessages Error messages from Form service + * + * @return array|false + */ + private function getElementMessages($elementHierarchy, $formErrorMessages) + { + $elementOrFieldsetName = (is_array($elementHierarchy))? + current($elementHierarchy) : next($elementHierarchy); + + if (isset($formErrorMessages[$elementOrFieldsetName]) && + is_array($formErrorMessages[$elementOrFieldsetName]) + ) { + // are we at the end? + if (next($elementHierarchy) === false) { + return $formErrorMessages[$elementOrFieldsetName]; + } + + return $this->getElementMessages( + $elementHierarchy, + $formErrorMessages[$elementOrFieldsetName] + ); + } + + return false; + } + + /** + * Check that tests exists for all form elements + * This needs to be the last test that runs + * + * @param string $elementName Element name to test + * + * @dataProvider dataProviderAllElementNames + * @doesNotPerformAssertions + * + * @return void + */ + public function testMissingTest($elementName) + { + if (!array_key_exists($elementName, self::$testedElements)) { + $this->markTestIncomplete(sprintf('"%s" form element not tested', $elementName)); + } + } + + /** + * Data provider, a full list of element names on this form + * + * @return array + */ + public function dataProviderAllElementNames() + { + $elementList = $this->getElementList($this->getForm()); + foreach ($elementList as &$elementName) { + $elementName = [$elementName]; + } + return $elementList; + } + + /** + * Get a list of all form elements + * + * @param \Laminas\Form\Fieldset $fieldsset Fieldset + * @param string $prefix Prefix + * + * @return array eg ['fields.numOfCows', 'fields.numOfDogs'] + */ + private function getElementList(\Laminas\Form\Fieldset $fieldsset, $prefix = '') + { + $elementList = []; + /** @var \Laminas\Form\Element $element */ + foreach ($fieldsset->getFieldsets() as $childFieldSet) { + $elementList = array_merge( + $elementList, + $this->getElementList( + $childFieldSet, + $prefix . $childFieldSet->getName() .'.' + ) + ); + } + foreach ($fieldsset->getElements() as $element) { + $elementList[] = $prefix . $element->getName(); + } + return $elementList; + } + + protected function getElementByHierarchy($elementHierarchy): ElementInterface + { + $elementOrFieldSet = $this->sut; + foreach($elementHierarchy as $name) { + $elementOrFieldSet = $elementOrFieldSet->get($name); + } + return $elementOrFieldSet; + } +} diff --git a/test/Olcs/src/TestHelpers/ControllerPluginManagerHelper.php b/test/Olcs/src/TestHelpers/ControllerPluginManagerHelper.php new file mode 100644 index 000000000..3d7bd8edb --- /dev/null +++ b/test/Olcs/src/TestHelpers/ControllerPluginManagerHelper.php @@ -0,0 +1,41 @@ +shouldReceive('__invoke')->andReturnSelf(); + return $mockPlugin; + } + + /** + * @param $plugins + * @return m\MockInterface|\Laminas\Mvc\Controller\PluginManager + */ + public function getMockPluginManager($plugins) + { + $mockPluginManager = m::mock('Laminas\Mvc\Controller\PluginManager'); + $mockPluginManager->shouldReceive('setController'); + + foreach ($plugins as $name => $class) { + $mockPlugin = $this->getMockPlugin($class); + $mockPluginManager->shouldReceive('get')->with($name, '')->andReturn($mockPlugin); + $mockPluginManager->shouldReceive('get')->with($name)->andReturn($mockPlugin); + } + + return $mockPluginManager; + } +} diff --git a/test/Permits/src/Form/Model/Form/DeclineApplicationFormTest.php b/test/Permits/src/Form/Model/Form/DeclineApplicationFormTest.php index aaa8c77ab..7a0dbe44d 100644 --- a/test/Permits/src/Form/Model/Form/DeclineApplicationFormTest.php +++ b/test/Permits/src/Form/Model/Form/DeclineApplicationFormTest.php @@ -3,7 +3,7 @@ namespace PermitsTest\Form\Model\Form; use Common\Form\Elements\InputFilters\ActionButton; -use Olcs\TestHelpers\FormTester\AbstractFormValidationTestCase; +use OlcsTest\TestHelpers\AbstractFormValidationTestCase; use Laminas\Validator; /** diff --git a/test/Permits/src/Form/Model/Form/LicenceSelectionFormTest.php b/test/Permits/src/Form/Model/Form/LicenceSelectionFormTest.php index 02f08ca21..55eb5a4cd 100644 --- a/test/Permits/src/Form/Model/Form/LicenceSelectionFormTest.php +++ b/test/Permits/src/Form/Model/Form/LicenceSelectionFormTest.php @@ -4,7 +4,7 @@ use \Common\Form\Elements\InputFilters\ActionButton; use Common\Form\Elements\Types\Radio; -use Olcs\TestHelpers\FormTester\AbstractFormValidationTestCase; +use OlcsTest\TestHelpers\AbstractFormValidationTestCase; /** * Class LicenceSelectionFormTest diff --git a/test/Permits/src/View/Helper/PermitsCheckAnswerLinkTest.php b/test/Permits/src/View/Helper/PermitsCheckAnswerLinkTest.php index eaee4e2a4..2e2900962 100644 --- a/test/Permits/src/View/Helper/PermitsCheckAnswerLinkTest.php +++ b/test/Permits/src/View/Helper/PermitsCheckAnswerLinkTest.php @@ -4,9 +4,9 @@ namespace PermitsTest\View\Helper; -use Permits\View\Helper\PermitsCheckAnswerLink; use Mockery as m; use Laminas\View\Renderer\RendererInterface; +use Permits\View\Helper\PermitsCheckAnswerLink; class PermitsCheckAnswerLinkTest extends m\Adapter\Phpunit\MockeryTestCase { @@ -27,7 +27,7 @@ public function testInvoke(): void $params = ['params']; $options = ['options']; - + $view = m::mock(RendererInterface::class); $view->shouldReceive('translate') ->once() diff --git a/test/phpunit.xml b/test/phpunit.xml deleted file mode 100644 index 984b3b870..000000000 --- a/test/phpunit.xml +++ /dev/null @@ -1,36 +0,0 @@ - - - - - ../module/Application/src - ../module/Olcs/src - ../module/Permits/src - - - ../module/Olcs/src/Table/ - ../module/Olcs/src/Form/ - ../module/Permits/src/Permits/Table/ - ../module/Permits/src/Permits/Form/ - - - - - ./ - ../module/Application/test - - - - - - - - 250 - - - 5 - - - - - - diff --git a/vendor-bin/phpcs/composer.json b/vendor-bin/phpcs/composer.json new file mode 100644 index 000000000..251773c9f --- /dev/null +++ b/vendor-bin/phpcs/composer.json @@ -0,0 +1,6 @@ +{ + "require-dev": { + "squizlabs/php_codesniffer": "^3.7", + "dvsa/coding-standards": "^2.0" + } +} diff --git a/vendor-bin/phpstan/composer.json b/vendor-bin/phpstan/composer.json new file mode 100644 index 000000000..e452dbff1 --- /dev/null +++ b/vendor-bin/phpstan/composer.json @@ -0,0 +1,5 @@ +{ + "require-dev": { + "phpstan/phpstan": "^1.10" + } +} diff --git a/vendor-bin/psalm/composer.json b/vendor-bin/psalm/composer.json new file mode 100644 index 000000000..376009c7c --- /dev/null +++ b/vendor-bin/psalm/composer.json @@ -0,0 +1,5 @@ +{ + "require-dev": { + "vimeo/psalm": "^5.15" + } +}