From 25d33b0e68582400822223ce2bbc6f33ad7cd8fe Mon Sep 17 00:00:00 2001 From: Johan Kromhout Date: Thu, 20 Nov 2025 11:42:41 +0100 Subject: [PATCH 01/32] Plain package update In test/development mode, don't flood the console with queries. Update mariaDb version to match production. In the devbox, we want deprecations to fail the pipeline. In Github, we don't want that, as dependabot updates or small package udates should not cause the build to fail. We will handle the deprecations once a developer works on the project. Add a separate deprecation.log in development mode. --- .github/workflows/test-integration.yml | 4 +- ci/qa/phplint.yaml | 2 +- ci/qa/phpunit-ci | 1 + ci/qa/phpunit.xml | 10 +- composer.json | 6 +- composer.lock | 2102 +++++++++++++----------- config/openconext/parameters.yaml.dist | 2 +- config/packages/monolog.yaml | 10 +- symfony.lock | 3 - 9 files changed, 1195 insertions(+), 945 deletions(-) create mode 100755 ci/qa/phpunit-ci diff --git a/.github/workflows/test-integration.yml b/.github/workflows/test-integration.yml index 16584a5b6..5a33cb775 100644 --- a/.github/workflows/test-integration.yml +++ b/.github/workflows/test-integration.yml @@ -22,4 +22,6 @@ jobs: run: composer install - name: Run QA tests - run: composer check + run: composer check-ci + env: + SYMFONY_DEPRECATIONS_HELPER: 999999 diff --git a/ci/qa/phplint.yaml b/ci/qa/phplint.yaml index d6dfb6c33..2b5943efd 100644 --- a/ci/qa/phplint.yaml +++ b/ci/qa/phplint.yaml @@ -1,6 +1,6 @@ path: [./src, ./tests] jobs: 10 -cache: /var/qa/phplint.cache +cache-dir: var/cache/qa/phpla int.cache extensions: - php exclude: diff --git a/ci/qa/phpunit-ci b/ci/qa/phpunit-ci new file mode 100755 index 000000000..8b1378917 --- /dev/null +++ b/ci/qa/phpunit-ci @@ -0,0 +1 @@ + diff --git a/ci/qa/phpunit.xml b/ci/qa/phpunit.xml index 84ae926ca..8bbcf9a74 100644 --- a/ci/qa/phpunit.xml +++ b/ci/qa/phpunit.xml @@ -1,6 +1,13 @@ - + ../../src @@ -12,7 +19,6 @@ - diff --git a/composer.json b/composer.json index 59a58e6f3..d8d4f1403 100644 --- a/composer.json +++ b/composer.json @@ -68,7 +68,7 @@ "phpstan/phpstan-mockery": "^1.1.3", "phpstan/phpstan-symfony": "^1.4.13", "phpunit/phpunit": "^9.6.22", - "rector/rector": "^1.2.10", + "rector/rector": "^1.2", "sebastian/phpcpd": "^6.0.3", "squizlabs/php_codesniffer": "^3.11.3", "symfony/browser-kit": "6.4.*", @@ -82,6 +82,10 @@ "assets:install %PUBLIC_DIR%": "symfony-cmd" }, "check": [ + "@check-ci", + "composer audit" + ], + "check-ci": [ "@phplint", "@phpmd", "@phpcs", diff --git a/composer.lock b/composer.lock index a1627c113..2f5f0d01a 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "d03ad781575588900fdee3214b539c50", + "content-hash": "bb5ba44566fcc44a3010e5514730b65f", "packages": [ { "name": "beberlei/assert", @@ -75,25 +75,25 @@ }, { "name": "brick/math", - "version": "0.12.2", + "version": "0.14.0", "source": { "type": "git", "url": "https://github.com/brick/math.git", - "reference": "901eddb1e45a8e0f689302e40af871c181ecbe40" + "reference": "113a8ee2656b882d4c3164fa31aa6e12cbb7aaa2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/brick/math/zipball/901eddb1e45a8e0f689302e40af871c181ecbe40", - "reference": "901eddb1e45a8e0f689302e40af871c181ecbe40", + "url": "https://api.github.com/repos/brick/math/zipball/113a8ee2656b882d4c3164fa31aa6e12cbb7aaa2", + "reference": "113a8ee2656b882d4c3164fa31aa6e12cbb7aaa2", "shasum": "" }, "require": { - "php": "^8.1" + "php": "^8.2" }, "require-dev": { "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^10.1", - "vimeo/psalm": "6.8.8" + "phpstan/phpstan": "2.1.22", + "phpunit/phpunit": "^11.5" }, "type": "library", "autoload": { @@ -123,7 +123,7 @@ ], "support": { "issues": "https://github.com/brick/math/issues", - "source": "https://github.com/brick/math/tree/0.12.2" + "source": "https://github.com/brick/math/tree/0.14.0" }, "funding": [ { @@ -131,7 +131,7 @@ "type": "github" } ], - "time": "2025-02-26T10:21:45+00:00" + "time": "2025-08-29T12:40:03+00:00" }, { "name": "broadway/broadway", @@ -346,16 +346,16 @@ }, { "name": "composer/ca-bundle", - "version": "1.5.5", + "version": "1.5.9", "source": { "type": "git", "url": "https://github.com/composer/ca-bundle.git", - "reference": "08c50d5ec4c6ced7d0271d2862dec8c1033283e6" + "reference": "1905981ee626e6f852448b7aaa978f8666c5bc54" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/ca-bundle/zipball/08c50d5ec4c6ced7d0271d2862dec8c1033283e6", - "reference": "08c50d5ec4c6ced7d0271d2862dec8c1033283e6", + "url": "https://api.github.com/repos/composer/ca-bundle/zipball/1905981ee626e6f852448b7aaa978f8666c5bc54", + "reference": "1905981ee626e6f852448b7aaa978f8666c5bc54", "shasum": "" }, "require": { @@ -402,7 +402,7 @@ "support": { "irc": "irc://irc.freenode.org/composer", "issues": "https://github.com/composer/ca-bundle/issues", - "source": "https://github.com/composer/ca-bundle/tree/1.5.5" + "source": "https://github.com/composer/ca-bundle/tree/1.5.9" }, "funding": [ { @@ -412,13 +412,9 @@ { "url": "https://github.com/composer", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/composer/composer", - "type": "tidelift" } ], - "time": "2025-01-08T16:17:16+00:00" + "time": "2025-11-06T11:46:17+00:00" }, { "name": "doctrine/annotations", @@ -494,126 +490,34 @@ "issues": "https://github.com/doctrine/annotations/issues", "source": "https://github.com/doctrine/annotations/tree/2.0.2" }, + "abandoned": true, "time": "2024-09-05T10:17:24+00:00" }, - { - "name": "doctrine/cache", - "version": "2.2.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/cache.git", - "reference": "1ca8f21980e770095a31456042471a57bc4c68fb" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/cache/zipball/1ca8f21980e770095a31456042471a57bc4c68fb", - "reference": "1ca8f21980e770095a31456042471a57bc4c68fb", - "shasum": "" - }, - "require": { - "php": "~7.1 || ^8.0" - }, - "conflict": { - "doctrine/common": ">2.2,<2.4" - }, - "require-dev": { - "cache/integration-tests": "dev-master", - "doctrine/coding-standard": "^9", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "psr/cache": "^1.0 || ^2.0 || ^3.0", - "symfony/cache": "^4.4 || ^5.4 || ^6", - "symfony/var-exporter": "^4.4 || ^5.4 || ^6" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "PHP Doctrine Cache library is a popular cache implementation that supports many different drivers such as redis, memcache, apc, mongodb and others.", - "homepage": "https://www.doctrine-project.org/projects/cache.html", - "keywords": [ - "abstraction", - "apcu", - "cache", - "caching", - "couchdb", - "memcached", - "php", - "redis", - "xcache" - ], - "support": { - "issues": "https://github.com/doctrine/cache/issues", - "source": "https://github.com/doctrine/cache/tree/2.2.0" - }, - "funding": [ - { - "url": "https://www.doctrine-project.org/sponsorship.html", - "type": "custom" - }, - { - "url": "https://www.patreon.com/phpdoctrine", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fcache", - "type": "tidelift" - } - ], - "time": "2022-05-20T20:07:39+00:00" - }, { "name": "doctrine/collections", - "version": "2.2.2", + "version": "2.4.0", "source": { "type": "git", "url": "https://github.com/doctrine/collections.git", - "reference": "d8af7f248c74f195f7347424600fd9e17b57af59" + "reference": "9acfeea2e8666536edff3d77c531261c63680160" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/collections/zipball/d8af7f248c74f195f7347424600fd9e17b57af59", - "reference": "d8af7f248c74f195f7347424600fd9e17b57af59", + "url": "https://api.github.com/repos/doctrine/collections/zipball/9acfeea2e8666536edff3d77c531261c63680160", + "reference": "9acfeea2e8666536edff3d77c531261c63680160", "shasum": "" }, "require": { "doctrine/deprecations": "^1", - "php": "^8.1" + "php": "^8.1", + "symfony/polyfill-php84": "^1.30" }, "require-dev": { - "doctrine/coding-standard": "^12", + "doctrine/coding-standard": "^14", "ext-json": "*", - "phpstan/phpstan": "^1.8", - "phpstan/phpstan-phpunit": "^1.0", - "phpunit/phpunit": "^10.5", - "vimeo/psalm": "^5.11" + "phpstan/phpstan": "^2.1.30", + "phpstan/phpstan-phpunit": "^2.0.7", + "phpunit/phpunit": "^10.5.58 || ^11.5.42 || ^12.4" }, "type": "library", "autoload": { @@ -657,7 +561,7 @@ ], "support": { "issues": "https://github.com/doctrine/collections/issues", - "source": "https://github.com/doctrine/collections/tree/2.2.2" + "source": "https://github.com/doctrine/collections/tree/2.4.0" }, "funding": [ { @@ -673,40 +577,43 @@ "type": "tidelift" } ], - "time": "2024-04-18T06:56:21+00:00" + "time": "2025-10-25T09:18:13+00:00" }, { "name": "doctrine/dbal", - "version": "3.9.4", + "version": "3.10.3", "source": { "type": "git", "url": "https://github.com/doctrine/dbal.git", - "reference": "ec16c82f20be1a7224e65ac67144a29199f87959" + "reference": "65edaca19a752730f290ec2fb89d593cb40afb43" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/ec16c82f20be1a7224e65ac67144a29199f87959", - "reference": "ec16c82f20be1a7224e65ac67144a29199f87959", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/65edaca19a752730f290ec2fb89d593cb40afb43", + "reference": "65edaca19a752730f290ec2fb89d593cb40afb43", "shasum": "" }, "require": { "composer-runtime-api": "^2", - "doctrine/cache": "^1.11|^2.0", "doctrine/deprecations": "^0.5.3|^1", "doctrine/event-manager": "^1|^2", "php": "^7.4 || ^8.0", "psr/cache": "^1|^2|^3", "psr/log": "^1|^2|^3" }, + "conflict": { + "doctrine/cache": "< 1.11" + }, "require-dev": { - "doctrine/coding-standard": "12.0.0", + "doctrine/cache": "^1.11|^2.0", + "doctrine/coding-standard": "14.0.0", "fig/log-test": "^1", "jetbrains/phpstorm-stubs": "2023.1", - "phpstan/phpstan": "2.1.1", + "phpstan/phpstan": "2.1.30", "phpstan/phpstan-strict-rules": "^2", - "phpunit/phpunit": "9.6.22", - "slevomat/coding-standard": "8.13.1", - "squizlabs/php_codesniffer": "3.10.2", + "phpunit/phpunit": "9.6.29", + "slevomat/coding-standard": "8.24.0", + "squizlabs/php_codesniffer": "4.0.0", "symfony/cache": "^5.4|^6.0|^7.0", "symfony/console": "^4.4|^5.4|^6.0|^7.0" }, @@ -768,7 +675,7 @@ ], "support": { "issues": "https://github.com/doctrine/dbal/issues", - "source": "https://github.com/doctrine/dbal/tree/3.9.4" + "source": "https://github.com/doctrine/dbal/tree/3.10.3" }, "funding": [ { @@ -784,30 +691,33 @@ "type": "tidelift" } ], - "time": "2025-01-16T08:28:55+00:00" + "time": "2025-10-09T09:05:12+00:00" }, { "name": "doctrine/deprecations", - "version": "1.1.4", + "version": "1.1.5", "source": { "type": "git", "url": "https://github.com/doctrine/deprecations.git", - "reference": "31610dbb31faa98e6b5447b62340826f54fbc4e9" + "reference": "459c2f5dd3d6a4633d3b5f46ee2b1c40f57d3f38" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/deprecations/zipball/31610dbb31faa98e6b5447b62340826f54fbc4e9", - "reference": "31610dbb31faa98e6b5447b62340826f54fbc4e9", + "url": "https://api.github.com/repos/doctrine/deprecations/zipball/459c2f5dd3d6a4633d3b5f46ee2b1c40f57d3f38", + "reference": "459c2f5dd3d6a4633d3b5f46ee2b1c40f57d3f38", "shasum": "" }, "require": { "php": "^7.1 || ^8.0" }, + "conflict": { + "phpunit/phpunit": "<=7.5 || >=13" + }, "require-dev": { - "doctrine/coding-standard": "^9 || ^12", - "phpstan/phpstan": "1.4.10 || 2.0.3", + "doctrine/coding-standard": "^9 || ^12 || ^13", + "phpstan/phpstan": "1.4.10 || 2.1.11", "phpstan/phpstan-phpunit": "^1.0 || ^2", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.6 || ^10.5 || ^11.5 || ^12", "psr/log": "^1 || ^2 || ^3" }, "suggest": { @@ -827,68 +737,69 @@ "homepage": "https://www.doctrine-project.org/", "support": { "issues": "https://github.com/doctrine/deprecations/issues", - "source": "https://github.com/doctrine/deprecations/tree/1.1.4" + "source": "https://github.com/doctrine/deprecations/tree/1.1.5" }, - "time": "2024-12-07T21:18:45+00:00" + "time": "2025-04-07T20:06:18+00:00" }, { "name": "doctrine/doctrine-bundle", - "version": "2.13.2", + "version": "2.18.1", "source": { "type": "git", "url": "https://github.com/doctrine/DoctrineBundle.git", - "reference": "2363c43d9815a11657e452625cd64172d5587486" + "reference": "b769877014de053da0e5cbbb63d0ea2f3b2fea76" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/2363c43d9815a11657e452625cd64172d5587486", - "reference": "2363c43d9815a11657e452625cd64172d5587486", + "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/b769877014de053da0e5cbbb63d0ea2f3b2fea76", + "reference": "b769877014de053da0e5cbbb63d0ea2f3b2fea76", "shasum": "" }, "require": { - "doctrine/cache": "^1.11 || ^2.0", "doctrine/dbal": "^3.7.0 || ^4.0", - "doctrine/persistence": "^2.2 || ^3", + "doctrine/deprecations": "^1.0", + "doctrine/persistence": "^3.1 || ^4", "doctrine/sql-formatter": "^1.0.1", - "php": "^7.4 || ^8.0", - "symfony/cache": "^5.4 || ^6.0 || ^7.0", - "symfony/config": "^5.4 || ^6.0 || ^7.0", - "symfony/console": "^5.4 || ^6.0 || ^7.0", - "symfony/dependency-injection": "^5.4 || ^6.0 || ^7.0", - "symfony/deprecation-contracts": "^2.1 || ^3", - "symfony/doctrine-bridge": "^5.4.46 || ~6.3.12 || ^6.4.3 || ^7.0.3", - "symfony/framework-bundle": "^5.4 || ^6.0 || ^7.0", - "symfony/polyfill-php80": "^1.15", - "symfony/service-contracts": "^1.1.1 || ^2.0 || ^3" + "php": "^8.1", + "symfony/cache": "^6.4 || ^7.0", + "symfony/config": "^6.4 || ^7.0", + "symfony/console": "^6.4 || ^7.0", + "symfony/dependency-injection": "^6.4 || ^7.0", + "symfony/doctrine-bridge": "^6.4.3 || ^7.0.3", + "symfony/framework-bundle": "^6.4 || ^7.0", + "symfony/service-contracts": "^2.5 || ^3" }, "conflict": { "doctrine/annotations": ">=3.0", + "doctrine/cache": "< 1.11", "doctrine/orm": "<2.17 || >=4.0", - "twig/twig": "<1.34 || >=2.0 <2.4" + "symfony/var-exporter": "< 6.4.1 || 7.0.0", + "twig/twig": "<2.13 || >=3.0 <3.0.4" }, "require-dev": { "doctrine/annotations": "^1 || ^2", - "doctrine/coding-standard": "^12", - "doctrine/deprecations": "^1.0", - "doctrine/orm": "^2.17 || ^3.0", + "doctrine/cache": "^1.11 || ^2.0", + "doctrine/coding-standard": "^14", + "doctrine/orm": "^2.17 || ^3.1", "friendsofphp/proxy-manager-lts": "^1.0", "phpstan/phpstan": "2.1.1", "phpstan/phpstan-phpunit": "2.0.3", "phpstan/phpstan-strict-rules": "^2", - "phpunit/phpunit": "^9.5.26", + "phpunit/phpunit": "^10.5.53 || ^12.3.10", "psr/log": "^1.1.4 || ^2.0 || ^3.0", - "symfony/phpunit-bridge": "^6.1 || ^7.0", - "symfony/property-info": "^5.4 || ^6.0 || ^7.0", - "symfony/proxy-manager-bridge": "^5.4 || ^6.0", - "symfony/security-bundle": "^5.4 || ^6.0 || ^7.0", - "symfony/stopwatch": "^5.4 || ^6.0 || ^7.0", - "symfony/string": "^5.4 || ^6.0 || ^7.0", - "symfony/twig-bridge": "^5.4 || ^6.0 || ^7.0", - "symfony/validator": "^5.4 || ^6.0 || ^7.0", - "symfony/var-exporter": "^5.4 || ^6.2 || ^7.0", - "symfony/web-profiler-bundle": "^5.4 || ^6.0 || ^7.0", - "symfony/yaml": "^5.4 || ^6.0 || ^7.0", - "twig/twig": "^1.34 || ^2.12 || ^3.0" + "symfony/doctrine-messenger": "^6.4 || ^7.0", + "symfony/expression-language": "^6.4 || ^7.0", + "symfony/messenger": "^6.4 || ^7.0", + "symfony/property-info": "^6.4 || ^7.0", + "symfony/security-bundle": "^6.4 || ^7.0", + "symfony/stopwatch": "^6.4 || ^7.0", + "symfony/string": "^6.4 || ^7.0", + "symfony/twig-bridge": "^6.4 || ^7.0", + "symfony/validator": "^6.4 || ^7.0", + "symfony/var-exporter": "^6.4.1 || ^7.0.1", + "symfony/web-profiler-bundle": "^6.4 || ^7.0", + "symfony/yaml": "^6.4 || ^7.0", + "twig/twig": "^2.14.7 || ^3.0.4" }, "suggest": { "doctrine/orm": "The Doctrine ORM integration is optional in the bundle.", @@ -933,7 +844,7 @@ ], "support": { "issues": "https://github.com/doctrine/DoctrineBundle/issues", - "source": "https://github.com/doctrine/DoctrineBundle/tree/2.13.2" + "source": "https://github.com/doctrine/DoctrineBundle/tree/2.18.1" }, "funding": [ { @@ -949,42 +860,41 @@ "type": "tidelift" } ], - "time": "2025-01-15T11:12:38+00:00" + "time": "2025-11-05T14:42:10+00:00" }, { "name": "doctrine/doctrine-migrations-bundle", - "version": "3.4.1", + "version": "3.7.0", "source": { "type": "git", "url": "https://github.com/doctrine/DoctrineMigrationsBundle.git", - "reference": "e858ce0f5c12b266dce7dce24834448355155da7" + "reference": "1e380c6dd8ac8488217f39cff6b77e367f1a644b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineMigrationsBundle/zipball/e858ce0f5c12b266dce7dce24834448355155da7", - "reference": "e858ce0f5c12b266dce7dce24834448355155da7", + "url": "https://api.github.com/repos/doctrine/DoctrineMigrationsBundle/zipball/1e380c6dd8ac8488217f39cff6b77e367f1a644b", + "reference": "1e380c6dd8ac8488217f39cff6b77e367f1a644b", "shasum": "" }, "require": { - "doctrine/doctrine-bundle": "^2.4", + "doctrine/doctrine-bundle": "^2.4 || ^3.0", "doctrine/migrations": "^3.2", "php": "^7.2 || ^8.0", "symfony/deprecation-contracts": "^2.1 || ^3", - "symfony/framework-bundle": "^5.4 || ^6.0 || ^7.0" + "symfony/framework-bundle": "^5.4 || ^6.0 || ^7.0 || ^8.0" }, "require-dev": { "composer/semver": "^3.0", - "doctrine/coding-standard": "^12", + "doctrine/coding-standard": "^12 || ^14", "doctrine/orm": "^2.6 || ^3", - "doctrine/persistence": "^2.0 || ^3", "phpstan/phpstan": "^1.4 || ^2", "phpstan/phpstan-deprecation-rules": "^1 || ^2", "phpstan/phpstan-phpunit": "^1 || ^2", "phpstan/phpstan-strict-rules": "^1.1 || ^2", "phpstan/phpstan-symfony": "^1.3 || ^2", "phpunit/phpunit": "^8.5 || ^9.5", - "symfony/phpunit-bridge": "^6.3 || ^7", - "symfony/var-exporter": "^5.4 || ^6 || ^7" + "symfony/phpunit-bridge": "^6.3 || ^7 || ^8", + "symfony/var-exporter": "^5.4 || ^6 || ^7 || ^8" }, "type": "symfony-bundle", "autoload": { @@ -1019,7 +929,7 @@ ], "support": { "issues": "https://github.com/doctrine/DoctrineMigrationsBundle/issues", - "source": "https://github.com/doctrine/DoctrineMigrationsBundle/tree/3.4.1" + "source": "https://github.com/doctrine/DoctrineMigrationsBundle/tree/3.7.0" }, "funding": [ { @@ -1035,7 +945,7 @@ "type": "tidelift" } ], - "time": "2025-01-27T22:48:22+00:00" + "time": "2025-11-15T19:02:59+00:00" }, { "name": "doctrine/event-manager", @@ -1130,33 +1040,32 @@ }, { "name": "doctrine/inflector", - "version": "2.0.10", + "version": "2.1.0", "source": { "type": "git", "url": "https://github.com/doctrine/inflector.git", - "reference": "5817d0659c5b50c9b950feb9af7b9668e2c436bc" + "reference": "6d6c96277ea252fc1304627204c3d5e6e15faa3b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/5817d0659c5b50c9b950feb9af7b9668e2c436bc", - "reference": "5817d0659c5b50c9b950feb9af7b9668e2c436bc", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/6d6c96277ea252fc1304627204c3d5e6e15faa3b", + "reference": "6d6c96277ea252fc1304627204c3d5e6e15faa3b", "shasum": "" }, "require": { "php": "^7.2 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^11.0", - "phpstan/phpstan": "^1.8", - "phpstan/phpstan-phpunit": "^1.1", - "phpstan/phpstan-strict-rules": "^1.3", - "phpunit/phpunit": "^8.5 || ^9.5", - "vimeo/psalm": "^4.25 || ^5.4" + "doctrine/coding-standard": "^12.0 || ^13.0", + "phpstan/phpstan": "^1.12 || ^2.0", + "phpstan/phpstan-phpunit": "^1.4 || ^2.0", + "phpstan/phpstan-strict-rules": "^1.6 || ^2.0", + "phpunit/phpunit": "^8.5 || ^12.2" }, "type": "library", "autoload": { "psr-4": { - "Doctrine\\Inflector\\": "lib/Doctrine/Inflector" + "Doctrine\\Inflector\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -1201,7 +1110,7 @@ ], "support": { "issues": "https://github.com/doctrine/inflector/issues", - "source": "https://github.com/doctrine/inflector/tree/2.0.10" + "source": "https://github.com/doctrine/inflector/tree/2.1.0" }, "funding": [ { @@ -1217,7 +1126,7 @@ "type": "tidelift" } ], - "time": "2024-02-18T20:23:39+00:00" + "time": "2025-08-10T19:31:58+00:00" }, { "name": "doctrine/instantiator", @@ -1368,16 +1277,16 @@ }, { "name": "doctrine/migrations", - "version": "3.8.2", + "version": "3.9.4", "source": { "type": "git", "url": "https://github.com/doctrine/migrations.git", - "reference": "5007eb1168691225ac305fe16856755c20860842" + "reference": "1b88fcb812f2cd6e77c83d16db60e3cf1e35c66c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/migrations/zipball/5007eb1168691225ac305fe16856755c20860842", - "reference": "5007eb1168691225ac305fe16856755c20860842", + "url": "https://api.github.com/repos/doctrine/migrations/zipball/1b88fcb812f2cd6e77c83d16db60e3cf1e35c66c", + "reference": "1b88fcb812f2cd6e77c83d16db60e3cf1e35c66c", "shasum": "" }, "require": { @@ -1395,18 +1304,18 @@ "doctrine/orm": "<2.12 || >=4" }, "require-dev": { - "doctrine/coding-standard": "^12", + "doctrine/coding-standard": "^13", "doctrine/orm": "^2.13 || ^3", - "doctrine/persistence": "^2 || ^3", + "doctrine/persistence": "^2 || ^3 || ^4", "doctrine/sql-formatter": "^1.0", "ext-pdo_sqlite": "*", "fig/log-test": "^1", - "phpstan/phpstan": "^1.10", - "phpstan/phpstan-deprecation-rules": "^1.1", - "phpstan/phpstan-phpunit": "^1.3", - "phpstan/phpstan-strict-rules": "^1.4", - "phpstan/phpstan-symfony": "^1.3", - "phpunit/phpunit": "^10.3", + "phpstan/phpstan": "^2", + "phpstan/phpstan-deprecation-rules": "^2", + "phpstan/phpstan-phpunit": "^2", + "phpstan/phpstan-strict-rules": "^2", + "phpstan/phpstan-symfony": "^2", + "phpunit/phpunit": "^10.3 || ^11.0 || ^12.0", "symfony/cache": "^5.4 || ^6.0 || ^7.0", "symfony/process": "^5.4 || ^6.0 || ^7.0", "symfony/yaml": "^5.4 || ^6.0 || ^7.0" @@ -1451,7 +1360,7 @@ ], "support": { "issues": "https://github.com/doctrine/migrations/issues", - "source": "https://github.com/doctrine/migrations/tree/3.8.2" + "source": "https://github.com/doctrine/migrations/tree/3.9.4" }, "funding": [ { @@ -1467,20 +1376,20 @@ "type": "tidelift" } ], - "time": "2024-10-10T21:35:27+00:00" + "time": "2025-08-19T06:41:07+00:00" }, { "name": "doctrine/orm", - "version": "3.3.2", + "version": "3.5.7", "source": { "type": "git", "url": "https://github.com/doctrine/orm.git", - "reference": "c9557c588b3a70ed93caff069d0aa75737f25609" + "reference": "f18de9d569f00ed6eb9dac4b33c7844d705d17da" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/orm/zipball/c9557c588b3a70ed93caff069d0aa75737f25609", - "reference": "c9557c588b3a70ed93caff069d0aa75737f25609", + "url": "https://api.github.com/repos/doctrine/orm/zipball/f18de9d569f00ed6eb9dac4b33c7844d705d17da", + "reference": "f18de9d569f00ed6eb9dac4b33c7844d705d17da", "shasum": "" }, "require": { @@ -1500,15 +1409,14 @@ "symfony/var-exporter": "^6.3.9 || ^7.0" }, "require-dev": { - "doctrine/coding-standard": "^12.0", + "doctrine/coding-standard": "^14.0", "phpbench/phpbench": "^1.0", "phpdocumentor/guides-cli": "^1.4", "phpstan/extension-installer": "^1.4", - "phpstan/phpstan": "2.0.3", + "phpstan/phpstan": "2.1.23", "phpstan/phpstan-deprecation-rules": "^2", - "phpunit/phpunit": "^10.4.0", + "phpunit/phpunit": "^10.5.0 || ^11.5", "psr/log": "^1 || ^2 || ^3", - "squizlabs/php_codesniffer": "3.7.2", "symfony/cache": "^5.4 || ^6.2 || ^7.0" }, "suggest": { @@ -1555,22 +1463,22 @@ ], "support": { "issues": "https://github.com/doctrine/orm/issues", - "source": "https://github.com/doctrine/orm/tree/3.3.2" + "source": "https://github.com/doctrine/orm/tree/3.5.7" }, - "time": "2025-02-04T19:43:15+00:00" + "time": "2025-11-11T18:27:40+00:00" }, { "name": "doctrine/persistence", - "version": "3.4.0", + "version": "3.4.3", "source": { "type": "git", "url": "https://github.com/doctrine/persistence.git", - "reference": "0ea965320cec355dba75031c1b23d4c78362e3ff" + "reference": "d59e6ef7caffe6a30f4b6f9e9079a75f52c64ae0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/persistence/zipball/0ea965320cec355dba75031c1b23d4c78362e3ff", - "reference": "0ea965320cec355dba75031c1b23d4c78362e3ff", + "url": "https://api.github.com/repos/doctrine/persistence/zipball/d59e6ef7caffe6a30f4b6f9e9079a75f52c64ae0", + "reference": "d59e6ef7caffe6a30f4b6f9e9079a75f52c64ae0", "shasum": "" }, "require": { @@ -1582,11 +1490,11 @@ "doctrine/common": "<2.10" }, "require-dev": { - "doctrine/coding-standard": "^12", + "doctrine/coding-standard": "^12 || ^14", "doctrine/common": "^3.0", - "phpstan/phpstan": "1.12.7", - "phpstan/phpstan-phpunit": "^1", - "phpstan/phpstan-strict-rules": "^1.1", + "phpstan/phpstan": "^1 || 2.1.30", + "phpstan/phpstan-phpunit": "^1 || ^2", + "phpstan/phpstan-strict-rules": "^1 || ^2", "phpunit/phpunit": "^8.5.38 || ^9.5", "symfony/cache": "^4.4 || ^5.4 || ^6.0 || ^7.0" }, @@ -1637,7 +1545,7 @@ ], "support": { "issues": "https://github.com/doctrine/persistence/issues", - "source": "https://github.com/doctrine/persistence/tree/3.4.0" + "source": "https://github.com/doctrine/persistence/tree/3.4.3" }, "funding": [ { @@ -1653,30 +1561,30 @@ "type": "tidelift" } ], - "time": "2024-10-30T19:48:12+00:00" + "time": "2025-10-21T15:21:39+00:00" }, { "name": "doctrine/sql-formatter", - "version": "1.5.2", + "version": "1.5.3", "source": { "type": "git", "url": "https://github.com/doctrine/sql-formatter.git", - "reference": "d6d00aba6fd2957fe5216fe2b7673e9985db20c8" + "reference": "a8af23a8e9d622505baa2997465782cbe8bb7fc7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/sql-formatter/zipball/d6d00aba6fd2957fe5216fe2b7673e9985db20c8", - "reference": "d6d00aba6fd2957fe5216fe2b7673e9985db20c8", + "url": "https://api.github.com/repos/doctrine/sql-formatter/zipball/a8af23a8e9d622505baa2997465782cbe8bb7fc7", + "reference": "a8af23a8e9d622505baa2997465782cbe8bb7fc7", "shasum": "" }, "require": { "php": "^8.1" }, "require-dev": { - "doctrine/coding-standard": "^12", - "ergebnis/phpunit-slow-test-detector": "^2.14", - "phpstan/phpstan": "^1.10", - "phpunit/phpunit": "^10.5" + "doctrine/coding-standard": "^14", + "ergebnis/phpunit-slow-test-detector": "^2.20", + "phpstan/phpstan": "^2.1.31", + "phpunit/phpunit": "^10.5.58" }, "bin": [ "bin/sql-formatter" @@ -1706,22 +1614,22 @@ ], "support": { "issues": "https://github.com/doctrine/sql-formatter/issues", - "source": "https://github.com/doctrine/sql-formatter/tree/1.5.2" + "source": "https://github.com/doctrine/sql-formatter/tree/1.5.3" }, - "time": "2025-01-24T11:45:48+00:00" + "time": "2025-10-26T09:35:14+00:00" }, { "name": "egulias/email-validator", - "version": "4.0.3", + "version": "4.0.4", "source": { "type": "git", "url": "https://github.com/egulias/EmailValidator.git", - "reference": "b115554301161fa21467629f1e1391c1936de517" + "reference": "d42c8731f0624ad6bdc8d3e5e9a4524f68801cfa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/b115554301161fa21467629f1e1391c1936de517", - "reference": "b115554301161fa21467629f1e1391c1936de517", + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/d42c8731f0624ad6bdc8d3e5e9a4524f68801cfa", + "reference": "d42c8731f0624ad6bdc8d3e5e9a4524f68801cfa", "shasum": "" }, "require": { @@ -1767,7 +1675,7 @@ ], "support": { "issues": "https://github.com/egulias/EmailValidator/issues", - "source": "https://github.com/egulias/EmailValidator/tree/4.0.3" + "source": "https://github.com/egulias/EmailValidator/tree/4.0.4" }, "funding": [ { @@ -1775,7 +1683,7 @@ "type": "github" } ], - "time": "2024-12-27T00:36:43+00:00" + "time": "2025-03-06T22:45:56+00:00" }, { "name": "endroid/installer", @@ -1839,22 +1747,22 @@ }, { "name": "guzzlehttp/guzzle", - "version": "7.9.2", + "version": "7.10.0", "source": { "type": "git", "url": "https://github.com/guzzle/guzzle.git", - "reference": "d281ed313b989f213357e3be1a179f02196ac99b" + "reference": "b51ac707cfa420b7bfd4e4d5e510ba8008e822b4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/d281ed313b989f213357e3be1a179f02196ac99b", - "reference": "d281ed313b989f213357e3be1a179f02196ac99b", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/b51ac707cfa420b7bfd4e4d5e510ba8008e822b4", + "reference": "b51ac707cfa420b7bfd4e4d5e510ba8008e822b4", "shasum": "" }, "require": { "ext-json": "*", - "guzzlehttp/promises": "^1.5.3 || ^2.0.3", - "guzzlehttp/psr7": "^2.7.0", + "guzzlehttp/promises": "^2.3", + "guzzlehttp/psr7": "^2.8", "php": "^7.2.5 || ^8.0", "psr/http-client": "^1.0", "symfony/deprecation-contracts": "^2.2 || ^3.0" @@ -1945,7 +1853,7 @@ ], "support": { "issues": "https://github.com/guzzle/guzzle/issues", - "source": "https://github.com/guzzle/guzzle/tree/7.9.2" + "source": "https://github.com/guzzle/guzzle/tree/7.10.0" }, "funding": [ { @@ -1961,20 +1869,20 @@ "type": "tidelift" } ], - "time": "2024-07-24T11:22:20+00:00" + "time": "2025-08-23T22:36:01+00:00" }, { "name": "guzzlehttp/promises", - "version": "2.0.4", + "version": "2.3.0", "source": { "type": "git", "url": "https://github.com/guzzle/promises.git", - "reference": "f9c436286ab2892c7db7be8c8da4ef61ccf7b455" + "reference": "481557b130ef3790cf82b713667b43030dc9c957" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/f9c436286ab2892c7db7be8c8da4ef61ccf7b455", - "reference": "f9c436286ab2892c7db7be8c8da4ef61ccf7b455", + "url": "https://api.github.com/repos/guzzle/promises/zipball/481557b130ef3790cf82b713667b43030dc9c957", + "reference": "481557b130ef3790cf82b713667b43030dc9c957", "shasum": "" }, "require": { @@ -1982,7 +1890,7 @@ }, "require-dev": { "bamarni/composer-bin-plugin": "^1.8.2", - "phpunit/phpunit": "^8.5.39 || ^9.6.20" + "phpunit/phpunit": "^8.5.44 || ^9.6.25" }, "type": "library", "extra": { @@ -2028,7 +1936,7 @@ ], "support": { "issues": "https://github.com/guzzle/promises/issues", - "source": "https://github.com/guzzle/promises/tree/2.0.4" + "source": "https://github.com/guzzle/promises/tree/2.3.0" }, "funding": [ { @@ -2044,20 +1952,20 @@ "type": "tidelift" } ], - "time": "2024-10-17T10:06:22+00:00" + "time": "2025-08-22T14:34:08+00:00" }, { "name": "guzzlehttp/psr7", - "version": "2.7.0", + "version": "2.8.0", "source": { "type": "git", "url": "https://github.com/guzzle/psr7.git", - "reference": "a70f5c95fb43bc83f07c9c948baa0dc1829bf201" + "reference": "21dc724a0583619cd1652f673303492272778051" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/a70f5c95fb43bc83f07c9c948baa0dc1829bf201", - "reference": "a70f5c95fb43bc83f07c9c948baa0dc1829bf201", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/21dc724a0583619cd1652f673303492272778051", + "reference": "21dc724a0583619cd1652f673303492272778051", "shasum": "" }, "require": { @@ -2073,7 +1981,7 @@ "require-dev": { "bamarni/composer-bin-plugin": "^1.8.2", "http-interop/http-factory-tests": "0.9.0", - "phpunit/phpunit": "^8.5.39 || ^9.6.20" + "phpunit/phpunit": "^8.5.44 || ^9.6.25" }, "suggest": { "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" @@ -2144,7 +2052,7 @@ ], "support": { "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/2.7.0" + "source": "https://github.com/guzzle/psr7/tree/2.8.0" }, "funding": [ { @@ -2160,7 +2068,7 @@ "type": "tidelift" } ], - "time": "2024-07-18T11:15:46+00:00" + "time": "2025-08-23T21:21:41+00:00" }, { "name": "incenteev/composer-parameter-handler", @@ -2306,16 +2214,16 @@ }, { "name": "monolog/monolog", - "version": "3.8.1", + "version": "3.9.0", "source": { "type": "git", "url": "https://github.com/Seldaek/monolog.git", - "reference": "aef6ee73a77a66e404dd6540934a9ef1b3c855b4" + "reference": "10d85740180ecba7896c87e06a166e0c95a0e3b6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/aef6ee73a77a66e404dd6540934a9ef1b3c855b4", - "reference": "aef6ee73a77a66e404dd6540934a9ef1b3c855b4", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/10d85740180ecba7896c87e06a166e0c95a0e3b6", + "reference": "10d85740180ecba7896c87e06a166e0c95a0e3b6", "shasum": "" }, "require": { @@ -2393,7 +2301,7 @@ ], "support": { "issues": "https://github.com/Seldaek/monolog/issues", - "source": "https://github.com/Seldaek/monolog/tree/3.8.1" + "source": "https://github.com/Seldaek/monolog/tree/3.9.0" }, "funding": [ { @@ -2405,20 +2313,20 @@ "type": "tidelift" } ], - "time": "2024-12-05T17:15:07+00:00" + "time": "2025-03-24T10:02:05+00:00" }, { "name": "nelmio/security-bundle", - "version": "v3.4.2", + "version": "v3.6.0", "source": { "type": "git", "url": "https://github.com/nelmio/NelmioSecurityBundle.git", - "reference": "3c4739628eafe886c001210aa0d97b33f3551599" + "reference": "f3a7bf628a0873788172a0d05d20c0224080f5eb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nelmio/NelmioSecurityBundle/zipball/3c4739628eafe886c001210aa0d97b33f3551599", - "reference": "3c4739628eafe886c001210aa0d97b33f3551599", + "url": "https://api.github.com/repos/nelmio/NelmioSecurityBundle/zipball/f3a7bf628a0873788172a0d05d20c0224080f5eb", + "reference": "f3a7bf628a0873788172a0d05d20c0224080f5eb", "shasum": "" }, "require": { @@ -2477,22 +2385,22 @@ ], "support": { "issues": "https://github.com/nelmio/NelmioSecurityBundle/issues", - "source": "https://github.com/nelmio/NelmioSecurityBundle/tree/v3.4.2" + "source": "https://github.com/nelmio/NelmioSecurityBundle/tree/v3.6.0" }, - "time": "2024-09-10T13:22:26+00:00" + "time": "2025-09-19T08:24:46+00:00" }, { "name": "nikic/php-parser", - "version": "v5.4.0", + "version": "v5.6.2", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "447a020a1f875a434d62f2a401f53b82a396e494" + "reference": "3a454ca033b9e06b63282ce19562e892747449bb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/447a020a1f875a434d62f2a401f53b82a396e494", - "reference": "447a020a1f875a434d62f2a401f53b82a396e494", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/3a454ca033b9e06b63282ce19562e892747449bb", + "reference": "3a454ca033b9e06b63282ce19562e892747449bb", "shasum": "" }, "require": { @@ -2511,7 +2419,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "5.0-dev" + "dev-master": "5.x-dev" } }, "autoload": { @@ -2535,9 +2443,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v5.4.0" + "source": "https://github.com/nikic/PHP-Parser/tree/v5.6.2" }, - "time": "2024-12-30T11:07:19+00:00" + "time": "2025-10-21T19:32:17+00:00" }, { "name": "openconext/monitor-bundle", @@ -2596,16 +2504,16 @@ }, { "name": "pagerfanta/pagerfanta", - "version": "v4.7.1", + "version": "v4.7.2", "source": { "type": "git", "url": "https://github.com/BabDev/Pagerfanta.git", - "reference": "b09216fc53665c4d8a39b7f60e421165cb4693e4" + "reference": "9320a542e1ed8d1a099a3d380685870e8bb5d553" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/BabDev/Pagerfanta/zipball/b09216fc53665c4d8a39b7f60e421165cb4693e4", - "reference": "b09216fc53665c4d8a39b7f60e421165cb4693e4", + "url": "https://api.github.com/repos/BabDev/Pagerfanta/zipball/9320a542e1ed8d1a099a3d380685870e8bb5d553", + "reference": "9320a542e1ed8d1a099a3d380685870e8bb5d553", "shasum": "" }, "require": { @@ -2635,7 +2543,7 @@ "pagerfanta/twig": "self.version" }, "require-dev": { - "dg/bypass-finals": "^1.5.1", + "dg/bypass-finals": "^1.9", "doctrine/collections": "^1.8 || ^2.0", "doctrine/dbal": "^3.5 || ^4.0", "doctrine/mongodb-odm": "^2.4", @@ -2643,10 +2551,10 @@ "doctrine/phpcr-odm": "^1.7 || ^2.0", "jackalope/jackalope-doctrine-dbal": "^1.9 || ^2.0", "phpstan/extension-installer": "^1.4", - "phpstan/phpstan": "2.0.3", - "phpstan/phpstan-phpunit": "2.0.1", - "phpunit/phpunit": "10.5.39", - "rector/rector": "2.0.3", + "phpstan/phpstan": "2.1.31", + "phpstan/phpstan-phpunit": "2.0.7", + "phpunit/phpunit": "10.5.58", + "rector/rector": "2.2.3", "ruflin/elastica": "^7.3 || ^8.0", "solarium/solarium": "^6.2", "symfony/cache": "^5.4 || ^6.3 || ^7.0", @@ -2685,7 +2593,7 @@ ], "support": { "issues": "https://github.com/BabDev/Pagerfanta/issues", - "source": "https://github.com/BabDev/Pagerfanta/tree/v4.7.1" + "source": "https://github.com/BabDev/Pagerfanta/tree/v4.7.2" }, "funding": [ { @@ -2693,7 +2601,7 @@ "type": "github" } ], - "time": "2024-12-13T15:12:11+00:00" + "time": "2025-10-12T17:35:33+00:00" }, { "name": "psr/cache", @@ -3151,16 +3059,16 @@ }, { "name": "ramsey/collection", - "version": "2.0.0", + "version": "2.1.1", "source": { "type": "git", "url": "https://github.com/ramsey/collection.git", - "reference": "a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5" + "reference": "344572933ad0181accbf4ba763e85a0306a8c5e2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ramsey/collection/zipball/a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5", - "reference": "a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5", + "url": "https://api.github.com/repos/ramsey/collection/zipball/344572933ad0181accbf4ba763e85a0306a8c5e2", + "reference": "344572933ad0181accbf4ba763e85a0306a8c5e2", "shasum": "" }, "require": { @@ -3168,25 +3076,22 @@ }, "require-dev": { "captainhook/plugin-composer": "^5.3", - "ergebnis/composer-normalize": "^2.28.3", - "fakerphp/faker": "^1.21", + "ergebnis/composer-normalize": "^2.45", + "fakerphp/faker": "^1.24", "hamcrest/hamcrest-php": "^2.0", - "jangregor/phpstan-prophecy": "^1.0", - "mockery/mockery": "^1.5", + "jangregor/phpstan-prophecy": "^2.1", + "mockery/mockery": "^1.6", "php-parallel-lint/php-console-highlighter": "^1.0", - "php-parallel-lint/php-parallel-lint": "^1.3", - "phpcsstandards/phpcsutils": "^1.0.0-rc1", - "phpspec/prophecy-phpunit": "^2.0", - "phpstan/extension-installer": "^1.2", - "phpstan/phpstan": "^1.9", - "phpstan/phpstan-mockery": "^1.1", - "phpstan/phpstan-phpunit": "^1.3", - "phpunit/phpunit": "^9.5", - "psalm/plugin-mockery": "^1.1", - "psalm/plugin-phpunit": "^0.18.4", - "ramsey/coding-standard": "^2.0.3", - "ramsey/conventional-commits": "^1.3", - "vimeo/psalm": "^5.4" + "php-parallel-lint/php-parallel-lint": "^1.4", + "phpspec/prophecy-phpunit": "^2.3", + "phpstan/extension-installer": "^1.4", + "phpstan/phpstan": "^2.1", + "phpstan/phpstan-mockery": "^2.0", + "phpstan/phpstan-phpunit": "^2.0", + "phpunit/phpunit": "^10.5", + "ramsey/coding-standard": "^2.3", + "ramsey/conventional-commits": "^1.6", + "roave/security-advisories": "dev-latest" }, "type": "library", "extra": { @@ -3224,37 +3129,26 @@ ], "support": { "issues": "https://github.com/ramsey/collection/issues", - "source": "https://github.com/ramsey/collection/tree/2.0.0" + "source": "https://github.com/ramsey/collection/tree/2.1.1" }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", - "type": "tidelift" - } - ], - "time": "2022-12-31T21:50:55+00:00" + "time": "2025-03-22T05:38:12+00:00" }, { "name": "ramsey/uuid", - "version": "4.7.6", + "version": "4.9.1", "source": { "type": "git", "url": "https://github.com/ramsey/uuid.git", - "reference": "91039bc1faa45ba123c4328958e620d382ec7088" + "reference": "81f941f6f729b1e3ceea61d9d014f8b6c6800440" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/91039bc1faa45ba123c4328958e620d382ec7088", - "reference": "91039bc1faa45ba123c4328958e620d382ec7088", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/81f941f6f729b1e3ceea61d9d014f8b6c6800440", + "reference": "81f941f6f729b1e3ceea61d9d014f8b6c6800440", "shasum": "" }, "require": { - "brick/math": "^0.8.8 || ^0.9 || ^0.10 || ^0.11 || ^0.12", - "ext-json": "*", + "brick/math": "^0.8.8 || ^0.9 || ^0.10 || ^0.11 || ^0.12 || ^0.13 || ^0.14", "php": "^8.0", "ramsey/collection": "^1.2 || ^2.0" }, @@ -3262,26 +3156,23 @@ "rhumsaa/uuid": "self.version" }, "require-dev": { - "captainhook/captainhook": "^5.10", + "captainhook/captainhook": "^5.25", "captainhook/plugin-composer": "^5.3", - "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", - "doctrine/annotations": "^1.8", - "ergebnis/composer-normalize": "^2.15", - "mockery/mockery": "^1.3", + "dealerdirect/phpcodesniffer-composer-installer": "^1.0", + "ergebnis/composer-normalize": "^2.47", + "mockery/mockery": "^1.6", "paragonie/random-lib": "^2", - "php-mock/php-mock": "^2.2", - "php-mock/php-mock-mockery": "^1.3", - "php-parallel-lint/php-parallel-lint": "^1.1", - "phpbench/phpbench": "^1.0", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan": "^1.8", - "phpstan/phpstan-mockery": "^1.1", - "phpstan/phpstan-phpunit": "^1.1", - "phpunit/phpunit": "^8.5 || ^9", - "ramsey/composer-repl": "^1.4", - "slevomat/coding-standard": "^8.4", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.9" + "php-mock/php-mock": "^2.6", + "php-mock/php-mock-mockery": "^1.5", + "php-parallel-lint/php-parallel-lint": "^1.4.0", + "phpbench/phpbench": "^1.2.14", + "phpstan/extension-installer": "^1.4", + "phpstan/phpstan": "^2.1", + "phpstan/phpstan-mockery": "^2.0", + "phpstan/phpstan-phpunit": "^2.0", + "phpunit/phpunit": "^9.6", + "slevomat/coding-standard": "^8.18", + "squizlabs/php_codesniffer": "^3.13" }, "suggest": { "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", @@ -3316,19 +3207,9 @@ ], "support": { "issues": "https://github.com/ramsey/uuid/issues", - "source": "https://github.com/ramsey/uuid/tree/4.7.6" + "source": "https://github.com/ramsey/uuid/tree/4.9.1" }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", - "type": "tidelift" - } - ], - "time": "2024-04-27T21:32:50+00:00" + "time": "2025-09-04T20:59:21+00:00" }, { "name": "robrichards/xmlseclibs", @@ -3374,16 +3255,16 @@ }, { "name": "simplesamlphp/saml2", - "version": "v4.16.14", + "version": "v4.19.0", "source": { "type": "git", "url": "https://github.com/simplesamlphp/saml2.git", - "reference": "fe6c7bdda5e166e326d19d78f230d959ab51d01d" + "reference": "a1e25f1351591c2b007449735c0e62e016696576" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/simplesamlphp/saml2/zipball/fe6c7bdda5e166e326d19d78f230d959ab51d01d", - "reference": "fe6c7bdda5e166e326d19d78f230d959ab51d01d", + "url": "https://api.github.com/repos/simplesamlphp/saml2/zipball/a1e25f1351591c2b007449735c0e62e016696576", + "reference": "a1e25f1351591c2b007449735c0e62e016696576", "shasum": "" }, "require": { @@ -3429,9 +3310,9 @@ "description": "SAML2 PHP library from SimpleSAMLphp", "support": { "issues": "https://github.com/simplesamlphp/saml2/issues", - "source": "https://github.com/simplesamlphp/saml2/tree/v4.16.14" + "source": "https://github.com/simplesamlphp/saml2/tree/v4.19.0" }, - "time": "2024-12-01T22:26:30+00:00" + "time": "2025-09-05T23:47:51+00:00" }, { "name": "surfnet/stepup-bundle", @@ -3506,16 +3387,16 @@ }, { "name": "surfnet/stepup-saml-bundle", - "version": "6.1.0", + "version": "6.2.0", "source": { "type": "git", "url": "https://github.com/OpenConext/Stepup-saml-bundle.git", - "reference": "61eeee56e5f976c9dbafd6fe46b2cc3631de2645" + "reference": "3ee8ae9e45dd45104945d8766a1d8e5a022701df" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/OpenConext/Stepup-saml-bundle/zipball/61eeee56e5f976c9dbafd6fe46b2cc3631de2645", - "reference": "61eeee56e5f976c9dbafd6fe46b2cc3631de2645", + "url": "https://api.github.com/repos/OpenConext/Stepup-saml-bundle/zipball/3ee8ae9e45dd45104945d8766a1d8e5a022701df", + "reference": "3ee8ae9e45dd45104945d8766a1d8e5a022701df", "shasum": "" }, "require": { @@ -3572,22 +3453,22 @@ ], "support": { "issues": "https://github.com/OpenConext/Stepup-saml-bundle/issues", - "source": "https://github.com/OpenConext/Stepup-saml-bundle/tree/6.1.0" + "source": "https://github.com/OpenConext/Stepup-saml-bundle/tree/6.2.0" }, - "time": "2024-06-24T09:29:13+00:00" + "time": "2025-05-26T09:04:11+00:00" }, { "name": "symfony/asset", - "version": "v6.4.13", + "version": "v6.4.24", "source": { "type": "git", "url": "https://github.com/symfony/asset.git", - "reference": "2466c17d61d14539cddf77e57ebb9cc971185302" + "reference": "cfee7c0d64be113383db74a2fdd65d426b7f3aab" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/asset/zipball/2466c17d61d14539cddf77e57ebb9cc971185302", - "reference": "2466c17d61d14539cddf77e57ebb9cc971185302", + "url": "https://api.github.com/repos/symfony/asset/zipball/cfee7c0d64be113383db74a2fdd65d426b7f3aab", + "reference": "cfee7c0d64be113383db74a2fdd65d426b7f3aab", "shasum": "" }, "require": { @@ -3627,7 +3508,7 @@ "description": "Manages URL generation and versioning of web assets such as CSS stylesheets, JavaScript files and image files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/asset/tree/v6.4.13" + "source": "https://github.com/symfony/asset/tree/v6.4.24" }, "funding": [ { @@ -3638,25 +3519,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-10-25T15:07:50+00:00" + "time": "2025-07-10T08:14:14+00:00" }, { "name": "symfony/cache", - "version": "v6.4.18", + "version": "v6.4.28", "source": { "type": "git", "url": "https://github.com/symfony/cache.git", - "reference": "b209751ed25f735ea90ca4c9c969d9413a17dfee" + "reference": "31628f36fc97c5714d181b3a8d29efb85c6a7677" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/b209751ed25f735ea90ca4c9c969d9413a17dfee", - "reference": "b209751ed25f735ea90ca4c9c969d9413a17dfee", + "url": "https://api.github.com/repos/symfony/cache/zipball/31628f36fc97c5714d181b3a8d29efb85c6a7677", + "reference": "31628f36fc97c5714d181b3a8d29efb85c6a7677", "shasum": "" }, "require": { @@ -3723,7 +3608,7 @@ "psr6" ], "support": { - "source": "https://github.com/symfony/cache/tree/v6.4.18" + "source": "https://github.com/symfony/cache/tree/v6.4.28" }, "funding": [ { @@ -3734,25 +3619,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-01-22T14:13:52+00:00" + "time": "2025-10-30T08:37:02+00:00" }, { "name": "symfony/cache-contracts", - "version": "v3.5.1", + "version": "v3.6.0", "source": { "type": "git", "url": "https://github.com/symfony/cache-contracts.git", - "reference": "15a4f8e5cd3bce9aeafc882b1acab39ec8de2c1b" + "reference": "5d68a57d66910405e5c0b63d6f0af941e66fc868" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/15a4f8e5cd3bce9aeafc882b1acab39ec8de2c1b", - "reference": "15a4f8e5cd3bce9aeafc882b1acab39ec8de2c1b", + "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/5d68a57d66910405e5c0b63d6f0af941e66fc868", + "reference": "5d68a57d66910405e5c0b63d6f0af941e66fc868", "shasum": "" }, "require": { @@ -3766,7 +3655,7 @@ "name": "symfony/contracts" }, "branch-alias": { - "dev-main": "3.5-dev" + "dev-main": "3.6-dev" } }, "autoload": { @@ -3799,7 +3688,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/cache-contracts/tree/v3.5.1" + "source": "https://github.com/symfony/cache-contracts/tree/v3.6.0" }, "funding": [ { @@ -3815,20 +3704,20 @@ "type": "tidelift" } ], - "time": "2024-09-25T14:20:29+00:00" + "time": "2025-03-13T15:25:07+00:00" }, { "name": "symfony/clock", - "version": "v6.4.13", + "version": "v6.4.24", "source": { "type": "git", "url": "https://github.com/symfony/clock.git", - "reference": "b2bf55c4dd115003309eafa87ee7df9ed3dde81b" + "reference": "5e15a9c9aeeb44a99f7cf24aa75aa9607795f6f8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/clock/zipball/b2bf55c4dd115003309eafa87ee7df9ed3dde81b", - "reference": "b2bf55c4dd115003309eafa87ee7df9ed3dde81b", + "url": "https://api.github.com/repos/symfony/clock/zipball/5e15a9c9aeeb44a99f7cf24aa75aa9607795f6f8", + "reference": "5e15a9c9aeeb44a99f7cf24aa75aa9607795f6f8", "shasum": "" }, "require": { @@ -3873,7 +3762,7 @@ "time" ], "support": { - "source": "https://github.com/symfony/clock/tree/v6.4.13" + "source": "https://github.com/symfony/clock/tree/v6.4.24" }, "funding": [ { @@ -3884,25 +3773,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-09-25T14:18:03+00:00" + "time": "2025-07-10T08:14:14+00:00" }, { "name": "symfony/config", - "version": "v6.4.14", + "version": "v6.4.28", "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "4e55e7e4ffddd343671ea972216d4509f46c22ef" + "reference": "15947c18ef3ddb0b2f4ec936b9e90e2520979f62" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/4e55e7e4ffddd343671ea972216d4509f46c22ef", - "reference": "4e55e7e4ffddd343671ea972216d4509f46c22ef", + "url": "https://api.github.com/repos/symfony/config/zipball/15947c18ef3ddb0b2f4ec936b9e90e2520979f62", + "reference": "15947c18ef3ddb0b2f4ec936b9e90e2520979f62", "shasum": "" }, "require": { @@ -3948,7 +3841,7 @@ "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/v6.4.14" + "source": "https://github.com/symfony/config/tree/v6.4.28" }, "funding": [ { @@ -3959,25 +3852,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-11-04T11:33:53+00:00" + "time": "2025-11-01T19:52:02+00:00" }, { "name": "symfony/console", - "version": "v6.4.17", + "version": "v6.4.27", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "799445db3f15768ecc382ac5699e6da0520a0a04" + "reference": "13d3176cf8ad8ced24202844e9f95af11e2959fc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/799445db3f15768ecc382ac5699e6da0520a0a04", - "reference": "799445db3f15768ecc382ac5699e6da0520a0a04", + "url": "https://api.github.com/repos/symfony/console/zipball/13d3176cf8ad8ced24202844e9f95af11e2959fc", + "reference": "13d3176cf8ad8ced24202844e9f95af11e2959fc", "shasum": "" }, "require": { @@ -4042,7 +3939,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v6.4.17" + "source": "https://github.com/symfony/console/tree/v6.4.27" }, "funding": [ { @@ -4053,25 +3950,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-12-07T12:07:30+00:00" + "time": "2025-10-06T10:25:16+00:00" }, { "name": "symfony/dependency-injection", - "version": "v6.4.16", + "version": "v6.4.26", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "7a379d8871f6a36f01559c14e11141cc02eb8dc8" + "reference": "5f311eaf0b321f8ec640f6bae12da43a14026898" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/7a379d8871f6a36f01559c14e11141cc02eb8dc8", - "reference": "7a379d8871f6a36f01559c14e11141cc02eb8dc8", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/5f311eaf0b321f8ec640f6bae12da43a14026898", + "reference": "5f311eaf0b321f8ec640f6bae12da43a14026898", "shasum": "" }, "require": { @@ -4079,7 +3980,7 @@ "psr/container": "^1.1|^2.0", "symfony/deprecation-contracts": "^2.5|^3", "symfony/service-contracts": "^2.5|^3.0", - "symfony/var-exporter": "^6.2.10|^7.0" + "symfony/var-exporter": "^6.4.20|^7.2.5" }, "conflict": { "ext-psr": "<1.1|>=2", @@ -4123,7 +4024,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/v6.4.16" + "source": "https://github.com/symfony/dependency-injection/tree/v6.4.26" }, "funding": [ { @@ -4134,25 +4035,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-11-25T14:52:46+00:00" + "time": "2025-09-11T09:57:09+00:00" }, { "name": "symfony/deprecation-contracts", - "version": "v3.5.1", + "version": "v3.6.0", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6" + "reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6", - "reference": "74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/63afe740e99a13ba87ec199bb07bbdee937a5b62", + "reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62", "shasum": "" }, "require": { @@ -4165,7 +4070,7 @@ "name": "symfony/contracts" }, "branch-alias": { - "dev-main": "3.5-dev" + "dev-main": "3.6-dev" } }, "autoload": { @@ -4190,7 +4095,7 @@ "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.5.1" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.6.0" }, "funding": [ { @@ -4206,20 +4111,20 @@ "type": "tidelift" } ], - "time": "2024-09-25T14:20:29+00:00" + "time": "2024-09-25T14:21:43+00:00" }, { "name": "symfony/doctrine-bridge", - "version": "v6.4.18", + "version": "v6.4.26", "source": { "type": "git", "url": "https://github.com/symfony/doctrine-bridge.git", - "reference": "fd0094d4648bf6bbdafcd1f0c8aafb6e93d735e6" + "reference": "c14bb5a9125c411e73354954940e06b6e7fcc344" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/fd0094d4648bf6bbdafcd1f0c8aafb6e93d735e6", - "reference": "fd0094d4648bf6bbdafcd1f0c8aafb6e93d735e6", + "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/c14bb5a9125c411e73354954940e06b6e7fcc344", + "reference": "c14bb5a9125c411e73354954940e06b6e7fcc344", "shasum": "" }, "require": { @@ -4298,7 +4203,7 @@ "description": "Provides integration for Doctrine with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/doctrine-bridge/tree/v6.4.18" + "source": "https://github.com/symfony/doctrine-bridge/tree/v6.4.26" }, "funding": [ { @@ -4309,25 +4214,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-01-25T08:04:58+00:00" + "time": "2025-09-26T15:07:38+00:00" }, { "name": "symfony/error-handler", - "version": "v6.4.18", + "version": "v6.4.26", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "e8d3b5b1975e67812a54388b1ba8e9ec28eb770e" + "reference": "41bedcaec5b72640b0ec2096547b75fda72ead6c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/e8d3b5b1975e67812a54388b1ba8e9ec28eb770e", - "reference": "e8d3b5b1975e67812a54388b1ba8e9ec28eb770e", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/41bedcaec5b72640b0ec2096547b75fda72ead6c", + "reference": "41bedcaec5b72640b0ec2096547b75fda72ead6c", "shasum": "" }, "require": { @@ -4373,7 +4282,7 @@ "description": "Provides tools to manage errors and ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/error-handler/tree/v6.4.18" + "source": "https://github.com/symfony/error-handler/tree/v6.4.26" }, "funding": [ { @@ -4384,25 +4293,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-01-06T09:38:16+00:00" + "time": "2025-09-11T09:57:09+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v6.4.13", + "version": "v6.4.25", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "0ffc48080ab3e9132ea74ef4e09d8dcf26bf897e" + "reference": "b0cf3162020603587363f0551cd3be43958611ff" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/0ffc48080ab3e9132ea74ef4e09d8dcf26bf897e", - "reference": "0ffc48080ab3e9132ea74ef4e09d8dcf26bf897e", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/b0cf3162020603587363f0551cd3be43958611ff", + "reference": "b0cf3162020603587363f0551cd3be43958611ff", "shasum": "" }, "require": { @@ -4453,7 +4366,7 @@ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v6.4.13" + "source": "https://github.com/symfony/event-dispatcher/tree/v6.4.25" }, "funding": [ { @@ -4464,25 +4377,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-09-25T14:18:03+00:00" + "time": "2025-08-13T09:41:44+00:00" }, { "name": "symfony/event-dispatcher-contracts", - "version": "v3.5.1", + "version": "v3.6.0", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "7642f5e970b672283b7823222ae8ef8bbc160b9f" + "reference": "59eb412e93815df44f05f342958efa9f46b1e586" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/7642f5e970b672283b7823222ae8ef8bbc160b9f", - "reference": "7642f5e970b672283b7823222ae8ef8bbc160b9f", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/59eb412e93815df44f05f342958efa9f46b1e586", + "reference": "59eb412e93815df44f05f342958efa9f46b1e586", "shasum": "" }, "require": { @@ -4496,7 +4413,7 @@ "name": "symfony/contracts" }, "branch-alias": { - "dev-main": "3.5-dev" + "dev-main": "3.6-dev" } }, "autoload": { @@ -4529,7 +4446,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.5.1" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.6.0" }, "funding": [ { @@ -4545,20 +4462,20 @@ "type": "tidelift" } ], - "time": "2024-09-25T14:20:29+00:00" + "time": "2024-09-25T14:21:43+00:00" }, { "name": "symfony/expression-language", - "version": "v6.4.13", + "version": "v6.4.24", "source": { "type": "git", "url": "https://github.com/symfony/expression-language.git", - "reference": "3524904fb026356a5230cd197f9a4e6a61e0e7df" + "reference": "1ea0adaa53539ea7e70821ae9de49ebe03ae7091" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/expression-language/zipball/3524904fb026356a5230cd197f9a4e6a61e0e7df", - "reference": "3524904fb026356a5230cd197f9a4e6a61e0e7df", + "url": "https://api.github.com/repos/symfony/expression-language/zipball/1ea0adaa53539ea7e70821ae9de49ebe03ae7091", + "reference": "1ea0adaa53539ea7e70821ae9de49ebe03ae7091", "shasum": "" }, "require": { @@ -4593,7 +4510,7 @@ "description": "Provides an engine that can compile and evaluate expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/expression-language/tree/v6.4.13" + "source": "https://github.com/symfony/expression-language/tree/v6.4.24" }, "funding": [ { @@ -4604,25 +4521,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-10-09T08:40:40+00:00" + "time": "2025-07-10T08:14:14+00:00" }, { "name": "symfony/filesystem", - "version": "v6.4.13", + "version": "v6.4.24", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "4856c9cf585d5a0313d8d35afd681a526f038dd3" + "reference": "75ae2edb7cdcc0c53766c30b0a2512b8df574bd8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/4856c9cf585d5a0313d8d35afd681a526f038dd3", - "reference": "4856c9cf585d5a0313d8d35afd681a526f038dd3", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/75ae2edb7cdcc0c53766c30b0a2512b8df574bd8", + "reference": "75ae2edb7cdcc0c53766c30b0a2512b8df574bd8", "shasum": "" }, "require": { @@ -4659,7 +4580,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v6.4.13" + "source": "https://github.com/symfony/filesystem/tree/v6.4.24" }, "funding": [ { @@ -4670,25 +4591,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-10-25T15:07:50+00:00" + "time": "2025-07-10T08:14:14+00:00" }, { "name": "symfony/finder", - "version": "v6.4.17", + "version": "v6.4.27", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "1d0e8266248c5d9ab6a87e3789e6dc482af3c9c7" + "reference": "a1b6aa435d2fba50793b994a839c32b6064f063b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/1d0e8266248c5d9ab6a87e3789e6dc482af3c9c7", - "reference": "1d0e8266248c5d9ab6a87e3789e6dc482af3c9c7", + "url": "https://api.github.com/repos/symfony/finder/zipball/a1b6aa435d2fba50793b994a839c32b6064f063b", + "reference": "a1b6aa435d2fba50793b994a839c32b6064f063b", "shasum": "" }, "require": { @@ -4723,7 +4648,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v6.4.17" + "source": "https://github.com/symfony/finder/tree/v6.4.27" }, "funding": [ { @@ -4734,40 +4659,45 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-12-29T13:51:37+00:00" + "time": "2025-10-15T18:32:00+00:00" }, { "name": "symfony/flex", - "version": "v2.4.7", + "version": "v2.10.0", "source": { "type": "git", "url": "https://github.com/symfony/flex.git", - "reference": "92f4fba342161ff36072bd3b8e0b3c6c23160402" + "reference": "9cd384775973eabbf6e8b05784dda279fc67c28d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/flex/zipball/92f4fba342161ff36072bd3b8e0b3c6c23160402", - "reference": "92f4fba342161ff36072bd3b8e0b3c6c23160402", + "url": "https://api.github.com/repos/symfony/flex/zipball/9cd384775973eabbf6e8b05784dda279fc67c28d", + "reference": "9cd384775973eabbf6e8b05784dda279fc67c28d", "shasum": "" }, "require": { "composer-plugin-api": "^2.1", - "php": ">=8.0" + "php": ">=8.1" }, "conflict": { - "composer/semver": "<1.7.2" + "composer/semver": "<1.7.2", + "symfony/dotenv": "<5.4" }, "require-dev": { "composer/composer": "^2.1", - "symfony/dotenv": "^5.4|^6.0", - "symfony/filesystem": "^5.4|^6.0", - "symfony/phpunit-bridge": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0" + "symfony/dotenv": "^6.4|^7.4|^8.0", + "symfony/filesystem": "^6.4|^7.4|^8.0", + "symfony/phpunit-bridge": "^6.4|^7.4|^8.0", + "symfony/process": "^6.4|^7.4|^8.0" }, "type": "composer-plugin", "extra": { @@ -4791,7 +4721,7 @@ "description": "Composer plugin for Symfony", "support": { "issues": "https://github.com/symfony/flex/issues", - "source": "https://github.com/symfony/flex/tree/v2.4.7" + "source": "https://github.com/symfony/flex/tree/v2.10.0" }, "funding": [ { @@ -4802,25 +4732,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-10-07T08:51:54+00:00" + "time": "2025-11-16T09:38:19+00:00" }, { "name": "symfony/form", - "version": "v6.4.13", + "version": "v6.4.27", "source": { "type": "git", "url": "https://github.com/symfony/form.git", - "reference": "0fe17f90af23908ddc11dc23507db98e66572046" + "reference": "5d922aea68ffe1637535713b35b29f6f34b7d81c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/form/zipball/0fe17f90af23908ddc11dc23507db98e66572046", - "reference": "0fe17f90af23908ddc11dc23507db98e66572046", + "url": "https://api.github.com/repos/symfony/form/zipball/5d922aea68ffe1637535713b35b29f6f34b7d81c", + "reference": "5d922aea68ffe1637535713b35b29f6f34b7d81c", "shasum": "" }, "require": { @@ -4888,7 +4822,7 @@ "description": "Allows to easily create, process and reuse HTML forms", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/form/tree/v6.4.13" + "source": "https://github.com/symfony/form/tree/v6.4.27" }, "funding": [ { @@ -4899,25 +4833,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-10-09T08:40:40+00:00" + "time": "2025-10-10T09:11:15+00:00" }, { "name": "symfony/framework-bundle", - "version": "v6.4.18", + "version": "v6.4.27", "source": { "type": "git", "url": "https://github.com/symfony/framework-bundle.git", - "reference": "91df8ee37543ebc01756c9e5eaf94d1878ff1ccd" + "reference": "ee58c2a73218d8f4763824e1414c5f9b4519c91f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/91df8ee37543ebc01756c9e5eaf94d1878ff1ccd", - "reference": "91df8ee37543ebc01756c9e5eaf94d1878ff1ccd", + "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/ee58c2a73218d8f4763824e1414c5f9b4519c91f", + "reference": "ee58c2a73218d8f4763824e1414c5f9b4519c91f", "shasum": "" }, "require": { @@ -5037,7 +4975,7 @@ "description": "Provides a tight integration between Symfony components and the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/framework-bundle/tree/v6.4.18" + "source": "https://github.com/symfony/framework-bundle/tree/v6.4.27" }, "funding": [ { @@ -5048,25 +4986,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-01-28T18:47:02+00:00" + "time": "2025-10-15T17:35:09+00:00" }, { "name": "symfony/http-foundation", - "version": "v6.4.18", + "version": "v6.4.29", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "d0492d6217e5ab48f51fca76f64cf8e78919d0db" + "reference": "b03d11e015552a315714c127d8d1e0f9e970ec88" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/d0492d6217e5ab48f51fca76f64cf8e78919d0db", - "reference": "d0492d6217e5ab48f51fca76f64cf8e78919d0db", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/b03d11e015552a315714c127d8d1e0f9e970ec88", + "reference": "b03d11e015552a315714c127d8d1e0f9e970ec88", "shasum": "" }, "require": { @@ -5114,7 +5056,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v6.4.18" + "source": "https://github.com/symfony/http-foundation/tree/v6.4.29" }, "funding": [ { @@ -5125,25 +5067,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-01-09T15:48:56+00:00" + "time": "2025-11-08T16:40:12+00:00" }, { "name": "symfony/http-kernel", - "version": "v6.4.18", + "version": "v6.4.29", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "fca7197bfe9e99dfae7fb1ad3f7f5bd9ef80e1b7" + "reference": "18818b48f54c1d2bd92b41d82d8345af50b15658" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/fca7197bfe9e99dfae7fb1ad3f7f5bd9ef80e1b7", - "reference": "fca7197bfe9e99dfae7fb1ad3f7f5bd9ef80e1b7", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/18818b48f54c1d2bd92b41d82d8345af50b15658", + "reference": "18818b48f54c1d2bd92b41d82d8345af50b15658", "shasum": "" }, "require": { @@ -5228,7 +5174,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v6.4.18" + "source": "https://github.com/symfony/http-kernel/tree/v6.4.29" }, "funding": [ { @@ -5239,25 +5185,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-01-29T07:25:58+00:00" + "time": "2025-11-12T11:22:59+00:00" }, { "name": "symfony/intl", - "version": "v6.4.15", + "version": "v6.4.27", "source": { "type": "git", "url": "https://github.com/symfony/intl.git", - "reference": "b1d5e8d82615b60f229216edfee0b59e2ef66da6" + "reference": "ccc52824610e7de72424cf516e52d4fb39e3bfa5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/intl/zipball/b1d5e8d82615b60f229216edfee0b59e2ef66da6", - "reference": "b1d5e8d82615b60f229216edfee0b59e2ef66da6", + "url": "https://api.github.com/repos/symfony/intl/zipball/ccc52824610e7de72424cf516e52d4fb39e3bfa5", + "reference": "ccc52824610e7de72424cf516e52d4fb39e3bfa5", "shasum": "" }, "require": { @@ -5311,7 +5261,7 @@ "localization" ], "support": { - "source": "https://github.com/symfony/intl/tree/v6.4.15" + "source": "https://github.com/symfony/intl/tree/v6.4.27" }, "funding": [ { @@ -5322,25 +5272,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-11-08T15:28:48+00:00" + "time": "2025-10-01T06:01:44+00:00" }, { "name": "symfony/mailer", - "version": "v6.4.18", + "version": "v6.4.27", "source": { "type": "git", "url": "https://github.com/symfony/mailer.git", - "reference": "e93a6ae2767d7f7578c2b7961d9d8e27580b2b11" + "reference": "2f096718ed718996551f66e3a24e12b2ed027f95" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/e93a6ae2767d7f7578c2b7961d9d8e27580b2b11", - "reference": "e93a6ae2767d7f7578c2b7961d9d8e27580b2b11", + "url": "https://api.github.com/repos/symfony/mailer/zipball/2f096718ed718996551f66e3a24e12b2ed027f95", + "reference": "2f096718ed718996551f66e3a24e12b2ed027f95", "shasum": "" }, "require": { @@ -5391,7 +5345,7 @@ "description": "Helps sending emails", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailer/tree/v6.4.18" + "source": "https://github.com/symfony/mailer/tree/v6.4.27" }, "funding": [ { @@ -5402,25 +5356,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-01-24T15:27:15+00:00" + "time": "2025-10-24T13:29:09+00:00" }, { "name": "symfony/mime", - "version": "v6.4.18", + "version": "v6.4.26", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "917d77981eb1ea963608d5cda4d9c0cf72eaa68e" + "reference": "61ab9681cdfe315071eb4fa79b6ad6ab030a9235" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/917d77981eb1ea963608d5cda4d9c0cf72eaa68e", - "reference": "917d77981eb1ea963608d5cda4d9c0cf72eaa68e", + "url": "https://api.github.com/repos/symfony/mime/zipball/61ab9681cdfe315071eb4fa79b6ad6ab030a9235", + "reference": "61ab9681cdfe315071eb4fa79b6ad6ab030a9235", "shasum": "" }, "require": { @@ -5476,7 +5434,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v6.4.18" + "source": "https://github.com/symfony/mime/tree/v6.4.26" }, "funding": [ { @@ -5487,25 +5445,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-01-23T13:10:52+00:00" + "time": "2025-09-16T08:22:30+00:00" }, { "name": "symfony/monolog-bridge", - "version": "v6.4.13", + "version": "v6.4.28", "source": { "type": "git", "url": "https://github.com/symfony/monolog-bridge.git", - "reference": "9d14621e59f22c2b6d030d92d37ffe5ae1e60452" + "reference": "d2f4b68e3247cf44d93f48545c8c072a75c17e5b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/9d14621e59f22c2b6d030d92d37ffe5ae1e60452", - "reference": "9d14621e59f22c2b6d030d92d37ffe5ae1e60452", + "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/d2f4b68e3247cf44d93f48545c8c072a75c17e5b", + "reference": "d2f4b68e3247cf44d93f48545c8c072a75c17e5b", "shasum": "" }, "require": { @@ -5555,7 +5517,7 @@ "description": "Provides integration for Monolog with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/monolog-bridge/tree/v6.4.13" + "source": "https://github.com/symfony/monolog-bridge/tree/v6.4.28" }, "funding": [ { @@ -5566,12 +5528,16 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-10-14T08:49:08+00:00" + "time": "2025-10-30T19:57:08+00:00" }, { "name": "symfony/monolog-bundle", @@ -5656,16 +5622,16 @@ }, { "name": "symfony/options-resolver", - "version": "v6.4.16", + "version": "v6.4.25", "source": { "type": "git", "url": "https://github.com/symfony/options-resolver.git", - "reference": "368128ad168f20e22c32159b9f761e456cec0c78" + "reference": "d28e7e2db8a73e9511df892d36445f61314bbebe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/368128ad168f20e22c32159b9f761e456cec0c78", - "reference": "368128ad168f20e22c32159b9f761e456cec0c78", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/d28e7e2db8a73e9511df892d36445f61314bbebe", + "reference": "d28e7e2db8a73e9511df892d36445f61314bbebe", "shasum": "" }, "require": { @@ -5703,7 +5669,7 @@ "options" ], "support": { - "source": "https://github.com/symfony/options-resolver/tree/v6.4.16" + "source": "https://github.com/symfony/options-resolver/tree/v6.4.25" }, "funding": [ { @@ -5714,25 +5680,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-11-20T10:57:02+00:00" + "time": "2025-08-04T17:06:28+00:00" }, { "name": "symfony/password-hasher", - "version": "v6.4.13", + "version": "v6.4.24", "source": { "type": "git", "url": "https://github.com/symfony/password-hasher.git", - "reference": "e97a1b31f60b8bdfc1fdedab4398538da9441d47" + "reference": "dcab5ac87450aaed26483ba49c2ce86808da7557" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/password-hasher/zipball/e97a1b31f60b8bdfc1fdedab4398538da9441d47", - "reference": "e97a1b31f60b8bdfc1fdedab4398538da9441d47", + "url": "https://api.github.com/repos/symfony/password-hasher/zipball/dcab5ac87450aaed26483ba49c2ce86808da7557", + "reference": "dcab5ac87450aaed26483ba49c2ce86808da7557", "shasum": "" }, "require": { @@ -5775,7 +5745,7 @@ "password" ], "support": { - "source": "https://github.com/symfony/password-hasher/tree/v6.4.13" + "source": "https://github.com/symfony/password-hasher/tree/v6.4.24" }, "funding": [ { @@ -5786,16 +5756,20 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-09-25T14:18:03+00:00" + "time": "2025-07-10T08:14:14+00:00" }, { "name": "symfony/polyfill-ctype", - "version": "v1.31.0", + "version": "v1.33.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", @@ -5854,7 +5828,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.31.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.33.0" }, "funding": [ { @@ -5865,6 +5839,10 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" @@ -5874,16 +5852,16 @@ }, { "name": "symfony/polyfill-intl-grapheme", - "version": "v1.31.0", + "version": "v1.33.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe" + "reference": "380872130d3a5dd3ace2f4010d95125fde5d5c70" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe", - "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/380872130d3a5dd3ace2f4010d95125fde5d5c70", + "reference": "380872130d3a5dd3ace2f4010d95125fde5d5c70", "shasum": "" }, "require": { @@ -5932,7 +5910,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.31.0" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.33.0" }, "funding": [ { @@ -5943,25 +5921,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-09-09T11:45:10+00:00" + "time": "2025-06-27T09:58:17+00:00" }, { "name": "symfony/polyfill-intl-icu", - "version": "v1.31.0", + "version": "v1.33.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-icu.git", - "reference": "d80a05e9904d2c2b9b95929f3e4b5d3a8f418d78" + "reference": "bfc8fa13dbaf21d69114b0efcd72ab700fb04d0c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/d80a05e9904d2c2b9b95929f3e4b5d3a8f418d78", - "reference": "d80a05e9904d2c2b9b95929f3e4b5d3a8f418d78", + "url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/bfc8fa13dbaf21d69114b0efcd72ab700fb04d0c", + "reference": "bfc8fa13dbaf21d69114b0efcd72ab700fb04d0c", "shasum": "" }, "require": { @@ -6016,7 +5998,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-icu/tree/v1.31.0" + "source": "https://github.com/symfony/polyfill-intl-icu/tree/v1.33.0" }, "funding": [ { @@ -6027,25 +6009,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-09-09T11:45:10+00:00" + "time": "2025-06-20T22:24:30+00:00" }, { "name": "symfony/polyfill-intl-idn", - "version": "v1.31.0", + "version": "v1.33.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "c36586dcf89a12315939e00ec9b4474adcb1d773" + "reference": "9614ac4d8061dc257ecc64cba1b140873dce8ad3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/c36586dcf89a12315939e00ec9b4474adcb1d773", - "reference": "c36586dcf89a12315939e00ec9b4474adcb1d773", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/9614ac4d8061dc257ecc64cba1b140873dce8ad3", + "reference": "9614ac4d8061dc257ecc64cba1b140873dce8ad3", "shasum": "" }, "require": { @@ -6099,7 +6085,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.31.0" + "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.33.0" }, "funding": [ { @@ -6110,16 +6096,20 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-09-09T11:45:10+00:00" + "time": "2024-09-10T14:38:51+00:00" }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.31.0", + "version": "v1.33.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", @@ -6180,7 +6170,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.31.0" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.33.0" }, "funding": [ { @@ -6191,6 +6181,10 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" @@ -6200,19 +6194,20 @@ }, { "name": "symfony/polyfill-mbstring", - "version": "v1.31.0", + "version": "v1.33.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341" + "reference": "6d857f4d76bd4b343eac26d6b539585d2bc56493" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/85181ba99b2345b0ef10ce42ecac37612d9fd341", - "reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/6d857f4d76bd4b343eac26d6b539585d2bc56493", + "reference": "6d857f4d76bd4b343eac26d6b539585d2bc56493", "shasum": "" }, "require": { + "ext-iconv": "*", "php": ">=7.2" }, "provide": { @@ -6260,7 +6255,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.31.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.33.0" }, "funding": [ { @@ -6271,25 +6266,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-09-09T11:45:10+00:00" + "time": "2024-12-23T08:48:59+00:00" }, { - "name": "symfony/polyfill-php80", - "version": "v1.31.0", + "name": "symfony/polyfill-php83", + "version": "v1.33.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "60328e362d4c2c802a54fcbf04f9d3fb892b4cf8" + "url": "https://github.com/symfony/polyfill-php83.git", + "reference": "17f6f9a6b1735c0f163024d959f700cfbc5155e5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/60328e362d4c2c802a54fcbf04f9d3fb892b4cf8", - "reference": "60328e362d4c2c802a54fcbf04f9d3fb892b4cf8", + "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/17f6f9a6b1735c0f163024d959f700cfbc5155e5", + "reference": "17f6f9a6b1735c0f163024d959f700cfbc5155e5", "shasum": "" }, "require": { @@ -6307,7 +6306,7 @@ "bootstrap.php" ], "psr-4": { - "Symfony\\Polyfill\\Php80\\": "" + "Symfony\\Polyfill\\Php83\\": "" }, "classmap": [ "Resources/stubs" @@ -6318,10 +6317,6 @@ "MIT" ], "authors": [ - { - "name": "Ion Bazan", - "email": "ion.bazan@gmail.com" - }, { "name": "Nicolas Grekas", "email": "p@tchwork.com" @@ -6331,7 +6326,7 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", + "description": "Symfony polyfill backporting some PHP 8.3+ features to lower PHP versions", "homepage": "https://symfony.com", "keywords": [ "compatibility", @@ -6340,7 +6335,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.31.0" + "source": "https://github.com/symfony/polyfill-php83/tree/v1.33.0" }, "funding": [ { @@ -6351,25 +6346,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-09-09T11:45:10+00:00" + "time": "2025-07-08T02:45:35+00:00" }, { - "name": "symfony/polyfill-php83", - "version": "v1.31.0", + "name": "symfony/polyfill-php84", + "version": "v1.33.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php83.git", - "reference": "2fb86d65e2d424369ad2905e83b236a8805ba491" + "url": "https://github.com/symfony/polyfill-php84.git", + "reference": "d8ced4d875142b6a7426000426b8abc631d6b191" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/2fb86d65e2d424369ad2905e83b236a8805ba491", - "reference": "2fb86d65e2d424369ad2905e83b236a8805ba491", + "url": "https://api.github.com/repos/symfony/polyfill-php84/zipball/d8ced4d875142b6a7426000426b8abc631d6b191", + "reference": "d8ced4d875142b6a7426000426b8abc631d6b191", "shasum": "" }, "require": { @@ -6387,7 +6386,7 @@ "bootstrap.php" ], "psr-4": { - "Symfony\\Polyfill\\Php83\\": "" + "Symfony\\Polyfill\\Php84\\": "" }, "classmap": [ "Resources/stubs" @@ -6407,7 +6406,7 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill backporting some PHP 8.3+ features to lower PHP versions", + "description": "Symfony polyfill backporting some PHP 8.4+ features to lower PHP versions", "homepage": "https://symfony.com", "keywords": [ "compatibility", @@ -6416,7 +6415,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php83/tree/v1.31.0" + "source": "https://github.com/symfony/polyfill-php84/tree/v1.33.0" }, "funding": [ { @@ -6427,25 +6426,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-09-09T11:45:10+00:00" + "time": "2025-06-24T13:30:11+00:00" }, { "name": "symfony/property-access", - "version": "v6.4.18", + "version": "v6.4.25", "source": { "type": "git", "url": "https://github.com/symfony/property-access.git", - "reference": "80e0378f2f058b60d87dedc3c760caec882e992c" + "reference": "fedc771326d4978a7d3167fa009a509b06a2e168" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-access/zipball/80e0378f2f058b60d87dedc3c760caec882e992c", - "reference": "80e0378f2f058b60d87dedc3c760caec882e992c", + "url": "https://api.github.com/repos/symfony/property-access/zipball/fedc771326d4978a7d3167fa009a509b06a2e168", + "reference": "fedc771326d4978a7d3167fa009a509b06a2e168", "shasum": "" }, "require": { @@ -6493,7 +6496,7 @@ "reflection" ], "support": { - "source": "https://github.com/symfony/property-access/tree/v6.4.18" + "source": "https://github.com/symfony/property-access/tree/v6.4.25" }, "funding": [ { @@ -6504,25 +6507,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-12-16T14:42:05+00:00" + "time": "2025-08-12T15:42:57+00:00" }, { "name": "symfony/property-info", - "version": "v6.4.18", + "version": "v6.4.24", "source": { "type": "git", "url": "https://github.com/symfony/property-info.git", - "reference": "94d18e5cc11a37fd92856d38b61d9cdf72536a1e" + "reference": "1056ae3621eeddd78d7c5ec074f1c1784324eec6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-info/zipball/94d18e5cc11a37fd92856d38b61d9cdf72536a1e", - "reference": "94d18e5cc11a37fd92856d38b61d9cdf72536a1e", + "url": "https://api.github.com/repos/symfony/property-info/zipball/1056ae3621eeddd78d7c5ec074f1c1784324eec6", + "reference": "1056ae3621eeddd78d7c5ec074f1c1784324eec6", "shasum": "" }, "require": { @@ -6579,7 +6586,7 @@ "validator" ], "support": { - "source": "https://github.com/symfony/property-info/tree/v6.4.18" + "source": "https://github.com/symfony/property-info/tree/v6.4.24" }, "funding": [ { @@ -6590,25 +6597,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-01-21T10:52:27+00:00" + "time": "2025-07-14T16:38:25+00:00" }, { "name": "symfony/routing", - "version": "v6.4.18", + "version": "v6.4.28", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "e9bfc94953019089acdfb9be51c1b9142c4afa68" + "reference": "ae064a6d9cf39507f9797658465a2ca702965fa8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/e9bfc94953019089acdfb9be51c1b9142c4afa68", - "reference": "e9bfc94953019089acdfb9be51c1b9142c4afa68", + "url": "https://api.github.com/repos/symfony/routing/zipball/ae064a6d9cf39507f9797658465a2ca702965fa8", + "reference": "ae064a6d9cf39507f9797658465a2ca702965fa8", "shasum": "" }, "require": { @@ -6662,7 +6673,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v6.4.18" + "source": "https://github.com/symfony/routing/tree/v6.4.28" }, "funding": [ { @@ -6673,25 +6684,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-01-09T08:51:02+00:00" + "time": "2025-10-31T16:43:05+00:00" }, { "name": "symfony/runtime", - "version": "v6.4.14", + "version": "v6.4.26", "source": { "type": "git", "url": "https://github.com/symfony/runtime.git", - "reference": "4facd4174f45cd37c65860403412b67c7381136a" + "reference": "59933ca737fd60fad548241b6d879cd0e4be31ab" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/runtime/zipball/4facd4174f45cd37c65860403412b67c7381136a", - "reference": "4facd4174f45cd37c65860403412b67c7381136a", + "url": "https://api.github.com/repos/symfony/runtime/zipball/59933ca737fd60fad548241b6d879cd0e4be31ab", + "reference": "59933ca737fd60fad548241b6d879cd0e4be31ab", "shasum": "" }, "require": { @@ -6741,7 +6756,7 @@ "runtime" ], "support": { - "source": "https://github.com/symfony/runtime/tree/v6.4.14" + "source": "https://github.com/symfony/runtime/tree/v6.4.26" }, "funding": [ { @@ -6752,25 +6767,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-11-05T16:39:55+00:00" + "time": "2025-09-11T15:30:54+00:00" }, { "name": "symfony/security-bundle", - "version": "v6.4.13", + "version": "v6.4.26", "source": { "type": "git", "url": "https://github.com/symfony/security-bundle.git", - "reference": "181d1fcf5f88ef8212ed7f6434e5ff51c9d7dff3" + "reference": "b83773107a5b83a5507df9e88bd50d495f6e8b72" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-bundle/zipball/181d1fcf5f88ef8212ed7f6434e5ff51c9d7dff3", - "reference": "181d1fcf5f88ef8212ed7f6434e5ff51c9d7dff3", + "url": "https://api.github.com/repos/symfony/security-bundle/zipball/b83773107a5b83a5507df9e88bd50d495f6e8b72", + "reference": "b83773107a5b83a5507df9e88bd50d495f6e8b72", "shasum": "" }, "require": { @@ -6853,7 +6872,7 @@ "description": "Provides a tight integration of the Security component into the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-bundle/tree/v6.4.13" + "source": "https://github.com/symfony/security-bundle/tree/v6.4.26" }, "funding": [ { @@ -6864,25 +6883,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-09-25T14:18:03+00:00" + "time": "2025-09-22T15:03:07+00:00" }, { "name": "symfony/security-core", - "version": "v6.4.18", + "version": "v6.4.27", "source": { "type": "git", "url": "https://github.com/symfony/security-core.git", - "reference": "0ae7ae716968e00287ab9b7768405e0dc9cad109" + "reference": "673018434b38e504eb04ca3c6d7e2e7c86735bfb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-core/zipball/0ae7ae716968e00287ab9b7768405e0dc9cad109", - "reference": "0ae7ae716968e00287ab9b7768405e0dc9cad109", + "url": "https://api.github.com/repos/symfony/security-core/zipball/673018434b38e504eb04ca3c6d7e2e7c86735bfb", + "reference": "673018434b38e504eb04ca3c6d7e2e7c86735bfb", "shasum": "" }, "require": { @@ -6939,7 +6962,7 @@ "description": "Symfony Security Component - Core Library", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-core/tree/v6.4.18" + "source": "https://github.com/symfony/security-core/tree/v6.4.27" }, "funding": [ { @@ -6950,25 +6973,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-01-22T20:59:03+00:00" + "time": "2025-10-23T19:49:35+00:00" }, { "name": "symfony/security-csrf", - "version": "v6.4.13", + "version": "v6.4.24", "source": { "type": "git", "url": "https://github.com/symfony/security-csrf.git", - "reference": "c34421b7d34efbaef5d611ab2e646a0ec464ffe3" + "reference": "9a1efc8c10b86bcedc9233affd10c716b54ca1b7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-csrf/zipball/c34421b7d34efbaef5d611ab2e646a0ec464ffe3", - "reference": "c34421b7d34efbaef5d611ab2e646a0ec464ffe3", + "url": "https://api.github.com/repos/symfony/security-csrf/zipball/9a1efc8c10b86bcedc9233affd10c716b54ca1b7", + "reference": "9a1efc8c10b86bcedc9233affd10c716b54ca1b7", "shasum": "" }, "require": { @@ -7007,7 +7034,7 @@ "description": "Symfony Security Component - CSRF Library", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-csrf/tree/v6.4.13" + "source": "https://github.com/symfony/security-csrf/tree/v6.4.24" }, "funding": [ { @@ -7018,25 +7045,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-09-25T14:18:03+00:00" + "time": "2025-07-10T08:14:14+00:00" }, { "name": "symfony/security-http", - "version": "v6.4.18", + "version": "v6.4.26", "source": { "type": "git", "url": "https://github.com/symfony/security-http.git", - "reference": "54f2ccce1f3822eee3fb3a85debd9a67d12762b8" + "reference": "6c2e236f0fc3e0853770a5574ef7af471486ba4c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-http/zipball/54f2ccce1f3822eee3fb3a85debd9a67d12762b8", - "reference": "54f2ccce1f3822eee3fb3a85debd9a67d12762b8", + "url": "https://api.github.com/repos/symfony/security-http/zipball/6c2e236f0fc3e0853770a5574ef7af471486ba4c", + "reference": "6c2e236f0fc3e0853770a5574ef7af471486ba4c", "shasum": "" }, "require": { @@ -7095,7 +7126,7 @@ "description": "Symfony Security Component - HTTP Integration", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-http/tree/v6.4.18" + "source": "https://github.com/symfony/security-http/tree/v6.4.26" }, "funding": [ { @@ -7106,25 +7137,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-01-28T14:53:52+00:00" + "time": "2025-09-05T18:17:25+00:00" }, { "name": "symfony/service-contracts", - "version": "v3.5.1", + "version": "v3.6.1", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "e53260aabf78fb3d63f8d79d69ece59f80d5eda0" + "reference": "45112560a3ba2d715666a509a0bc9521d10b6c43" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/e53260aabf78fb3d63f8d79d69ece59f80d5eda0", - "reference": "e53260aabf78fb3d63f8d79d69ece59f80d5eda0", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/45112560a3ba2d715666a509a0bc9521d10b6c43", + "reference": "45112560a3ba2d715666a509a0bc9521d10b6c43", "shasum": "" }, "require": { @@ -7142,7 +7177,7 @@ "name": "symfony/contracts" }, "branch-alias": { - "dev-main": "3.5-dev" + "dev-main": "3.6-dev" } }, "autoload": { @@ -7178,7 +7213,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v3.5.1" + "source": "https://github.com/symfony/service-contracts/tree/v3.6.1" }, "funding": [ { @@ -7189,25 +7224,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-09-25T14:20:29+00:00" + "time": "2025-07-15T11:30:57+00:00" }, { "name": "symfony/stopwatch", - "version": "v6.4.13", + "version": "v6.4.24", "source": { "type": "git", "url": "https://github.com/symfony/stopwatch.git", - "reference": "2cae0a6f8d04937d02f6d19806251e2104d54f92" + "reference": "b67e94e06a05d9572c2fa354483b3e13e3cb1898" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/2cae0a6f8d04937d02f6d19806251e2104d54f92", - "reference": "2cae0a6f8d04937d02f6d19806251e2104d54f92", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/b67e94e06a05d9572c2fa354483b3e13e3cb1898", + "reference": "b67e94e06a05d9572c2fa354483b3e13e3cb1898", "shasum": "" }, "require": { @@ -7240,7 +7279,7 @@ "description": "Provides a way to profile code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/stopwatch/tree/v6.4.13" + "source": "https://github.com/symfony/stopwatch/tree/v6.4.24" }, "funding": [ { @@ -7251,25 +7290,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-09-25T14:18:03+00:00" + "time": "2025-07-10T08:14:14+00:00" }, { "name": "symfony/string", - "version": "v6.4.15", + "version": "v6.4.26", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "73a5e66ea2e1677c98d4449177c5a9cf9d8b4c6f" + "reference": "5621f039a71a11c87c106c1c598bdcd04a19aeea" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/73a5e66ea2e1677c98d4449177c5a9cf9d8b4c6f", - "reference": "73a5e66ea2e1677c98d4449177c5a9cf9d8b4c6f", + "url": "https://api.github.com/repos/symfony/string/zipball/5621f039a71a11c87c106c1c598bdcd04a19aeea", + "reference": "5621f039a71a11c87c106c1c598bdcd04a19aeea", "shasum": "" }, "require": { @@ -7283,7 +7326,6 @@ "symfony/translation-contracts": "<2.5" }, "require-dev": { - "symfony/error-handler": "^5.4|^6.0|^7.0", "symfony/http-client": "^5.4|^6.0|^7.0", "symfony/intl": "^6.2|^7.0", "symfony/translation-contracts": "^2.5|^3.0", @@ -7326,7 +7368,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v6.4.15" + "source": "https://github.com/symfony/string/tree/v6.4.26" }, "funding": [ { @@ -7337,25 +7379,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-11-13T13:31:12+00:00" + "time": "2025-09-11T14:32:46+00:00" }, { "name": "symfony/templating", - "version": "v6.4.13", + "version": "v6.4.24", "source": { "type": "git", "url": "https://github.com/symfony/templating.git", - "reference": "e27b6ea8d737cb0dfd41b2f5f055c9ed677afa33" + "reference": "c55c6f96eafa9388390d3ba099fe844f892dbcd6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/templating/zipball/e27b6ea8d737cb0dfd41b2f5f055c9ed677afa33", - "reference": "e27b6ea8d737cb0dfd41b2f5f055c9ed677afa33", + "url": "https://api.github.com/repos/symfony/templating/zipball/c55c6f96eafa9388390d3ba099fe844f892dbcd6", + "reference": "c55c6f96eafa9388390d3ba099fe844f892dbcd6", "shasum": "" }, "require": { @@ -7392,7 +7438,7 @@ "description": "Provides all the tools needed to build any kind of template system", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/templating/tree/v6.4.13" + "source": "https://github.com/symfony/templating/tree/v6.4.24" }, "funding": [ { @@ -7403,25 +7449,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-10-25T15:07:50+00:00" + "time": "2025-07-10T08:14:14+00:00" }, { "name": "symfony/translation", - "version": "v6.4.13", + "version": "v6.4.26", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "bee9bfabfa8b4045a66bf82520e492cddbaffa66" + "reference": "c8559fe25c7ee7aa9d28f228903a46db008156a4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/bee9bfabfa8b4045a66bf82520e492cddbaffa66", - "reference": "bee9bfabfa8b4045a66bf82520e492cddbaffa66", + "url": "https://api.github.com/repos/symfony/translation/zipball/c8559fe25c7ee7aa9d28f228903a46db008156a4", + "reference": "c8559fe25c7ee7aa9d28f228903a46db008156a4", "shasum": "" }, "require": { @@ -7487,7 +7537,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v6.4.13" + "source": "https://github.com/symfony/translation/tree/v6.4.26" }, "funding": [ { @@ -7498,25 +7548,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-09-27T18:14:25+00:00" + "time": "2025-09-05T18:17:25+00:00" }, { "name": "symfony/translation-contracts", - "version": "v3.5.1", + "version": "v3.6.1", "source": { "type": "git", "url": "https://github.com/symfony/translation-contracts.git", - "reference": "4667ff3bd513750603a09c8dedbea942487fb07c" + "reference": "65a8bc82080447fae78373aa10f8d13b38338977" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/4667ff3bd513750603a09c8dedbea942487fb07c", - "reference": "4667ff3bd513750603a09c8dedbea942487fb07c", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/65a8bc82080447fae78373aa10f8d13b38338977", + "reference": "65a8bc82080447fae78373aa10f8d13b38338977", "shasum": "" }, "require": { @@ -7529,7 +7583,7 @@ "name": "symfony/contracts" }, "branch-alias": { - "dev-main": "3.5-dev" + "dev-main": "3.6-dev" } }, "autoload": { @@ -7565,7 +7619,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/translation-contracts/tree/v3.5.1" + "source": "https://github.com/symfony/translation-contracts/tree/v3.6.1" }, "funding": [ { @@ -7576,25 +7630,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-09-25T14:20:29+00:00" + "time": "2025-07-15T13:41:35+00:00" }, { "name": "symfony/twig-bridge", - "version": "v6.4.17", + "version": "v6.4.25", "source": { "type": "git", "url": "https://github.com/symfony/twig-bridge.git", - "reference": "238e1aac992b5231c66faf10131ace7bdba97065" + "reference": "9d13e87591c9de3221c8d6f23cd9a2b5958607bf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/238e1aac992b5231c66faf10131ace7bdba97065", - "reference": "238e1aac992b5231c66faf10131ace7bdba97065", + "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/9d13e87591c9de3221c8d6f23cd9a2b5958607bf", + "reference": "9d13e87591c9de3221c8d6f23cd9a2b5958607bf", "shasum": "" }, "require": { @@ -7625,7 +7683,7 @@ "symfony/dependency-injection": "^5.4|^6.0|^7.0", "symfony/expression-language": "^5.4|^6.0|^7.0", "symfony/finder": "^5.4|^6.0|^7.0", - "symfony/form": "^6.4|^7.0", + "symfony/form": "^6.4.20|^7.2.5", "symfony/html-sanitizer": "^6.1|^7.0", "symfony/http-foundation": "^5.4|^6.0|^7.0", "symfony/http-kernel": "^6.4|^7.0", @@ -7674,7 +7732,7 @@ "description": "Provides integration for Twig with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/twig-bridge/tree/v6.4.17" + "source": "https://github.com/symfony/twig-bridge/tree/v6.4.25" }, "funding": [ { @@ -7685,25 +7743,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-12-19T14:08:41+00:00" + "time": "2025-08-13T09:41:44+00:00" }, { "name": "symfony/twig-bundle", - "version": "v6.4.13", + "version": "v6.4.24", "source": { "type": "git", "url": "https://github.com/symfony/twig-bundle.git", - "reference": "c3beeb5336aba1ea03c37e526968c2fde3ef25c4" + "reference": "3b48b6e8225495c6d2438828982b4d219ca565ba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/c3beeb5336aba1ea03c37e526968c2fde3ef25c4", - "reference": "c3beeb5336aba1ea03c37e526968c2fde3ef25c4", + "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/3b48b6e8225495c6d2438828982b4d219ca565ba", + "reference": "3b48b6e8225495c6d2438828982b4d219ca565ba", "shasum": "" }, "require": { @@ -7758,7 +7820,7 @@ "description": "Provides a tight integration of Twig into the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/twig-bundle/tree/v6.4.13" + "source": "https://github.com/symfony/twig-bundle/tree/v6.4.24" }, "funding": [ { @@ -7769,25 +7831,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-09-25T14:18:03+00:00" + "time": "2025-07-10T08:14:14+00:00" }, { "name": "symfony/validator", - "version": "v6.4.18", + "version": "v6.4.29", "source": { "type": "git", "url": "https://github.com/symfony/validator.git", - "reference": "ce20367d07b2592202e9c266b16a93fa50145207" + "reference": "99df8a769e64e399f510166141ea74f450e8dd1d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/validator/zipball/ce20367d07b2592202e9c266b16a93fa50145207", - "reference": "ce20367d07b2592202e9c266b16a93fa50145207", + "url": "https://api.github.com/repos/symfony/validator/zipball/99df8a769e64e399f510166141ea74f450e8dd1d", + "reference": "99df8a769e64e399f510166141ea74f450e8dd1d", "shasum": "" }, "require": { @@ -7855,7 +7921,7 @@ "description": "Provides tools to validate values", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/validator/tree/v6.4.18" + "source": "https://github.com/symfony/validator/tree/v6.4.29" }, "funding": [ { @@ -7866,25 +7932,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-01-27T16:05:44+00:00" + "time": "2025-11-06T20:26:06+00:00" }, { "name": "symfony/var-dumper", - "version": "v6.4.18", + "version": "v6.4.26", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "4ad10cf8b020e77ba665305bb7804389884b4837" + "reference": "cfae1497a2f1eaad78dbc0590311c599c7178d4a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/4ad10cf8b020e77ba665305bb7804389884b4837", - "reference": "4ad10cf8b020e77ba665305bb7804389884b4837", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/cfae1497a2f1eaad78dbc0590311c599c7178d4a", + "reference": "cfae1497a2f1eaad78dbc0590311c599c7178d4a", "shasum": "" }, "require": { @@ -7896,7 +7966,6 @@ "symfony/console": "<5.4" }, "require-dev": { - "ext-iconv": "*", "symfony/console": "^5.4|^6.0|^7.0", "symfony/error-handler": "^6.3|^7.0", "symfony/http-kernel": "^5.4|^6.0|^7.0", @@ -7940,7 +8009,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v6.4.18" + "source": "https://github.com/symfony/var-dumper/tree/v6.4.26" }, "funding": [ { @@ -7951,25 +8020,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-01-17T11:26:11+00:00" + "time": "2025-09-25T15:37:27+00:00" }, { "name": "symfony/var-exporter", - "version": "v6.4.13", + "version": "v6.4.26", "source": { "type": "git", "url": "https://github.com/symfony/var-exporter.git", - "reference": "0f605f72a363f8743001038a176eeb2a11223b51" + "reference": "466fcac5fa2e871f83d31173f80e9c2684743bfc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-exporter/zipball/0f605f72a363f8743001038a176eeb2a11223b51", - "reference": "0f605f72a363f8743001038a176eeb2a11223b51", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/466fcac5fa2e871f83d31173f80e9c2684743bfc", + "reference": "466fcac5fa2e871f83d31173f80e9c2684743bfc", "shasum": "" }, "require": { @@ -8017,7 +8090,7 @@ "serialize" ], "support": { - "source": "https://github.com/symfony/var-exporter/tree/v6.4.13" + "source": "https://github.com/symfony/var-exporter/tree/v6.4.26" }, "funding": [ { @@ -8028,25 +8101,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-09-25T14:18:03+00:00" + "time": "2025-09-11T09:57:09+00:00" }, { "name": "symfony/yaml", - "version": "v6.4.18", + "version": "v6.4.26", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "bf598c9d9bb4a22f495a4e26e4c4fce2f8ecefc5" + "reference": "0fc8b966fd0dcaab544ae59bfc3a433f048c17b0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/bf598c9d9bb4a22f495a4e26e4c4fce2f8ecefc5", - "reference": "bf598c9d9bb4a22f495a4e26e4c4fce2f8ecefc5", + "url": "https://api.github.com/repos/symfony/yaml/zipball/0fc8b966fd0dcaab544ae59bfc3a433f048c17b0", + "reference": "0fc8b966fd0dcaab544ae59bfc3a433f048c17b0", "shasum": "" }, "require": { @@ -8089,7 +8166,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v6.4.18" + "source": "https://github.com/symfony/yaml/tree/v6.4.26" }, "funding": [ { @@ -8100,35 +8177,39 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-01-07T09:44:41+00:00" + "time": "2025-09-26T15:07:38+00:00" }, { "name": "twig/extra-bundle", - "version": "v3.20.0", + "version": "v3.22.1", "source": { "type": "git", "url": "https://github.com/twigphp/twig-extra-bundle.git", - "reference": "9df5e1dbb6a68c0665ae5603f6f2c20815647876" + "reference": "b6534bc925bec930004facca92fccebd0c809247" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/twig-extra-bundle/zipball/9df5e1dbb6a68c0665ae5603f6f2c20815647876", - "reference": "9df5e1dbb6a68c0665ae5603f6f2c20815647876", + "url": "https://api.github.com/repos/twigphp/twig-extra-bundle/zipball/b6534bc925bec930004facca92fccebd0c809247", + "reference": "b6534bc925bec930004facca92fccebd0c809247", "shasum": "" }, "require": { "php": ">=8.1.0", - "symfony/framework-bundle": "^5.4|^6.4|^7.0", - "symfony/twig-bundle": "^5.4|^6.4|^7.0", + "symfony/framework-bundle": "^5.4|^6.4|^7.0|^8.0", + "symfony/twig-bundle": "^5.4|^6.4|^7.0|^8.0", "twig/twig": "^3.2|^4.0" }, "require-dev": { - "league/commonmark": "^1.0|^2.0", + "league/commonmark": "^2.7", "symfony/phpunit-bridge": "^6.4|^7.0", "twig/cache-extra": "^3.0", "twig/cssinliner-extra": "^3.0", @@ -8167,7 +8248,7 @@ "twig" ], "support": { - "source": "https://github.com/twigphp/twig-extra-bundle/tree/v3.20.0" + "source": "https://github.com/twigphp/twig-extra-bundle/tree/v3.22.1" }, "funding": [ { @@ -8179,25 +8260,25 @@ "type": "tidelift" } ], - "time": "2025-02-08T09:47:15+00:00" + "time": "2025-11-02T11:00:49+00:00" }, { "name": "twig/intl-extra", - "version": "v3.20.0", + "version": "v3.22.1", "source": { "type": "git", "url": "https://github.com/twigphp/intl-extra.git", - "reference": "05bc5d46b9df9e62399eae53e7c0b0633298b146" + "reference": "93ac31e53cdd3f2e541f42690cd0c54ca8138ab1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/intl-extra/zipball/05bc5d46b9df9e62399eae53e7c0b0633298b146", - "reference": "05bc5d46b9df9e62399eae53e7c0b0633298b146", + "url": "https://api.github.com/repos/twigphp/intl-extra/zipball/93ac31e53cdd3f2e541f42690cd0c54ca8138ab1", + "reference": "93ac31e53cdd3f2e541f42690cd0c54ca8138ab1", "shasum": "" }, "require": { "php": ">=8.1.0", - "symfony/intl": "^5.4|^6.4|^7.0", + "symfony/intl": "^5.4|^6.4|^7.0|^8.0", "twig/twig": "^3.13|^4.0" }, "require-dev": { @@ -8231,7 +8312,7 @@ "twig" ], "support": { - "source": "https://github.com/twigphp/intl-extra/tree/v3.20.0" + "source": "https://github.com/twigphp/intl-extra/tree/v3.22.1" }, "funding": [ { @@ -8243,20 +8324,20 @@ "type": "tidelift" } ], - "time": "2025-01-31T20:45:36+00:00" + "time": "2025-11-02T11:00:49+00:00" }, { "name": "twig/twig", - "version": "v3.20.0", + "version": "v3.22.0", "source": { "type": "git", "url": "https://github.com/twigphp/Twig.git", - "reference": "3468920399451a384bef53cf7996965f7cd40183" + "reference": "4509984193026de413baf4ba80f68590a7f2c51d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/3468920399451a384bef53cf7996965f7cd40183", - "reference": "3468920399451a384bef53cf7996965f7cd40183", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/4509984193026de413baf4ba80f68590a7f2c51d", + "reference": "4509984193026de413baf4ba80f68590a7f2c51d", "shasum": "" }, "require": { @@ -8310,7 +8391,7 @@ ], "support": { "issues": "https://github.com/twigphp/Twig/issues", - "source": "https://github.com/twigphp/Twig/tree/v3.20.0" + "source": "https://github.com/twigphp/Twig/tree/v3.22.0" }, "funding": [ { @@ -8322,20 +8403,20 @@ "type": "tidelift" } ], - "time": "2025-02-13T08:34:43+00:00" + "time": "2025-10-29T15:56:47+00:00" }, { "name": "ua-parser/uap-php", - "version": "v3.9.14", + "version": "v3.10.0", "source": { "type": "git", "url": "https://github.com/ua-parser/uap-php.git", - "reference": "b796c5ea5df588e65aeb4e2c6cce3811dec4fed6" + "reference": "f44bdd1b38198801cf60b0681d2d842980e47af5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ua-parser/uap-php/zipball/b796c5ea5df588e65aeb4e2c6cce3811dec4fed6", - "reference": "b796c5ea5df588e65aeb4e2c6cce3811dec4fed6", + "url": "https://api.github.com/repos/ua-parser/uap-php/zipball/f44bdd1b38198801cf60b0681d2d842980e47af5", + "reference": "f44bdd1b38198801cf60b0681d2d842980e47af5", "shasum": "" }, "require": { @@ -8383,34 +8464,34 @@ "description": "A multi-language port of Browserscope's user agent parser.", "support": { "issues": "https://github.com/ua-parser/uap-php/issues", - "source": "https://github.com/ua-parser/uap-php/tree/v3.9.14" + "source": "https://github.com/ua-parser/uap-php/tree/v3.10.0" }, - "time": "2020-10-02T23:36:20+00:00" + "time": "2025-07-17T15:43:24+00:00" }, { "name": "webmozart/assert", - "version": "1.11.0", + "version": "1.12.1", "source": { "type": "git", "url": "https://github.com/webmozarts/assert.git", - "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991" + "reference": "9be6926d8b485f55b9229203f962b51ed377ba68" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/11cb2199493b2f8a3b53e7f19068fc6aac760991", - "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991", + "url": "https://api.github.com/repos/webmozarts/assert/zipball/9be6926d8b485f55b9229203f962b51ed377ba68", + "reference": "9be6926d8b485f55b9229203f962b51ed377ba68", "shasum": "" }, "require": { "ext-ctype": "*", + "ext-date": "*", + "ext-filter": "*", "php": "^7.2 || ^8.0" }, - "conflict": { - "phpstan/phpstan": "<0.12.20", - "vimeo/psalm": "<4.6.1 || 4.6.2" - }, - "require-dev": { - "phpunit/phpunit": "^8.5.13" + "suggest": { + "ext-intl": "", + "ext-simplexml": "", + "ext-spl": "" }, "type": "library", "extra": { @@ -8441,9 +8522,9 @@ ], "support": { "issues": "https://github.com/webmozarts/assert/issues", - "source": "https://github.com/webmozarts/assert/tree/1.11.0" + "source": "https://github.com/webmozarts/assert/tree/1.12.1" }, - "time": "2022-06-03T18:03:27+00:00" + "time": "2025-10-29T15:56:20+00:00" } ], "packages-dev": [ @@ -8685,16 +8766,16 @@ }, { "name": "doctrine/data-fixtures", - "version": "1.8.1", + "version": "1.8.2", "source": { "type": "git", "url": "https://github.com/doctrine/data-fixtures.git", - "reference": "a367a09b7a2b4f63ed57f391bf5713e3e46c7c7b" + "reference": "6fb221da56dae2011b33d47508e3b8aeb1d91db5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/data-fixtures/zipball/a367a09b7a2b4f63ed57f391bf5713e3e46c7c7b", - "reference": "a367a09b7a2b4f63ed57f391bf5713e3e46c7c7b", + "url": "https://api.github.com/repos/doctrine/data-fixtures/zipball/6fb221da56dae2011b33d47508e3b8aeb1d91db5", + "reference": "6fb221da56dae2011b33d47508e3b8aeb1d91db5", "shasum": "" }, "require": { @@ -8710,14 +8791,14 @@ }, "require-dev": { "doctrine/annotations": "^1.12 || ^2", - "doctrine/coding-standard": "^12", + "doctrine/coding-standard": "^13", "doctrine/dbal": "^3.5 || ^4", "doctrine/mongodb-odm": "^1.3.0 || ^2.0.0", "doctrine/orm": "^2.14 || ^3", "ext-sqlite3": "*", "fig/log-test": "^1", - "phpstan/phpstan": "^1.10", - "phpunit/phpunit": "^9.6.13 || ^10.4.2", + "phpstan/phpstan": "2.1.17", + "phpunit/phpunit": "^9.6.13 || 10.5.45", "psr/log": "^1.1 || ^2 || ^3", "symfony/cache": "^5.4 || ^6.3 || ^7", "symfony/var-exporter": "^5.4 || ^6.3 || ^7" @@ -8751,7 +8832,7 @@ ], "support": { "issues": "https://github.com/doctrine/data-fixtures/issues", - "source": "https://github.com/doctrine/data-fixtures/tree/1.8.1" + "source": "https://github.com/doctrine/data-fixtures/tree/1.8.2" }, "funding": [ { @@ -8767,20 +8848,20 @@ "type": "tidelift" } ], - "time": "2024-12-10T07:00:20+00:00" + "time": "2025-06-10T07:00:05+00:00" }, { "name": "doctrine/doctrine-fixtures-bundle", - "version": "3.7.1", + "version": "3.7.2", "source": { "type": "git", "url": "https://github.com/doctrine/DoctrineFixturesBundle.git", - "reference": "bd59519a7532b9e1a41cef4049d5326dfac7def9" + "reference": "0afaecd65e5791e855edddf125b77576e7bcbbfb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineFixturesBundle/zipball/bd59519a7532b9e1a41cef4049d5326dfac7def9", - "reference": "bd59519a7532b9e1a41cef4049d5326dfac7def9", + "url": "https://api.github.com/repos/doctrine/DoctrineFixturesBundle/zipball/0afaecd65e5791e855edddf125b77576e7bcbbfb", + "reference": "0afaecd65e5791e855edddf125b77576e7bcbbfb", "shasum": "" }, "require": { @@ -8801,10 +8882,10 @@ "doctrine/dbal": "< 3" }, "require-dev": { - "doctrine/coding-standard": "^12", - "phpstan/phpstan": "^2", - "phpunit/phpunit": "^9.6.13", - "symfony/phpunit-bridge": "^6.3.6" + "doctrine/coding-standard": "14.0.0", + "phpstan/phpstan": "2.1.11", + "phpunit/phpunit": "^9.6.13 || 11.4.14", + "symfony/phpunit-bridge": "7.2.0" }, "type": "symfony-bundle", "autoload": { @@ -8838,7 +8919,7 @@ ], "support": { "issues": "https://github.com/doctrine/DoctrineFixturesBundle/issues", - "source": "https://github.com/doctrine/DoctrineFixturesBundle/tree/3.7.1" + "source": "https://github.com/doctrine/DoctrineFixturesBundle/tree/3.7.2" }, "funding": [ { @@ -8854,24 +8935,24 @@ "type": "tidelift" } ], - "time": "2024-12-03T17:07:51+00:00" + "time": "2025-10-11T16:14:44+00:00" }, { "name": "hamcrest/hamcrest-php", - "version": "v2.0.1", + "version": "v2.1.1", "source": { "type": "git", "url": "https://github.com/hamcrest/hamcrest-php.git", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3" + "reference": "f8b1c0173b22fa6ec77a81fe63e5b01eba7e6487" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", + "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/f8b1c0173b22fa6ec77a81fe63e5b01eba7e6487", + "reference": "f8b1c0173b22fa6ec77a81fe63e5b01eba7e6487", "shasum": "" }, "require": { - "php": "^5.3|^7.0|^8.0" + "php": "^7.4|^8.0" }, "replace": { "cordoval/hamcrest-php": "*", @@ -8879,8 +8960,8 @@ "kodova/hamcrest-php": "*" }, "require-dev": { - "phpunit/php-file-iterator": "^1.4 || ^2.0", - "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0" + "phpunit/php-file-iterator": "^1.4 || ^2.0 || ^3.0", + "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0 || ^8.0 || ^9.0" }, "type": "library", "extra": { @@ -8903,22 +8984,22 @@ ], "support": { "issues": "https://github.com/hamcrest/hamcrest-php/issues", - "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1" + "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.1.1" }, - "time": "2020-07-09T08:09:16+00:00" + "time": "2025-04-30T06:54:44+00:00" }, { "name": "liip/test-fixtures-bundle", - "version": "2.9.2", + "version": "2.10.0", "source": { "type": "git", "url": "https://github.com/liip/LiipTestFixturesBundle.git", - "reference": "2b810cd0cc03f4f72a0265c911c03fc2553fb8de" + "reference": "45b1961d2a19d4cbb61d45bb756e9a152d43624b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/liip/LiipTestFixturesBundle/zipball/2b810cd0cc03f4f72a0265c911c03fc2553fb8de", - "reference": "2b810cd0cc03f4f72a0265c911c03fc2553fb8de", + "url": "https://api.github.com/repos/liip/LiipTestFixturesBundle/zipball/45b1961d2a19d4cbb61d45bb756e9a152d43624b", + "reference": "45b1961d2a19d4cbb61d45bb756e9a152d43624b", "shasum": "" }, "require": { @@ -8997,9 +9078,9 @@ ], "support": { "issues": "https://github.com/liip/LiipTestFixturesBundle/issues", - "source": "https://github.com/liip/LiipTestFixturesBundle/tree/2.9.2" + "source": "https://github.com/liip/LiipTestFixturesBundle/tree/2.10.0" }, - "time": "2024-11-12T18:52:49+00:00" + "time": "2025-06-05T19:13:23+00:00" }, { "name": "malukenho/docheader", @@ -9061,16 +9142,16 @@ }, { "name": "masterminds/html5", - "version": "2.9.0", + "version": "2.10.0", "source": { "type": "git", "url": "https://github.com/Masterminds/html5-php.git", - "reference": "f5ac2c0b0a2eefca70b2ce32a5809992227e75a6" + "reference": "fcf91eb64359852f00d921887b219479b4f21251" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Masterminds/html5-php/zipball/f5ac2c0b0a2eefca70b2ce32a5809992227e75a6", - "reference": "f5ac2c0b0a2eefca70b2ce32a5809992227e75a6", + "url": "https://api.github.com/repos/Masterminds/html5-php/zipball/fcf91eb64359852f00d921887b219479b4f21251", + "reference": "fcf91eb64359852f00d921887b219479b4f21251", "shasum": "" }, "require": { @@ -9122,9 +9203,9 @@ ], "support": { "issues": "https://github.com/Masterminds/html5-php/issues", - "source": "https://github.com/Masterminds/html5-php/tree/2.9.0" + "source": "https://github.com/Masterminds/html5-php/tree/2.10.0" }, - "time": "2024-03-31T07:05:07+00:00" + "time": "2025-07-25T09:04:22+00:00" }, { "name": "mockery/mockery", @@ -9265,16 +9346,16 @@ }, { "name": "myclabs/deep-copy", - "version": "1.13.0", + "version": "1.13.4", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "024473a478be9df5fdaca2c793f2232fe788e414" + "reference": "07d290f0c47959fd5eed98c95ee5602db07e0b6a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/024473a478be9df5fdaca2c793f2232fe788e414", - "reference": "024473a478be9df5fdaca2c793f2232fe788e414", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/07d290f0c47959fd5eed98c95ee5602db07e0b6a", + "reference": "07d290f0c47959fd5eed98c95ee5602db07e0b6a", "shasum": "" }, "require": { @@ -9313,7 +9394,7 @@ ], "support": { "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.13.0" + "source": "https://github.com/myclabs/DeepCopy/tree/1.13.4" }, "funding": [ { @@ -9321,20 +9402,20 @@ "type": "tidelift" } ], - "time": "2025-02-12T12:17:51+00:00" + "time": "2025-08-01T08:46:24+00:00" }, { "name": "overtrue/phplint", - "version": "9.5.6", + "version": "9.6.2", "source": { "type": "git", "url": "https://github.com/overtrue/phplint.git", - "reference": "3fdc395a816d1401091062c7a3bfb31252aed6c5" + "reference": "e2ebdbac93fa6ffe45d724e350f77df34c1f8fb4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/overtrue/phplint/zipball/3fdc395a816d1401091062c7a3bfb31252aed6c5", - "reference": "3fdc395a816d1401091062c7a3bfb31252aed6c5", + "url": "https://api.github.com/repos/overtrue/phplint/zipball/e2ebdbac93fa6ffe45d724e350f77df34c1f8fb4", + "reference": "e2ebdbac93fa6ffe45d724e350f77df34c1f8fb4", "shasum": "" }, "require": { @@ -9374,7 +9455,7 @@ "target-directory": "vendor-bin" }, "branch-alias": { - "dev-main": "9.5.x-dev" + "dev-main": "9.6.x-dev" } }, "autoload": { @@ -9406,7 +9487,7 @@ ], "support": { "issues": "https://github.com/overtrue/phplint/issues", - "source": "https://github.com/overtrue/phplint/tree/9.5.6" + "source": "https://github.com/overtrue/phplint/tree/9.6.2" }, "funding": [ { @@ -9414,28 +9495,30 @@ "type": "github" } ], - "time": "2025-01-15T05:41:15+00:00" + "time": "2025-04-10T13:12:51+00:00" }, { "name": "paragonie/constant_time_encoding", - "version": "v3.0.0", + "version": "v3.1.3", "source": { "type": "git", "url": "https://github.com/paragonie/constant_time_encoding.git", - "reference": "df1e7fde177501eee2037dd159cf04f5f301a512" + "reference": "d5b01a39b3415c2cd581d3bd3a3575c1ebbd8e77" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/paragonie/constant_time_encoding/zipball/df1e7fde177501eee2037dd159cf04f5f301a512", - "reference": "df1e7fde177501eee2037dd159cf04f5f301a512", + "url": "https://api.github.com/repos/paragonie/constant_time_encoding/zipball/d5b01a39b3415c2cd581d3bd3a3575c1ebbd8e77", + "reference": "d5b01a39b3415c2cd581d3bd3a3575c1ebbd8e77", "shasum": "" }, "require": { "php": "^8" }, "require-dev": { - "phpunit/phpunit": "^9", - "vimeo/psalm": "^4|^5" + "infection/infection": "^0", + "nikic/php-fuzzer": "^0", + "phpunit/phpunit": "^9|^10|^11", + "vimeo/psalm": "^4|^5|^6" }, "type": "library", "autoload": { @@ -9481,7 +9564,7 @@ "issues": "https://github.com/paragonie/constant_time_encoding/issues", "source": "https://github.com/paragonie/constant_time_encoding" }, - "time": "2024-05-08T12:36:18+00:00" + "time": "2025-09-24T15:06:41+00:00" }, { "name": "paragonie/random_compat", @@ -9861,16 +9944,16 @@ }, { "name": "phpseclib/phpseclib", - "version": "3.0.43", + "version": "3.0.47", "source": { "type": "git", "url": "https://github.com/phpseclib/phpseclib.git", - "reference": "709ec107af3cb2f385b9617be72af8cf62441d02" + "reference": "9d6ca36a6c2dd434765b1071b2644a1c683b385d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/709ec107af3cb2f385b9617be72af8cf62441d02", - "reference": "709ec107af3cb2f385b9617be72af8cf62441d02", + "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/9d6ca36a6c2dd434765b1071b2644a1c683b385d", + "reference": "9d6ca36a6c2dd434765b1071b2644a1c683b385d", "shasum": "" }, "require": { @@ -9951,7 +10034,7 @@ ], "support": { "issues": "https://github.com/phpseclib/phpseclib/issues", - "source": "https://github.com/phpseclib/phpseclib/tree/3.0.43" + "source": "https://github.com/phpseclib/phpseclib/tree/3.0.47" }, "funding": [ { @@ -9967,20 +10050,15 @@ "type": "tidelift" } ], - "time": "2024-12-14T21:12:59+00:00" + "time": "2025-10-06T01:07:24+00:00" }, { "name": "phpstan/phpstan", "version": "1.12.x-dev", - "source": { - "type": "git", - "url": "https://github.com/phpstan/phpstan.git", - "reference": "c42ba9bab7a940ed00092ecb1c77bad98896d789" - }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/c42ba9bab7a940ed00092ecb1c77bad98896d789", - "reference": "c42ba9bab7a940ed00092ecb1c77bad98896d789", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/2770dcdf5078d0b0d53f94317e06affe88419aa8", + "reference": "2770dcdf5078d0b0d53f94317e06affe88419aa8", "shasum": "" }, "require": { @@ -10025,7 +10103,7 @@ "type": "github" } ], - "time": "2025-02-19T15:42:21+00:00" + "time": "2025-09-30T10:16:31+00:00" }, { "name": "phpstan/phpstan-doctrine", @@ -10151,16 +10229,16 @@ }, { "name": "phpstan/phpstan-symfony", - "version": "1.4.13", + "version": "1.4.16", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan-symfony.git", - "reference": "dd1aaa7f85f9916222a2ce7e4d21072fe03958f4" + "reference": "18df9086a84fc28e9a231ea8e91d5aff1a0a3d6f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan-symfony/zipball/dd1aaa7f85f9916222a2ce7e4d21072fe03958f4", - "reference": "dd1aaa7f85f9916222a2ce7e4d21072fe03958f4", + "url": "https://api.github.com/repos/phpstan/phpstan-symfony/zipball/18df9086a84fc28e9a231ea8e91d5aff1a0a3d6f", + "reference": "18df9086a84fc28e9a231ea8e91d5aff1a0a3d6f", "shasum": "" }, "require": { @@ -10217,9 +10295,9 @@ "description": "Symfony Framework extensions and rules for PHPStan", "support": { "issues": "https://github.com/phpstan/phpstan-symfony/issues", - "source": "https://github.com/phpstan/phpstan-symfony/tree/1.4.13" + "source": "https://github.com/phpstan/phpstan-symfony/tree/1.4.16" }, - "time": "2025-01-04T13:55:31+00:00" + "time": "2025-09-07T06:55:28+00:00" }, { "name": "phpunit/php-code-coverage", @@ -10542,16 +10620,16 @@ }, { "name": "phpunit/phpunit", - "version": "9.6.22", + "version": "9.6.29", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "f80235cb4d3caa59ae09be3adf1ded27521d1a9c" + "reference": "9ecfec57835a5581bc888ea7e13b51eb55ab9dd3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/f80235cb4d3caa59ae09be3adf1ded27521d1a9c", - "reference": "f80235cb4d3caa59ae09be3adf1ded27521d1a9c", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/9ecfec57835a5581bc888ea7e13b51eb55ab9dd3", + "reference": "9ecfec57835a5581bc888ea7e13b51eb55ab9dd3", "shasum": "" }, "require": { @@ -10562,7 +10640,7 @@ "ext-mbstring": "*", "ext-xml": "*", "ext-xmlwriter": "*", - "myclabs/deep-copy": "^1.12.1", + "myclabs/deep-copy": "^1.13.4", "phar-io/manifest": "^2.0.4", "phar-io/version": "^3.2.1", "php": ">=7.3", @@ -10573,11 +10651,11 @@ "phpunit/php-timer": "^5.0.3", "sebastian/cli-parser": "^1.0.2", "sebastian/code-unit": "^1.0.8", - "sebastian/comparator": "^4.0.8", + "sebastian/comparator": "^4.0.9", "sebastian/diff": "^4.0.6", "sebastian/environment": "^5.1.5", - "sebastian/exporter": "^4.0.6", - "sebastian/global-state": "^5.0.7", + "sebastian/exporter": "^4.0.8", + "sebastian/global-state": "^5.0.8", "sebastian/object-enumerator": "^4.0.4", "sebastian/resource-operations": "^3.0.4", "sebastian/type": "^3.2.1", @@ -10625,7 +10703,7 @@ "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.22" + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.29" }, "funding": [ { @@ -10636,12 +10714,20 @@ "url": "https://github.com/sebastianbergmann", "type": "github" }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, { "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit", "type": "tidelift" } ], - "time": "2024-12-05T13:48:26+00:00" + "time": "2025-09-24T06:29:11+00:00" }, { "name": "rector/rector", @@ -10871,16 +10957,16 @@ }, { "name": "sebastian/comparator", - "version": "4.0.8", + "version": "4.0.9", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "fa0f136dd2334583309d32b62544682ee972b51a" + "reference": "67a2df3a62639eab2cc5906065e9805d4fd5dfc5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/fa0f136dd2334583309d32b62544682ee972b51a", - "reference": "fa0f136dd2334583309d32b62544682ee972b51a", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/67a2df3a62639eab2cc5906065e9805d4fd5dfc5", + "reference": "67a2df3a62639eab2cc5906065e9805d4fd5dfc5", "shasum": "" }, "require": { @@ -10933,15 +11019,27 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/comparator/issues", - "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.8" + "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.9" }, "funding": [ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/comparator", + "type": "tidelift" } ], - "time": "2022-09-14T12:41:17+00:00" + "time": "2025-08-10T06:51:50+00:00" }, { "name": "sebastian/complexity", @@ -11131,16 +11229,16 @@ }, { "name": "sebastian/exporter", - "version": "4.0.6", + "version": "4.0.8", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "78c00df8f170e02473b682df15bfcdacc3d32d72" + "reference": "14c6ba52f95a36c3d27c835d65efc7123c446e8c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/78c00df8f170e02473b682df15bfcdacc3d32d72", - "reference": "78c00df8f170e02473b682df15bfcdacc3d32d72", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/14c6ba52f95a36c3d27c835d65efc7123c446e8c", + "reference": "14c6ba52f95a36c3d27c835d65efc7123c446e8c", "shasum": "" }, "require": { @@ -11196,28 +11294,40 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/exporter/issues", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.6" + "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.8" }, "funding": [ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/exporter", + "type": "tidelift" } ], - "time": "2024-03-02T06:33:00+00:00" + "time": "2025-09-24T06:03:27+00:00" }, { "name": "sebastian/global-state", - "version": "5.0.7", + "version": "5.0.8", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "bca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9" + "reference": "b6781316bdcd28260904e7cc18ec983d0d2ef4f6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9", - "reference": "bca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/b6781316bdcd28260904e7cc18ec983d0d2ef4f6", + "reference": "b6781316bdcd28260904e7cc18ec983d0d2ef4f6", "shasum": "" }, "require": { @@ -11260,15 +11370,27 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.7" + "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.8" }, "funding": [ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/global-state", + "type": "tidelift" } ], - "time": "2024-03-02T06:35:11+00:00" + "time": "2025-08-10T07:10:35+00:00" }, { "name": "sebastian/lines-of-code", @@ -11503,16 +11625,16 @@ }, { "name": "sebastian/recursion-context", - "version": "4.0.5", + "version": "4.0.6", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1" + "reference": "539c6691e0623af6dc6f9c20384c120f963465a0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1", - "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/539c6691e0623af6dc6f9c20384c120f963465a0", + "reference": "539c6691e0623af6dc6f9c20384c120f963465a0", "shasum": "" }, "require": { @@ -11554,15 +11676,27 @@ "homepage": "https://github.com/sebastianbergmann/recursion-context", "support": { "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.5" + "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.6" }, "funding": [ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/recursion-context", + "type": "tidelift" } ], - "time": "2023-02-03T06:07:39+00:00" + "time": "2025-08-10T06:57:39+00:00" }, { "name": "sebastian/resource-operations", @@ -11729,16 +11863,16 @@ }, { "name": "squizlabs/php_codesniffer", - "version": "3.11.3", + "version": "3.13.5", "source": { "type": "git", "url": "https://github.com/PHPCSStandards/PHP_CodeSniffer.git", - "reference": "ba05f990e79cbe69b9f35c8c1ac8dca7eecc3a10" + "reference": "0ca86845ce43291e8f5692c7356fccf3bcf02bf4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/ba05f990e79cbe69b9f35c8c1ac8dca7eecc3a10", - "reference": "ba05f990e79cbe69b9f35c8c1ac8dca7eecc3a10", + "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/0ca86845ce43291e8f5692c7356fccf3bcf02bf4", + "reference": "0ca86845ce43291e8f5692c7356fccf3bcf02bf4", "shasum": "" }, "require": { @@ -11755,11 +11889,6 @@ "bin/phpcs" ], "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.x-dev" - } - }, "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" @@ -11805,24 +11934,24 @@ "type": "open_collective" }, { - "url": "https://thanks.dev/phpcsstandards", + "url": "https://thanks.dev/u/gh/phpcsstandards", "type": "thanks_dev" } ], - "time": "2025-01-23T17:04:15+00:00" + "time": "2025-11-04T16:30:35+00:00" }, { "name": "symfony/browser-kit", - "version": "v6.4.13", + "version": "v6.4.28", "source": { "type": "git", "url": "https://github.com/symfony/browser-kit.git", - "reference": "65d4b3fd9556e4b5b41287bef93c671f8f9f86ab" + "reference": "067e301786bbb58048077fc10507aceb18226e23" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/browser-kit/zipball/65d4b3fd9556e4b5b41287bef93c671f8f9f86ab", - "reference": "65d4b3fd9556e4b5b41287bef93c671f8f9f86ab", + "url": "https://api.github.com/repos/symfony/browser-kit/zipball/067e301786bbb58048077fc10507aceb18226e23", + "reference": "067e301786bbb58048077fc10507aceb18226e23", "shasum": "" }, "require": { @@ -11861,7 +11990,7 @@ "description": "Simulates the behavior of a web browser, allowing you to make requests, click on links and submit forms programmatically", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/browser-kit/tree/v6.4.13" + "source": "https://github.com/symfony/browser-kit/tree/v6.4.28" }, "funding": [ { @@ -11872,25 +12001,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-10-25T15:07:50+00:00" + "time": "2025-10-16T22:35:35+00:00" }, { "name": "symfony/dom-crawler", - "version": "v6.4.18", + "version": "v6.4.25", "source": { "type": "git", "url": "https://github.com/symfony/dom-crawler.git", - "reference": "fd07959d3e8992795029bdab3605c2e8e895034e" + "reference": "976302990f9f2a6d4c07206836dd4ca77cae9524" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/fd07959d3e8992795029bdab3605c2e8e895034e", - "reference": "fd07959d3e8992795029bdab3605c2e8e895034e", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/976302990f9f2a6d4c07206836dd4ca77cae9524", + "reference": "976302990f9f2a6d4c07206836dd4ca77cae9524", "shasum": "" }, "require": { @@ -11928,7 +12061,7 @@ "description": "Eases DOM navigation for HTML and XML documents", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dom-crawler/tree/v6.4.18" + "source": "https://github.com/symfony/dom-crawler/tree/v6.4.25" }, "funding": [ { @@ -11939,25 +12072,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-01-09T15:35:00+00:00" + "time": "2025-08-05T18:56:08+00:00" }, { "name": "symfony/phpunit-bridge", - "version": "v6.4.16", + "version": "v6.4.26", "source": { "type": "git", "url": "https://github.com/symfony/phpunit-bridge.git", - "reference": "cebafe2f1ad2d1e745c1015b7c2519592341e4e6" + "reference": "406aa80401bf960e7a173a3ccf268ae82b6bc93f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/cebafe2f1ad2d1e745c1015b7c2519592341e4e6", - "reference": "cebafe2f1ad2d1e745c1015b7c2519592341e4e6", + "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/406aa80401bf960e7a173a3ccf268ae82b6bc93f", + "reference": "406aa80401bf960e7a173a3ccf268ae82b6bc93f", "shasum": "" }, "require": { @@ -12009,8 +12146,95 @@ ], "description": "Provides utilities for PHPUnit, especially user deprecation notices management", "homepage": "https://symfony.com", + "keywords": [ + "testing" + ], + "support": { + "source": "https://github.com/symfony/phpunit-bridge/tree/v6.4.26" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-09-12T08:37:02+00:00" + }, + { + "name": "symfony/polyfill-php80", + "version": "v1.33.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "0cc9dd0f17f61d8131e7df6b84bd344899fe2608" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/0cc9dd0f17f61d8131e7df6b84bd344899fe2608", + "reference": "0cc9dd0f17f61d8131e7df6b84bd344899fe2608", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php80\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ion Bazan", + "email": "ion.bazan@gmail.com" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], "support": { - "source": "https://github.com/symfony/phpunit-bridge/tree/v6.4.16" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.33.0" }, "funding": [ { @@ -12021,25 +12245,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-11-13T15:06:22+00:00" + "time": "2025-01-02T08:10:11+00:00" }, { "name": "symfony/process", - "version": "v6.4.15", + "version": "v6.4.26", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "3cb242f059c14ae08591c5c4087d1fe443564392" + "reference": "48bad913268c8cafabbf7034b39c8bb24fbc5ab8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/3cb242f059c14ae08591c5c4087d1fe443564392", - "reference": "3cb242f059c14ae08591c5c4087d1fe443564392", + "url": "https://api.github.com/repos/symfony/process/zipball/48bad913268c8cafabbf7034b39c8bb24fbc5ab8", + "reference": "48bad913268c8cafabbf7034b39c8bb24fbc5ab8", "shasum": "" }, "require": { @@ -12071,7 +12299,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v6.4.15" + "source": "https://github.com/symfony/process/tree/v6.4.26" }, "funding": [ { @@ -12082,25 +12310,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-11-06T14:19:14+00:00" + "time": "2025-09-11T09:57:09+00:00" }, { "name": "symfony/web-profiler-bundle", - "version": "v6.4.18", + "version": "v6.4.27", "source": { "type": "git", "url": "https://github.com/symfony/web-profiler-bundle.git", - "reference": "979b623f12d1eb4f6f8f24fd321dfe1dee2444a2" + "reference": "4c2ab411372e8bd854678cd7c81f1a9bfd6914aa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/979b623f12d1eb4f6f8f24fd321dfe1dee2444a2", - "reference": "979b623f12d1eb4f6f8f24fd321dfe1dee2444a2", + "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/4c2ab411372e8bd854678cd7c81f1a9bfd6914aa", + "reference": "4c2ab411372e8bd854678cd7c81f1a9bfd6914aa", "shasum": "" }, "require": { @@ -12153,7 +12385,7 @@ "dev" ], "support": { - "source": "https://github.com/symfony/web-profiler-bundle/tree/v6.4.18" + "source": "https://github.com/symfony/web-profiler-bundle/tree/v6.4.27" }, "funding": [ { @@ -12164,25 +12396,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-12-23T18:38:04+00:00" + "time": "2025-10-05T13:55:43+00:00" }, { "name": "theseer/tokenizer", - "version": "1.2.3", + "version": "1.3.1", "source": { "type": "git", "url": "https://github.com/theseer/tokenizer.git", - "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2" + "reference": "b7489ce515e168639d17feec34b8847c326b0b3c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", - "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/b7489ce515e168639d17feec34b8847c326b0b3c", + "reference": "b7489ce515e168639d17feec34b8847c326b0b3c", "shasum": "" }, "require": { @@ -12211,7 +12447,7 @@ "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", "support": { "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.2.3" + "source": "https://github.com/theseer/tokenizer/tree/1.3.1" }, "funding": [ { @@ -12219,7 +12455,7 @@ "type": "github" } ], - "time": "2024-03-03T12:36:25+00:00" + "time": "2025-11-17T20:03:58+00:00" } ], "aliases": [], diff --git a/config/openconext/parameters.yaml.dist b/config/openconext/parameters.yaml.dist index 5d5a233a6..c763d787a 100644 --- a/config/openconext/parameters.yaml.dist +++ b/config/openconext/parameters.yaml.dist @@ -18,7 +18,7 @@ parameters: # The database server version is used in the dbal configuration and is required to prevent issues when the database # connection is booted. See https://github.com/doctrine/DoctrineBundle/issues/351 for more details on this. # Also see: https://symfony.com/doc/current/reference/configuration/doctrine.html#doctrine-dbal-configuration - database_server_version: 10.0.38-MariaDB + database_server_version: 10.6.23-MariaDB database_middleware_name: middleware database_middleware_user: middleware_user database_middleware_password: middleware_secret diff --git a/config/packages/monolog.yaml b/config/packages/monolog.yaml index 3221b6e56..16dc5215c 100644 --- a/config/packages/monolog.yaml +++ b/config/packages/monolog.yaml @@ -1,6 +1,5 @@ monolog: - channels: - - deprecation + channels: ['deprecation'] handlers: prod-signaler: type: fingers_crossed @@ -21,10 +20,15 @@ monolog: when@dev: &override monolog: handlers: + deprecation: + type: stream + path: "%kernel.logs_dir%/deprecation.log" + level: debug + channels: [ "deprecation" ] main_syslog: type: stream path: php://stderr - level: debug + level: error channels: ["!event", "!doctrine", "!deprecation", "!console"] console: type: console diff --git a/symfony.lock b/symfony.lock index ae87c3da5..912463898 100644 --- a/symfony.lock +++ b/symfony.lock @@ -47,9 +47,6 @@ "config/routes/annotations.yaml" ] }, - "doctrine/cache": { - "version": "1.10.1" - }, "doctrine/collections": { "version": "1.6.5" }, From e99728859d0e27843c4682962dac489d9a2f0bad Mon Sep 17 00:00:00 2001 From: Johan Kromhout Date: Thu, 20 Nov 2025 16:40:23 +0100 Subject: [PATCH 02/32] PHPStan fixes --- ci/qa/phpstan.neon | 1 + ci/qa/phpunit | 2 +- composer.json | 12 +- composer.lock | 111 +++++++++--------- ...ewInstitutionConfigurationCreatedEvent.php | 2 +- .../InstitutionConfiguration.php | 12 +- src/Surfnet/Stepup/DateTime/DateTime.php | 4 +- src/Surfnet/Stepup/Identity/Api/Identity.php | 2 +- .../Collection/InstitutionCollection.php | 9 +- .../Identity/Entity/RegistrationAuthority.php | 2 +- .../Entity/UnverifiedSecondFactor.php | 2 +- .../Identity/Entity/VerifiedSecondFactor.php | 4 +- .../Identity/Entity/VettedSecondFactor.php | 2 +- .../Identity/Event/EmailVerifiedEvent.php | 2 +- .../GssfPossessionProvenAndVerifiedEvent.php | 2 +- .../Event/GssfPossessionProvenEvent.php | 2 +- .../Stepup/Identity/Event/IdentityEvent.php | 2 +- .../Event/PhonePossessionProvenEvent.php | 2 +- .../Event/SecondFactorMigratedEvent.php | 4 +- .../Event/SecondFactorMigratedToEvent.php | 4 +- .../Event/SecondFactorVettedEvent.php | 4 +- ...torVettedWithoutTokenProofOfPossession.php | 4 +- .../Event/U2fDevicePossessionProvenEvent.php | 2 +- .../Event/YubikeyPossessionProvenEvent.php | 2 +- src/Surfnet/Stepup/Identity/Identity.php | 12 +- .../Value/RegistrationAuthorityRole.php | 2 +- .../Identity/Value/VettingTypeFactory.php | 5 +- src/Surfnet/Stepup/Projector/Projector.php | 2 +- .../Collection/InstitutionCollectionTest.php | 2 +- .../Service/AuthorizationService.php | 2 +- .../Service/CommandAuthorizationService.php | 8 +- .../InstitutionAuthorizationProjector.php | 2 +- ...stitutionConfigurationOptionsProjector.php | 4 +- .../Service/AllowedSecondFactorMap.php | 2 +- .../Controller/AbstractController.php | 2 +- .../Controller/CommandController.php | 2 +- .../VerifiedSecondFactorController.php | 2 +- .../Identity/Entity/AuditLogEntry.php | 2 +- .../Identity/Projector/AuditLogProjector.php | 8 +- .../Identity/Projector/RaListingProjector.php | 4 +- .../Projector/RaSecondFactorProjector.php | 6 +- .../Projector/SecondFactorProjector.php | 6 +- .../Repository/AuditLogRepository.php | 2 +- .../Repository/AuthorizationRepository.php | 2 +- .../Repository/RaCandidateRepository.php | 4 +- .../Repository/RaListingRepository.php | 6 +- .../Repository/RaSecondFactorRepository.php | 6 +- .../Repository/RecoveryTokenRepository.php | 4 +- .../Service/AbstractSearchService.php | 10 +- .../Identity/Service/AuditLogService.php | 1 + .../Identity/Service/IdentityService.php | 4 +- .../Identity/Service/ProfileService.php | 1 + .../Identity/Service/RaCandidateService.php | 1 + .../Identity/Service/RaListingService.php | 1 + .../Service/RaSecondFactorService.php | 1 + .../Identity/Service/RecoveryTokenService.php | 1 + .../Identity/Service/SecondFactorService.php | 4 +- .../Identity/Value/AuthorityRole.php | 6 +- .../Value/AuthorizedInstitutionCollection.php | 5 +- .../ApiBundle/Service/DeprovisionService.php | 2 +- .../CommandAuthorizationServiceTest.php | 4 - .../Projector/AuditLogProjectorTest.php | 2 +- .../Command/AbstractCommand.php | 4 +- ...InstitutionConfigurationCommandHandler.php | 2 +- .../CommandHandler/IdentityCommandHandler.php | 8 +- .../RegistrationAuthorityCommandHandler.php | 2 +- .../WhitelistCommandHandler.php | 4 +- .../Service/RecoveryTokenMailService.php | 2 +- .../Service/RegistrationMailService.php | 4 +- .../SecondFactorRevocationMailService.php | 2 +- .../WhitelistCommandHandlerTest.php | 4 +- .../SensitiveDataMessageStreamTest.php | 3 +- .../GatewayBundle/Entity/SecondFactor.php | 2 +- .../InstitutionConfigurationController.php | 4 +- .../RightToBeForgottenController.php | 2 +- .../Controller/WhitelistController.php | 2 +- .../Service/DBALConnectionHelper.php | 4 - .../Validator/ConfigurationValidationTest.php | 3 + ...nfigureInstitutionRequestValidatorTest.php | 4 + ...ReconfigureInstitutionRequestValidator.php | 4 +- .../BootstrapGsspSecondFactorCommand.php | 2 +- ...IdentityWithYubikeySecondFactorCommand.php | 2 +- ...ilVerifiedSecondFactorRemindersCommand.php | 2 +- .../Service/BootstrapCommandService.php | 4 +- ...erifiedSecondFactorReminderMailService.php | 2 +- 85 files changed, 214 insertions(+), 193 deletions(-) diff --git a/ci/qa/phpstan.neon b/ci/qa/phpstan.neon index baa9bb720..2a2553a08 100644 --- a/ci/qa/phpstan.neon +++ b/ci/qa/phpstan.neon @@ -5,6 +5,7 @@ includes: - ../../vendor/phpstan/phpstan-symfony/extension.neon parameters: + treatPhpDocTypesAsCertain: false level: 9 paths: - ../../src diff --git a/ci/qa/phpunit b/ci/qa/phpunit index e402c8609..c0b6ce970 100755 --- a/ci/qa/phpunit +++ b/ci/qa/phpunit @@ -7,5 +7,5 @@ cd $(dirname $0)/../../ # PHPUnit Bridge should always be used in Symfony applications. (https://symfony.com/doc/current/components/phpunit_bridge.html) # This will create a phpunit executable in /bin/ instead of /vendor/bin/ -./vendor/bin/phpunit --configuration=ci/qa/phpunit.xml --coverage-text --stop-on-error $1 +./vendor/bin/phpunit --configuration=ci/qa/phpunit.xml --coverage-text --stop-on-error $@ ./vendor/bin/phpunit --configuration=ci/qa/phpunit.xml --testsuite=database diff --git a/composer.json b/composer.json index d8d4f1403..fac2cc322 100644 --- a/composer.json +++ b/composer.json @@ -63,12 +63,12 @@ "moontoast/math": "^1.2.1", "overtrue/phplint": ">=9.5.6", "phpmd/phpmd": "^2.15", - "phpstan/phpstan": "^1.11.x-dev", - "phpstan/phpstan-doctrine": "^1.5.7", - "phpstan/phpstan-mockery": "^1.1.3", - "phpstan/phpstan-symfony": "^1.4.13", + "phpstan/phpstan": "^2.0", + "phpstan/phpstan-doctrine": "^2.0", + "phpstan/phpstan-mockery": "^2.0", + "phpstan/phpstan-symfony": "^2.0", "phpunit/phpunit": "^9.6.22", - "rector/rector": "^1.2", + "rector/rector": "^2.2", "sebastian/phpcpd": "^6.0.3", "squizlabs/php_codesniffer": "^3.11.3", "symfony/browser-kit": "6.4.*", @@ -101,7 +101,7 @@ "phpcs": "./ci/qa/phpcs", "phpcbf": "./ci/qa/phpcbf", "phpcpd": "./ci/qa/phpcpd", - "phpunit": "./ci/qa/phpunit --", + "phpunit": "./ci/qa/phpunit", "post-install-cmd": [ "Incenteev\\ParameterHandler\\ScriptHandler::buildParameters", diff --git a/composer.lock b/composer.lock index 2f5f0d01a..b19b19cf2 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "bb5ba44566fcc44a3010e5514730b65f", + "content-hash": "4e0f8ecb8ccf9ee7c028536843528a94", "packages": [ { "name": "beberlei/assert", @@ -10054,15 +10054,15 @@ }, { "name": "phpstan/phpstan", - "version": "1.12.x-dev", + "version": "2.1.32", "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/2770dcdf5078d0b0d53f94317e06affe88419aa8", - "reference": "2770dcdf5078d0b0d53f94317e06affe88419aa8", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/e126cad1e30a99b137b8ed75a85a676450ebb227", + "reference": "e126cad1e30a99b137b8ed75a85a676450ebb227", "shasum": "" }, "require": { - "php": "^7.2|^8.0" + "php": "^7.4|^8.0" }, "conflict": { "phpstan/phpstan-shim": "*" @@ -10103,25 +10103,25 @@ "type": "github" } ], - "time": "2025-09-30T10:16:31+00:00" + "time": "2025-11-11T15:18:17+00:00" }, { "name": "phpstan/phpstan-doctrine", - "version": "1.5.7", + "version": "2.0.11", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan-doctrine.git", - "reference": "231d3f795ed5ef54c98961fd3958868cbe091207" + "reference": "368ad1c713a6d95763890bc2292694a603ece7c8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan-doctrine/zipball/231d3f795ed5ef54c98961fd3958868cbe091207", - "reference": "231d3f795ed5ef54c98961fd3958868cbe091207", + "url": "https://api.github.com/repos/phpstan/phpstan-doctrine/zipball/368ad1c713a6d95763890bc2292694a603ece7c8", + "reference": "368ad1c713a6d95763890bc2292694a603ece7c8", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0", - "phpstan/phpstan": "^1.12.12" + "php": "^7.4 || ^8.0", + "phpstan/phpstan": "^2.1.13" }, "conflict": { "doctrine/collections": "<1.0", @@ -10134,23 +10134,24 @@ "cache/array-adapter": "^1.1", "composer/semver": "^3.3.2", "cweagans/composer-patches": "^1.7.3", - "doctrine/annotations": "^1.11 || ^2.0", + "doctrine/annotations": "^2.0", "doctrine/collections": "^1.6 || ^2.1", "doctrine/common": "^2.7 || ^3.0", - "doctrine/dbal": "^2.13.8 || ^3.3.3", + "doctrine/dbal": "^3.3.8", "doctrine/lexer": "^2.0 || ^3.0", - "doctrine/mongodb-odm": "^1.3 || ^2.4.3", + "doctrine/mongodb-odm": "^2.4.3", "doctrine/orm": "^2.16.0", "doctrine/persistence": "^2.2.1 || ^3.2", "gedmo/doctrine-extensions": "^3.8", "nesbot/carbon": "^2.49", - "nikic/php-parser": "^4.13.2", "php-parallel-lint/php-parallel-lint": "^1.2", - "phpstan/phpstan-phpunit": "^1.3.13", - "phpstan/phpstan-strict-rules": "^1.5.1", + "phpstan/phpstan-deprecation-rules": "^2.0.2", + "phpstan/phpstan-phpunit": "^2.0.8", + "phpstan/phpstan-strict-rules": "^2.0", "phpunit/phpunit": "^9.6.20", "ramsey/uuid": "^4.2", - "symfony/cache": "^5.4" + "symfony/cache": "^5.4", + "symfony/uid": "^5.4 || ^6.4 || ^7.3" }, "type": "phpstan-extension", "extra": { @@ -10173,35 +10174,34 @@ "description": "Doctrine extensions for PHPStan", "support": { "issues": "https://github.com/phpstan/phpstan-doctrine/issues", - "source": "https://github.com/phpstan/phpstan-doctrine/tree/1.5.7" + "source": "https://github.com/phpstan/phpstan-doctrine/tree/2.0.11" }, - "time": "2024-12-02T16:47:26+00:00" + "time": "2025-11-04T09:55:35+00:00" }, { "name": "phpstan/phpstan-mockery", - "version": "1.1.3", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan-mockery.git", - "reference": "98cac6e256b4ee60fdeb26a7dd81bb271b454e80" + "reference": "89a949d0ac64298e88b7c7fa00caee565c198394" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan-mockery/zipball/98cac6e256b4ee60fdeb26a7dd81bb271b454e80", - "reference": "98cac6e256b4ee60fdeb26a7dd81bb271b454e80", + "url": "https://api.github.com/repos/phpstan/phpstan-mockery/zipball/89a949d0ac64298e88b7c7fa00caee565c198394", + "reference": "89a949d0ac64298e88b7c7fa00caee565c198394", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0", - "phpstan/phpstan": "^1.12" + "php": "^7.4 || ^8.0", + "phpstan/phpstan": "^2.0" }, "require-dev": { "mockery/mockery": "^1.6.11", - "nikic/php-parser": "^4.13.0", "php-parallel-lint/php-parallel-lint": "^1.2", - "phpstan/phpstan-phpunit": "^1.4", - "phpstan/phpstan-strict-rules": "^1.6", - "phpunit/phpunit": "^9.5" + "phpstan/phpstan-phpunit": "^2.0", + "phpstan/phpstan-strict-rules": "^2.0", + "phpunit/phpunit": "^9.6" }, "type": "phpstan-extension", "extra": { @@ -10223,39 +10223,38 @@ "description": "PHPStan Mockery extension", "support": { "issues": "https://github.com/phpstan/phpstan-mockery/issues", - "source": "https://github.com/phpstan/phpstan-mockery/tree/1.1.3" + "source": "https://github.com/phpstan/phpstan-mockery/tree/2.0.0" }, - "time": "2024-09-11T15:47:29+00:00" + "time": "2024-10-14T03:18:12+00:00" }, { "name": "phpstan/phpstan-symfony", - "version": "1.4.16", + "version": "2.0.8", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan-symfony.git", - "reference": "18df9086a84fc28e9a231ea8e91d5aff1a0a3d6f" + "reference": "8820c22d785c235f69bb48da3d41e688bc8a1796" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan-symfony/zipball/18df9086a84fc28e9a231ea8e91d5aff1a0a3d6f", - "reference": "18df9086a84fc28e9a231ea8e91d5aff1a0a3d6f", + "url": "https://api.github.com/repos/phpstan/phpstan-symfony/zipball/8820c22d785c235f69bb48da3d41e688bc8a1796", + "reference": "8820c22d785c235f69bb48da3d41e688bc8a1796", "shasum": "" }, "require": { "ext-simplexml": "*", - "php": "^7.2 || ^8.0", - "phpstan/phpstan": "^1.12" + "php": "^7.4 || ^8.0", + "phpstan/phpstan": "^2.1.13" }, "conflict": { "symfony/framework-bundle": "<3.0" }, "require-dev": { - "nikic/php-parser": "^4.13.0", "php-parallel-lint/php-parallel-lint": "^1.2", - "phpstan/phpstan-phpunit": "^1.3.11", - "phpstan/phpstan-strict-rules": "^1.5.1", - "phpunit/phpunit": "^8.5.29 || ^9.5", - "psr/container": "1.0 || 1.1.1", + "phpstan/phpstan-phpunit": "^2.0", + "phpstan/phpstan-strict-rules": "^2.0", + "phpunit/phpunit": "^9.6", + "psr/container": "1.1.2", "symfony/config": "^5.4 || ^6.1", "symfony/console": "^5.4 || ^6.1", "symfony/dependency-injection": "^5.4 || ^6.1", @@ -10295,9 +10294,9 @@ "description": "Symfony Framework extensions and rules for PHPStan", "support": { "issues": "https://github.com/phpstan/phpstan-symfony/issues", - "source": "https://github.com/phpstan/phpstan-symfony/tree/1.4.16" + "source": "https://github.com/phpstan/phpstan-symfony/tree/2.0.8" }, - "time": "2025-09-07T06:55:28+00:00" + "time": "2025-09-07T06:55:50+00:00" }, { "name": "phpunit/php-code-coverage", @@ -10731,21 +10730,21 @@ }, { "name": "rector/rector", - "version": "1.2.10", + "version": "2.2.8", "source": { "type": "git", "url": "https://github.com/rectorphp/rector.git", - "reference": "40f9cf38c05296bd32f444121336a521a293fa61" + "reference": "303aa811649ccd1d32e51e62d5c85949d01b5f1b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/rectorphp/rector/zipball/40f9cf38c05296bd32f444121336a521a293fa61", - "reference": "40f9cf38c05296bd32f444121336a521a293fa61", + "url": "https://api.github.com/repos/rectorphp/rector/zipball/303aa811649ccd1d32e51e62d5c85949d01b5f1b", + "reference": "303aa811649ccd1d32e51e62d5c85949d01b5f1b", "shasum": "" }, "require": { - "php": "^7.2|^8.0", - "phpstan/phpstan": "^1.12.5" + "php": "^7.4|^8.0", + "phpstan/phpstan": "^2.1.32" }, "conflict": { "rector/rector-doctrine": "*", @@ -10770,6 +10769,7 @@ "MIT" ], "description": "Instant Upgrade and Automated Refactoring of any PHP code", + "homepage": "https://getrector.com/", "keywords": [ "automation", "dev", @@ -10778,7 +10778,7 @@ ], "support": { "issues": "https://github.com/rectorphp/rector/issues", - "source": "https://github.com/rectorphp/rector/tree/1.2.10" + "source": "https://github.com/rectorphp/rector/tree/2.2.8" }, "funding": [ { @@ -10786,7 +10786,7 @@ "type": "github" } ], - "time": "2024-11-08T13:59:10+00:00" + "time": "2025-11-12T18:38:00+00:00" }, { "name": "sebastian/cli-parser", @@ -12461,8 +12461,7 @@ "aliases": [], "minimum-stability": "stable", "stability-flags": { - "mockery/mockery": 20, - "phpstan/phpstan": 20 + "mockery/mockery": 20 }, "prefer-stable": false, "prefer-lowest": false, diff --git a/src/Surfnet/Stepup/Configuration/Event/NewInstitutionConfigurationCreatedEvent.php b/src/Surfnet/Stepup/Configuration/Event/NewInstitutionConfigurationCreatedEvent.php index fc5e21289..b6d79c90b 100644 --- a/src/Surfnet/Stepup/Configuration/Event/NewInstitutionConfigurationCreatedEvent.php +++ b/src/Surfnet/Stepup/Configuration/Event/NewInstitutionConfigurationCreatedEvent.php @@ -38,7 +38,7 @@ class NewInstitutionConfigurationCreatedEvent implements SerializableInterface { /** - * @SuppressWarnings(PHPMD.ExcessiveParameterList) + * @SuppressWarnings("PHPMD.ExcessiveParameterList") */ public function __construct( public InstitutionConfigurationId $institutionConfigurationId, diff --git a/src/Surfnet/Stepup/Configuration/InstitutionConfiguration.php b/src/Surfnet/Stepup/Configuration/InstitutionConfiguration.php index ea7171707..e814b7c90 100644 --- a/src/Surfnet/Stepup/Configuration/InstitutionConfiguration.php +++ b/src/Surfnet/Stepup/Configuration/InstitutionConfiguration.php @@ -70,11 +70,11 @@ * the aggregate but by playing the events onto the aggregate. * 2. If one of the configuration options should be nullable, take a look at the applyUseRaOptionChangedEvent doc block * - * @SuppressWarnings(PHPMD.CouplingBetweenObjects) Events and value objects - * @SuppressWarnings(PHPMD.TooManyMethods) AggregateRoot - * @SuppressWarnings(PHPMD.TooManyPublicMethods) AggregateRoot - * @SuppressWarnings(PHPMD.ExcessiveClassComplexity) AggregateRoot - * @SuppressWarnings(PHPMD.TooManyFields) AggregateRoot + * @SuppressWarnings("PHPMD.CouplingBetweenObjects") Events and value objects + * @SuppressWarnings("PHPMD.TooManyMethods") AggregateRoot + * @SuppressWarnings("PHPMD.TooManyPublicMethods") AggregateRoot + * @SuppressWarnings("PHPMD.ExcessiveClassComplexity") AggregateRoot + * @SuppressWarnings("PHPMD.TooManyFields") AggregateRoot */ class InstitutionConfiguration extends EventSourcedAggregateRoot implements InstitutionConfigurationInterface { @@ -669,7 +669,7 @@ protected function applyRaLocationRemovedEvent(RaLocationRemovedEvent $event): v } /** - * @SuppressWarnings(PHPMD.UnusedFormalParameter) + * @SuppressWarnings("PHPMD.UnusedFormalParameter") */ protected function applyInstitutionConfigurationRemovedEvent(InstitutionConfigurationRemovedEvent $event): void { diff --git a/src/Surfnet/Stepup/DateTime/DateTime.php b/src/Surfnet/Stepup/DateTime/DateTime.php index 4a038ec1b..137e093e2 100644 --- a/src/Surfnet/Stepup/DateTime/DateTime.php +++ b/src/Surfnet/Stepup/DateTime/DateTime.php @@ -25,8 +25,8 @@ use TypeError; /** - * @SuppressWarnings(PHPMD.TooManyMethods) - * @SuppressWarnings(PHPMD.TooManyPublicMethods) + * @SuppressWarnings("PHPMD.TooManyMethods") + * @SuppressWarnings("PHPMD.TooManyPublicMethods") */ class DateTime implements Stringable { diff --git a/src/Surfnet/Stepup/Identity/Api/Identity.php b/src/Surfnet/Stepup/Identity/Api/Identity.php index 8eae07146..19f3b36cb 100644 --- a/src/Surfnet/Stepup/Identity/Api/Identity.php +++ b/src/Surfnet/Stepup/Identity/Api/Identity.php @@ -125,7 +125,7 @@ public function verifyEmail(string $verificationNonce): void; * Attempts to vet another identity's verified second factor. * * - * @SuppressWarnings(PHPMD.ExcessiveParameterList) + * @SuppressWarnings("PHPMD.ExcessiveParameterList") */ public function vetSecondFactor( Identity $registrant, diff --git a/src/Surfnet/Stepup/Identity/Collection/InstitutionCollection.php b/src/Surfnet/Stepup/Identity/Collection/InstitutionCollection.php index 016765f9e..caee8f4b5 100644 --- a/src/Surfnet/Stepup/Identity/Collection/InstitutionCollection.php +++ b/src/Surfnet/Stepup/Identity/Collection/InstitutionCollection.php @@ -28,11 +28,15 @@ /** * @implements IteratorAggregate + * @phpstan-type InstitutionArray array */ final class InstitutionCollection implements IteratorAggregate, JsonSerializable, SerializableInterface { private array $elements = []; + /** + * @param list $institutions + */ public function __construct(array $institutions = []) { foreach ($institutions as $institution) { @@ -111,7 +115,7 @@ public function jsonSerialize(): array public static function deserialize(array $data): self { - $institutions = array_map(fn($institution): Institution => new Institution($institution), $data); + $institutions = array_values(array_map(static fn($institution): Institution => new Institution($institution), $data)); return new self($institutions); } @@ -121,6 +125,9 @@ public function serialize(): array return array_map(fn(Institution $institution): string => (string)$institution, $this->elements); } + /** + * @return Iterator + */ public function getIterator(): Iterator { return new ArrayIterator($this->elements); diff --git a/src/Surfnet/Stepup/Identity/Entity/RegistrationAuthority.php b/src/Surfnet/Stepup/Identity/Entity/RegistrationAuthority.php index aec69096a..84b905a77 100644 --- a/src/Surfnet/Stepup/Identity/Entity/RegistrationAuthority.php +++ b/src/Surfnet/Stepup/Identity/Entity/RegistrationAuthority.php @@ -25,7 +25,7 @@ use Surfnet\Stepup\Identity\Value\RegistrationAuthorityRole; /** - * @SuppressWarnings(PHPMD.UnusedPrivateField) + * @SuppressWarnings("PHPMD.UnusedPrivateField") */ final class RegistrationAuthority extends SimpleEventSourcedEntity { diff --git a/src/Surfnet/Stepup/Identity/Entity/UnverifiedSecondFactor.php b/src/Surfnet/Stepup/Identity/Entity/UnverifiedSecondFactor.php index 3c9569364..64ef4c682 100644 --- a/src/Surfnet/Stepup/Identity/Entity/UnverifiedSecondFactor.php +++ b/src/Surfnet/Stepup/Identity/Entity/UnverifiedSecondFactor.php @@ -36,7 +36,7 @@ * A second factor whose possession has been proven by the registrant. The registrant must verify his/her e-mail * address to verify this second factor. * - * @SuppressWarnings(PHPMD.CouplingBetweenObjects) + * @SuppressWarnings("PHPMD.CouplingBetweenObjects") */ class UnverifiedSecondFactor extends AbstractSecondFactor { diff --git a/src/Surfnet/Stepup/Identity/Entity/VerifiedSecondFactor.php b/src/Surfnet/Stepup/Identity/Entity/VerifiedSecondFactor.php index 478cc917b..b191f6858 100644 --- a/src/Surfnet/Stepup/Identity/Entity/VerifiedSecondFactor.php +++ b/src/Surfnet/Stepup/Identity/Entity/VerifiedSecondFactor.php @@ -39,8 +39,8 @@ * A second factor whose possession has been proven by the registrant and the registrant's e-mail address has been * verified. The registrant must visit a registration authority next. * - * @SuppressWarnings(PHPMD.UnusedPrivateFields) - * @SuppressWarnings(PHPMD.CouplingBetweenObjects) + * @SuppressWarnings("PHPMD.UnusedPrivateFields") + * @SuppressWarnings("PHPMD.CouplingBetweenObjects") */ class VerifiedSecondFactor extends AbstractSecondFactor { diff --git a/src/Surfnet/Stepup/Identity/Entity/VettedSecondFactor.php b/src/Surfnet/Stepup/Identity/Entity/VettedSecondFactor.php index 107a84adc..e25dbf40e 100644 --- a/src/Surfnet/Stepup/Identity/Entity/VettedSecondFactor.php +++ b/src/Surfnet/Stepup/Identity/Entity/VettedSecondFactor.php @@ -31,7 +31,7 @@ /** * A second factor whose possession and its Registrant's identity has been vetted by a Registration Authority. * - * @SuppressWarnings(PHPMD.UnusedPrivateFields) + * @SuppressWarnings("PHPMD.UnusedPrivateFields") */ class VettedSecondFactor extends AbstractSecondFactor { diff --git a/src/Surfnet/Stepup/Identity/Event/EmailVerifiedEvent.php b/src/Surfnet/Stepup/Identity/Event/EmailVerifiedEvent.php index 64d8f6dad..5ecaad9e4 100644 --- a/src/Surfnet/Stepup/Identity/Event/EmailVerifiedEvent.php +++ b/src/Surfnet/Stepup/Identity/Event/EmailVerifiedEvent.php @@ -65,7 +65,7 @@ class EmailVerifiedEvent extends IdentityEvent implements * @param Email $email * @param Locale $preferredLocale * - * @SuppressWarnings(PHPMD.ExcessiveParameterList) + * @SuppressWarnings("PHPMD.ExcessiveParameterList") */ public function __construct( IdentityId $identityId, diff --git a/src/Surfnet/Stepup/Identity/Event/GssfPossessionProvenAndVerifiedEvent.php b/src/Surfnet/Stepup/Identity/Event/GssfPossessionProvenAndVerifiedEvent.php index a516cd6a1..edf6d71fc 100644 --- a/src/Surfnet/Stepup/Identity/Event/GssfPossessionProvenAndVerifiedEvent.php +++ b/src/Surfnet/Stepup/Identity/Event/GssfPossessionProvenAndVerifiedEvent.php @@ -65,7 +65,7 @@ class GssfPossessionProvenAndVerifiedEvent extends IdentityEvent implements * @param DateTime $registrationRequestedAt * @param string $registrationCode * - * @SuppressWarnings(PHPMD.ExcessiveParameterList) + * @SuppressWarnings("PHPMD.ExcessiveParameterList") */ public function __construct( IdentityId $identityId, diff --git a/src/Surfnet/Stepup/Identity/Event/GssfPossessionProvenEvent.php b/src/Surfnet/Stepup/Identity/Event/GssfPossessionProvenEvent.php index 63d32f304..07569a331 100644 --- a/src/Surfnet/Stepup/Identity/Event/GssfPossessionProvenEvent.php +++ b/src/Surfnet/Stepup/Identity/Event/GssfPossessionProvenEvent.php @@ -50,7 +50,7 @@ class GssfPossessionProvenEvent extends IdentityEvent implements Forgettable, Ri ]; /** - * @SuppressWarnings(PHPMD.ExcessiveParameterList) + * @SuppressWarnings("PHPMD.ExcessiveParameterList") */ public function __construct( IdentityId $identityId, diff --git a/src/Surfnet/Stepup/Identity/Event/IdentityEvent.php b/src/Surfnet/Stepup/Identity/Event/IdentityEvent.php index 952dcd893..f62562a2f 100644 --- a/src/Surfnet/Stepup/Identity/Event/IdentityEvent.php +++ b/src/Surfnet/Stepup/Identity/Event/IdentityEvent.php @@ -23,7 +23,7 @@ use Surfnet\Stepup\Identity\Value\Institution; /** - * @SuppressWarnings(PHPMD.NumberOfChildren) + * @SuppressWarnings("PHPMD.NumberOfChildren") */ abstract class IdentityEvent implements AuditableEvent, SerializableInterface { diff --git a/src/Surfnet/Stepup/Identity/Event/PhonePossessionProvenEvent.php b/src/Surfnet/Stepup/Identity/Event/PhonePossessionProvenEvent.php index e2994aef2..b565fb5bd 100644 --- a/src/Surfnet/Stepup/Identity/Event/PhonePossessionProvenEvent.php +++ b/src/Surfnet/Stepup/Identity/Event/PhonePossessionProvenEvent.php @@ -60,7 +60,7 @@ class PhonePossessionProvenEvent extends IdentityEvent implements Forgettable, R * @param Email $email * @param Locale $preferredLocale * - * @SuppressWarnings(PHPMD.ExcessiveParameterList) + * @SuppressWarnings("PHPMD.ExcessiveParameterList") */ public function __construct( IdentityId $identityId, diff --git a/src/Surfnet/Stepup/Identity/Event/SecondFactorMigratedEvent.php b/src/Surfnet/Stepup/Identity/Event/SecondFactorMigratedEvent.php index eab9c6949..99890e469 100644 --- a/src/Surfnet/Stepup/Identity/Event/SecondFactorMigratedEvent.php +++ b/src/Surfnet/Stepup/Identity/Event/SecondFactorMigratedEvent.php @@ -38,7 +38,7 @@ use function array_key_exists; /** - * @SuppressWarnings(PHPMD.CouplingBetweenObjects) + * @SuppressWarnings("PHPMD.CouplingBetweenObjects") */ class SecondFactorMigratedEvent extends IdentityEvent implements Forgettable, RightToObtainDataInterface { @@ -60,7 +60,7 @@ class SecondFactorMigratedEvent extends IdentityEvent implements Forgettable, Ri ]; /** - * @SuppressWarnings(PHPMD.ExcessiveParameterList) + * @SuppressWarnings("PHPMD.ExcessiveParameterList") */ public function __construct( IdentityId $identityId, diff --git a/src/Surfnet/Stepup/Identity/Event/SecondFactorMigratedToEvent.php b/src/Surfnet/Stepup/Identity/Event/SecondFactorMigratedToEvent.php index aaf1caa3c..b8433ba9a 100644 --- a/src/Surfnet/Stepup/Identity/Event/SecondFactorMigratedToEvent.php +++ b/src/Surfnet/Stepup/Identity/Event/SecondFactorMigratedToEvent.php @@ -30,7 +30,7 @@ use Surfnet\StepupMiddleware\CommandHandlingBundle\SensitiveData\SensitiveData; /** - * @SuppressWarnings(PHPMD.CouplingBetweenObjects) + * @SuppressWarnings("PHPMD.CouplingBetweenObjects") */ class SecondFactorMigratedToEvent extends IdentityEvent implements Forgettable, RightToObtainDataInterface { @@ -48,7 +48,7 @@ class SecondFactorMigratedToEvent extends IdentityEvent implements Forgettable, ]; /** - * @SuppressWarnings(PHPMD.ExcessiveParameterList) + * @SuppressWarnings("PHPMD.ExcessiveParameterList") */ public function __construct( IdentityId $identityId, diff --git a/src/Surfnet/Stepup/Identity/Event/SecondFactorVettedEvent.php b/src/Surfnet/Stepup/Identity/Event/SecondFactorVettedEvent.php index c5e0fd903..118162723 100644 --- a/src/Surfnet/Stepup/Identity/Event/SecondFactorVettedEvent.php +++ b/src/Surfnet/Stepup/Identity/Event/SecondFactorVettedEvent.php @@ -36,7 +36,7 @@ use Surfnet\StepupMiddleware\CommandHandlingBundle\SensitiveData\SensitiveData; /** - * @SuppressWarnings(PHPMD.CouplingBetweenObjects) + * @SuppressWarnings("PHPMD.CouplingBetweenObjects") */ class SecondFactorVettedEvent extends IdentityEvent implements Forgettable, RightToObtainDataInterface { @@ -57,7 +57,7 @@ class SecondFactorVettedEvent extends IdentityEvent implements Forgettable, Righ ]; /** - * @SuppressWarnings(PHPMD.ExcessiveParameterList) + * @SuppressWarnings("PHPMD.ExcessiveParameterList") */ public function __construct( IdentityId $identityId, diff --git a/src/Surfnet/Stepup/Identity/Event/SecondFactorVettedWithoutTokenProofOfPossession.php b/src/Surfnet/Stepup/Identity/Event/SecondFactorVettedWithoutTokenProofOfPossession.php index 7ad05ede4..21fd76bc5 100644 --- a/src/Surfnet/Stepup/Identity/Event/SecondFactorVettedWithoutTokenProofOfPossession.php +++ b/src/Surfnet/Stepup/Identity/Event/SecondFactorVettedWithoutTokenProofOfPossession.php @@ -37,7 +37,7 @@ use Surfnet\StepupMiddleware\CommandHandlingBundle\SensitiveData\SensitiveData; /** - * @SuppressWarnings(PHPMD.CouplingBetweenObjects) + * @SuppressWarnings("PHPMD.CouplingBetweenObjects") */ class SecondFactorVettedWithoutTokenProofOfPossession extends IdentityEvent implements Forgettable, @@ -65,7 +65,7 @@ class SecondFactorVettedWithoutTokenProofOfPossession extends IdentityEvent impl public DocumentNumber $documentNumber; /** - * @SuppressWarnings(PHPMD.ExcessiveParameterList) + * @SuppressWarnings("PHPMD.ExcessiveParameterList") */ public function __construct( IdentityId $identityId, diff --git a/src/Surfnet/Stepup/Identity/Event/U2fDevicePossessionProvenEvent.php b/src/Surfnet/Stepup/Identity/Event/U2fDevicePossessionProvenEvent.php index 6d6327061..fd5d7f206 100644 --- a/src/Surfnet/Stepup/Identity/Event/U2fDevicePossessionProvenEvent.php +++ b/src/Surfnet/Stepup/Identity/Event/U2fDevicePossessionProvenEvent.php @@ -65,7 +65,7 @@ class U2fDevicePossessionProvenEvent extends IdentityEvent implements Forgettabl * @param Email $email * @param Locale $preferredLocale * - * @SuppressWarnings(PHPMD.ExcessiveParameterList) + * @SuppressWarnings("PHPMD.ExcessiveParameterList") */ public function __construct( IdentityId $identityId, diff --git a/src/Surfnet/Stepup/Identity/Event/YubikeyPossessionProvenEvent.php b/src/Surfnet/Stepup/Identity/Event/YubikeyPossessionProvenEvent.php index 31dc8a188..a559e98c2 100644 --- a/src/Surfnet/Stepup/Identity/Event/YubikeyPossessionProvenEvent.php +++ b/src/Surfnet/Stepup/Identity/Event/YubikeyPossessionProvenEvent.php @@ -55,7 +55,7 @@ class YubikeyPossessionProvenEvent extends IdentityEvent implements Forgettable, public DateTime $emailVerificationRequestedAt; /** - * @SuppressWarnings(PHPMD.ExcessiveParameterList) + * @SuppressWarnings("PHPMD.ExcessiveParameterList") */ public function __construct( IdentityId $identityId, diff --git a/src/Surfnet/Stepup/Identity/Identity.php b/src/Surfnet/Stepup/Identity/Identity.php index 023e9a51c..4aed033b3 100644 --- a/src/Surfnet/Stepup/Identity/Identity.php +++ b/src/Surfnet/Stepup/Identity/Identity.php @@ -111,11 +111,11 @@ use Surfnet\StepupBundle\Value\SecondFactorType; /** - * @SuppressWarnings(PHPMD.CouplingBetweenObjects) - * @SuppressWarnings(PHPMD.TooManyMethods) - * @SuppressWarnings(PHPMD.TooManyPublicMethods) - * @SuppressWarnings(PHPMD.ExcessiveClassComplexity) - * @SuppressWarnings(PHPMD.ExcessiveClassLength) + * @SuppressWarnings("PHPMD.CouplingBetweenObjects") + * @SuppressWarnings("PHPMD.TooManyMethods") + * @SuppressWarnings("PHPMD.TooManyPublicMethods") + * @SuppressWarnings("PHPMD.ExcessiveClassComplexity") + * @SuppressWarnings("PHPMD.ExcessiveClassLength") */ class Identity extends EventSourcedAggregateRoot implements IdentityApi { @@ -489,7 +489,7 @@ public function verifyEmail(string $verificationNonce): void } /** - * @SuppressWarnings(PHPMD.ExcessiveParameterList) + * @SuppressWarnings("PHPMD.ExcessiveParameterList") */ public function vetSecondFactor( IdentityApi $registrant, diff --git a/src/Surfnet/Stepup/Identity/Value/RegistrationAuthorityRole.php b/src/Surfnet/Stepup/Identity/Value/RegistrationAuthorityRole.php index 15e2872ed..5c89d3be3 100644 --- a/src/Surfnet/Stepup/Identity/Value/RegistrationAuthorityRole.php +++ b/src/Surfnet/Stepup/Identity/Value/RegistrationAuthorityRole.php @@ -40,7 +40,7 @@ public function __construct(private int $role) } /** - * @SuppressWarnings(PHPMD.ShortMethodName) no use in lengthening a domain term for the sake of shutting up PHPMD + * @SuppressWarnings("PHPMD.ShortMethodName") no use in lengthening a domain term for the sake of shutting up PHPMD */ public static function ra(): self { diff --git a/src/Surfnet/Stepup/Identity/Value/VettingTypeFactory.php b/src/Surfnet/Stepup/Identity/Value/VettingTypeFactory.php index 5b33c2843..1db7aea8d 100644 --- a/src/Surfnet/Stepup/Identity/Value/VettingTypeFactory.php +++ b/src/Surfnet/Stepup/Identity/Value/VettingTypeFactory.php @@ -37,10 +37,7 @@ public static function fromData(array $data): VettingType } } // BC fix for older events without a vetting type, they default back to ON_PREMISE. - if ($vettingType instanceof UnknownVettingType && - isset($data['document_number']) && - $data['document_number'] !== null - ) { + if ($vettingType instanceof UnknownVettingType && isset($data['document_number'])) { $vettingType = new OnPremiseVettingType(new DocumentNumber($data['document_number'])); } diff --git a/src/Surfnet/Stepup/Projector/Projector.php b/src/Surfnet/Stepup/Projector/Projector.php index 96d5efa63..c83aae2f6 100644 --- a/src/Surfnet/Stepup/Projector/Projector.php +++ b/src/Surfnet/Stepup/Projector/Projector.php @@ -23,7 +23,7 @@ use Surfnet\Stepup\Identity\Event\IdentityForgottenEvent; /** - * @SuppressWarnings(PHPMD.NumberOfChildren) we simply have a lot of projectors + * @SuppressWarnings("PHPMD.NumberOfChildren") we simply have a lot of projectors */ abstract class Projector extends BroadwayProjector implements EventListener { diff --git a/src/Surfnet/Stepup/Tests/Identity/Collection/InstitutionCollectionTest.php b/src/Surfnet/Stepup/Tests/Identity/Collection/InstitutionCollectionTest.php index fbd4f5e00..21cd80b56 100644 --- a/src/Surfnet/Stepup/Tests/Identity/Collection/InstitutionCollectionTest.php +++ b/src/Surfnet/Stepup/Tests/Identity/Collection/InstitutionCollectionTest.php @@ -170,7 +170,7 @@ public function multiple_institutions_can_be_removed(): void } /** - * @return array + * @return list */ private function getInstitutions(): array { diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Authorization/Service/AuthorizationService.php b/src/Surfnet/StepupMiddleware/ApiBundle/Authorization/Service/AuthorizationService.php index d4942e047..19f1a736e 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Authorization/Service/AuthorizationService.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Authorization/Service/AuthorizationService.php @@ -35,7 +35,7 @@ * Perform authorization checks * For example, test if an identity is allowed to register self-asserted tokens. * - * @SuppressWarnings(PHPMD.CyclomaticComplexity) + * @SuppressWarnings("PHPMD.CyclomaticComplexity") */ class AuthorizationService { diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Authorization/Service/CommandAuthorizationService.php b/src/Surfnet/StepupMiddleware/ApiBundle/Authorization/Service/CommandAuthorizationService.php index 86f2f087f..acc85a8f3 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Authorization/Service/CommandAuthorizationService.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Authorization/Service/CommandAuthorizationService.php @@ -52,7 +52,7 @@ * 1. A SRAA user may always execute the command * 2. Certain commands are actionable with a RA role. When the identity is RAA, the identity is also allowed to run * the command. - * @SuppressWarnings(PHPMD.CouplingBetweenObjects) + * @SuppressWarnings("PHPMD.CouplingBetweenObjects") */ class CommandAuthorizationService { @@ -133,9 +133,9 @@ public function maySelfServiceCommandBeExecutedOnBehalfOf(Command $command, Iden } /** - * @SuppressWarnings(PHPMD.CyclomaticComplexity) - To keep the method readable, increased CC is allowed - * @SuppressWarnings(PHPMD.ExcessiveMethodLength) - * @SuppressWarnings(PHPMD.NPathComplexity) + * @SuppressWarnings("PHPMD.CyclomaticComplexity") - To keep the method readable, increased CC is allowed + * @SuppressWarnings("PHPMD.ExcessiveMethodLength") + * @SuppressWarnings("PHPMD.NPathComplexity") */ public function mayRaCommandBeExecutedOnBehalfOf( Command $command, diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Configuration/Projector/InstitutionAuthorizationProjector.php b/src/Surfnet/StepupMiddleware/ApiBundle/Configuration/Projector/InstitutionAuthorizationProjector.php index b439ebcc9..5071755f8 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Configuration/Projector/InstitutionAuthorizationProjector.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Configuration/Projector/InstitutionAuthorizationProjector.php @@ -29,7 +29,7 @@ use Surfnet\StepupMiddleware\ApiBundle\Configuration\Repository\InstitutionConfigurationOptionsRepository; /** - * @SuppressWarnings(PHPMD.CouplingBetweenObjects) + * @SuppressWarnings("PHPMD.CouplingBetweenObjects") */ final class InstitutionAuthorizationProjector extends Projector { diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Configuration/Projector/InstitutionConfigurationOptionsProjector.php b/src/Surfnet/StepupMiddleware/ApiBundle/Configuration/Projector/InstitutionConfigurationOptionsProjector.php index 3206341e2..8105525c8 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Configuration/Projector/InstitutionConfigurationOptionsProjector.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Configuration/Projector/InstitutionConfigurationOptionsProjector.php @@ -35,8 +35,8 @@ use Surfnet\StepupMiddleware\ApiBundle\Configuration\Repository\InstitutionConfigurationOptionsRepository; /** - * @SuppressWarnings(PHPMD.CouplingBetweenObjects) - * @SuppressWarnings(PHPMD.TooManyPublicMethods) + * @SuppressWarnings("PHPMD.CouplingBetweenObjects") + * @SuppressWarnings("PHPMD.TooManyPublicMethods") */ final class InstitutionConfigurationOptionsProjector extends Projector { diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Configuration/Service/AllowedSecondFactorMap.php b/src/Surfnet/StepupMiddleware/ApiBundle/Configuration/Service/AllowedSecondFactorMap.php index 8aeac28bc..2ec9e44fc 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Configuration/Service/AllowedSecondFactorMap.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Configuration/Service/AllowedSecondFactorMap.php @@ -58,7 +58,7 @@ public function getAllowedSecondFactorListFor(Institution $institution): Allowed } /** - * @SuppressWarnings(PHPMD.UnusedPrivateMethod) + * @SuppressWarnings("PHPMD.UnusedPrivateMethod") */ private function add(AllowedSecondFactor $allowedSecondFactor): void { diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Controller/AbstractController.php b/src/Surfnet/StepupMiddleware/ApiBundle/Controller/AbstractController.php index 05a29358a..3184546b0 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Controller/AbstractController.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Controller/AbstractController.php @@ -21,7 +21,7 @@ use Symfony\Bundle\FrameworkBundle\Controller\AbstractController as SymfonyAbstractController; /** - * @SuppressWarnings(PHPMD.NumberOfChildren) we simply have a lot of commands + * @SuppressWarnings("PHPMD.NumberOfChildren") we simply have a lot of commands */ class AbstractController extends SymfonyAbstractController { diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Controller/CommandController.php b/src/Surfnet/StepupMiddleware/ApiBundle/Controller/CommandController.php index 1ccc0706a..c5e10c4b3 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Controller/CommandController.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Controller/CommandController.php @@ -39,7 +39,7 @@ use function sprintf; /** - * @SuppressWarnings(PHPMD.CouplingBetweenObjects) + * @SuppressWarnings("PHPMD.CouplingBetweenObjects") */ class CommandController extends AbstractController { diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Controller/VerifiedSecondFactorController.php b/src/Surfnet/StepupMiddleware/ApiBundle/Controller/VerifiedSecondFactorController.php index 6fe3b9b2e..53a4ebf4e 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Controller/VerifiedSecondFactorController.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Controller/VerifiedSecondFactorController.php @@ -35,7 +35,7 @@ use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; /** - * @SuppressWarnings(PHPMD.CouplingBetweenObjects) + * @SuppressWarnings("PHPMD.CouplingBetweenObjects") */ class VerifiedSecondFactorController extends AbstractController { diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Entity/AuditLogEntry.php b/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Entity/AuditLogEntry.php index e057891d4..9cc04a070 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Entity/AuditLogEntry.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Entity/AuditLogEntry.php @@ -62,7 +62,7 @@ use Surfnet\StepupMiddleware\ApiBundle\Identity\Repository\AuditLogRepository; /** - * @SuppressWarnings(PHPMD.UnusedPrivateField) + * @SuppressWarnings("PHPMD.UnusedPrivateField") */ #[ORM\Table(name: 'audit_log')] #[ORM\Index(name: 'idx_auditlog_actorid', columns: ['actor_id'])] diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Projector/AuditLogProjector.php b/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Projector/AuditLogProjector.php index 19e3d278a..15da689e2 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Projector/AuditLogProjector.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Projector/AuditLogProjector.php @@ -40,7 +40,7 @@ use Surfnet\StepupMiddleware\ApiBundle\Identity\Repository\IdentityRepository; /** - * @SuppressWarnings(PHPMD.CouplingBetweenObjects) + * @SuppressWarnings("PHPMD.CouplingBetweenObjects") */ class AuditLogProjector extends Projector { @@ -70,8 +70,8 @@ public function handle(DomainMessage $domainMessage): void } /** - * @SuppressWarnings(PHPMD.CyclomaticComplexity) - * @SuppressWarnings(PHPMD.NPathComplexity) + * @SuppressWarnings("PHPMD.CyclomaticComplexity") + * @SuppressWarnings("PHPMD.NPathComplexity") */ private function applyAuditableEvent(AuditableEvent $event, DomainMessage $domainMessage): void { @@ -162,7 +162,7 @@ protected function applyIdentityForgottenEvent(IdentityForgottenEvent $event): v private function augmentActorCommonName(AuditLogEntry $entry, Metadata $auditLogMetadata): void { - if (property_exists($auditLogMetadata, 'vettingType') && $auditLogMetadata->vettingType instanceof VettingType) { + if ($auditLogMetadata->vettingType instanceof VettingType) { $entry->actorCommonName = new CommonName( $entry->actorCommonName->getCommonName() . $auditLogMetadata->vettingType->auditLog() ); diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Projector/RaListingProjector.php b/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Projector/RaListingProjector.php index 287673e21..7edf7b9c5 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Projector/RaListingProjector.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Projector/RaListingProjector.php @@ -39,8 +39,8 @@ use Surfnet\StepupMiddleware\ApiBundle\Identity\Value\AuthorityRole; /** - * @SuppressWarnings(PHPMD.CouplingBetweenObjects) - Events, events, events! - * @SuppressWarnings(PHPMD.TooManyPublicMethods) + * @SuppressWarnings("PHPMD.CouplingBetweenObjects") - Events, events, events! + * @SuppressWarnings("PHPMD.TooManyPublicMethods") */ class RaListingProjector extends Projector { diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Projector/RaSecondFactorProjector.php b/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Projector/RaSecondFactorProjector.php index c25c8f6ea..68a8e17c2 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Projector/RaSecondFactorProjector.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Projector/RaSecondFactorProjector.php @@ -52,9 +52,9 @@ use Surfnet\StepupMiddleware\ApiBundle\Identity\Value\SecondFactorStatus; /** - * @SuppressWarnings(PHPMD.TooManyMethods) - * @SuppressWarnings(PHPMD.CouplingBetweenObjects) - * @SuppressWarnings(PHPMD.TooManyPublicMethods) + * @SuppressWarnings("PHPMD.TooManyMethods") + * @SuppressWarnings("PHPMD.CouplingBetweenObjects") + * @SuppressWarnings("PHPMD.TooManyPublicMethods") */ class RaSecondFactorProjector extends Projector { diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Projector/SecondFactorProjector.php b/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Projector/SecondFactorProjector.php index c9307d862..e7fc180d5 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Projector/SecondFactorProjector.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Projector/SecondFactorProjector.php @@ -47,9 +47,9 @@ use Surfnet\StepupMiddleware\ApiBundle\Identity\Repository\VettedSecondFactorRepository; /** - * @SuppressWarnings(PHPMD.TooManyMethods) - * @SuppressWarnings(PHPMD.CouplingBetweenObjects) - * @SuppressWarnings(PHPMD.TooManyPublicMethods) + * @SuppressWarnings("PHPMD.TooManyMethods") + * @SuppressWarnings("PHPMD.CouplingBetweenObjects") + * @SuppressWarnings("PHPMD.TooManyPublicMethods") */ class SecondFactorProjector extends Projector { diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Repository/AuditLogRepository.php b/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Repository/AuditLogRepository.php index 0642c7947..2315844fb 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Repository/AuditLogRepository.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Repository/AuditLogRepository.php @@ -107,7 +107,7 @@ public function __construct(ManagerRegistry $registry) ]; /** - * @SuppressWarnings(PHPMD.CyclomaticComplexity) - The filtering switch triggers the CyclomaticComplexity, it does + * @SuppressWarnings("PHPMD.CyclomaticComplexity") - The filtering switch triggers the CyclomaticComplexity, it does * not actually make the class complex or hard to maintain. */ public function createSecondFactorSearchQuery(SecondFactorAuditLogQuery $query): Query diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Repository/AuthorizationRepository.php b/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Repository/AuthorizationRepository.php index c141be035..8e6fb8658 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Repository/AuthorizationRepository.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Repository/AuthorizationRepository.php @@ -36,7 +36,7 @@ use Surfnet\StepupMiddleware\ApiBundle\Identity\Value\AuthorityRole; /** - * @SuppressWarnings(PHPMD.CouplingBetweenObjects) + * @SuppressWarnings("PHPMD.CouplingBetweenObjects") * @extends ServiceEntityRepository */ class AuthorizationRepository extends ServiceEntityRepository diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Repository/RaCandidateRepository.php b/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Repository/RaCandidateRepository.php index 47576a71b..16fb16bf2 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Repository/RaCandidateRepository.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Repository/RaCandidateRepository.php @@ -33,8 +33,8 @@ use Surfnet\StepupMiddleware\ApiBundle\Identity\Query\RaCandidateQuery; /** - * @SuppressWarnings(PHPMD.CouplingBetweenObjects) - * @SuppressWarnings(PHPMD.TooManyPublicMethods) + * @SuppressWarnings("PHPMD.CouplingBetweenObjects") + * @SuppressWarnings("PHPMD.TooManyPublicMethods") * @extends ServiceEntityRepository */ class RaCandidateRepository extends ServiceEntityRepository diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Repository/RaListingRepository.php b/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Repository/RaListingRepository.php index 940762332..b5947fe09 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Repository/RaListingRepository.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Repository/RaListingRepository.php @@ -31,7 +31,7 @@ use Surfnet\StepupMiddleware\ApiBundle\Identity\Query\RaListingQuery; /** - * @SuppressWarnings(PHPMD.TooManyPublicMethods) + * @SuppressWarnings("PHPMD.TooManyPublicMethods") * @extends ServiceEntityRepository */ class RaListingRepository extends ServiceEntityRepository @@ -100,8 +100,8 @@ public function save(RaListing $raListingEntry): void } /** - * @SuppressWarnings(PHPMD.CyclomaticComplexity) The amount of if statements do not necessarily make the method - * @SuppressWarnings(PHPMD.NPathComplexity) below complex or hard to maintain. + * @SuppressWarnings("PHPMD.CyclomaticComplexity") The amount of if statements do not necessarily make the method + * @SuppressWarnings("PHPMD.NPathComplexity") below complex or hard to maintain. */ public function createSearchQuery(RaListingQuery $query): Query { diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Repository/RaSecondFactorRepository.php b/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Repository/RaSecondFactorRepository.php index 811c0a885..e1dda68ca 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Repository/RaSecondFactorRepository.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Repository/RaSecondFactorRepository.php @@ -34,7 +34,7 @@ use Surfnet\StepupMiddleware\ApiBundle\Identity\Value\SecondFactorStatus; /** - * @SuppressWarnings(PHPMD.CouplingBetweenObjects) + * @SuppressWarnings("PHPMD.CouplingBetweenObjects") * @extends ServiceEntityRepository */ class RaSecondFactorRepository extends ServiceEntityRepository @@ -72,9 +72,9 @@ public function findByInstitution(string $institution): array } /** - * @SuppressWarnings(PHPMD.CyclomaticComplexity) The amount of if statements do not necessarily make the method + * @SuppressWarnings("PHPMD.CyclomaticComplexity") The amount of if statements do not necessarily make the method * below complex or hard to maintain. - * @SuppressWarnings(PHPMD.NPathComplexity) + * @SuppressWarnings("PHPMD.NPathComplexity") */ public function createSearchQuery(RaSecondFactorQuery $query): Query { diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Repository/RecoveryTokenRepository.php b/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Repository/RecoveryTokenRepository.php index e1b7331d7..d651c4cf1 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Repository/RecoveryTokenRepository.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Repository/RecoveryTokenRepository.php @@ -57,8 +57,8 @@ public function remove(RecoveryToken $recoveryToken): void } /** - * @SuppressWarnings(PHPMD.CyclomaticComplexity) - * @SuppressWarnings(PHPMD.NPathComplexity) + * @SuppressWarnings("PHPMD.CyclomaticComplexity") + * @SuppressWarnings("PHPMD.NPathComplexity") */ public function createSearchQuery(RecoveryTokenQuery $query): Query { diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Service/AbstractSearchService.php b/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Service/AbstractSearchService.php index eea808ed4..cb1e69ca1 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Service/AbstractSearchService.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Service/AbstractSearchService.php @@ -25,8 +25,15 @@ use Surfnet\StepupMiddleware\ApiBundle\Exception\InvalidArgumentException; use Surfnet\StepupMiddleware\ApiBundle\Identity\Query\AbstractQuery; -class AbstractSearchService +/** + * @template T of object + */ +abstract class AbstractSearchService { + /** + * @param Query|QueryBuilder $doctrineQuery + * @return Pagerfanta + */ protected function createPaginatorFrom( QueryBuilder|Query $doctrineQuery, AbstractQuery $query, @@ -55,6 +62,7 @@ protected function createPaginatorFrom( } /** + * @param Query> $doctrineQuery * @return array> */ protected function getFilteredQueryOptions(Query $doctrineQuery): array diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Service/AuditLogService.php b/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Service/AuditLogService.php index e520657c1..bc02cf9f2 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Service/AuditLogService.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Service/AuditLogService.php @@ -23,6 +23,7 @@ use Surfnet\StepupMiddleware\ApiBundle\Identity\Query\SecondFactorAuditLogQuery; use Surfnet\StepupMiddleware\ApiBundle\Identity\Repository\AuditLogRepository; +/** @extends AbstractSearchService */ class AuditLogService extends AbstractSearchService { public function __construct(private readonly AuditLogRepository $repository) diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Service/IdentityService.php b/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Service/IdentityService.php index 82d01a89a..5f6e52e96 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Service/IdentityService.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Service/IdentityService.php @@ -34,8 +34,8 @@ use Surfnet\StepupMiddleware\ApiBundle\Identity\Value\RegistrationAuthorityCredentials; /** - * @SuppressWarnings(PHPMD.CouplingBetweenObjects) - */ + * @SuppressWarnings("PHPMD.CouplingBetweenObjects") + * @extends AbstractSearchService */ class IdentityService extends AbstractSearchService { public function __construct( diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Service/ProfileService.php b/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Service/ProfileService.php index 570fb68b5..dee229e4c 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Service/ProfileService.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Service/ProfileService.php @@ -25,6 +25,7 @@ use Surfnet\StepupMiddleware\ApiBundle\Identity\Value\AuthorizedInstitutionCollection; use Surfnet\StepupMiddleware\ApiBundle\Identity\Value\Profile; +/** @extends AbstractSearchService */ class ProfileService extends AbstractSearchService { public function __construct( diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Service/RaCandidateService.php b/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Service/RaCandidateService.php index 3fdd6d16f..eacdded7f 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Service/RaCandidateService.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Service/RaCandidateService.php @@ -25,6 +25,7 @@ use Surfnet\StepupMiddleware\ApiBundle\Identity\Query\RaCandidateQuery; use Surfnet\StepupMiddleware\ApiBundle\Identity\Repository\RaCandidateRepository; +/** @extends AbstractSearchService */ class RaCandidateService extends AbstractSearchService { public function __construct(private readonly RaCandidateRepository $raCandidateRepository) diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Service/RaListingService.php b/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Service/RaListingService.php index 22f0f58a5..62643fc07 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Service/RaListingService.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Service/RaListingService.php @@ -27,6 +27,7 @@ use Surfnet\StepupMiddleware\ApiBundle\Identity\Repository\RaListingRepository; use Surfnet\StepupMiddleware\ApiBundle\Identity\Value\RegistrationAuthorityCredentials; +/** @extends AbstractSearchService */ class RaListingService extends AbstractSearchService { public function __construct(private readonly RaListingRepository $raListingRepository) diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Service/RaSecondFactorService.php b/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Service/RaSecondFactorService.php index 1de65395c..7bf3cc2bd 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Service/RaSecondFactorService.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Service/RaSecondFactorService.php @@ -23,6 +23,7 @@ use Surfnet\StepupMiddleware\ApiBundle\Identity\Query\RaSecondFactorQuery; use Surfnet\StepupMiddleware\ApiBundle\Identity\Repository\RaSecondFactorRepository; +/** @extends AbstractSearchService */ class RaSecondFactorService extends AbstractSearchService { public function __construct(private readonly RaSecondFactorRepository $repository) diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Service/RecoveryTokenService.php b/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Service/RecoveryTokenService.php index 6ddfdeaea..d2599496f 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Service/RecoveryTokenService.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Service/RecoveryTokenService.php @@ -27,6 +27,7 @@ use Surfnet\StepupMiddleware\ApiBundle\Identity\Repository\RecoveryTokenRepository; use Surfnet\StepupMiddleware\ApiBundle\Identity\Value\RecoveryTokenStatus; +/** @extends AbstractSearchService */ class RecoveryTokenService extends AbstractSearchService { public function __construct(private readonly RecoveryTokenRepository $recoveryTokenRepository) diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Service/SecondFactorService.php b/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Service/SecondFactorService.php index 8ae2f6ae3..91c6947b2 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Service/SecondFactorService.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Service/SecondFactorService.php @@ -33,8 +33,10 @@ use Surfnet\StepupMiddleware\ApiBundle\Identity\Repository\VettedSecondFactorRepository; /** - * @SuppressWarnings(PHPMD.CouplingBetweenObjects) Coupling to Entities and ValueObjects in parameters cause the high + * @SuppressWarnings("PHPMD.CouplingBetweenObjects") Coupling to Entities and ValueObjects in parameters cause the high * coupling warning. Decoupling them (replacing VOs with primitives) bring a degradation in type strictness. + * + * @extends AbstractSearchService */ class SecondFactorService extends AbstractSearchService { diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Value/AuthorityRole.php b/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Value/AuthorityRole.php index c707a387b..99198a30a 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Value/AuthorityRole.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Value/AuthorityRole.php @@ -48,8 +48,8 @@ public function __construct(string $role) } /** - * @SuppressWarnings(PHPMD.CamelCaseMethodName) this is the actual used notation - * @SuppressWarnings(PHPMD.ShortMethodName) this is the actual term + * @SuppressWarnings("PHPMD.CamelCaseMethodName") this is the actual used notation + * @SuppressWarnings("PHPMD.ShortMethodName") this is the actual term * * @return AuthorityRole */ @@ -59,7 +59,7 @@ public static function ra(): self } /** - * @SuppressWarnings(PHPMD.CamelCaseMethodName) this is the actual used notation + * @SuppressWarnings("PHPMD.CamelCaseMethodName") this is the actual used notation * * @return AuthorityRole */ diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Value/AuthorizedInstitutionCollection.php b/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Value/AuthorizedInstitutionCollection.php index eef708ae3..0483c444f 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Value/AuthorizedInstitutionCollection.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Value/AuthorizedInstitutionCollection.php @@ -19,6 +19,7 @@ namespace Surfnet\StepupMiddleware\ApiBundle\Identity\Value; use Surfnet\Stepup\Identity\Collection\InstitutionCollection; +use Surfnet\Stepup\Identity\Value\Institution; class AuthorizedInstitutionCollection { @@ -42,12 +43,12 @@ public static function from( ): self { $collection = new self(); - /** @var string $institution */ + /** @var Institution $institution */ foreach ($raInstitutions as $institution) { $collection->authorizations[(string)$institution][] = AuthorityRole::ROLE_RA; } if ($raaInstitutions instanceof InstitutionCollection) { - /** @var string $institution */ + /** @var Institution $institution */ foreach ($raaInstitutions as $institution) { // Override existing lower role if (isset($collection->authorizations[(string)$institution]) diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Service/DeprovisionService.php b/src/Surfnet/StepupMiddleware/ApiBundle/Service/DeprovisionService.php index e45eea8d9..438043ae0 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Service/DeprovisionService.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Service/DeprovisionService.php @@ -34,7 +34,7 @@ use function sprintf; /** - * @SuppressWarnings(PHPMD.CouplingBetweenObjects) + * @SuppressWarnings("PHPMD.CouplingBetweenObjects") */ class DeprovisionService implements DeprovisionServiceInterface { diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Authorization/Service/CommandAuthorizationServiceTest.php b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Authorization/Service/CommandAuthorizationServiceTest.php index 276a28616..b402981e6 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Authorization/Service/CommandAuthorizationServiceTest.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Authorization/Service/CommandAuthorizationServiceTest.php @@ -499,10 +499,6 @@ public function availableCommands(): array if ($files === false) { continue; } - assert( - is_array($files), - sprintf('Unable to grab the files from %s with pattern %s', $folder , $commandPath) - ); foreach ($files as $file) { $className = str_replace($rootPath, '', $file); diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Identity/Projector/AuditLogProjectorTest.php b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Identity/Projector/AuditLogProjectorTest.php index 1a6590498..4430eae9b 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Identity/Projector/AuditLogProjectorTest.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Identity/Projector/AuditLogProjectorTest.php @@ -143,7 +143,7 @@ public function it_creates_entries_for_auditable_events(DomainMessage $message, { $repository = m::mock(AuditLogRepository::class); $repository->shouldReceive('save')->with($this->spy($actualEntry)); - + $this->assertInstanceOf(AuditLogEntry::class, $actualEntry); $identityRepository = m::mock(IdentityRepository::class); $identity = new Identity(); diff --git a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Command/AbstractCommand.php b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Command/AbstractCommand.php index 71cb57a87..5b563c500 100644 --- a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Command/AbstractCommand.php +++ b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Command/AbstractCommand.php @@ -21,8 +21,8 @@ use Symfony\Component\Validator\Constraints as Assert; /** - * @SuppressWarnings(PHPMD.NumberOfChildren) we simply have a lot of commands - * @SuppressWarnings(PHPMD.CamelCasePropertyName) UUID was not camel cased intentionally + * @SuppressWarnings("PHPMD.NumberOfChildren") we simply have a lot of commands + * @SuppressWarnings("PHPMD.CamelCasePropertyName") UUID was not camel cased intentionally */ abstract class AbstractCommand implements Command { diff --git a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Configuration/CommandHandler/InstitutionConfigurationCommandHandler.php b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Configuration/CommandHandler/InstitutionConfigurationCommandHandler.php index 2e311a65b..ffa22ce3b 100644 --- a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Configuration/CommandHandler/InstitutionConfigurationCommandHandler.php +++ b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Configuration/CommandHandler/InstitutionConfigurationCommandHandler.php @@ -48,7 +48,7 @@ use Surfnet\StepupMiddleware\CommandHandlingBundle\Configuration\Command\RemoveRaLocationCommand; /** - * @SuppressWarnings(PHPMD.CouplingBetweenObjects) Value objects + * @SuppressWarnings("PHPMD.CouplingBetweenObjects") Value objects */ class InstitutionConfigurationCommandHandler extends SimpleCommandHandler { diff --git a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Identity/CommandHandler/IdentityCommandHandler.php b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Identity/CommandHandler/IdentityCommandHandler.php index 6894a9c7a..181391a98 100644 --- a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Identity/CommandHandler/IdentityCommandHandler.php +++ b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Identity/CommandHandler/IdentityCommandHandler.php @@ -77,14 +77,14 @@ use Surfnet\StepupMiddleware\CommandHandlingBundle\Identity\Service\RegistrationMailService; /** - * @SuppressWarnings(PHPMD.CouplingBetweenObjects) - * @SuppressWarnings(PHPMD.TooManyMethods) - * @SuppressWarnings(PHPMD.TooManyPublicMethods) + * @SuppressWarnings("PHPMD.CouplingBetweenObjects") + * @SuppressWarnings("PHPMD.TooManyMethods") + * @SuppressWarnings("PHPMD.TooManyPublicMethods") */ class IdentityCommandHandler extends SimpleCommandHandler { /** - * @SuppressWarnings(PHPMD.ExcessiveParameterList) + * @SuppressWarnings("PHPMD.ExcessiveParameterList") */ public function __construct( private readonly RepositoryInterface $eventSourcedRepository, diff --git a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Identity/CommandHandler/RegistrationAuthorityCommandHandler.php b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Identity/CommandHandler/RegistrationAuthorityCommandHandler.php index 9b8f57818..4c2020eb9 100644 --- a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Identity/CommandHandler/RegistrationAuthorityCommandHandler.php +++ b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Identity/CommandHandler/RegistrationAuthorityCommandHandler.php @@ -40,7 +40,7 @@ use Surfnet\StepupMiddleware\CommandHandlingBundle\Identity\Service\VettingTypeHintService; /** - * @SuppressWarnings(PHPMD.CouplingBetweenObjects) + * @SuppressWarnings("PHPMD.CouplingBetweenObjects") */ class RegistrationAuthorityCommandHandler extends SimpleCommandHandler { diff --git a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Identity/CommandHandler/WhitelistCommandHandler.php b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Identity/CommandHandler/WhitelistCommandHandler.php index 9ebe2d578..520f63131 100644 --- a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Identity/CommandHandler/WhitelistCommandHandler.php +++ b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Identity/CommandHandler/WhitelistCommandHandler.php @@ -77,10 +77,10 @@ private function getWhitelist(): Whitelist } /** - * @return Institution[] + * @return list */ private function mapArrayToInstitutions(array $institutions): array { - return array_map(fn($institutionName): Institution => new Institution($institutionName), $institutions); + return array_values(array_map(fn($institutionName): Institution => new Institution($institutionName), $institutions)); } } diff --git a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Identity/Service/RecoveryTokenMailService.php b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Identity/Service/RecoveryTokenMailService.php index cb5a8e77a..9dea8335a 100644 --- a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Identity/Service/RecoveryTokenMailService.php +++ b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Identity/Service/RecoveryTokenMailService.php @@ -34,7 +34,7 @@ use function str_replace; /** - * @SuppressWarnings(PHPMD.CouplingBetweenObjects) + * @SuppressWarnings("PHPMD.CouplingBetweenObjects") */ class RecoveryTokenMailService { diff --git a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Identity/Service/RegistrationMailService.php b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Identity/Service/RegistrationMailService.php index c9920b130..7072448a8 100644 --- a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Identity/Service/RegistrationMailService.php +++ b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Identity/Service/RegistrationMailService.php @@ -38,14 +38,14 @@ use Symfony\Contracts\Translation\TranslatorInterface; /** - * @SuppressWarnings(PHPMD.CouplingBetweenObjects) + * @SuppressWarnings("PHPMD.CouplingBetweenObjects") */ class RegistrationMailService { private readonly string $fallbackLocale; /** - * @SuppressWarnings(PHPMD.ExcessiveParameterList) + * @SuppressWarnings("PHPMD.ExcessiveParameterList") */ public function __construct( private readonly Mailer $mailer, diff --git a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Identity/Service/SecondFactorRevocationMailService.php b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Identity/Service/SecondFactorRevocationMailService.php index 3d6e0f53e..b953f8e5b 100644 --- a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Identity/Service/SecondFactorRevocationMailService.php +++ b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Identity/Service/SecondFactorRevocationMailService.php @@ -35,7 +35,7 @@ use Symfony\Contracts\Translation\TranslatorInterface; /** - * @SuppressWarnings(PHPMD.CouplingBetweenObjects) + * @SuppressWarnings("PHPMD.CouplingBetweenObjects") */ final class SecondFactorRevocationMailService { diff --git a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/WhitelistCommandHandlerTest.php b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/WhitelistCommandHandlerTest.php index c407c752b..63b2f5411 100644 --- a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/WhitelistCommandHandlerTest.php +++ b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/WhitelistCommandHandlerTest.php @@ -185,10 +185,10 @@ public function an_institution_that_is_not_on_the_whitelist_cannot_be_removed(): /** * Helper function to quickly map String[] to Institution[] - * @return array + * @return list $institutions */ private function mapStringValuesToInstitutions(array $institutions): array { - return array_map(fn($institution): Institution => new Institution($institution), $institutions); + return array_values(array_map(static fn($institution): Institution => new Institution($institution), $institutions)); } } diff --git a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/SensitiveData/EventSourcing/SensitiveDataMessageStreamTest.php b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/SensitiveData/EventSourcing/SensitiveDataMessageStreamTest.php index 490cd8f8e..c2e549654 100644 --- a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/SensitiveData/EventSourcing/SensitiveDataMessageStreamTest.php +++ b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/SensitiveData/EventSourcing/SensitiveDataMessageStreamTest.php @@ -44,12 +44,11 @@ final class SensitiveDataMessageStreamTest extends TestCase /** * @test * @group sensitive-data + * @doesNotPerformAssertions */ public function it_can_work_with_zero_sensitive_data_messages_and_zero_events(): void { $this->apply([], []); - - $this->assertTrue(true); } /** diff --git a/src/Surfnet/StepupMiddleware/GatewayBundle/Entity/SecondFactor.php b/src/Surfnet/StepupMiddleware/GatewayBundle/Entity/SecondFactor.php index de35a6fef..717bf75a1 100644 --- a/src/Surfnet/StepupMiddleware/GatewayBundle/Entity/SecondFactor.php +++ b/src/Surfnet/StepupMiddleware/GatewayBundle/Entity/SecondFactor.php @@ -26,7 +26,7 @@ * WARNING: Any schema change made to this entity should also be applied to the Gateway SecondFactor entity! * @see Surfnet\StepupGateway\GatewayBundle\Entity\SecondFactor (in OpenConext/Stepup-Gateway project) * - * @SuppressWarnings(PHPMD.UnusedPrivateFields) + * @SuppressWarnings("PHPMD.UnusedPrivateFields") */ #[ORM\Table] #[ORM\Index(name: 'idx_secondfactor_nameid', columns: ['name_id'])] diff --git a/src/Surfnet/StepupMiddleware/ManagementBundle/Controller/InstitutionConfigurationController.php b/src/Surfnet/StepupMiddleware/ManagementBundle/Controller/InstitutionConfigurationController.php index c0ea3f263..3bf34ac70 100644 --- a/src/Surfnet/StepupMiddleware/ManagementBundle/Controller/InstitutionConfigurationController.php +++ b/src/Surfnet/StepupMiddleware/ManagementBundle/Controller/InstitutionConfigurationController.php @@ -42,7 +42,7 @@ use Symfony\Component\Validator\Validator\ValidatorInterface; /** - * @SuppressWarnings(PHPMD.CouplingBetweenObjects) + * @SuppressWarnings("PHPMD.CouplingBetweenObjects") */ final class InstitutionConfigurationController extends AbstractController { @@ -124,8 +124,10 @@ public function reconfigure(Request $request): JsonResponse ]); } + $commands = []; foreach ($configuration as $institution => $options) { + assert(is_array($options)); $command = new ReconfigureInstitutionConfigurationOptionsCommand(); $command->UUID = (string)Uuid::uuid4(); $command->institution = $institution; diff --git a/src/Surfnet/StepupMiddleware/ManagementBundle/Controller/RightToBeForgottenController.php b/src/Surfnet/StepupMiddleware/ManagementBundle/Controller/RightToBeForgottenController.php index c74ded47c..4e81943f5 100644 --- a/src/Surfnet/StepupMiddleware/ManagementBundle/Controller/RightToBeForgottenController.php +++ b/src/Surfnet/StepupMiddleware/ManagementBundle/Controller/RightToBeForgottenController.php @@ -34,7 +34,7 @@ use Symfony\Component\HttpKernel\Exception\ConflictHttpException; /** - * @SuppressWarnings(PHPMD.CouplingBetweenObjects) + * @SuppressWarnings("PHPMD.CouplingBetweenObjects") */ class RightToBeForgottenController extends AbstractController { diff --git a/src/Surfnet/StepupMiddleware/ManagementBundle/Controller/WhitelistController.php b/src/Surfnet/StepupMiddleware/ManagementBundle/Controller/WhitelistController.php index 2ae69c0b5..826597d1e 100644 --- a/src/Surfnet/StepupMiddleware/ManagementBundle/Controller/WhitelistController.php +++ b/src/Surfnet/StepupMiddleware/ManagementBundle/Controller/WhitelistController.php @@ -35,7 +35,7 @@ use Symfony\Component\HttpKernel\Exception\BadRequestHttpException; /** - * @SuppressWarnings(PHPMD.CouplingBetweenObjects) + * @SuppressWarnings("PHPMD.CouplingBetweenObjects") */ class WhitelistController extends AbstractController { diff --git a/src/Surfnet/StepupMiddleware/ManagementBundle/Service/DBALConnectionHelper.php b/src/Surfnet/StepupMiddleware/ManagementBundle/Service/DBALConnectionHelper.php index 253cb5d06..46b90c9ae 100644 --- a/src/Surfnet/StepupMiddleware/ManagementBundle/Service/DBALConnectionHelper.php +++ b/src/Surfnet/StepupMiddleware/ManagementBundle/Service/DBALConnectionHelper.php @@ -78,10 +78,6 @@ public function rollBack(): void */ public function getConnection(string $connectionName): Connection { - if (!is_string($connectionName)) { - throw InvalidArgumentException::invalidType('string', 'connectionName', $connectionName); - } - if (!array_key_exists($connectionName, $this->connections)) { throw new UnknownDBALConnectionException($connectionName); } diff --git a/src/Surfnet/StepupMiddleware/ManagementBundle/Tests/Validator/ConfigurationValidationTest.php b/src/Surfnet/StepupMiddleware/ManagementBundle/Tests/Validator/ConfigurationValidationTest.php index e9b6d6874..9d1d47011 100644 --- a/src/Surfnet/StepupMiddleware/ManagementBundle/Tests/Validator/ConfigurationValidationTest.php +++ b/src/Surfnet/StepupMiddleware/ManagementBundle/Tests/Validator/ConfigurationValidationTest.php @@ -69,8 +69,11 @@ public function it_rejects_invalid_configuration(array $configuration, string $e $builder->shouldReceive('addViolation')->with()->once(); $builder->shouldReceive('atPath')->with($this->spy($actualPropertyPath))->once(); + $context = m::mock(ExecutionContextInterface::class); + $errorMessage = ''; $context->shouldReceive('buildViolation')->with($this->spy($errorMessage))->once()->andReturn($builder); + assert(is_string($errorMessage)); $validator = new ConfigurationStructureValidator( new GatewayConfigurationValidator( diff --git a/src/Surfnet/StepupMiddleware/ManagementBundle/Tests/Validator/ReconfigureInstitutionRequestValidatorTest.php b/src/Surfnet/StepupMiddleware/ManagementBundle/Tests/Validator/ReconfigureInstitutionRequestValidatorTest.php index 1e656e485..651497d75 100644 --- a/src/Surfnet/StepupMiddleware/ManagementBundle/Tests/Validator/ReconfigureInstitutionRequestValidatorTest.php +++ b/src/Surfnet/StepupMiddleware/ManagementBundle/Tests/Validator/ReconfigureInstitutionRequestValidatorTest.php @@ -89,7 +89,9 @@ public function it_rejects_invalid_configuration( $builder->shouldReceive('atPath')->with($this->spy($actualPropertyPath))->once(); $context = Mockery::mock(ExecutionContextInterface::class); + $actualErrorMessage = ''; $context->shouldReceive('buildViolation')->with($this->spy($actualErrorMessage))->once()->andReturn($builder); + assert(is_string($actualErrorMessage)); $secondFactorTypeServiceMock = Mockery::mock(SecondFactorTypeService::class); $secondFactorTypeServiceMock->shouldReceive('getAvailableSecondFactorTypes')->andReturn(['yubikey', 'sms']); @@ -139,7 +141,9 @@ public function reconfigure_institution_request_cannot_contain_institutions_that $builder->shouldReceive('addViolation')->with()->once(); $context = Mockery::mock(ExecutionContextInterface::class); + $errorMessage = ''; $context->shouldReceive('buildViolation')->once()->with($this->spy($errorMessage))->andReturn($builder); + assert(is_string($errorMessage)); $configuredInstitutionServiceMock = Mockery::mock(ConfiguredInstitutionService::class); $configuredInstitutionServiceMock diff --git a/src/Surfnet/StepupMiddleware/ManagementBundle/Validator/ReconfigureInstitutionRequestValidator.php b/src/Surfnet/StepupMiddleware/ManagementBundle/Validator/ReconfigureInstitutionRequestValidator.php index 049e35f40..59d4e1453 100644 --- a/src/Surfnet/StepupMiddleware/ManagementBundle/Validator/ReconfigureInstitutionRequestValidator.php +++ b/src/Surfnet/StepupMiddleware/ManagementBundle/Validator/ReconfigureInstitutionRequestValidator.php @@ -34,7 +34,7 @@ use Symfony\Component\Validator\Violation\ConstraintViolationBuilder; /** - * @SuppressWarnings(PHPMD.CouplingBetweenObjects) Coupling to assertion classes is rather high, might be a good candidate for refactoring + * @SuppressWarnings("PHPMD.CouplingBetweenObjects") Coupling to assertion classes is rather high, might be a good candidate for refactoring */ final class ReconfigureInstitutionRequestValidator extends ConstraintValidator { @@ -98,7 +98,7 @@ public function validateInstitutionsExist(array $institutions): void } /** - * @SuppressWarnings(PHPMD.ExcessiveMethodLength) + * @SuppressWarnings("PHPMD.ExcessiveMethodLength") */ public function validateInstitutionConfigurationOptions(array $options, string $institution): void { diff --git a/src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapGsspSecondFactorCommand.php b/src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapGsspSecondFactorCommand.php index c757b4608..5d1b08b19 100644 --- a/src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapGsspSecondFactorCommand.php +++ b/src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapGsspSecondFactorCommand.php @@ -63,7 +63,7 @@ protected function configure(): void } /** - * @SuppressWarnings(PHPMD.ExcessiveMethodLength) Method length could be reduced by deconstructing the bootstrapping + * @SuppressWarnings("PHPMD.ExcessiveMethodLength") Method length could be reduced by deconstructing the bootstrapping * of the required data and the vetting of the GSSP */ protected function execute(InputInterface $input, OutputInterface $output): int diff --git a/src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapIdentityWithYubikeySecondFactorCommand.php b/src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapIdentityWithYubikeySecondFactorCommand.php index 8226fc65d..c562f269f 100644 --- a/src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapIdentityWithYubikeySecondFactorCommand.php +++ b/src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapIdentityWithYubikeySecondFactorCommand.php @@ -32,7 +32,7 @@ use Symfony\Component\Console\Output\OutputInterface; /** - * @SuppressWarnings(PHPMD.CouplingBetweenObjects) + * @SuppressWarnings("PHPMD.CouplingBetweenObjects") */ final class BootstrapIdentityWithYubikeySecondFactorCommand extends Command { diff --git a/src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/EmailVerifiedSecondFactorRemindersCommand.php b/src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/EmailVerifiedSecondFactorRemindersCommand.php index 9f9b11964..22a765abb 100644 --- a/src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/EmailVerifiedSecondFactorRemindersCommand.php +++ b/src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/EmailVerifiedSecondFactorRemindersCommand.php @@ -40,7 +40,7 @@ * The command utilizes a specific service for this task (VerifiedSecondFactorReminderService). Input validation is * performed on the incoming request parameters. * - * @SuppressWarnings(PHPMD.CouplingBetweenObjects) + * @SuppressWarnings("PHPMD.CouplingBetweenObjects") */ final class EmailVerifiedSecondFactorRemindersCommand extends Command { diff --git a/src/Surfnet/StepupMiddleware/MiddlewareBundle/Service/BootstrapCommandService.php b/src/Surfnet/StepupMiddleware/MiddlewareBundle/Service/BootstrapCommandService.php index d4ee0a008..55e344414 100644 --- a/src/Surfnet/StepupMiddleware/MiddlewareBundle/Service/BootstrapCommandService.php +++ b/src/Surfnet/StepupMiddleware/MiddlewareBundle/Service/BootstrapCommandService.php @@ -44,8 +44,8 @@ use Symfony\Component\Security\Core\Authentication\Token\TokenInterface; /** - * @SuppressWarnings(PHPMD.CouplingBetweenObjects) - * @SuppressWarnings(PHPMD.TooManyPublicMethods) + * @SuppressWarnings("PHPMD.CouplingBetweenObjects") + * @SuppressWarnings("PHPMD.TooManyPublicMethods") */ class BootstrapCommandService { diff --git a/src/Surfnet/StepupMiddleware/MiddlewareBundle/Service/VerifiedSecondFactorReminderMailService.php b/src/Surfnet/StepupMiddleware/MiddlewareBundle/Service/VerifiedSecondFactorReminderMailService.php index 221c31369..a9982d300 100644 --- a/src/Surfnet/StepupMiddleware/MiddlewareBundle/Service/VerifiedSecondFactorReminderMailService.php +++ b/src/Surfnet/StepupMiddleware/MiddlewareBundle/Service/VerifiedSecondFactorReminderMailService.php @@ -36,7 +36,7 @@ use Symfony\Contracts\Translation\TranslatorInterface; /** - * @SuppressWarnings(PHPMD.CouplingBetweenObjects) + * @SuppressWarnings("PHPMD.CouplingBetweenObjects") */ class VerifiedSecondFactorReminderMailService { From 88ec4dd9d7666b1b7ab0af605e253086ceef5ee1 Mon Sep 17 00:00:00 2001 From: Johan Kromhout Date: Mon, 24 Nov 2025 14:19:22 +0100 Subject: [PATCH 03/32] phpstan update & phpstan fixes --- .gitignore | 1 + ci/qa/phpstan-baseline.neon | 2770 +++++++++++------ src/Surfnet/Stepup/DateTime/DateTime.php | 2 + .../Value/AllowedSecondFactorListTest.php | 7 +- .../Value/InstitutionSetTest.php | 2 +- .../Identity/Event/ForgettableEventsTest.php | 10 +- .../VerifiedSecondFactorRepository.php | 3 - .../VettedSecondFactorRepository.php | 2 +- .../Projector/AuditLogProjectorTest.php | 10 +- 9 files changed, 1807 insertions(+), 1000 deletions(-) diff --git a/.gitignore b/.gitignore index 2bea33b45..c5397068f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ .idea +.github/*.md /web/bundles/ /web/app_dev.php /web/app_test.php diff --git a/ci/qa/phpstan-baseline.neon b/ci/qa/phpstan-baseline.neon index 57ccb6a81..2bde35127 100644 --- a/ci/qa/phpstan-baseline.neon +++ b/ci/qa/phpstan-baseline.neon @@ -1,4281 +1,5071 @@ parameters: ignoreErrors: - - message: "#^Cannot access offset 'payload' on mixed\\.$#" + message: '#^Cannot access offset ''payload'' on mixed\.$#' + identifier: offsetAccess.nonOffsetAccessible count: 1 path: ../../src/Surfnet/Migrations/Version20210610131957.php - - message: "#^Cannot access offset 'vetting_type' on mixed\\.$#" + message: '#^Cannot access offset ''vetting_type'' on mixed\.$#' + identifier: offsetAccess.nonOffsetAccessible count: 1 path: ../../src/Surfnet/Migrations/Version20210610131957.php - - message: "#^Method Surfnet\\\\Migrations\\\\Version20210610131957\\:\\:stripSensitiveData\\(\\) should return string but returns string\\|false\\.$#" + message: '#^Method Surfnet\\Migrations\\Version20210610131957\:\:stripSensitiveData\(\) should return string but returns string\|false\.$#' + identifier: return.type count: 1 path: ../../src/Surfnet/Migrations/Version20210610131957.php - - message: "#^Parameter \\#1 \\$rawPayload of method Surfnet\\\\Migrations\\\\Version20210610131957\\:\\:stripSensitiveData\\(\\) expects string, mixed given\\.$#" + message: '#^Parameter \#1 \$rawPayload of method Surfnet\\Migrations\\Version20210610131957\:\:stripSensitiveData\(\) expects string, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/Migrations/Version20210610131957.php - - message: "#^Part \\$playhead \\(mixed\\) of encapsed string cannot be cast to string\\.$#" + message: '#^Part \$playhead \(mixed\) of encapsed string cannot be cast to string\.$#' + identifier: encapsedStringPart.nonString count: 1 path: ../../src/Surfnet/Migrations/Version20210610131957.php - - message: "#^Part \\$uuid \\(mixed\\) of encapsed string cannot be cast to string\\.$#" + message: '#^Part \$uuid \(mixed\) of encapsed string cannot be cast to string\.$#' + identifier: encapsedStringPart.nonString count: 1 path: ../../src/Surfnet/Migrations/Version20210610131957.php - - message: "#^Cannot access offset 'email_templates' on mixed\\.$#" + message: '#^Cannot access offset ''email_templates'' on mixed\.$#' + identifier: offsetAccess.nonOffsetAccessible count: 1 path: ../../src/Surfnet/Stepup/Configuration/Configuration.php - - message: "#^Cannot access offset 'gateway' on mixed\\.$#" + message: '#^Cannot access offset ''gateway'' on mixed\.$#' + identifier: offsetAccess.nonOffsetAccessible count: 2 path: ../../src/Surfnet/Stepup/Configuration/Configuration.php - - message: "#^Cannot access offset 'identity_providers' on mixed\\.$#" + message: '#^Cannot access offset ''identity_providers'' on mixed\.$#' + identifier: offsetAccess.nonOffsetAccessible count: 1 path: ../../src/Surfnet/Stepup/Configuration/Configuration.php - - message: "#^Cannot access offset 'service_providers' on mixed\\.$#" + message: '#^Cannot access offset ''service_providers'' on mixed\.$#' + identifier: offsetAccess.nonOffsetAccessible count: 1 path: ../../src/Surfnet/Stepup/Configuration/Configuration.php - - message: "#^Cannot access offset 'sraa' on mixed\\.$#" + message: '#^Cannot access offset ''sraa'' on mixed\.$#' + identifier: offsetAccess.nonOffsetAccessible count: 1 path: ../../src/Surfnet/Stepup/Configuration/Configuration.php - - message: "#^Parameter \\#2 \\$emailTemplates of class Surfnet\\\\Stepup\\\\Configuration\\\\Event\\\\EmailTemplatesUpdatedEvent constructor expects array, mixed given\\.$#" + message: '#^Parameter \#2 \$emailTemplates of class Surfnet\\Stepup\\Configuration\\Event\\EmailTemplatesUpdatedEvent constructor expects array, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/Stepup/Configuration/Configuration.php - - message: "#^Parameter \\#2 \\$identityProviders of class Surfnet\\\\Stepup\\\\Configuration\\\\Event\\\\IdentityProvidersUpdatedEvent constructor expects array, mixed given\\.$#" + message: '#^Parameter \#2 \$identityProviders of class Surfnet\\Stepup\\Configuration\\Event\\IdentityProvidersUpdatedEvent constructor expects array, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/Stepup/Configuration/Configuration.php - - message: "#^Parameter \\#2 \\$newConfiguration of class Surfnet\\\\Stepup\\\\Configuration\\\\Event\\\\ConfigurationUpdatedEvent constructor expects array, mixed given\\.$#" + message: '#^Parameter \#2 \$newConfiguration of class Surfnet\\Stepup\\Configuration\\Event\\ConfigurationUpdatedEvent constructor expects array, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/Stepup/Configuration/Configuration.php - - message: "#^Parameter \\#2 \\$serviceProviders of class Surfnet\\\\Stepup\\\\Configuration\\\\Event\\\\ServiceProvidersUpdatedEvent constructor expects array, mixed given\\.$#" + message: '#^Parameter \#2 \$serviceProviders of class Surfnet\\Stepup\\Configuration\\Event\\ServiceProvidersUpdatedEvent constructor expects array, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/Stepup/Configuration/Configuration.php - - message: "#^Parameter \\#2 \\$sraaList of class Surfnet\\\\Stepup\\\\Configuration\\\\Event\\\\SraaUpdatedEvent constructor expects array, mixed given\\.$#" + message: '#^Parameter \#2 \$sraaList of class Surfnet\\Stepup\\Configuration\\Event\\SraaUpdatedEvent constructor expects array, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/Stepup/Configuration/Configuration.php - - message: "#^Property Surfnet\\\\Stepup\\\\Configuration\\\\Configuration\\:\\:\\$configuration type has no value type specified in iterable type array\\.$#" + message: '#^Property Surfnet\\Stepup\\Configuration\\Configuration\:\:\$configuration type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Configuration/Configuration.php - - message: "#^Method Surfnet\\\\Stepup\\\\Configuration\\\\Event\\\\AllowedSecondFactorListUpdatedEvent\\:\\:deserialize\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Configuration\\Event\\AllowedSecondFactorListUpdatedEvent\:\:deserialize\(\) has parameter \$data with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Configuration/Event/AllowedSecondFactorListUpdatedEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Configuration\\\\Event\\\\AllowedSecondFactorListUpdatedEvent\\:\\:serialize\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Configuration\\Event\\AllowedSecondFactorListUpdatedEvent\:\:serialize\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Configuration/Event/AllowedSecondFactorListUpdatedEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Configuration\\\\Event\\\\ConfigurationUpdatedEvent\\:\\:__construct\\(\\) has parameter \\$newConfiguration with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Configuration\\Event\\ConfigurationUpdatedEvent\:\:__construct\(\) has parameter \$newConfiguration with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Configuration/Event/ConfigurationUpdatedEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Configuration\\\\Event\\\\ConfigurationUpdatedEvent\\:\\:__construct\\(\\) has parameter \\$oldConfiguration with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Configuration\\Event\\ConfigurationUpdatedEvent\:\:__construct\(\) has parameter \$oldConfiguration with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Configuration/Event/ConfigurationUpdatedEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Configuration\\\\Event\\\\ConfigurationUpdatedEvent\\:\\:deserialize\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Configuration\\Event\\ConfigurationUpdatedEvent\:\:deserialize\(\) has parameter \$data with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Configuration/Event/ConfigurationUpdatedEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Configuration\\\\Event\\\\ConfigurationUpdatedEvent\\:\\:serialize\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Configuration\\Event\\ConfigurationUpdatedEvent\:\:serialize\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Configuration/Event/ConfigurationUpdatedEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Configuration\\\\Event\\\\EmailTemplatesUpdatedEvent\\:\\:__construct\\(\\) has parameter \\$emailTemplates with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Configuration\\Event\\EmailTemplatesUpdatedEvent\:\:__construct\(\) has parameter \$emailTemplates with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Configuration/Event/EmailTemplatesUpdatedEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Configuration\\\\Event\\\\EmailTemplatesUpdatedEvent\\:\\:deserialize\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Configuration\\Event\\EmailTemplatesUpdatedEvent\:\:deserialize\(\) has parameter \$data with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Configuration/Event/EmailTemplatesUpdatedEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Configuration\\\\Event\\\\EmailTemplatesUpdatedEvent\\:\\:serialize\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Configuration\\Event\\EmailTemplatesUpdatedEvent\:\:serialize\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Configuration/Event/EmailTemplatesUpdatedEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Configuration\\\\Event\\\\IdentityProvidersUpdatedEvent\\:\\:__construct\\(\\) has parameter \\$identityProviders with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Configuration\\Event\\IdentityProvidersUpdatedEvent\:\:__construct\(\) has parameter \$identityProviders with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Configuration/Event/IdentityProvidersUpdatedEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Configuration\\\\Event\\\\IdentityProvidersUpdatedEvent\\:\\:deserialize\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Configuration\\Event\\IdentityProvidersUpdatedEvent\:\:deserialize\(\) has parameter \$data with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Configuration/Event/IdentityProvidersUpdatedEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Configuration\\\\Event\\\\IdentityProvidersUpdatedEvent\\:\\:serialize\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Configuration\\Event\\IdentityProvidersUpdatedEvent\:\:serialize\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Configuration/Event/IdentityProvidersUpdatedEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Configuration\\\\Event\\\\InstitutionConfigurationRemovedEvent\\:\\:deserialize\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Configuration\\Event\\InstitutionConfigurationRemovedEvent\:\:deserialize\(\) has parameter \$data with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Configuration/Event/InstitutionConfigurationRemovedEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Configuration\\\\Event\\\\InstitutionConfigurationRemovedEvent\\:\\:serialize\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Configuration\\Event\\InstitutionConfigurationRemovedEvent\:\:serialize\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Configuration/Event/InstitutionConfigurationRemovedEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Configuration\\\\Event\\\\NewConfigurationCreatedEvent\\:\\:deserialize\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Configuration\\Event\\NewConfigurationCreatedEvent\:\:deserialize\(\) has parameter \$data with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Configuration/Event/NewConfigurationCreatedEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Configuration\\\\Event\\\\NewConfigurationCreatedEvent\\:\\:serialize\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Configuration\\Event\\NewConfigurationCreatedEvent\:\:serialize\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Configuration/Event/NewConfigurationCreatedEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Configuration\\\\Event\\\\NewInstitutionConfigurationCreatedEvent\\:\\:deserialize\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Configuration\\Event\\NewInstitutionConfigurationCreatedEvent\:\:deserialize\(\) has parameter \$data with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Configuration/Event/NewInstitutionConfigurationCreatedEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Configuration\\\\Event\\\\NewInstitutionConfigurationCreatedEvent\\:\\:serialize\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Configuration\\Event\\NewInstitutionConfigurationCreatedEvent\:\:serialize\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Configuration/Event/NewInstitutionConfigurationCreatedEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Configuration\\\\Event\\\\NumberOfTokensPerIdentityOptionChangedEvent\\:\\:deserialize\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Configuration\\Event\\NumberOfTokensPerIdentityOptionChangedEvent\:\:deserialize\(\) has parameter \$data with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Configuration/Event/NumberOfTokensPerIdentityOptionChangedEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Configuration\\\\Event\\\\NumberOfTokensPerIdentityOptionChangedEvent\\:\\:serialize\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Configuration\\Event\\NumberOfTokensPerIdentityOptionChangedEvent\:\:serialize\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Configuration/Event/NumberOfTokensPerIdentityOptionChangedEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Configuration\\\\Event\\\\RaLocationAddedEvent\\:\\:deserialize\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Configuration\\Event\\RaLocationAddedEvent\:\:deserialize\(\) has parameter \$data with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Configuration/Event/RaLocationAddedEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Configuration\\\\Event\\\\RaLocationAddedEvent\\:\\:serialize\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Configuration\\Event\\RaLocationAddedEvent\:\:serialize\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Configuration/Event/RaLocationAddedEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Configuration\\\\Event\\\\RaLocationContactInformationChangedEvent\\:\\:deserialize\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Configuration\\Event\\RaLocationContactInformationChangedEvent\:\:deserialize\(\) has parameter \$data with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Configuration/Event/RaLocationContactInformationChangedEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Configuration\\\\Event\\\\RaLocationContactInformationChangedEvent\\:\\:serialize\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Configuration\\Event\\RaLocationContactInformationChangedEvent\:\:serialize\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Configuration/Event/RaLocationContactInformationChangedEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Configuration\\\\Event\\\\RaLocationRelocatedEvent\\:\\:deserialize\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Configuration\\Event\\RaLocationRelocatedEvent\:\:deserialize\(\) has parameter \$data with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Configuration/Event/RaLocationRelocatedEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Configuration\\\\Event\\\\RaLocationRelocatedEvent\\:\\:serialize\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Configuration\\Event\\RaLocationRelocatedEvent\:\:serialize\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Configuration/Event/RaLocationRelocatedEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Configuration\\\\Event\\\\RaLocationRemovedEvent\\:\\:deserialize\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Configuration\\Event\\RaLocationRemovedEvent\:\:deserialize\(\) has parameter \$data with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Configuration/Event/RaLocationRemovedEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Configuration\\\\Event\\\\RaLocationRemovedEvent\\:\\:serialize\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Configuration\\Event\\RaLocationRemovedEvent\:\:serialize\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Configuration/Event/RaLocationRemovedEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Configuration\\\\Event\\\\RaLocationRenamedEvent\\:\\:deserialize\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Configuration\\Event\\RaLocationRenamedEvent\:\:deserialize\(\) has parameter \$data with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Configuration/Event/RaLocationRenamedEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Configuration\\\\Event\\\\RaLocationRenamedEvent\\:\\:serialize\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Configuration\\Event\\RaLocationRenamedEvent\:\:serialize\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Configuration/Event/RaLocationRenamedEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Configuration\\\\Event\\\\SelectRaaOptionChangedEvent\\:\\:deserialize\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Configuration\\Event\\SelectRaaOptionChangedEvent\:\:deserialize\(\) has parameter \$data with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Configuration/Event/SelectRaaOptionChangedEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Configuration\\\\Event\\\\SelectRaaOptionChangedEvent\\:\\:serialize\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Configuration\\Event\\SelectRaaOptionChangedEvent\:\:serialize\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Configuration/Event/SelectRaaOptionChangedEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Configuration\\\\Event\\\\SelfAssertedTokensOptionChangedEvent\\:\\:deserialize\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Configuration\\Event\\SelfAssertedTokensOptionChangedEvent\:\:deserialize\(\) has parameter \$data with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Configuration/Event/SelfAssertedTokensOptionChangedEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Configuration\\\\Event\\\\SelfAssertedTokensOptionChangedEvent\\:\\:serialize\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Configuration\\Event\\SelfAssertedTokensOptionChangedEvent\:\:serialize\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Configuration/Event/SelfAssertedTokensOptionChangedEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Configuration\\\\Event\\\\SelfVetOptionChangedEvent\\:\\:deserialize\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Configuration\\Event\\SelfVetOptionChangedEvent\:\:deserialize\(\) has parameter \$data with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Configuration/Event/SelfVetOptionChangedEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Configuration\\\\Event\\\\SelfVetOptionChangedEvent\\:\\:serialize\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Configuration\\Event\\SelfVetOptionChangedEvent\:\:serialize\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Configuration/Event/SelfVetOptionChangedEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Configuration\\\\Event\\\\ServiceProvidersUpdatedEvent\\:\\:__construct\\(\\) has parameter \\$serviceProviders with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Configuration\\Event\\ServiceProvidersUpdatedEvent\:\:__construct\(\) has parameter \$serviceProviders with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Configuration/Event/ServiceProvidersUpdatedEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Configuration\\\\Event\\\\ServiceProvidersUpdatedEvent\\:\\:deserialize\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Configuration\\Event\\ServiceProvidersUpdatedEvent\:\:deserialize\(\) has parameter \$data with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Configuration/Event/ServiceProvidersUpdatedEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Configuration\\\\Event\\\\ServiceProvidersUpdatedEvent\\:\\:serialize\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Configuration\\Event\\ServiceProvidersUpdatedEvent\:\:serialize\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Configuration/Event/ServiceProvidersUpdatedEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Configuration\\\\Event\\\\ShowRaaContactInformationOptionChangedEvent\\:\\:deserialize\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Configuration\\Event\\ShowRaaContactInformationOptionChangedEvent\:\:deserialize\(\) has parameter \$data with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Configuration/Event/ShowRaaContactInformationOptionChangedEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Configuration\\\\Event\\\\ShowRaaContactInformationOptionChangedEvent\\:\\:serialize\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Configuration\\Event\\ShowRaaContactInformationOptionChangedEvent\:\:serialize\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Configuration/Event/ShowRaaContactInformationOptionChangedEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Configuration\\\\Event\\\\SraaUpdatedEvent\\:\\:__construct\\(\\) has parameter \\$sraaList with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Configuration\\Event\\SraaUpdatedEvent\:\:__construct\(\) has parameter \$sraaList with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Configuration/Event/SraaUpdatedEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Configuration\\\\Event\\\\SraaUpdatedEvent\\:\\:deserialize\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Configuration\\Event\\SraaUpdatedEvent\:\:deserialize\(\) has parameter \$data with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Configuration/Event/SraaUpdatedEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Configuration\\\\Event\\\\SraaUpdatedEvent\\:\\:serialize\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Configuration\\Event\\SraaUpdatedEvent\:\:serialize\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Configuration/Event/SraaUpdatedEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Configuration\\\\Event\\\\SsoOn2faOptionChangedEvent\\:\\:deserialize\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Configuration\\Event\\SsoOn2faOptionChangedEvent\:\:deserialize\(\) has parameter \$data with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Configuration/Event/SsoOn2faOptionChangedEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Configuration\\\\Event\\\\SsoOn2faOptionChangedEvent\\:\\:serialize\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Configuration\\Event\\SsoOn2faOptionChangedEvent\:\:serialize\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Configuration/Event/SsoOn2faOptionChangedEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Configuration\\\\Event\\\\SsoRegistrationBypassOptionChangedEvent\\:\\:deserialize\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Configuration\\Event\\SsoRegistrationBypassOptionChangedEvent\:\:deserialize\(\) has parameter \$data with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Configuration/Event/SsoRegistrationBypassOptionChangedEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Configuration\\\\Event\\\\SsoRegistrationBypassOptionChangedEvent\\:\\:serialize\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Configuration\\Event\\SsoRegistrationBypassOptionChangedEvent\:\:serialize\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Configuration/Event/SsoRegistrationBypassOptionChangedEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Configuration\\\\Event\\\\UseRaLocationsOptionChangedEvent\\:\\:deserialize\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Configuration\\Event\\UseRaLocationsOptionChangedEvent\:\:deserialize\(\) has parameter \$data with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Configuration/Event/UseRaLocationsOptionChangedEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Configuration\\\\Event\\\\UseRaLocationsOptionChangedEvent\\:\\:serialize\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Configuration\\Event\\UseRaLocationsOptionChangedEvent\:\:serialize\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Configuration/Event/UseRaLocationsOptionChangedEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Configuration\\\\Event\\\\UseRaOptionChangedEvent\\:\\:deserialize\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Configuration\\Event\\UseRaOptionChangedEvent\:\:deserialize\(\) has parameter \$data with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Configuration/Event/UseRaOptionChangedEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Configuration\\\\Event\\\\UseRaOptionChangedEvent\\:\\:serialize\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Configuration\\Event\\UseRaOptionChangedEvent\:\:serialize\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Configuration/Event/UseRaOptionChangedEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Configuration\\\\Event\\\\UseRaaOptionChangedEvent\\:\\:deserialize\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Configuration\\Event\\UseRaaOptionChangedEvent\:\:deserialize\(\) has parameter \$data with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Configuration/Event/UseRaaOptionChangedEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Configuration\\\\Event\\\\UseRaaOptionChangedEvent\\:\\:serialize\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Configuration\\Event\\UseRaaOptionChangedEvent\:\:serialize\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Configuration/Event/UseRaaOptionChangedEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Configuration\\\\Event\\\\VerifyEmailOptionChangedEvent\\:\\:deserialize\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Configuration\\Event\\VerifyEmailOptionChangedEvent\:\:deserialize\(\) has parameter \$data with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Configuration/Event/VerifyEmailOptionChangedEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Configuration\\\\Event\\\\VerifyEmailOptionChangedEvent\\:\\:serialize\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Configuration\\Event\\VerifyEmailOptionChangedEvent\:\:serialize\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Configuration/Event/VerifyEmailOptionChangedEvent.php - - message: "#^Cannot call method add\\(\\) on Surfnet\\\\Stepup\\\\Configuration\\\\Value\\\\RaLocationList\\|null\\.$#" + message: '#^Cannot call method add\(\) on Surfnet\\Stepup\\Configuration\\Value\\RaLocationList\|null\.$#' + identifier: method.nonObject count: 1 path: ../../src/Surfnet/Stepup/Configuration/InstitutionConfiguration.php - - message: "#^Cannot call method containsWithId\\(\\) on Surfnet\\\\Stepup\\\\Configuration\\\\Value\\\\RaLocationList\\|null\\.$#" + message: '#^Cannot call method containsWithId\(\) on Surfnet\\Stepup\\Configuration\\Value\\RaLocationList\|null\.$#' + identifier: method.nonObject count: 3 path: ../../src/Surfnet/Stepup/Configuration/InstitutionConfiguration.php - - message: "#^Cannot call method getById\\(\\) on Surfnet\\\\Stepup\\\\Configuration\\\\Value\\\\RaLocationList\\|null\\.$#" + message: '#^Cannot call method getById\(\) on Surfnet\\Stepup\\Configuration\\Value\\RaLocationList\|null\.$#' + identifier: method.nonObject count: 4 path: ../../src/Surfnet/Stepup/Configuration/InstitutionConfiguration.php - - message: "#^Cannot call method removeWithId\\(\\) on Surfnet\\\\Stepup\\\\Configuration\\\\Value\\\\RaLocationList\\|null\\.$#" + message: '#^Cannot call method removeWithId\(\) on Surfnet\\Stepup\\Configuration\\Value\\RaLocationList\|null\.$#' + identifier: method.nonObject count: 1 path: ../../src/Surfnet/Stepup/Configuration/InstitutionConfiguration.php - - message: "#^Method Surfnet\\\\Stepup\\\\Configuration\\\\Value\\\\AllowedSecondFactorList\\:\\:__construct\\(\\) has parameter \\$allowedSecondFactors with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Configuration\\Value\\AllowedSecondFactorList\:\:__construct\(\) has parameter \$allowedSecondFactors with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Configuration/Value/AllowedSecondFactorList.php - - message: "#^Method Surfnet\\\\Stepup\\\\Configuration\\\\Value\\\\AllowedSecondFactorList\\:\\:deserialize\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Configuration\\Value\\AllowedSecondFactorList\:\:deserialize\(\) has parameter \$data with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Configuration/Value/AllowedSecondFactorList.php - - message: "#^Method Surfnet\\\\Stepup\\\\Configuration\\\\Value\\\\AllowedSecondFactorList\\:\\:jsonSerialize\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Configuration\\Value\\AllowedSecondFactorList\:\:jsonSerialize\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Configuration/Value/AllowedSecondFactorList.php - - message: "#^Method Surfnet\\\\Stepup\\\\Configuration\\\\Value\\\\AllowedSecondFactorList\\:\\:ofTypes\\(\\) has parameter \\$allowedSecondFactors with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Configuration\\Value\\AllowedSecondFactorList\:\:ofTypes\(\) has parameter \$allowedSecondFactors with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Configuration/Value/AllowedSecondFactorList.php - - message: "#^Method Surfnet\\\\Stepup\\\\Configuration\\\\Value\\\\AllowedSecondFactorList\\:\\:serialize\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Configuration\\Value\\AllowedSecondFactorList\:\:serialize\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Configuration/Value/AllowedSecondFactorList.php - - message: "#^Method Surfnet\\\\Stepup\\\\Configuration\\\\Value\\\\InstitutionAuthorizationOption\\:\\:fromInstitutionConfig\\(\\) has parameter \\$institutions with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Configuration\\Value\\InstitutionAuthorizationOption\:\:fromInstitutionConfig\(\) has parameter \$institutions with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Configuration/Value/InstitutionAuthorizationOption.php - - message: "#^Method Surfnet\\\\Stepup\\\\Configuration\\\\Value\\\\InstitutionAuthorizationOption\\:\\:jsonSerialize\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Configuration\\Value\\InstitutionAuthorizationOption\:\:jsonSerialize\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Configuration/Value/InstitutionAuthorizationOption.php - - message: "#^Property Surfnet\\\\Stepup\\\\Configuration\\\\Value\\\\InstitutionRole\\:\\:\\$validRoles type has no value type specified in iterable type array\\.$#" + message: '#^Property Surfnet\\Stepup\\Configuration\\Value\\InstitutionRole\:\:\$validRoles type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Configuration/Value/InstitutionRole.php - - message: "#^Method Surfnet\\\\Stepup\\\\Configuration\\\\Value\\\\InstitutionSet\\:\\:toScalarArray\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Instanceof between Surfnet\\Stepup\\Configuration\\Value\\Institution and Surfnet\\Stepup\\Configuration\\Value\\Institution will always evaluate to true\.$#' + identifier: instanceof.alwaysTrue count: 1 path: ../../src/Surfnet/Stepup/Configuration/Value/InstitutionSet.php - - message: "#^Method Surfnet\\\\Stepup\\\\Configuration\\\\Value\\\\RaLocationList\\:\\:__construct\\(\\) has parameter \\$raLocations with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Configuration\\Value\\InstitutionSet\:\:toScalarArray\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: ../../src/Surfnet/Stepup/Configuration/Value/InstitutionSet.php + + - + message: '#^Method Surfnet\\Stepup\\Configuration\\Value\\RaLocationList\:\:__construct\(\) has parameter \$raLocations with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Configuration/Value/RaLocationList.php - - message: "#^Property Surfnet\\\\Stepup\\\\Helper\\\\JsonHelper\\:\\:\\$jsonErrors type has no value type specified in iterable type array\\.$#" + message: '#^Static property Surfnet\\Stepup\\DateTime\\DateTime\:\:\$now \(Surfnet\\Stepup\\DateTime\\DateTime\|null\) is never assigned Surfnet\\Stepup\\DateTime\\DateTime so it can be removed from the property type\.$#' + identifier: property.unusedType + count: 1 + path: ../../src/Surfnet/Stepup/DateTime/DateTime.php + + - + message: '#^Property Surfnet\\Stepup\\Helper\\JsonHelper\:\:\$jsonErrors type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Helper/JsonHelper.php - - message: "#^Method Surfnet\\\\Stepup\\\\Helper\\\\SecondFactorProvePossessionHelper\\:\\:__construct\\(\\) has parameter \\$skipProvePossessionSecondFactorTypes with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Helper\\SecondFactorProvePossessionHelper\:\:__construct\(\) has parameter \$skipProvePossessionSecondFactorTypes with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Helper/SecondFactorProvePossessionHelper.php - - message: "#^Property Surfnet\\\\Stepup\\\\Helper\\\\SecondFactorProvePossessionHelper\\:\\:\\$skipProvePossessionSecondFactorTypes type has no value type specified in iterable type array\\.$#" + message: '#^Property Surfnet\\Stepup\\Helper\\SecondFactorProvePossessionHelper\:\:\$skipProvePossessionSecondFactorTypes type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Helper/SecondFactorProvePossessionHelper.php - - message: "#^Method Surfnet\\\\Stepup\\\\Helper\\\\UserDataFilter\\:\\:filter\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Helper\\UserDataFilter\:\:filter\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Helper/UserDataFilter.php - - message: "#^Method Surfnet\\\\Stepup\\\\Helper\\\\UserDataFilterInterface\\:\\:filter\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Helper\\UserDataFilterInterface\:\:filter\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Helper/UserDataFilterInterface.php - - message: "#^Method Surfnet\\\\Stepup\\\\Helper\\\\UserDataFormatter\\:\\:format\\(\\) has parameter \\$errors with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Helper\\UserDataFormatter\:\:format\(\) has parameter \$errors with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Helper/UserDataFormatter.php - - message: "#^Method Surfnet\\\\Stepup\\\\Helper\\\\UserDataFormatter\\:\\:format\\(\\) has parameter \\$userData with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Helper\\UserDataFormatter\:\:format\(\) has parameter \$userData with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Helper/UserDataFormatter.php - - message: "#^Method Surfnet\\\\Stepup\\\\Helper\\\\UserDataFormatter\\:\\:format\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Helper\\UserDataFormatter\:\:format\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Helper/UserDataFormatter.php - - message: "#^Method Surfnet\\\\Stepup\\\\Helper\\\\UserDataFormatter\\:\\:formatResponse\\(\\) has parameter \\$errors with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Helper\\UserDataFormatter\:\:formatResponse\(\) has parameter \$errors with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Helper/UserDataFormatter.php - - message: "#^Method Surfnet\\\\Stepup\\\\Helper\\\\UserDataFormatter\\:\\:formatResponse\\(\\) has parameter \\$userData with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Helper\\UserDataFormatter\:\:formatResponse\(\) has parameter \$userData with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Helper/UserDataFormatter.php - - message: "#^Method Surfnet\\\\Stepup\\\\Helper\\\\UserDataFormatter\\:\\:formatResponse\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Helper\\UserDataFormatter\:\:formatResponse\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Helper/UserDataFormatter.php - - message: "#^Method Surfnet\\\\Stepup\\\\Helper\\\\UserDataFormatterInterface\\:\\:format\\(\\) has parameter \\$errors with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Helper\\UserDataFormatterInterface\:\:format\(\) has parameter \$errors with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Helper/UserDataFormatterInterface.php - - message: "#^Method Surfnet\\\\Stepup\\\\Helper\\\\UserDataFormatterInterface\\:\\:format\\(\\) has parameter \\$userData with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Helper\\UserDataFormatterInterface\:\:format\(\) has parameter \$userData with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Helper/UserDataFormatterInterface.php - - message: "#^Method Surfnet\\\\Stepup\\\\Helper\\\\UserDataFormatterInterface\\:\\:format\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Helper\\UserDataFormatterInterface\:\:format\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Helper/UserDataFormatterInterface.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Collection\\\\InstitutionCollection\\:\\:__construct\\(\\) has parameter \\$institutions with no value type specified in iterable type array\\.$#" - count: 1 - path: ../../src/Surfnet/Stepup/Identity/Collection/InstitutionCollection.php - - - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Collection\\\\InstitutionCollection\\:\\:deserialize\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" - count: 1 - path: ../../src/Surfnet/Stepup/Identity/Collection/InstitutionCollection.php - - - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Collection\\\\InstitutionCollection\\:\\:jsonSerialize\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Collection\\InstitutionCollection\:\:deserialize\(\) has parameter \$data with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Collection/InstitutionCollection.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Collection\\\\InstitutionCollection\\:\\:serialize\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Collection\\InstitutionCollection\:\:jsonSerialize\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Collection/InstitutionCollection.php - - message: "#^Parameter \\#1 \\$institution of method Surfnet\\\\Stepup\\\\Identity\\\\Collection\\\\InstitutionCollection\\:\\:add\\(\\) expects Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\Institution, mixed given\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Collection\\InstitutionCollection\:\:serialize\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Collection/InstitutionCollection.php - - message: "#^Parameter \\#1 \\$institution of method Surfnet\\\\Stepup\\\\Identity\\\\Collection\\\\InstitutionCollection\\:\\:remove\\(\\) expects Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\Institution, mixed given\\.$#" + message: '#^Property Surfnet\\Stepup\\Identity\\Collection\\InstitutionCollection\:\:\$elements type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Collection/InstitutionCollection.php - - message: "#^Property Surfnet\\\\Stepup\\\\Identity\\\\Collection\\\\InstitutionCollection\\:\\:\\$elements type has no value type specified in iterable type array\\.$#" - count: 1 - path: ../../src/Surfnet/Stepup/Identity/Collection/InstitutionCollection.php - - - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Collection\\\\VettingTypeHintCollection\\:\\:__construct\\(\\) has parameter \\$hints with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Collection\\VettingTypeHintCollection\:\:__construct\(\) has parameter \$hints with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Collection/VettingTypeHintCollection.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Collection\\\\VettingTypeHintCollection\\:\\:deserialize\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Collection\\VettingTypeHintCollection\:\:deserialize\(\) has parameter \$data with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Collection/VettingTypeHintCollection.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Collection\\\\VettingTypeHintCollection\\:\\:jsonSerialize\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Collection\\VettingTypeHintCollection\:\:jsonSerialize\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Collection/VettingTypeHintCollection.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Collection\\\\VettingTypeHintCollection\\:\\:serialize\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Collection\\VettingTypeHintCollection\:\:serialize\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Collection/VettingTypeHintCollection.php - - message: "#^Property Surfnet\\\\Stepup\\\\Identity\\\\Collection\\\\VettingTypeHintCollection\\:\\:\\$elements type has no value type specified in iterable type array\\.$#" + message: '#^Property Surfnet\\Stepup\\Identity\\Collection\\VettingTypeHintCollection\:\:\$elements type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Collection/VettingTypeHintCollection.php - - message: "#^Cannot cast mixed to string\\.$#" + message: '#^Property Surfnet\\Stepup\\Identity\\Entity\\InstitutionCollection\:\:\$institutions type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Entity/InstitutionCollection.php - - message: "#^Property Surfnet\\\\Stepup\\\\Identity\\\\Entity\\\\InstitutionCollection\\:\\:\\$institutions type has no value type specified in iterable type array\\.$#" - count: 1 - path: ../../src/Surfnet/Stepup/Identity/Entity/InstitutionCollection.php - - - - message: "#^Cannot call method getId\\(\\) on Surfnet\\\\Stepup\\\\Identity\\\\Api\\\\Identity\\|null\\.$#" + message: '#^Cannot call method getId\(\) on Surfnet\\Stepup\\Identity\\Api\\Identity\|null\.$#' + identifier: method.nonObject count: 2 path: ../../src/Surfnet/Stepup/Identity/Entity/RecoveryToken.php - - message: "#^Cannot call method getInstitution\\(\\) on Surfnet\\\\Stepup\\\\Identity\\\\Api\\\\Identity\\|null\\.$#" + message: '#^Cannot call method getInstitution\(\) on Surfnet\\Stepup\\Identity\\Api\\Identity\|null\.$#' + identifier: method.nonObject count: 2 path: ../../src/Surfnet/Stepup/Identity/Entity/RecoveryToken.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Entity\\\\RecoveryToken\\:\\:getTokenId\\(\\) should return Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\RecoveryTokenId but returns Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\RecoveryTokenId\\|null\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Entity\\RecoveryToken\:\:getTokenId\(\) should return Surfnet\\Stepup\\Identity\\Value\\RecoveryTokenId but returns Surfnet\\Stepup\\Identity\\Value\\RecoveryTokenId\|null\.$#' + identifier: return.type count: 1 path: ../../src/Surfnet/Stepup/Identity/Entity/RecoveryToken.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Entity\\\\RecoveryToken\\:\\:getType\\(\\) should return Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\RecoveryTokenType but returns Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\RecoveryTokenType\\|null\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Entity\\RecoveryToken\:\:getType\(\) should return Surfnet\\Stepup\\Identity\\Value\\RecoveryTokenType but returns Surfnet\\Stepup\\Identity\\Value\\RecoveryTokenType\|null\.$#' + identifier: return.type count: 1 path: ../../src/Surfnet/Stepup/Identity/Entity/RecoveryToken.php - - message: "#^Parameter \\#3 \\$recoveryTokenId of class Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\CompliedWithRecoveryCodeRevocationEvent constructor expects Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\RecoveryTokenId, Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\RecoveryTokenId\\|null given\\.$#" + message: '#^Parameter \#3 \$recoveryTokenId of class Surfnet\\Stepup\\Identity\\Event\\CompliedWithRecoveryCodeRevocationEvent constructor expects Surfnet\\Stepup\\Identity\\Value\\RecoveryTokenId, Surfnet\\Stepup\\Identity\\Value\\RecoveryTokenId\|null given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/Stepup/Identity/Entity/RecoveryToken.php - - message: "#^Parameter \\#3 \\$recoveryTokenId of class Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\RecoveryTokenRevokedEvent constructor expects Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\RecoveryTokenId, Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\RecoveryTokenId\\|null given\\.$#" + message: '#^Parameter \#3 \$recoveryTokenId of class Surfnet\\Stepup\\Identity\\Event\\RecoveryTokenRevokedEvent constructor expects Surfnet\\Stepup\\Identity\\Value\\RecoveryTokenId, Surfnet\\Stepup\\Identity\\Value\\RecoveryTokenId\|null given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/Stepup/Identity/Entity/RecoveryToken.php - - message: "#^Parameter \\#4 \\$recoveryTokenType of class Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\CompliedWithRecoveryCodeRevocationEvent constructor expects Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\RecoveryTokenType, Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\RecoveryTokenType\\|null given\\.$#" + message: '#^Parameter \#4 \$recoveryTokenType of class Surfnet\\Stepup\\Identity\\Event\\CompliedWithRecoveryCodeRevocationEvent constructor expects Surfnet\\Stepup\\Identity\\Value\\RecoveryTokenType, Surfnet\\Stepup\\Identity\\Value\\RecoveryTokenType\|null given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/Stepup/Identity/Entity/RecoveryToken.php - - message: "#^Parameter \\#4 \\$recoveryTokenType of class Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\RecoveryTokenRevokedEvent constructor expects Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\RecoveryTokenType, Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\RecoveryTokenType\\|null given\\.$#" + message: '#^Parameter \#4 \$recoveryTokenType of class Surfnet\\Stepup\\Identity\\Event\\RecoveryTokenRevokedEvent constructor expects Surfnet\\Stepup\\Identity\\Value\\RecoveryTokenType, Surfnet\\Stepup\\Identity\\Value\\RecoveryTokenType\|null given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/Stepup/Identity/Entity/RecoveryToken.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Entity\\\\RecoveryTokenCollection\\:\\:first\\(\\) should return Surfnet\\\\Stepup\\\\Identity\\\\Entity\\\\RecoveryToken but returns Surfnet\\\\Stepup\\\\Identity\\\\Entity\\\\RecoveryToken\\|false\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Entity\\RecoveryTokenCollection\:\:first\(\) should return Surfnet\\Stepup\\Identity\\Entity\\RecoveryToken but returns Surfnet\\Stepup\\Identity\\Entity\\RecoveryToken\|false\.$#' + identifier: return.type count: 1 path: ../../src/Surfnet/Stepup/Identity/Entity/RecoveryTokenCollection.php - - message: "#^Cannot call method equals\\(\\) on Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\RegistrationAuthorityRole\\|null\\.$#" + message: '#^Cannot call method equals\(\) on Surfnet\\Stepup\\Identity\\Value\\RegistrationAuthorityRole\|null\.$#' + identifier: method.nonObject count: 1 path: ../../src/Surfnet/Stepup/Identity/Entity/RegistrationAuthority.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Entity\\\\RegistrationAuthorityCollection\\:\\:getValues\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Entity\\RegistrationAuthorityCollection\:\:getValues\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Entity/RegistrationAuthorityCollection.php - - message: "#^Class Surfnet\\\\Stepup\\\\Identity\\\\Entity\\\\SecondFactorCollection extends generic class Doctrine\\\\Common\\\\Collections\\\\ArrayCollection but does not specify its types\\: TKey, T$#" + message: '#^Class Surfnet\\Stepup\\Identity\\Entity\\SecondFactorCollection extends generic class Doctrine\\Common\\Collections\\ArrayCollection but does not specify its types\: TKey, T$#' + identifier: missingType.generics count: 1 path: ../../src/Surfnet/Stepup/Identity/Entity/SecondFactorCollection.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Entity\\\\SecondFactorCollection\\:\\:getSecondFactorWithHighestLoa\\(\\) should return Surfnet\\\\Stepup\\\\Identity\\\\Entity\\\\SecondFactor\\|null but returns mixed\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Entity\\SecondFactorCollection\:\:getSecondFactorWithHighestLoa\(\) should return Surfnet\\Stepup\\Identity\\Entity\\SecondFactor\|null but returns mixed\.$#' + identifier: return.type count: 1 path: ../../src/Surfnet/Stepup/Identity/Entity/SecondFactorCollection.php - - message: "#^Parameter \\#2 \\$callback of function array_reduce expects callable\\(mixed, mixed\\)\\: mixed, Closure\\(Surfnet\\\\Stepup\\\\Identity\\\\Entity\\\\VettedSecondFactor, Surfnet\\\\Stepup\\\\Identity\\\\Entity\\\\VettedSecondFactor\\)\\: Surfnet\\\\Stepup\\\\Identity\\\\Entity\\\\VettedSecondFactor given\\.$#" + message: '#^Parameter \#2 \$callback of function array_reduce expects callable\(mixed, mixed\)\: mixed, Closure\(Surfnet\\Stepup\\Identity\\Entity\\VettedSecondFactor, Surfnet\\Stepup\\Identity\\Entity\\VettedSecondFactor\)\: Surfnet\\Stepup\\Identity\\Entity\\VettedSecondFactor given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/Stepup/Identity/Entity/SecondFactorCollection.php - - message: "#^Cannot call method getCommonName\\(\\) on Surfnet\\\\Stepup\\\\Identity\\\\Api\\\\Identity\\|null\\.$#" + message: '#^Cannot call method getCommonName\(\) on Surfnet\\Stepup\\Identity\\Api\\Identity\|null\.$#' + identifier: method.nonObject count: 1 path: ../../src/Surfnet/Stepup/Identity/Entity/UnverifiedSecondFactor.php - - message: "#^Cannot call method getEmail\\(\\) on Surfnet\\\\Stepup\\\\Identity\\\\Api\\\\Identity\\|null\\.$#" + message: '#^Cannot call method getEmail\(\) on Surfnet\\Stepup\\Identity\\Api\\Identity\|null\.$#' + identifier: method.nonObject count: 1 path: ../../src/Surfnet/Stepup/Identity/Entity/UnverifiedSecondFactor.php - - message: "#^Cannot call method getId\\(\\) on Surfnet\\\\Stepup\\\\Identity\\\\Api\\\\Identity\\|null\\.$#" + message: '#^Cannot call method getId\(\) on Surfnet\\Stepup\\Identity\\Api\\Identity\|null\.$#' + identifier: method.nonObject count: 3 path: ../../src/Surfnet/Stepup/Identity/Entity/UnverifiedSecondFactor.php - - message: "#^Cannot call method getInstitution\\(\\) on Surfnet\\\\Stepup\\\\Identity\\\\Api\\\\Identity\\|null\\.$#" + message: '#^Cannot call method getInstitution\(\) on Surfnet\\Stepup\\Identity\\Api\\Identity\|null\.$#' + identifier: method.nonObject count: 3 path: ../../src/Surfnet/Stepup/Identity/Entity/UnverifiedSecondFactor.php - - message: "#^Cannot call method getPreferredLocale\\(\\) on Surfnet\\\\Stepup\\\\Identity\\\\Api\\\\Identity\\|null\\.$#" + message: '#^Cannot call method getPreferredLocale\(\) on Surfnet\\Stepup\\Identity\\Api\\Identity\|null\.$#' + identifier: method.nonObject count: 1 path: ../../src/Surfnet/Stepup/Identity/Entity/UnverifiedSecondFactor.php - - message: "#^Cannot call method isOpen\\(\\) on Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\EmailVerificationWindow\\|null\\.$#" + message: '#^Cannot call method isOpen\(\) on Surfnet\\Stepup\\Identity\\Value\\EmailVerificationWindow\|null\.$#' + identifier: method.nonObject count: 1 path: ../../src/Surfnet/Stepup/Identity/Entity/UnverifiedSecondFactor.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Entity\\\\UnverifiedSecondFactor\\:\\:getType\\(\\) should return Surfnet\\\\StepupBundle\\\\Value\\\\SecondFactorType but returns Surfnet\\\\StepupBundle\\\\Value\\\\SecondFactorType\\|null\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Entity\\UnverifiedSecondFactor\:\:getType\(\) should return Surfnet\\StepupBundle\\Value\\SecondFactorType but returns Surfnet\\StepupBundle\\Value\\SecondFactorType\|null\.$#' + identifier: return.type count: 1 path: ../../src/Surfnet/Stepup/Identity/Entity/UnverifiedSecondFactor.php - - message: "#^Parameter \\#1 \\$id of static method Surfnet\\\\Stepup\\\\Identity\\\\Entity\\\\VerifiedSecondFactor\\:\\:create\\(\\) expects Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\SecondFactorId, Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\SecondFactorId\\|null given\\.$#" + message: '#^Parameter \#1 \$id of static method Surfnet\\Stepup\\Identity\\Entity\\VerifiedSecondFactor\:\:create\(\) expects Surfnet\\Stepup\\Identity\\Value\\SecondFactorId, Surfnet\\Stepup\\Identity\\Value\\SecondFactorId\|null given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/Stepup/Identity/Entity/UnverifiedSecondFactor.php - - message: "#^Parameter \\#2 \\$identity of static method Surfnet\\\\Stepup\\\\Identity\\\\Entity\\\\VerifiedSecondFactor\\:\\:create\\(\\) expects Surfnet\\\\Stepup\\\\Identity\\\\Api\\\\Identity, Surfnet\\\\Stepup\\\\Identity\\\\Api\\\\Identity\\|null given\\.$#" + message: '#^Parameter \#2 \$identity of static method Surfnet\\Stepup\\Identity\\Entity\\VerifiedSecondFactor\:\:create\(\) expects Surfnet\\Stepup\\Identity\\Api\\Identity, Surfnet\\Stepup\\Identity\\Api\\Identity\|null given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/Stepup/Identity/Entity/UnverifiedSecondFactor.php - - message: "#^Parameter \\#3 \\$secondFactorId of class Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\CompliedWithUnverifiedSecondFactorRevocationEvent constructor expects Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\SecondFactorId, Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\SecondFactorId\\|null given\\.$#" + message: '#^Parameter \#3 \$secondFactorId of class Surfnet\\Stepup\\Identity\\Event\\CompliedWithUnverifiedSecondFactorRevocationEvent constructor expects Surfnet\\Stepup\\Identity\\Value\\SecondFactorId, Surfnet\\Stepup\\Identity\\Value\\SecondFactorId\|null given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/Stepup/Identity/Entity/UnverifiedSecondFactor.php - - message: "#^Parameter \\#3 \\$secondFactorId of class Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\EmailVerifiedEvent constructor expects Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\SecondFactorId, Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\SecondFactorId\\|null given\\.$#" + message: '#^Parameter \#3 \$secondFactorId of class Surfnet\\Stepup\\Identity\\Event\\EmailVerifiedEvent constructor expects Surfnet\\Stepup\\Identity\\Value\\SecondFactorId, Surfnet\\Stepup\\Identity\\Value\\SecondFactorId\|null given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/Stepup/Identity/Entity/UnverifiedSecondFactor.php - - message: "#^Parameter \\#3 \\$secondFactorId of class Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\UnverifiedSecondFactorRevokedEvent constructor expects Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\SecondFactorId, Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\SecondFactorId\\|null given\\.$#" + message: '#^Parameter \#3 \$secondFactorId of class Surfnet\\Stepup\\Identity\\Event\\UnverifiedSecondFactorRevokedEvent constructor expects Surfnet\\Stepup\\Identity\\Value\\SecondFactorId, Surfnet\\Stepup\\Identity\\Value\\SecondFactorId\|null given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/Stepup/Identity/Entity/UnverifiedSecondFactor.php - - message: "#^Parameter \\#3 \\$type of static method Surfnet\\\\Stepup\\\\Identity\\\\Entity\\\\VerifiedSecondFactor\\:\\:create\\(\\) expects Surfnet\\\\StepupBundle\\\\Value\\\\SecondFactorType, Surfnet\\\\StepupBundle\\\\Value\\\\SecondFactorType\\|null given\\.$#" + message: '#^Parameter \#3 \$type of static method Surfnet\\Stepup\\Identity\\Entity\\VerifiedSecondFactor\:\:create\(\) expects Surfnet\\StepupBundle\\Value\\SecondFactorType, Surfnet\\StepupBundle\\Value\\SecondFactorType\|null given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/Stepup/Identity/Entity/UnverifiedSecondFactor.php - - message: "#^Parameter \\#4 \\$secondFactorType of class Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\CompliedWithUnverifiedSecondFactorRevocationEvent constructor expects Surfnet\\\\StepupBundle\\\\Value\\\\SecondFactorType, Surfnet\\\\StepupBundle\\\\Value\\\\SecondFactorType\\|null given\\.$#" + message: '#^Parameter \#4 \$secondFactorType of class Surfnet\\Stepup\\Identity\\Event\\CompliedWithUnverifiedSecondFactorRevocationEvent constructor expects Surfnet\\StepupBundle\\Value\\SecondFactorType, Surfnet\\StepupBundle\\Value\\SecondFactorType\|null given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/Stepup/Identity/Entity/UnverifiedSecondFactor.php - - message: "#^Parameter \\#4 \\$secondFactorType of class Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\EmailVerifiedEvent constructor expects Surfnet\\\\StepupBundle\\\\Value\\\\SecondFactorType, Surfnet\\\\StepupBundle\\\\Value\\\\SecondFactorType\\|null given\\.$#" + message: '#^Parameter \#4 \$secondFactorType of class Surfnet\\Stepup\\Identity\\Event\\EmailVerifiedEvent constructor expects Surfnet\\StepupBundle\\Value\\SecondFactorType, Surfnet\\StepupBundle\\Value\\SecondFactorType\|null given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/Stepup/Identity/Entity/UnverifiedSecondFactor.php - - message: "#^Parameter \\#4 \\$secondFactorType of class Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\UnverifiedSecondFactorRevokedEvent constructor expects Surfnet\\\\StepupBundle\\\\Value\\\\SecondFactorType, Surfnet\\\\StepupBundle\\\\Value\\\\SecondFactorType\\|null given\\.$#" + message: '#^Parameter \#4 \$secondFactorType of class Surfnet\\Stepup\\Identity\\Event\\UnverifiedSecondFactorRevokedEvent constructor expects Surfnet\\StepupBundle\\Value\\SecondFactorType, Surfnet\\StepupBundle\\Value\\SecondFactorType\|null given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/Stepup/Identity/Entity/UnverifiedSecondFactor.php - - message: "#^Cannot call method add\\(\\) on Surfnet\\\\Stepup\\\\DateTime\\\\DateTime\\|null\\.$#" + message: '#^Cannot call method add\(\) on Surfnet\\Stepup\\DateTime\\DateTime\|null\.$#' + identifier: method.nonObject count: 1 path: ../../src/Surfnet/Stepup/Identity/Entity/VerifiedSecondFactor.php - - message: "#^Cannot call method getCommonName\\(\\) on Surfnet\\\\Stepup\\\\Identity\\\\Api\\\\Identity\\|null\\.$#" + message: '#^Cannot call method getCommonName\(\) on Surfnet\\Stepup\\Identity\\Api\\Identity\|null\.$#' + identifier: method.nonObject count: 2 path: ../../src/Surfnet/Stepup/Identity/Entity/VerifiedSecondFactor.php - - message: "#^Cannot call method getEmail\\(\\) on Surfnet\\\\Stepup\\\\Identity\\\\Api\\\\Identity\\|null\\.$#" + message: '#^Cannot call method getEmail\(\) on Surfnet\\Stepup\\Identity\\Api\\Identity\|null\.$#' + identifier: method.nonObject count: 2 path: ../../src/Surfnet/Stepup/Identity/Entity/VerifiedSecondFactor.php - - message: "#^Cannot call method getId\\(\\) on Surfnet\\\\Stepup\\\\Identity\\\\Api\\\\Identity\\|null\\.$#" + message: '#^Cannot call method getId\(\) on Surfnet\\Stepup\\Identity\\Api\\Identity\|null\.$#' + identifier: method.nonObject count: 4 path: ../../src/Surfnet/Stepup/Identity/Entity/VerifiedSecondFactor.php - - message: "#^Cannot call method getInstitution\\(\\) on Surfnet\\\\Stepup\\\\Identity\\\\Api\\\\Identity\\|null\\.$#" + message: '#^Cannot call method getInstitution\(\) on Surfnet\\Stepup\\Identity\\Api\\Identity\|null\.$#' + identifier: method.nonObject count: 4 path: ../../src/Surfnet/Stepup/Identity/Entity/VerifiedSecondFactor.php - - message: "#^Cannot call method getNameId\\(\\) on Surfnet\\\\Stepup\\\\Identity\\\\Api\\\\Identity\\|null\\.$#" + message: '#^Cannot call method getNameId\(\) on Surfnet\\Stepup\\Identity\\Api\\Identity\|null\.$#' + identifier: method.nonObject count: 2 path: ../../src/Surfnet/Stepup/Identity/Entity/VerifiedSecondFactor.php - - message: "#^Cannot call method getPreferredLocale\\(\\) on Surfnet\\\\Stepup\\\\Identity\\\\Api\\\\Identity\\|null\\.$#" + message: '#^Cannot call method getPreferredLocale\(\) on Surfnet\\Stepup\\Identity\\Api\\Identity\|null\.$#' + identifier: method.nonObject count: 2 path: ../../src/Surfnet/Stepup/Identity/Entity/VerifiedSecondFactor.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Entity\\\\VerifiedSecondFactor\\:\\:getType\\(\\) should return Surfnet\\\\StepupBundle\\\\Value\\\\SecondFactorType but returns Surfnet\\\\StepupBundle\\\\Value\\\\SecondFactorType\\|null\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Entity\\VerifiedSecondFactor\:\:getType\(\) should return Surfnet\\StepupBundle\\Value\\SecondFactorType but returns Surfnet\\StepupBundle\\Value\\SecondFactorType\|null\.$#' + identifier: return.type count: 1 path: ../../src/Surfnet/Stepup/Identity/Entity/VerifiedSecondFactor.php - - message: "#^Parameter \\#1 \\$id of static method Surfnet\\\\Stepup\\\\Identity\\\\Entity\\\\VettedSecondFactor\\:\\:create\\(\\) expects Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\SecondFactorId, Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\SecondFactorId\\|null given\\.$#" + message: '#^Parameter \#1 \$id of static method Surfnet\\Stepup\\Identity\\Entity\\VettedSecondFactor\:\:create\(\) expects Surfnet\\Stepup\\Identity\\Value\\SecondFactorId, Surfnet\\Stepup\\Identity\\Value\\SecondFactorId\|null given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/Stepup/Identity/Entity/VerifiedSecondFactor.php - - message: "#^Parameter \\#1 \\$secondFactorType of method Surfnet\\\\StepupBundle\\\\Service\\\\SecondFactorTypeService\\:\\:getLevel\\(\\) expects Surfnet\\\\StepupBundle\\\\Value\\\\SecondFactorType, Surfnet\\\\StepupBundle\\\\Value\\\\SecondFactorType\\|null given\\.$#" + message: '#^Parameter \#1 \$secondFactorType of method Surfnet\\StepupBundle\\Service\\SecondFactorTypeService\:\:getLevel\(\) expects Surfnet\\StepupBundle\\Value\\SecondFactorType, Surfnet\\StepupBundle\\Value\\SecondFactorType\|null given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/Stepup/Identity/Entity/VerifiedSecondFactor.php - - message: "#^Parameter \\#2 \\$identity of static method Surfnet\\\\Stepup\\\\Identity\\\\Entity\\\\VettedSecondFactor\\:\\:create\\(\\) expects Surfnet\\\\Stepup\\\\Identity\\\\Api\\\\Identity, Surfnet\\\\Stepup\\\\Identity\\\\Api\\\\Identity\\|null given\\.$#" + message: '#^Parameter \#2 \$identity of static method Surfnet\\Stepup\\Identity\\Entity\\VettedSecondFactor\:\:create\(\) expects Surfnet\\Stepup\\Identity\\Api\\Identity, Surfnet\\Stepup\\Identity\\Api\\Identity\|null given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/Stepup/Identity/Entity/VerifiedSecondFactor.php - - message: "#^Parameter \\#3 \\$secondFactorId of class Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\CompliedWithVerifiedSecondFactorRevocationEvent constructor expects Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\SecondFactorId, Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\SecondFactorId\\|null given\\.$#" + message: '#^Parameter \#3 \$secondFactorId of class Surfnet\\Stepup\\Identity\\Event\\CompliedWithVerifiedSecondFactorRevocationEvent constructor expects Surfnet\\Stepup\\Identity\\Value\\SecondFactorId, Surfnet\\Stepup\\Identity\\Value\\SecondFactorId\|null given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/Stepup/Identity/Entity/VerifiedSecondFactor.php - - message: "#^Parameter \\#3 \\$secondFactorId of class Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\VerifiedSecondFactorRevokedEvent constructor expects Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\SecondFactorId, Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\SecondFactorId\\|null given\\.$#" + message: '#^Parameter \#3 \$secondFactorId of class Surfnet\\Stepup\\Identity\\Event\\VerifiedSecondFactorRevokedEvent constructor expects Surfnet\\Stepup\\Identity\\Value\\SecondFactorId, Surfnet\\Stepup\\Identity\\Value\\SecondFactorId\|null given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/Stepup/Identity/Entity/VerifiedSecondFactor.php - - message: "#^Parameter \\#3 \\$type of static method Surfnet\\\\Stepup\\\\Identity\\\\Entity\\\\VettedSecondFactor\\:\\:create\\(\\) expects Surfnet\\\\StepupBundle\\\\Value\\\\SecondFactorType, Surfnet\\\\StepupBundle\\\\Value\\\\SecondFactorType\\|null given\\.$#" + message: '#^Parameter \#3 \$type of static method Surfnet\\Stepup\\Identity\\Entity\\VettedSecondFactor\:\:create\(\) expects Surfnet\\StepupBundle\\Value\\SecondFactorType, Surfnet\\StepupBundle\\Value\\SecondFactorType\|null given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/Stepup/Identity/Entity/VerifiedSecondFactor.php - - message: "#^Parameter \\#4 \\$secondFactorId of class Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\SecondFactorVettedEvent constructor expects Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\SecondFactorId, Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\SecondFactorId\\|null given\\.$#" + message: '#^Parameter \#4 \$secondFactorId of class Surfnet\\Stepup\\Identity\\Event\\SecondFactorVettedEvent constructor expects Surfnet\\Stepup\\Identity\\Value\\SecondFactorId, Surfnet\\Stepup\\Identity\\Value\\SecondFactorId\|null given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/Stepup/Identity/Entity/VerifiedSecondFactor.php - - message: "#^Parameter \\#4 \\$secondFactorId of class Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\SecondFactorVettedWithoutTokenProofOfPossession constructor expects Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\SecondFactorId, Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\SecondFactorId\\|null given\\.$#" + message: '#^Parameter \#4 \$secondFactorId of class Surfnet\\Stepup\\Identity\\Event\\SecondFactorVettedWithoutTokenProofOfPossession constructor expects Surfnet\\Stepup\\Identity\\Value\\SecondFactorId, Surfnet\\Stepup\\Identity\\Value\\SecondFactorId\|null given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/Stepup/Identity/Entity/VerifiedSecondFactor.php - - message: "#^Parameter \\#4 \\$secondFactorType of class Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\CompliedWithVerifiedSecondFactorRevocationEvent constructor expects Surfnet\\\\StepupBundle\\\\Value\\\\SecondFactorType, Surfnet\\\\StepupBundle\\\\Value\\\\SecondFactorType\\|null given\\.$#" + message: '#^Parameter \#4 \$secondFactorType of class Surfnet\\Stepup\\Identity\\Event\\CompliedWithVerifiedSecondFactorRevocationEvent constructor expects Surfnet\\StepupBundle\\Value\\SecondFactorType, Surfnet\\StepupBundle\\Value\\SecondFactorType\|null given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/Stepup/Identity/Entity/VerifiedSecondFactor.php - - message: "#^Parameter \\#4 \\$secondFactorType of class Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\VerifiedSecondFactorRevokedEvent constructor expects Surfnet\\\\StepupBundle\\\\Value\\\\SecondFactorType, Surfnet\\\\StepupBundle\\\\Value\\\\SecondFactorType\\|null given\\.$#" + message: '#^Parameter \#4 \$secondFactorType of class Surfnet\\Stepup\\Identity\\Event\\VerifiedSecondFactorRevokedEvent constructor expects Surfnet\\StepupBundle\\Value\\SecondFactorType, Surfnet\\StepupBundle\\Value\\SecondFactorType\|null given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/Stepup/Identity/Entity/VerifiedSecondFactor.php - - message: "#^Parameter \\#5 \\$secondFactorType of class Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\SecondFactorVettedEvent constructor expects Surfnet\\\\StepupBundle\\\\Value\\\\SecondFactorType, Surfnet\\\\StepupBundle\\\\Value\\\\SecondFactorType\\|null given\\.$#" + message: '#^Parameter \#5 \$secondFactorType of class Surfnet\\Stepup\\Identity\\Event\\SecondFactorVettedEvent constructor expects Surfnet\\StepupBundle\\Value\\SecondFactorType, Surfnet\\StepupBundle\\Value\\SecondFactorType\|null given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/Stepup/Identity/Entity/VerifiedSecondFactor.php - - message: "#^Parameter \\#5 \\$secondFactorType of class Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\SecondFactorVettedWithoutTokenProofOfPossession constructor expects Surfnet\\\\StepupBundle\\\\Value\\\\SecondFactorType, Surfnet\\\\StepupBundle\\\\Value\\\\SecondFactorType\\|null given\\.$#" + message: '#^Parameter \#5 \$secondFactorType of class Surfnet\\Stepup\\Identity\\Event\\SecondFactorVettedWithoutTokenProofOfPossession constructor expects Surfnet\\StepupBundle\\Value\\SecondFactorType, Surfnet\\StepupBundle\\Value\\SecondFactorType\|null given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/Stepup/Identity/Entity/VerifiedSecondFactor.php - - message: "#^Cannot call method getId\\(\\) on Surfnet\\\\Stepup\\\\Identity\\\\Api\\\\Identity\\|null\\.$#" + message: '#^Cannot call method getId\(\) on Surfnet\\Stepup\\Identity\\Api\\Identity\|null\.$#' + identifier: method.nonObject count: 2 path: ../../src/Surfnet/Stepup/Identity/Entity/VettedSecondFactor.php - - message: "#^Cannot call method getInstitution\\(\\) on Surfnet\\\\Stepup\\\\Identity\\\\Api\\\\Identity\\|null\\.$#" + message: '#^Cannot call method getInstitution\(\) on Surfnet\\Stepup\\Identity\\Api\\Identity\|null\.$#' + identifier: method.nonObject count: 2 path: ../../src/Surfnet/Stepup/Identity/Entity/VettedSecondFactor.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Entity\\\\VettedSecondFactor\\:\\:getType\\(\\) should return Surfnet\\\\StepupBundle\\\\Value\\\\SecondFactorType but returns Surfnet\\\\StepupBundle\\\\Value\\\\SecondFactorType\\|null\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Entity\\VettedSecondFactor\:\:getType\(\) should return Surfnet\\StepupBundle\\Value\\SecondFactorType but returns Surfnet\\StepupBundle\\Value\\SecondFactorType\|null\.$#' + identifier: return.type count: 1 path: ../../src/Surfnet/Stepup/Identity/Entity/VettedSecondFactor.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Entity\\\\VettedSecondFactor\\:\\:vettingType\\(\\) should return Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\VettingType but returns Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\VettingType\\|null\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Entity\\VettedSecondFactor\:\:vettingType\(\) should return Surfnet\\Stepup\\Identity\\Value\\VettingType but returns Surfnet\\Stepup\\Identity\\Value\\VettingType\|null\.$#' + identifier: return.type count: 1 path: ../../src/Surfnet/Stepup/Identity/Entity/VettedSecondFactor.php - - message: "#^Parameter \\#3 \\$secondFactorId of class Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\CompliedWithVettedSecondFactorRevocationEvent constructor expects Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\SecondFactorId, Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\SecondFactorId\\|null given\\.$#" + message: '#^Parameter \#3 \$secondFactorId of class Surfnet\\Stepup\\Identity\\Event\\CompliedWithVettedSecondFactorRevocationEvent constructor expects Surfnet\\Stepup\\Identity\\Value\\SecondFactorId, Surfnet\\Stepup\\Identity\\Value\\SecondFactorId\|null given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/Stepup/Identity/Entity/VettedSecondFactor.php - - message: "#^Parameter \\#3 \\$secondFactorId of class Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\VettedSecondFactorRevokedEvent constructor expects Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\SecondFactorId, Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\SecondFactorId\\|null given\\.$#" + message: '#^Parameter \#3 \$secondFactorId of class Surfnet\\Stepup\\Identity\\Event\\VettedSecondFactorRevokedEvent constructor expects Surfnet\\Stepup\\Identity\\Value\\SecondFactorId, Surfnet\\Stepup\\Identity\\Value\\SecondFactorId\|null given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/Stepup/Identity/Entity/VettedSecondFactor.php - - message: "#^Parameter \\#4 \\$secondFactorType of class Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\CompliedWithVettedSecondFactorRevocationEvent constructor expects Surfnet\\\\StepupBundle\\\\Value\\\\SecondFactorType, Surfnet\\\\StepupBundle\\\\Value\\\\SecondFactorType\\|null given\\.$#" + message: '#^Parameter \#4 \$secondFactorType of class Surfnet\\Stepup\\Identity\\Event\\CompliedWithVettedSecondFactorRevocationEvent constructor expects Surfnet\\StepupBundle\\Value\\SecondFactorType, Surfnet\\StepupBundle\\Value\\SecondFactorType\|null given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/Stepup/Identity/Entity/VettedSecondFactor.php - - message: "#^Parameter \\#4 \\$secondFactorType of class Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\VettedSecondFactorRevokedEvent constructor expects Surfnet\\\\StepupBundle\\\\Value\\\\SecondFactorType, Surfnet\\\\StepupBundle\\\\Value\\\\SecondFactorType\\|null given\\.$#" + message: '#^Parameter \#4 \$secondFactorType of class Surfnet\\Stepup\\Identity\\Event\\VettedSecondFactorRevokedEvent constructor expects Surfnet\\StepupBundle\\Value\\SecondFactorType, Surfnet\\StepupBundle\\Value\\SecondFactorType\|null given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/Stepup/Identity/Entity/VettedSecondFactor.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\AppointedAsRaEvent\\:\\:deserialize\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Event\\AppointedAsRaEvent\:\:deserialize\(\) has parameter \$data with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/AppointedAsRaEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\AppointedAsRaEvent\\:\\:obtainUserData\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Event\\AppointedAsRaEvent\:\:obtainUserData\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/AppointedAsRaEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\AppointedAsRaEvent\\:\\:serialize\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Event\\AppointedAsRaEvent\:\:serialize\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/AppointedAsRaEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\AppointedAsRaForInstitutionEvent\\:\\:deserialize\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Event\\AppointedAsRaForInstitutionEvent\:\:deserialize\(\) has parameter \$data with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/AppointedAsRaForInstitutionEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\AppointedAsRaForInstitutionEvent\\:\\:obtainUserData\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Event\\AppointedAsRaForInstitutionEvent\:\:obtainUserData\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/AppointedAsRaForInstitutionEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\AppointedAsRaaEvent\\:\\:deserialize\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Event\\AppointedAsRaaEvent\:\:deserialize\(\) has parameter \$data with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/AppointedAsRaaEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\AppointedAsRaaEvent\\:\\:obtainUserData\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Event\\AppointedAsRaaEvent\:\:obtainUserData\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/AppointedAsRaaEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\AppointedAsRaaEvent\\:\\:serialize\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Event\\AppointedAsRaaEvent\:\:serialize\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/AppointedAsRaaEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\AppointedAsRaaForInstitutionEvent\\:\\:deserialize\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Event\\AppointedAsRaaForInstitutionEvent\:\:deserialize\(\) has parameter \$data with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/AppointedAsRaaForInstitutionEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\AppointedAsRaaForInstitutionEvent\\:\\:obtainUserData\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Event\\AppointedAsRaaForInstitutionEvent\:\:obtainUserData\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/AppointedAsRaaForInstitutionEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\CompliedWithRecoveryCodeRevocationEvent\\:\\:deserialize\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Event\\CompliedWithRecoveryCodeRevocationEvent\:\:deserialize\(\) has parameter \$data with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/CompliedWithRecoveryCodeRevocationEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\CompliedWithRecoveryCodeRevocationEvent\\:\\:obtainUserData\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Event\\CompliedWithRecoveryCodeRevocationEvent\:\:obtainUserData\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/CompliedWithRecoveryCodeRevocationEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\CompliedWithRecoveryCodeRevocationEvent\\:\\:serialize\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Event\\CompliedWithRecoveryCodeRevocationEvent\:\:serialize\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/CompliedWithRecoveryCodeRevocationEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\CompliedWithRevocationEvent\\:\\:deserialize\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Event\\CompliedWithRevocationEvent\:\:deserialize\(\) has parameter \$data with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/CompliedWithRevocationEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\CompliedWithRevocationEvent\\:\\:obtainUserData\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Event\\CompliedWithRevocationEvent\:\:obtainUserData\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/CompliedWithRevocationEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\CompliedWithRevocationEvent\\:\\:serialize\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Event\\CompliedWithRevocationEvent\:\:serialize\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/CompliedWithRevocationEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\EmailVerifiedEvent\\:\\:deserialize\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Event\\EmailVerifiedEvent\:\:deserialize\(\) has parameter \$data with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/EmailVerifiedEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\EmailVerifiedEvent\\:\\:obtainUserData\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Event\\EmailVerifiedEvent\:\:obtainUserData\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/EmailVerifiedEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\GssfPossessionProvenAndVerifiedEvent\\:\\:deserialize\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Event\\GssfPossessionProvenAndVerifiedEvent\:\:deserialize\(\) has parameter \$data with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/GssfPossessionProvenAndVerifiedEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\GssfPossessionProvenAndVerifiedEvent\\:\\:obtainUserData\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Event\\GssfPossessionProvenAndVerifiedEvent\:\:obtainUserData\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/GssfPossessionProvenAndVerifiedEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\GssfPossessionProvenEvent\\:\\:deserialize\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Event\\GssfPossessionProvenEvent\:\:deserialize\(\) has parameter \$data with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/GssfPossessionProvenEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\GssfPossessionProvenEvent\\:\\:obtainUserData\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Event\\GssfPossessionProvenEvent\:\:obtainUserData\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/GssfPossessionProvenEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\IdentityAccreditedAsRaEvent\\:\\:deserialize\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Event\\IdentityAccreditedAsRaEvent\:\:deserialize\(\) has parameter \$data with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/IdentityAccreditedAsRaEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\IdentityAccreditedAsRaEvent\\:\\:obtainUserData\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Event\\IdentityAccreditedAsRaEvent\:\:obtainUserData\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/IdentityAccreditedAsRaEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\IdentityAccreditedAsRaEvent\\:\\:serialize\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Event\\IdentityAccreditedAsRaEvent\:\:serialize\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/IdentityAccreditedAsRaEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\IdentityAccreditedAsRaForInstitutionEvent\\:\\:deserialize\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Event\\IdentityAccreditedAsRaForInstitutionEvent\:\:deserialize\(\) has parameter \$data with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/IdentityAccreditedAsRaForInstitutionEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\IdentityAccreditedAsRaaEvent\\:\\:obtainUserData\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Event\\IdentityAccreditedAsRaaEvent\:\:obtainUserData\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/IdentityAccreditedAsRaaEvent.php - - message: "#^Parameter \\#1 \\$contactInformation of class Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\ContactInformation constructor expects string, mixed given\\.$#" + message: '#^Parameter \#1 \$contactInformation of class Surfnet\\Stepup\\Identity\\Value\\ContactInformation constructor expects string, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/IdentityAccreditedAsRaaEvent.php - - message: "#^Parameter \\#1 \\$data of static method Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\RegistrationAuthorityRole\\:\\:deserialize\\(\\) expects array, mixed given\\.$#" + message: '#^Parameter \#1 \$data of static method Surfnet\\Stepup\\Identity\\Value\\RegistrationAuthorityRole\:\:deserialize\(\) expects array, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/IdentityAccreditedAsRaaEvent.php - - message: "#^Parameter \\#1 \\$institution of class Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\Institution constructor expects string, mixed given\\.$#" + message: '#^Parameter \#1 \$institution of class Surfnet\\Stepup\\Identity\\Value\\Institution constructor expects string, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/IdentityAccreditedAsRaaEvent.php - - message: "#^Parameter \\#1 \\$location of class Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\Location constructor expects string, mixed given\\.$#" + message: '#^Parameter \#1 \$location of class Surfnet\\Stepup\\Identity\\Value\\Location constructor expects string, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/IdentityAccreditedAsRaaEvent.php - - message: "#^Parameter \\#1 \\$value of class Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\IdentityId constructor expects string, mixed given\\.$#" + message: '#^Parameter \#1 \$value of class Surfnet\\Stepup\\Identity\\Value\\IdentityId constructor expects string, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/IdentityAccreditedAsRaaEvent.php - - message: "#^Parameter \\#1 \\$value of class Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\NameId constructor expects string, mixed given\\.$#" + message: '#^Parameter \#1 \$value of class Surfnet\\Stepup\\Identity\\Value\\NameId constructor expects string, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/IdentityAccreditedAsRaaEvent.php - - message: "#^Parameter \\#1 \\$contactInformation of class Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\ContactInformation constructor expects string, mixed given\\.$#" + message: '#^Parameter \#1 \$contactInformation of class Surfnet\\Stepup\\Identity\\Value\\ContactInformation constructor expects string, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/IdentityAccreditedAsRaaForInstitutionEvent.php - - message: "#^Parameter \\#1 \\$data of static method Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\RegistrationAuthorityRole\\:\\:deserialize\\(\\) expects array, mixed given\\.$#" + message: '#^Parameter \#1 \$data of static method Surfnet\\Stepup\\Identity\\Value\\RegistrationAuthorityRole\:\:deserialize\(\) expects array, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/IdentityAccreditedAsRaaForInstitutionEvent.php - - message: "#^Parameter \\#1 \\$institution of class Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\Institution constructor expects string, mixed given\\.$#" + message: '#^Parameter \#1 \$institution of class Surfnet\\Stepup\\Identity\\Value\\Institution constructor expects string, mixed given\.$#' + identifier: argument.type count: 2 path: ../../src/Surfnet/Stepup/Identity/Event/IdentityAccreditedAsRaaForInstitutionEvent.php - - message: "#^Parameter \\#1 \\$location of class Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\Location constructor expects string, mixed given\\.$#" + message: '#^Parameter \#1 \$location of class Surfnet\\Stepup\\Identity\\Value\\Location constructor expects string, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/IdentityAccreditedAsRaaForInstitutionEvent.php - - message: "#^Parameter \\#1 \\$value of class Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\IdentityId constructor expects string, mixed given\\.$#" + message: '#^Parameter \#1 \$value of class Surfnet\\Stepup\\Identity\\Value\\IdentityId constructor expects string, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/IdentityAccreditedAsRaaForInstitutionEvent.php - - message: "#^Parameter \\#1 \\$value of class Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\NameId constructor expects string, mixed given\\.$#" + message: '#^Parameter \#1 \$value of class Surfnet\\Stepup\\Identity\\Value\\NameId constructor expects string, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/IdentityAccreditedAsRaaForInstitutionEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\IdentityCreatedEvent\\:\\:deserialize\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Event\\IdentityCreatedEvent\:\:deserialize\(\) has parameter \$data with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/IdentityCreatedEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\IdentityCreatedEvent\\:\\:obtainUserData\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Event\\IdentityCreatedEvent\:\:obtainUserData\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/IdentityCreatedEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\IdentityEmailChangedEvent\\:\\:deserialize\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Event\\IdentityEmailChangedEvent\:\:deserialize\(\) has parameter \$data with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/IdentityEmailChangedEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\IdentityEmailChangedEvent\\:\\:obtainUserData\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Event\\IdentityEmailChangedEvent\:\:obtainUserData\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/IdentityEmailChangedEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\IdentityForgottenEvent\\:\\:deserialize\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Event\\IdentityForgottenEvent\:\:deserialize\(\) has parameter \$data with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/IdentityForgottenEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\IdentityForgottenEvent\\:\\:obtainUserData\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Event\\IdentityForgottenEvent\:\:obtainUserData\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/IdentityForgottenEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\IdentityRenamedEvent\\:\\:deserialize\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Event\\IdentityRenamedEvent\:\:deserialize\(\) has parameter \$data with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/IdentityRenamedEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\IdentityRenamedEvent\\:\\:obtainUserData\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Event\\IdentityRenamedEvent\:\:obtainUserData\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/IdentityRenamedEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\InstitutionsAddedToWhitelistEvent\\:\\:deserialize\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Event\\InstitutionsAddedToWhitelistEvent\:\:deserialize\(\) has parameter \$data with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/InstitutionsAddedToWhitelistEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\InstitutionsRemovedFromWhitelistEvent\\:\\:deserialize\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Event\\InstitutionsRemovedFromWhitelistEvent\:\:deserialize\(\) has parameter \$data with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/InstitutionsRemovedFromWhitelistEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\LocalePreferenceExpressedEvent\\:\\:deserialize\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Event\\LocalePreferenceExpressedEvent\:\:deserialize\(\) has parameter \$data with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/LocalePreferenceExpressedEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\LocalePreferenceExpressedEvent\\:\\:obtainUserData\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Event\\LocalePreferenceExpressedEvent\:\:obtainUserData\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/LocalePreferenceExpressedEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\PhonePossessionProvenAndVerifiedEvent\\:\\:deserialize\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Event\\PhonePossessionProvenAndVerifiedEvent\:\:deserialize\(\) has parameter \$data with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/PhonePossessionProvenAndVerifiedEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\PhonePossessionProvenAndVerifiedEvent\\:\\:obtainUserData\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Event\\PhonePossessionProvenAndVerifiedEvent\:\:obtainUserData\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/PhonePossessionProvenAndVerifiedEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\PhonePossessionProvenEvent\\:\\:deserialize\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Event\\PhonePossessionProvenEvent\:\:deserialize\(\) has parameter \$data with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/PhonePossessionProvenEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\PhonePossessionProvenEvent\\:\\:obtainUserData\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Event\\PhonePossessionProvenEvent\:\:obtainUserData\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/PhonePossessionProvenEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\PhoneRecoveryTokenPossessionProvenEvent\\:\\:deserialize\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Event\\PhoneRecoveryTokenPossessionProvenEvent\:\:deserialize\(\) has parameter \$data with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/PhoneRecoveryTokenPossessionProvenEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\PhoneRecoveryTokenPossessionProvenEvent\\:\\:obtainUserData\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Event\\PhoneRecoveryTokenPossessionProvenEvent\:\:obtainUserData\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/PhoneRecoveryTokenPossessionProvenEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\RecoveryTokenRevokedEvent\\:\\:deserialize\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Event\\RecoveryTokenRevokedEvent\:\:deserialize\(\) has parameter \$data with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/RecoveryTokenRevokedEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\RecoveryTokenRevokedEvent\\:\\:obtainUserData\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Event\\RecoveryTokenRevokedEvent\:\:obtainUserData\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/RecoveryTokenRevokedEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\RecoveryTokenRevokedEvent\\:\\:serialize\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Event\\RecoveryTokenRevokedEvent\:\:serialize\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/RecoveryTokenRevokedEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\RegistrationAuthorityInformationAmendedEvent\\:\\:deserialize\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Event\\RegistrationAuthorityInformationAmendedEvent\:\:deserialize\(\) has parameter \$data with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/RegistrationAuthorityInformationAmendedEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\RegistrationAuthorityInformationAmendedEvent\\:\\:obtainUserData\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Event\\RegistrationAuthorityInformationAmendedEvent\:\:obtainUserData\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/RegistrationAuthorityInformationAmendedEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\RegistrationAuthorityInformationAmendedEvent\\:\\:serialize\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Event\\RegistrationAuthorityInformationAmendedEvent\:\:serialize\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/RegistrationAuthorityInformationAmendedEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\RegistrationAuthorityInformationAmendedForInstitutionEvent\\:\\:deserialize\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Event\\RegistrationAuthorityInformationAmendedForInstitutionEvent\:\:deserialize\(\) has parameter \$data with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/RegistrationAuthorityInformationAmendedForInstitutionEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\RegistrationAuthorityInformationAmendedForInstitutionEvent\\:\\:obtainUserData\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Event\\RegistrationAuthorityInformationAmendedForInstitutionEvent\:\:obtainUserData\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/RegistrationAuthorityInformationAmendedForInstitutionEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\RegistrationAuthorityInformationAmendedForInstitutionEvent\\:\\:serialize\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Event\\RegistrationAuthorityInformationAmendedForInstitutionEvent\:\:serialize\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/RegistrationAuthorityInformationAmendedForInstitutionEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\RegistrationAuthorityRetractedEvent\\:\\:deserialize\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Event\\RegistrationAuthorityRetractedEvent\:\:deserialize\(\) has parameter \$data with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/RegistrationAuthorityRetractedEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\RegistrationAuthorityRetractedEvent\\:\\:obtainUserData\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Event\\RegistrationAuthorityRetractedEvent\:\:obtainUserData\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/RegistrationAuthorityRetractedEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\RegistrationAuthorityRetractedEvent\\:\\:serialize\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Event\\RegistrationAuthorityRetractedEvent\:\:serialize\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/RegistrationAuthorityRetractedEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\RegistrationAuthorityRetractedForInstitutionEvent\\:\\:deserialize\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Event\\RegistrationAuthorityRetractedForInstitutionEvent\:\:deserialize\(\) has parameter \$data with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/RegistrationAuthorityRetractedForInstitutionEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\RegistrationAuthorityRetractedForInstitutionEvent\\:\\:obtainUserData\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Event\\RegistrationAuthorityRetractedForInstitutionEvent\:\:obtainUserData\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/RegistrationAuthorityRetractedForInstitutionEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\SafeStoreSecretRecoveryTokenPossessionPromisedEvent\\:\\:deserialize\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Event\\SafeStoreSecretRecoveryTokenPossessionPromisedEvent\:\:deserialize\(\) has parameter \$data with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/SafeStoreSecretRecoveryTokenPossessionPromisedEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\SafeStoreSecretRecoveryTokenPossessionPromisedEvent\\:\\:obtainUserData\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Event\\SafeStoreSecretRecoveryTokenPossessionPromisedEvent\:\:obtainUserData\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/SafeStoreSecretRecoveryTokenPossessionPromisedEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\SecondFactorMigratedEvent\\:\\:deserialize\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Event\\SecondFactorMigratedEvent\:\:deserialize\(\) has parameter \$data with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/SecondFactorMigratedEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\SecondFactorMigratedEvent\\:\\:obtainUserData\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Event\\SecondFactorMigratedEvent\:\:obtainUserData\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/SecondFactorMigratedEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\SecondFactorMigratedToEvent\\:\\:deserialize\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Event\\SecondFactorMigratedToEvent\:\:deserialize\(\) has parameter \$data with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/SecondFactorMigratedToEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\SecondFactorMigratedToEvent\\:\\:obtainUserData\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Event\\SecondFactorMigratedToEvent\:\:obtainUserData\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/SecondFactorMigratedToEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\SecondFactorRevokedEvent\\:\\:deserialize\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Event\\SecondFactorRevokedEvent\:\:deserialize\(\) has parameter \$data with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/SecondFactorRevokedEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\SecondFactorRevokedEvent\\:\\:obtainUserData\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Event\\SecondFactorRevokedEvent\:\:obtainUserData\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/SecondFactorRevokedEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\SecondFactorRevokedEvent\\:\\:serialize\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Event\\SecondFactorRevokedEvent\:\:serialize\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/SecondFactorRevokedEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\SecondFactorVettedEvent\\:\\:deserialize\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Event\\SecondFactorVettedEvent\:\:deserialize\(\) has parameter \$data with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/SecondFactorVettedEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\SecondFactorVettedEvent\\:\\:obtainUserData\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Event\\SecondFactorVettedEvent\:\:obtainUserData\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/SecondFactorVettedEvent.php - - message: "#^Parameter \\#1 \\$vettingType of method Surfnet\\\\StepupMiddleware\\\\CommandHandlingBundle\\\\SensitiveData\\\\SensitiveData\\:\\:withVettingType\\(\\) expects Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\VettingType, Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\VettingType\\|null given\\.$#" + message: '#^Parameter \#1 \$vettingType of method Surfnet\\StepupMiddleware\\CommandHandlingBundle\\SensitiveData\\SensitiveData\:\:withVettingType\(\) expects Surfnet\\Stepup\\Identity\\Value\\VettingType, Surfnet\\Stepup\\Identity\\Value\\VettingType\|null given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/SecondFactorVettedEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\SecondFactorVettedWithoutTokenProofOfPossession\\:\\:deserialize\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Event\\SecondFactorVettedWithoutTokenProofOfPossession\:\:deserialize\(\) has parameter \$data with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/SecondFactorVettedWithoutTokenProofOfPossession.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\SecondFactorVettedWithoutTokenProofOfPossession\\:\\:obtainUserData\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Event\\SecondFactorVettedWithoutTokenProofOfPossession\:\:obtainUserData\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/SecondFactorVettedWithoutTokenProofOfPossession.php - - message: "#^Parameter \\#1 \\$vettingType of method Surfnet\\\\StepupMiddleware\\\\CommandHandlingBundle\\\\SensitiveData\\\\SensitiveData\\:\\:withVettingType\\(\\) expects Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\VettingType, Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\VettingType\\|null given\\.$#" + message: '#^Parameter \#1 \$vettingType of method Surfnet\\StepupMiddleware\\CommandHandlingBundle\\SensitiveData\\SensitiveData\:\:withVettingType\(\) expects Surfnet\\Stepup\\Identity\\Value\\VettingType, Surfnet\\Stepup\\Identity\\Value\\VettingType\|null given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/SecondFactorVettedWithoutTokenProofOfPossession.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\U2fDevicePossessionProvenAndVerifiedEvent\\:\\:deserialize\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Event\\U2fDevicePossessionProvenAndVerifiedEvent\:\:deserialize\(\) has parameter \$data with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/U2fDevicePossessionProvenAndVerifiedEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\U2fDevicePossessionProvenAndVerifiedEvent\\:\\:obtainUserData\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Event\\U2fDevicePossessionProvenAndVerifiedEvent\:\:obtainUserData\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/U2fDevicePossessionProvenAndVerifiedEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\U2fDevicePossessionProvenEvent\\:\\:deserialize\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Event\\U2fDevicePossessionProvenEvent\:\:deserialize\(\) has parameter \$data with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/U2fDevicePossessionProvenEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\U2fDevicePossessionProvenEvent\\:\\:obtainUserData\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Event\\U2fDevicePossessionProvenEvent\:\:obtainUserData\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/U2fDevicePossessionProvenEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\VettedSecondFactorsAllRevokedEvent\\:\\:deserialize\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Event\\VettedSecondFactorsAllRevokedEvent\:\:deserialize\(\) has parameter \$data with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/VettedSecondFactorsAllRevokedEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\VettedSecondFactorsAllRevokedEvent\\:\\:obtainUserData\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Event\\VettedSecondFactorsAllRevokedEvent\:\:obtainUserData\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/VettedSecondFactorsAllRevokedEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\VettedSecondFactorsAllRevokedEvent\\:\\:serialize\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Event\\VettedSecondFactorsAllRevokedEvent\:\:serialize\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/VettedSecondFactorsAllRevokedEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\VettingTypeHintsSavedEvent\\:\\:deserialize\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Event\\VettingTypeHintsSavedEvent\:\:deserialize\(\) has parameter \$data with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/VettingTypeHintsSavedEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\VettingTypeHintsSavedEvent\\:\\:obtainUserData\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Event\\VettingTypeHintsSavedEvent\:\:obtainUserData\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/VettingTypeHintsSavedEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\VettingTypeHintsSavedEvent\\:\\:serialize\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Event\\VettingTypeHintsSavedEvent\:\:serialize\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/VettingTypeHintsSavedEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\WhitelistCreatedEvent\\:\\:deserialize\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Event\\WhitelistCreatedEvent\:\:deserialize\(\) has parameter \$data with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/WhitelistCreatedEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\WhitelistReplacedEvent\\:\\:deserialize\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Event\\WhitelistReplacedEvent\:\:deserialize\(\) has parameter \$data with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/WhitelistReplacedEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\YubikeyPossessionProvenAndVerifiedEvent\\:\\:deserialize\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Event\\YubikeyPossessionProvenAndVerifiedEvent\:\:deserialize\(\) has parameter \$data with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/YubikeyPossessionProvenAndVerifiedEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\YubikeyPossessionProvenAndVerifiedEvent\\:\\:obtainUserData\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Event\\YubikeyPossessionProvenAndVerifiedEvent\:\:obtainUserData\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/YubikeyPossessionProvenAndVerifiedEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\YubikeyPossessionProvenEvent\\:\\:deserialize\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Event\\YubikeyPossessionProvenEvent\:\:deserialize\(\) has parameter \$data with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/YubikeyPossessionProvenEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\YubikeyPossessionProvenEvent\\:\\:obtainUserData\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Event\\YubikeyPossessionProvenEvent\:\:obtainUserData\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/YubikeyPossessionProvenEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\YubikeySecondFactorBootstrappedEvent\\:\\:deserialize\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Event\\YubikeySecondFactorBootstrappedEvent\:\:deserialize\(\) has parameter \$data with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/YubikeySecondFactorBootstrappedEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\YubikeySecondFactorBootstrappedEvent\\:\\:obtainUserData\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Event\\YubikeySecondFactorBootstrappedEvent\:\:obtainUserData\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Event/YubikeySecondFactorBootstrappedEvent.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\EventSourcing\\\\IdentityRepository\\:\\:obtainInformation\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\EventSourcing\\IdentityRepository\:\:obtainInformation\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/EventSourcing/IdentityRepository.php - - message: "#^Argument of an invalid type Surfnet\\\\Stepup\\\\Identity\\\\Entity\\\\SecondFactorCollection\\|null supplied for foreach, only iterables are supported\\.$#" + message: '#^Argument of an invalid type Surfnet\\Stepup\\Identity\\Entity\\SecondFactorCollection\|null supplied for foreach, only iterables are supported\.$#' + identifier: foreach.nonIterable count: 11 path: ../../src/Surfnet/Stepup/Identity/Identity.php - - message: "#^Cannot call method asVetted\\(\\) on mixed\\.$#" + message: '#^Cannot call method asVetted\(\) on mixed\.$#' + identifier: method.nonObject count: 1 path: ../../src/Surfnet/Stepup/Identity/Identity.php - - message: "#^Cannot call method complyWithRevocation\\(\\) on Surfnet\\\\Stepup\\\\Identity\\\\Entity\\\\VettedSecondFactor\\|null\\.$#" + message: '#^Cannot call method complyWithRevocation\(\) on Surfnet\\Stepup\\Identity\\Entity\\VettedSecondFactor\|null\.$#' + identifier: method.nonObject count: 1 path: ../../src/Surfnet/Stepup/Identity/Identity.php - - message: "#^Cannot call method count\\(\\) on Surfnet\\\\Stepup\\\\Identity\\\\Entity\\\\RecoveryTokenCollection\\|null\\.$#" + message: '#^Cannot call method count\(\) on Surfnet\\Stepup\\Identity\\Entity\\RecoveryTokenCollection\|null\.$#' + identifier: method.nonObject count: 1 path: ../../src/Surfnet/Stepup/Identity/Identity.php - - message: "#^Cannot call method count\\(\\) on Surfnet\\\\Stepup\\\\Identity\\\\Entity\\\\RegistrationAuthorityCollection\\|null\\.$#" + message: '#^Cannot call method count\(\) on Surfnet\\Stepup\\Identity\\Entity\\RegistrationAuthorityCollection\|null\.$#' + identifier: method.nonObject count: 1 path: ../../src/Surfnet/Stepup/Identity/Identity.php - - message: "#^Cannot call method count\\(\\) on Surfnet\\\\Stepup\\\\Identity\\\\Entity\\\\SecondFactorCollection\\|null\\.$#" + message: '#^Cannot call method count\(\) on Surfnet\\Stepup\\Identity\\Entity\\SecondFactorCollection\|null\.$#' + identifier: method.nonObject count: 2 path: ../../src/Surfnet/Stepup/Identity/Identity.php - - message: "#^Cannot call method exists\\(\\) on Surfnet\\\\Stepup\\\\Identity\\\\Entity\\\\RegistrationAuthorityCollection\\|null\\.$#" + message: '#^Cannot call method exists\(\) on Surfnet\\Stepup\\Identity\\Entity\\RegistrationAuthorityCollection\|null\.$#' + identifier: method.nonObject count: 3 path: ../../src/Surfnet/Stepup/Identity/Identity.php - - message: "#^Cannot call method first\\(\\) on Surfnet\\\\Stepup\\\\Identity\\\\Entity\\\\RecoveryTokenCollection\\|null\\.$#" + message: '#^Cannot call method first\(\) on Surfnet\\Stepup\\Identity\\Entity\\RecoveryTokenCollection\|null\.$#' + identifier: method.nonObject count: 1 path: ../../src/Surfnet/Stepup/Identity/Identity.php - - message: "#^Cannot call method get\\(\\) on Surfnet\\\\Stepup\\\\Identity\\\\Entity\\\\RecoveryTokenCollection\\|null\\.$#" + message: '#^Cannot call method get\(\) on Surfnet\\Stepup\\Identity\\Entity\\RecoveryTokenCollection\|null\.$#' + identifier: method.nonObject count: 3 path: ../../src/Surfnet/Stepup/Identity/Identity.php - - message: "#^Cannot call method get\\(\\) on Surfnet\\\\Stepup\\\\Identity\\\\Entity\\\\RegistrationAuthorityCollection\\|null\\.$#" + message: '#^Cannot call method get\(\) on Surfnet\\Stepup\\Identity\\Entity\\RegistrationAuthorityCollection\|null\.$#' + identifier: method.nonObject count: 7 path: ../../src/Surfnet/Stepup/Identity/Identity.php - - message: "#^Cannot call method get\\(\\) on Surfnet\\\\Stepup\\\\Identity\\\\Entity\\\\SecondFactorCollection\\|null\\.$#" + message: '#^Cannot call method get\(\) on Surfnet\\Stepup\\Identity\\Entity\\SecondFactorCollection\|null\.$#' + identifier: method.nonObject count: 11 path: ../../src/Surfnet/Stepup/Identity/Identity.php - - message: "#^Cannot call method getIdentifier\\(\\) on mixed\\.$#" + message: '#^Cannot call method getIdentifier\(\) on mixed\.$#' + identifier: method.nonObject count: 1 path: ../../src/Surfnet/Stepup/Identity/Identity.php - - message: "#^Cannot call method getSecondFactorWithHighestLoa\\(\\) on Surfnet\\\\Stepup\\\\Identity\\\\Entity\\\\SecondFactorCollection\\|null\\.$#" + message: '#^Cannot call method getSecondFactorWithHighestLoa\(\) on Surfnet\\Stepup\\Identity\\Entity\\SecondFactorCollection\|null\.$#' + identifier: method.nonObject count: 1 path: ../../src/Surfnet/Stepup/Identity/Identity.php - - message: "#^Cannot call method getType\\(\\) on mixed\\.$#" + message: '#^Cannot call method getType\(\) on mixed\.$#' + identifier: method.nonObject count: 3 path: ../../src/Surfnet/Stepup/Identity/Identity.php - - message: "#^Cannot call method getValues\\(\\) on Surfnet\\\\Stepup\\\\Identity\\\\Entity\\\\RegistrationAuthorityCollection\\|null\\.$#" + message: '#^Cannot call method getValues\(\) on Surfnet\\Stepup\\Identity\\Entity\\RegistrationAuthorityCollection\|null\.$#' + identifier: method.nonObject count: 1 path: ../../src/Surfnet/Stepup/Identity/Identity.php - - message: "#^Cannot call method getValues\\(\\) on Surfnet\\\\Stepup\\\\Identity\\\\Entity\\\\SecondFactorCollection\\|null\\.$#" + message: '#^Cannot call method getValues\(\) on Surfnet\\Stepup\\Identity\\Entity\\SecondFactorCollection\|null\.$#' + identifier: method.nonObject count: 3 path: ../../src/Surfnet/Stepup/Identity/Identity.php - - message: "#^Cannot call method hasType\\(\\) on Surfnet\\\\Stepup\\\\Identity\\\\Entity\\\\RecoveryTokenCollection\\|null\\.$#" + message: '#^Cannot call method hasType\(\) on Surfnet\\Stepup\\Identity\\Entity\\RecoveryTokenCollection\|null\.$#' + identifier: method.nonObject count: 1 path: ../../src/Surfnet/Stepup/Identity/Identity.php - - message: "#^Cannot call method isEmpty\\(\\) on Surfnet\\\\Stepup\\\\Identity\\\\Entity\\\\SecondFactorCollection\\|null\\.$#" + message: '#^Cannot call method isEmpty\(\) on Surfnet\\Stepup\\Identity\\Entity\\SecondFactorCollection\|null\.$#' + identifier: method.nonObject count: 2 path: ../../src/Surfnet/Stepup/Identity/Identity.php - - message: "#^Cannot call method remove\\(\\) on Surfnet\\\\Stepup\\\\Identity\\\\Entity\\\\RecoveryTokenCollection\\|null\\.$#" + message: '#^Cannot call method remove\(\) on Surfnet\\Stepup\\Identity\\Entity\\RecoveryTokenCollection\|null\.$#' + identifier: method.nonObject count: 2 path: ../../src/Surfnet/Stepup/Identity/Identity.php - - message: "#^Cannot call method remove\\(\\) on Surfnet\\\\Stepup\\\\Identity\\\\Entity\\\\RegistrationAuthorityCollection\\|null\\.$#" + message: '#^Cannot call method remove\(\) on Surfnet\\Stepup\\Identity\\Entity\\RegistrationAuthorityCollection\|null\.$#' + identifier: method.nonObject count: 2 path: ../../src/Surfnet/Stepup/Identity/Identity.php - - message: "#^Cannot call method remove\\(\\) on Surfnet\\\\Stepup\\\\Identity\\\\Entity\\\\SecondFactorCollection\\|null\\.$#" + message: '#^Cannot call method remove\(\) on Surfnet\\Stepup\\Identity\\Entity\\SecondFactorCollection\|null\.$#' + identifier: method.nonObject count: 9 path: ../../src/Surfnet/Stepup/Identity/Identity.php - - message: "#^Cannot call method revoke\\(\\) on Surfnet\\\\Stepup\\\\Identity\\\\Entity\\\\VettedSecondFactor\\|null\\.$#" + message: '#^Cannot call method revoke\(\) on Surfnet\\Stepup\\Identity\\Entity\\VettedSecondFactor\|null\.$#' + identifier: method.nonObject count: 1 path: ../../src/Surfnet/Stepup/Identity/Identity.php - - message: "#^Cannot call method set\\(\\) on Surfnet\\\\Stepup\\\\Identity\\\\Entity\\\\RecoveryTokenCollection\\|null\\.$#" + message: '#^Cannot call method set\(\) on Surfnet\\Stepup\\Identity\\Entity\\RecoveryTokenCollection\|null\.$#' + identifier: method.nonObject count: 2 path: ../../src/Surfnet/Stepup/Identity/Identity.php - - message: "#^Cannot call method set\\(\\) on Surfnet\\\\Stepup\\\\Identity\\\\Entity\\\\RegistrationAuthorityCollection\\|null\\.$#" + message: '#^Cannot call method set\(\) on Surfnet\\Stepup\\Identity\\Entity\\RegistrationAuthorityCollection\|null\.$#' + identifier: method.nonObject count: 4 path: ../../src/Surfnet/Stepup/Identity/Identity.php - - message: "#^Cannot call method set\\(\\) on Surfnet\\\\Stepup\\\\Identity\\\\Entity\\\\SecondFactorCollection\\|null\\.$#" + message: '#^Cannot call method set\(\) on Surfnet\\Stepup\\Identity\\Entity\\SecondFactorCollection\|null\.$#' + identifier: method.nonObject count: 13 path: ../../src/Surfnet/Stepup/Identity/Identity.php - - message: "#^Cannot call method typeAndIdentifierAreEqual\\(\\) on mixed\\.$#" + message: '#^Cannot call method typeAndIdentifierAreEqual\(\) on mixed\.$#' + identifier: method.nonObject count: 3 path: ../../src/Surfnet/Stepup/Identity/Identity.php - - message: "#^Cannot call method vet\\(\\) on mixed\\.$#" + message: '#^Cannot call method vet\(\) on mixed\.$#' + identifier: method.nonObject count: 1 path: ../../src/Surfnet/Stepup/Identity/Identity.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Identity\\:\\:getVerifiedSecondFactor\\(\\) should return Surfnet\\\\Stepup\\\\Identity\\\\Entity\\\\VerifiedSecondFactor\\|null but returns mixed\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Identity\:\:getVerifiedSecondFactor\(\) should return Surfnet\\Stepup\\Identity\\Entity\\VerifiedSecondFactor\|null but returns mixed\.$#' + identifier: return.type count: 1 path: ../../src/Surfnet/Stepup/Identity/Identity.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Identity\\:\\:getVettedSecondFactorById\\(\\) should return Surfnet\\\\Stepup\\\\Identity\\\\Entity\\\\VettedSecondFactor\\|null but returns mixed\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Identity\:\:getVettedSecondFactorById\(\) should return Surfnet\\Stepup\\Identity\\Entity\\VettedSecondFactor\|null but returns mixed\.$#' + identifier: return.type count: 1 path: ../../src/Surfnet/Stepup/Identity/Identity.php - - message: "#^Parameter \\#1 \\$value of function count expects array\\|Countable, Surfnet\\\\Stepup\\\\Identity\\\\Entity\\\\SecondFactorCollection\\|null given\\.$#" + message: '#^Parameter \#1 \$value of function count expects array\|Countable, Surfnet\\Stepup\\Identity\\Entity\\SecondFactorCollection\|null given\.$#' + identifier: argument.type count: 4 path: ../../src/Surfnet/Stepup/Identity/Identity.php - - message: "#^Parameter \\#1 \\$vettingType of method Surfnet\\\\Stepup\\\\Identity\\\\Entity\\\\VerifiedSecondFactor\\:\\:asVetted\\(\\) expects Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\VettingType, Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\VettingType\\|null given\\.$#" + message: '#^Parameter \#1 \$vettingType of method Surfnet\\Stepup\\Identity\\Entity\\VerifiedSecondFactor\:\:asVetted\(\) expects Surfnet\\Stepup\\Identity\\Value\\VettingType, Surfnet\\Stepup\\Identity\\Value\\VettingType\|null given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/Stepup/Identity/Identity.php - - message: "#^Parameter \\#4 \\$secondFactorId of class Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\SecondFactorMigratedToEvent constructor expects Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\SecondFactorId, Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\SecondFactorId\\|null given\\.$#" + message: '#^Parameter \#4 \$secondFactorId of class Surfnet\\Stepup\\Identity\\Event\\SecondFactorMigratedToEvent constructor expects Surfnet\\Stepup\\Identity\\Value\\SecondFactorId, Surfnet\\Stepup\\Identity\\Value\\SecondFactorId\|null given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/Stepup/Identity/Identity.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\EmailVerificationWindow\\:\\:deserialize\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Value\\EmailVerificationWindow\:\:deserialize\(\) has parameter \$data with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Value/EmailVerificationWindow.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\EmailVerificationWindow\\:\\:serialize\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Value\\EmailVerificationWindow\:\:serialize\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Value/EmailVerificationWindow.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\OnPremiseVettingType\\:\\:deserialize\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Value\\OnPremiseVettingType\:\:deserialize\(\) has parameter \$data with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Value/OnPremiseVettingType.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\OnPremiseVettingType\\:\\:jsonSerialize\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Value\\OnPremiseVettingType\:\:jsonSerialize\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Value/OnPremiseVettingType.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\RegistrationAuthorityRole\\:\\:deserialize\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Value\\RegistrationAuthorityRole\:\:deserialize\(\) has parameter \$data with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Value/RegistrationAuthorityRole.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\RegistrationAuthorityRole\\:\\:serialize\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Value\\RegistrationAuthorityRole\:\:serialize\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Value/RegistrationAuthorityRole.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\SelfAssertedRegistrationVettingType\\:\\:deserialize\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Value\\SelfAssertedRegistrationVettingType\:\:deserialize\(\) has parameter \$data with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Value/SelfAssertedRegistrationVettingType.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\SelfAssertedRegistrationVettingType\\:\\:jsonSerialize\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Value\\SelfAssertedRegistrationVettingType\:\:jsonSerialize\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Value/SelfAssertedRegistrationVettingType.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\SelfVetVettingType\\:\\:deserialize\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Value\\SelfVetVettingType\:\:deserialize\(\) has parameter \$data with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Value/SelfVetVettingType.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\SelfVetVettingType\\:\\:jsonSerialize\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Value\\SelfVetVettingType\:\:jsonSerialize\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Value/SelfVetVettingType.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\UnknownVettingType\\:\\:jsonSerialize\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Value\\UnknownVettingType\:\:jsonSerialize\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Value/UnknownVettingType.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\VettingTypeFactory\\:\\:fromData\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Value\\VettingTypeFactory\:\:fromData\(\) has parameter \$data with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Value/VettingTypeFactory.php - - message: "#^Method Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\VettingTypeHint\\:\\:jsonSerialize\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Identity\\Value\\VettingTypeHint\:\:jsonSerialize\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Identity/Value/VettingTypeHint.php - - message: "#^Cannot call method addAllFrom\\(\\) on Surfnet\\\\Stepup\\\\Identity\\\\Collection\\\\InstitutionCollection\\|null\\.$#" + message: '#^Cannot call method addAllFrom\(\) on Surfnet\\Stepup\\Identity\\Collection\\InstitutionCollection\|null\.$#' + identifier: method.nonObject count: 1 path: ../../src/Surfnet/Stepup/Identity/Whitelist.php - - message: "#^Cannot call method contains\\(\\) on Surfnet\\\\Stepup\\\\Identity\\\\Collection\\\\InstitutionCollection\\|null\\.$#" + message: '#^Cannot call method contains\(\) on Surfnet\\Stepup\\Identity\\Collection\\InstitutionCollection\|null\.$#' + identifier: method.nonObject count: 2 path: ../../src/Surfnet/Stepup/Identity/Whitelist.php - - message: "#^Cannot call method removeAllIn\\(\\) on Surfnet\\\\Stepup\\\\Identity\\\\Collection\\\\InstitutionCollection\\|null\\.$#" + message: '#^Cannot call method removeAllIn\(\) on Surfnet\\Stepup\\Identity\\Collection\\InstitutionCollection\|null\.$#' + identifier: method.nonObject count: 1 path: ../../src/Surfnet/Stepup/Identity/Whitelist.php - - message: "#^Parameter \\#2 \\.\\.\\.\\$values of function sprintf expects bool\\|float\\|int\\|string\\|null, mixed given\\.$#" - count: 2 - path: ../../src/Surfnet/Stepup/Identity/Whitelist.php - - - - message: "#^Method Surfnet\\\\Stepup\\\\Tests\\\\Configuration\\\\Event\\\\EventSerializationAndDeserializationTest\\:\\:institutionConfigurationEventsProvider\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Tests\\Configuration\\Event\\EventSerializationAndDeserializationTest\:\:institutionConfigurationEventsProvider\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Tests/Configuration/Event/EventSerializationAndDeserializationTest.php - - message: "#^Method Surfnet\\\\Stepup\\\\Tests\\\\Configuration\\\\Value\\\\AllowedSecondFactorListTest\\:\\:availableSecondFactorTypeProvider\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Tests\\Configuration\\Value\\AllowedSecondFactorListTest\:\:availableSecondFactorTypeProvider\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Tests/Configuration/Value/AllowedSecondFactorListTest.php - - message: "#^Method Surfnet\\\\Stepup\\\\Tests\\\\Configuration\\\\Value\\\\AllowedSecondFactorListTest\\:\\:differentAllowedSecondFactorListsProvider\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Tests\\Configuration\\Value\\AllowedSecondFactorListTest\:\:differentAllowedSecondFactorListsProvider\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Tests/Configuration/Value/AllowedSecondFactorListTest.php - - message: "#^Method Surfnet\\\\Stepup\\\\Tests\\\\Configuration\\\\Value\\\\AllowedSecondFactorListTest\\:\\:sameAllowedSecondFactorListsProvider\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Tests\\Configuration\\Value\\AllowedSecondFactorListTest\:\:sameAllowedSecondFactorListsProvider\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Tests/Configuration/Value/AllowedSecondFactorListTest.php - - message: "#^Parameter \\#1 \\$other of method Surfnet\\\\StepupBundle\\\\Value\\\\SecondFactorType\\:\\:equals\\(\\) expects Surfnet\\\\StepupBundle\\\\Value\\\\SecondFactorType, mixed given\\.$#" + message: '#^Parameter \#1 \$other of method Surfnet\\StepupBundle\\Value\\SecondFactorType\:\:equals\(\) expects Surfnet\\StepupBundle\\Value\\SecondFactorType, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/Stepup/Tests/Configuration/Value/AllowedSecondFactorListTest.php - - message: "#^Method Surfnet\\\\Stepup\\\\Tests\\\\Configuration\\\\Value\\\\InstitutionAuthorizationOptionTest\\:\\:institutionHasInstitutionProvider\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Tests\\Configuration\\Value\\InstitutionAuthorizationOptionTest\:\:institutionHasInstitutionProvider\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Tests/Configuration/Value/InstitutionAuthorizationOptionTest.php - - message: "#^Method Surfnet\\\\Stepup\\\\Tests\\\\Configuration\\\\Value\\\\InstitutionAuthorizationOptionTest\\:\\:institutionSetComparisonProvider\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Tests\\Configuration\\Value\\InstitutionAuthorizationOptionTest\:\:institutionSetComparisonProvider\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Tests/Configuration/Value/InstitutionAuthorizationOptionTest.php - - message: "#^Method Surfnet\\\\Stepup\\\\Tests\\\\Configuration\\\\Value\\\\InstitutionAuthorizationOptionTest\\:\\:institution_option_instances_can_be_compared\\(\\) has parameter \\$configurationA with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Tests\\Configuration\\Value\\InstitutionAuthorizationOptionTest\:\:institution_option_instances_can_be_compared\(\) has parameter \$configurationA with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Tests/Configuration/Value/InstitutionAuthorizationOptionTest.php - - message: "#^Method Surfnet\\\\Stepup\\\\Tests\\\\Configuration\\\\Value\\\\InstitutionAuthorizationOptionTest\\:\\:institution_option_instances_can_be_compared\\(\\) has parameter \\$configurationB with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Tests\\Configuration\\Value\\InstitutionAuthorizationOptionTest\:\:institution_option_instances_can_be_compared\(\) has parameter \$configurationB with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Tests/Configuration/Value/InstitutionAuthorizationOptionTest.php - - message: "#^Method Surfnet\\\\Stepup\\\\Tests\\\\Configuration\\\\Value\\\\InstitutionAuthorizationOptionTest\\:\\:invalidConstructorArgumentsProvider\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Tests\\Configuration\\Value\\InstitutionAuthorizationOptionTest\:\:invalidConstructorArgumentsProvider\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Tests/Configuration/Value/InstitutionAuthorizationOptionTest.php - - message: "#^Method Surfnet\\\\Stepup\\\\Tests\\\\Configuration\\\\Value\\\\InstitutionAuthorizationOptionTest\\:\\:the_has_institution_method_should_check_for_institutions\\(\\) has parameter \\$institutionList with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Tests\\Configuration\\Value\\InstitutionAuthorizationOptionTest\:\:the_has_institution_method_should_check_for_institutions\(\) has parameter \$institutionList with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Tests/Configuration/Value/InstitutionAuthorizationOptionTest.php - - message: "#^Method Surfnet\\\\Stepup\\\\Tests\\\\Configuration\\\\Value\\\\InstitutionConfigurationIdTest\\:\\:nonStringOrEmptyStringProvider\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Tests\\Configuration\\Value\\InstitutionConfigurationIdTest\:\:nonStringOrEmptyStringProvider\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Tests/Configuration/Value/InstitutionConfigurationIdTest.php - - message: "#^Method Surfnet\\\\Stepup\\\\Tests\\\\Configuration\\\\Value\\\\InstitutionRoleTest\\:\\:institutionTypeProvider\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Tests\\Configuration\\Value\\InstitutionRoleTest\:\:institutionTypeProvider\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Tests/Configuration/Value/InstitutionRoleTest.php - - message: "#^Method Surfnet\\\\Stepup\\\\Tests\\\\Configuration\\\\Value\\\\InstitutionRoleTest\\:\\:invalidConstructorArgumentsProvider\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Tests\\Configuration\\Value\\InstitutionRoleTest\:\:invalidConstructorArgumentsProvider\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Tests/Configuration/Value/InstitutionRoleTest.php - - message: "#^Parameter \\#1 \\$type of class Surfnet\\\\Stepup\\\\Configuration\\\\Value\\\\InstitutionRole constructor expects string, bool\\|int\\|string given\\.$#" + message: '#^Parameter \#1 \$type of class Surfnet\\Stepup\\Configuration\\Value\\InstitutionRole constructor expects string, bool\|int\|string given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/Stepup/Tests/Configuration/Value/InstitutionRoleTest.php - - message: "#^Method Surfnet\\\\Stepup\\\\Tests\\\\Configuration\\\\Value\\\\InstitutionSetTest\\:\\:dirtyInstitutionListProvider\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Tests\\Configuration\\Value\\InstitutionSetTest\:\:dirtyInstitutionListProvider\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Tests/Configuration/Value/InstitutionSetTest.php - - message: "#^Method Surfnet\\\\Stepup\\\\Tests\\\\Configuration\\\\Value\\\\InstitutionSetTest\\:\\:factory_method_can_build_from_array_of_string_and_rejects_invalid_types\\(\\) has parameter \\$invalid with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Tests\\Configuration\\Value\\InstitutionSetTest\:\:factory_method_can_build_from_array_of_string_and_rejects_invalid_types\(\) has parameter \$invalid with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Tests/Configuration/Value/InstitutionSetTest.php - - message: "#^Parameter \\#1 \\$institutions of static method Surfnet\\\\Stepup\\\\Configuration\\\\Value\\\\InstitutionSet\\:\\:create\\(\\) expects array\\, array\\ given\\.$#" + message: '#^Parameter \#1 \$institutions of static method Surfnet\\Stepup\\Configuration\\Value\\InstitutionSet\:\:create\(\) expects array\, array\ given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/Stepup/Tests/Configuration/Value/InstitutionSetTest.php - - message: "#^Method Surfnet\\\\Stepup\\\\Tests\\\\Configuration\\\\Value\\\\InstitutionTest\\:\\:nonStringOrNonEmptyStringProvider\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Tests\\Configuration\\Value\\InstitutionTest\:\:nonStringOrNonEmptyStringProvider\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Tests/Configuration/Value/InstitutionTest.php - - message: "#^Method Surfnet\\\\Stepup\\\\Tests\\\\Configuration\\\\Value\\\\RaLocationIdTest\\:\\:nonStringOrEmptyStringProvider\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Tests\\Configuration\\Value\\RaLocationIdTest\:\:nonStringOrEmptyStringProvider\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Tests/Configuration/Value/RaLocationIdTest.php - - message: "#^Method Surfnet\\\\Stepup\\\\Tests\\\\Configuration\\\\Value\\\\RaLocationListTest\\:\\:getRaLocationsArray\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Tests\\Configuration\\Value\\RaLocationListTest\:\:getRaLocationsArray\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Tests/Configuration/Value/RaLocationListTest.php - - message: "#^Method Surfnet\\\\Stepup\\\\Tests\\\\Configuration\\\\Value\\\\RaLocationNameTest\\:\\:nonStringOrEmptyStringProvider\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Tests\\Configuration\\Value\\RaLocationNameTest\:\:nonStringOrEmptyStringProvider\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Tests/Configuration/Value/RaLocationNameTest.php - - message: "#^Method Surfnet\\\\Stepup\\\\Tests\\\\Helper\\\\JsonHelperTest\\:\\:nonStringProvider\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Tests\\Helper\\JsonHelperTest\:\:nonStringProvider\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Tests/Helper/JsonHelperTest.php - - message: "#^Method Surfnet\\\\Stepup\\\\Tests\\\\Helper\\\\UserDataFilterTest\\:\\:test_filtering_is_applied_with_expected_result\\(\\) has parameter \\$expectation with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Tests\\Helper\\UserDataFilterTest\:\:test_filtering_is_applied_with_expected_result\(\) has parameter \$expectation with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Tests/Helper/UserDataFilterTest.php - - message: "#^Method Surfnet\\\\Stepup\\\\Tests\\\\Identity\\\\Collection\\\\InstitutionCollectionTest\\:\\:getInstitutions\\(\\) return type has no value type specified in iterable type array\\.$#" - count: 1 - path: ../../src/Surfnet/Stepup/Tests/Identity/Collection/InstitutionCollectionTest.php - - - - message: "#^Method Surfnet\\\\Stepup\\\\Tests\\\\Identity\\\\Entity\\\\ConfigurableSettingsTest\\:\\:localeVerifications\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Tests\\Identity\\Entity\\ConfigurableSettingsTest\:\:localeVerifications\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Tests/Identity/Entity/ConfigurableSettingsTest.php - - message: "#^Cannot call method setSensitiveData\\(\\) on mixed\\.$#" + message: '#^Cannot call method setSensitiveData\(\) on mixed\.$#' + identifier: method.nonObject count: 2 path: ../../src/Surfnet/Stepup/Tests/Identity/Event/EventSerializationAndDeserializationTest.php - - message: "#^Method Surfnet\\\\Stepup\\\\Tests\\\\Identity\\\\Event\\\\EventSerializationAndDeserializationTest\\:\\:eventProvider\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Tests\\Identity\\Event\\EventSerializationAndDeserializationTest\:\:eventProvider\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Tests/Identity/Event/EventSerializationAndDeserializationTest.php - - message: "#^Method Surfnet\\\\Stepup\\\\Tests\\\\Identity\\\\Event\\\\EventSerializationAndDeserializationTest\\:\\:serializedDataProvider\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Tests\\Identity\\Event\\EventSerializationAndDeserializationTest\:\:serializedDataProvider\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Tests/Identity/Event/EventSerializationAndDeserializationTest.php - - message: "#^Parameter \\#1 \\$data of static method Broadway\\\\Serializer\\\\Serializable\\:\\:deserialize\\(\\) expects array, mixed given\\.$#" + message: '#^Parameter \#1 \$data of static method Broadway\\Serializer\\Serializable\:\:deserialize\(\) expects array, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/Stepup/Tests/Identity/Event/EventSerializationAndDeserializationTest.php - - message: "#^Parameter \\#1 \\$data of static method Surfnet\\\\StepupMiddleware\\\\CommandHandlingBundle\\\\SensitiveData\\\\SensitiveData\\:\\:deserialize\\(\\) expects array, mixed given\\.$#" + message: '#^Parameter \#1 \$data of static method Surfnet\\StepupMiddleware\\CommandHandlingBundle\\SensitiveData\\SensitiveData\:\:deserialize\(\) expects array, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/Stepup/Tests/Identity/Event/EventSerializationAndDeserializationTest.php - - message: "#^Parameter \\#1 \\$objectOrClass of class ReflectionClass constructor expects class\\-string\\\\|T of object, string given\\.$#" + message: '#^Call to function is_a\(\) with arguments ''Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\CompliedWithRevocationEvent''\|''Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\CompliedWithUnverifiedSecondFactorRevocationEvent''\|''Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\CompliedWithVerifiedSecondFactorRevocationEvent''\|''Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\CompliedWithVettedSecondFactorRevocationEvent''\|''Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\EmailVerifiedEvent''\|''Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\GssfPossessionProvenAndVerifiedEvent''\|''Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\GssfPossessionProvenEvent''\|''Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\IdentityCreatedEvent''\|''Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\IdentityEmailChangedEvent''\|''Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\IdentityRenamedEvent''\|''Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\IdentityRestoredEvent''\|''Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\PhonePossessionProvenAndVerifiedEvent''\|''Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\PhonePossessionProvenEvent''\|''Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\PhoneRecoveryTokenPossessionProvenEvent''\|''Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\RegistrationAuthorityRetractedEvent''\|''Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\RegistrationAuthorityRetractedForInstitutionEvent''\|''Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\SafeStoreSecretRecoveryTokenPossessionPromisedEvent''\|''Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\SecondFactorMigratedEvent''\|''Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\SecondFactorMigratedToEvent''\|''Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\SecondFactorRevokedEvent''\|''Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\SecondFactorVettedEvent''\|''Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\SecondFactorVettedWithoutTokenProofOfPossession''\|''Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\U2fDevicePossessionProvenAndVerifiedEvent''\|''Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\U2fDevicePossessionProvenEvent''\|''Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\UnverifiedSecondFactorRevokedEvent''\|''Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\VerifiedSecondFactorRevokedEvent''\|''Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\VettedSecondFactorRevokedEvent''\|''Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\YubikeyPossessionProvenAndVerifiedEvent''\|''Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\YubikeyPossessionProvenEvent''\|''Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\YubikeySecondFactorBootstrappedEvent'', ''Surfnet\\\\StepupMiddleware\\\\CommandHandlingBundle\\\\SensitiveData\\\\Forgettable'' and true will always evaluate to true\.$#' + identifier: function.alreadyNarrowedType count: 1 path: ../../src/Surfnet/Stepup/Tests/Identity/Event/ForgettableEventsTest.php - - message: "#^Parameter \\#2 \\$array of function array_map expects array, array\\\\|false given\\.$#" + message: '#^Parameter \#1 \$objectOrClass of class ReflectionClass constructor expects class\-string\\|T of object, string given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/Stepup/Tests/Identity/Event/ForgettableEventsTest.php - - message: "#^Method Surfnet\\\\Stepup\\\\Tests\\\\Identity\\\\Event\\\\WhitelistEventSerializationAndDeserializationTest\\:\\:eventProvider\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Tests\\Identity\\Event\\WhitelistEventSerializationAndDeserializationTest\:\:eventProvider\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Tests/Identity/Event/WhitelistEventSerializationAndDeserializationTest.php - - message: "#^Method Surfnet\\\\Stepup\\\\Tests\\\\Identity\\\\Value\\\\CommonNameTest\\:\\:invalidArgumentProvider\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Tests\\Identity\\Value\\CommonNameTest\:\:invalidArgumentProvider\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Tests/Identity/Value/CommonNameTest.php - - message: "#^Method Surfnet\\\\Stepup\\\\Tests\\\\Identity\\\\Value\\\\DocumentNumberTest\\:\\:invalidArgumentProvider\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Tests\\Identity\\Value\\DocumentNumberTest\:\:invalidArgumentProvider\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Tests/Identity/Value/DocumentNumberTest.php - - message: "#^Method Surfnet\\\\Stepup\\\\Tests\\\\Identity\\\\Value\\\\EmailTest\\:\\:invalidArgumentProvider\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Tests\\Identity\\Value\\EmailTest\:\:invalidArgumentProvider\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Tests/Identity/Value/EmailTest.php - - message: "#^Method Surfnet\\\\Stepup\\\\Tests\\\\Identity\\\\Value\\\\EmailTest\\:\\:invalidEmailProvider\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Tests\\Identity\\Value\\EmailTest\:\:invalidEmailProvider\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Tests/Identity/Value/EmailTest.php - - message: "#^Method Surfnet\\\\Stepup\\\\Tests\\\\Identity\\\\Value\\\\GssfIdTest\\:\\:invalidValueProvider\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Tests\\Identity\\Value\\GssfIdTest\:\:invalidValueProvider\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Tests/Identity/Value/GssfIdTest.php - - message: "#^Method Surfnet\\\\Stepup\\\\Tests\\\\Identity\\\\Value\\\\InstitutionTest\\:\\:invalidValueProviderInvalidString\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Tests\\Identity\\Value\\InstitutionTest\:\:invalidValueProviderInvalidString\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Tests/Identity/Value/InstitutionTest.php - - message: "#^Method Surfnet\\\\Stepup\\\\Tests\\\\Identity\\\\Value\\\\PhoneNumberTest\\:\\:invalidValueProvider\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Tests\\Identity\\Value\\PhoneNumberTest\:\:invalidValueProvider\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Tests/Identity/Value/PhoneNumberTest.php - - message: "#^Method Surfnet\\\\Stepup\\\\Tests\\\\Identity\\\\Value\\\\StepupProviderTest\\:\\:invalidValueProvider\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Tests\\Identity\\Value\\StepupProviderTest\:\:invalidValueProvider\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Tests/Identity/Value/StepupProviderTest.php - - message: "#^Method Surfnet\\\\Stepup\\\\Tests\\\\Identity\\\\Value\\\\TimeFrameTest\\:\\:invalidValueProviderInt\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Tests\\Identity\\Value\\TimeFrameTest\:\:invalidValueProviderInt\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Tests/Identity/Value/TimeFrameTest.php - - message: "#^Method Surfnet\\\\Stepup\\\\Tests\\\\Identity\\\\Value\\\\YubikeyPublicIdTest\\:\\:invalidFormatProvider\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Tests\\Identity\\Value\\YubikeyPublicIdTest\:\:invalidFormatProvider\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Tests/Identity/Value/YubikeyPublicIdTest.php - - message: "#^Method Surfnet\\\\Stepup\\\\Tests\\\\Identity\\\\Value\\\\YubikeyPublicIdTest\\:\\:validFormatProvider\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\Stepup\\Tests\\Identity\\Value\\YubikeyPublicIdTest\:\:validFormatProvider\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/Stepup/Tests/Identity/Value/YubikeyPublicIdTest.php - - message: "#^Cannot cast mixed to string\\.$#" - count: 1 - path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Authorization/Filter/InstitutionAuthorizationRepositoryFilter.php - - - - message: "#^Cannot call method getIdentityId\\(\\) on Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\IdentityId\\|null\\.$#" + message: '#^Cannot call method getIdentityId\(\) on Surfnet\\Stepup\\Identity\\Value\\IdentityId\|null\.$#' + identifier: method.nonObject count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Authorization/Service/CommandAuthorizationService.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Authorization\\\\Value\\\\AuthorizationDecision\\:\\:__construct\\(\\) has parameter \\$errorMessages with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Authorization\\Value\\AuthorizationDecision\:\:__construct\(\) has parameter \$errorMessages with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Authorization/Value/AuthorizationDecision.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Authorization\\\\Value\\\\AuthorizationDecision\\:\\:denied\\(\\) has parameter \\$messages with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Authorization\\Value\\AuthorizationDecision\:\:denied\(\) has parameter \$messages with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Authorization/Value/AuthorizationDecision.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Authorization\\\\Value\\\\AuthorizationDecision\\:\\:getErrorMessages\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Authorization\\Value\\AuthorizationDecision\:\:getErrorMessages\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Authorization/Value/AuthorizationDecision.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Authorization\\\\Value\\\\InstitutionAuthorizationContext\\:\\:getInstitutions\\(\\) should return Surfnet\\\\Stepup\\\\Identity\\\\Collection\\\\InstitutionCollection but returns Surfnet\\\\Stepup\\\\Identity\\\\Collection\\\\InstitutionCollection\\|null\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Authorization\\Value\\InstitutionAuthorizationContext\:\:getInstitutions\(\) should return Surfnet\\Stepup\\Identity\\Collection\\InstitutionCollection but returns Surfnet\\Stepup\\Identity\\Collection\\InstitutionCollection\|null\.$#' + identifier: return.type count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Authorization/Value/InstitutionAuthorizationContext.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Authorization\\\\Value\\\\InstitutionRoleSet\\:\\:__construct\\(\\) has parameter \\$institutionRoles with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Authorization\\Value\\InstitutionRoleSet\:\:__construct\(\) has parameter \$institutionRoles with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Authorization/Value/InstitutionRoleSet.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Authorization\\\\Value\\\\InstitutionRoleSet\\:\\:getRoles\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Authorization\\Value\\InstitutionRoleSet\:\:getRoles\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Authorization/Value/InstitutionRoleSet.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Authorization\\\\Value\\\\InstitutionRoleSetInterface\\:\\:getRoles\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Authorization\\Value\\InstitutionRoleSetInterface\:\:getRoles\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Authorization/Value/InstitutionRoleSetInterface.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Configuration\\\\Entity\\\\ConfiguredInstitution\\:\\:jsonSerialize\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Configuration\\Entity\\ConfiguredInstitution\:\:jsonSerialize\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Configuration/Entity/ConfiguredInstitution.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Configuration\\\\Entity\\\\RaLocation\\:\\:jsonSerialize\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Configuration\\Entity\\RaLocation\:\:jsonSerialize\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Configuration/Entity/RaLocation.php - - message: "#^Parameter \\#2 \\$secondFactorType of static method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Configuration\\\\Entity\\\\AllowedSecondFactor\\:\\:createFrom\\(\\) expects Surfnet\\\\StepupBundle\\\\Value\\\\SecondFactorType, mixed given\\.$#" + message: '#^Parameter \#2 \$secondFactorType of static method Surfnet\\StepupMiddleware\\ApiBundle\\Configuration\\Entity\\AllowedSecondFactor\:\:createFrom\(\) expects Surfnet\\StepupBundle\\Value\\SecondFactorType, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Configuration/Projector/AllowedSecondFactorListProjector.php - - message: "#^Cannot access property \\$numberOfTokensPerIdentityOption on Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Configuration\\\\Entity\\\\InstitutionConfigurationOptions\\|null\\.$#" + message: '#^Cannot access property \$numberOfTokensPerIdentityOption on Surfnet\\StepupMiddleware\\ApiBundle\\Configuration\\Entity\\InstitutionConfigurationOptions\|null\.$#' + identifier: property.nonObject count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Configuration/Projector/InstitutionConfigurationOptionsProjector.php - - message: "#^Cannot access property \\$selfAssertedTokensOption on Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Configuration\\\\Entity\\\\InstitutionConfigurationOptions\\|null\\.$#" + message: '#^Cannot access property \$selfAssertedTokensOption on Surfnet\\StepupMiddleware\\ApiBundle\\Configuration\\Entity\\InstitutionConfigurationOptions\|null\.$#' + identifier: property.nonObject count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Configuration/Projector/InstitutionConfigurationOptionsProjector.php - - message: "#^Cannot access property \\$selfVetOption on Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Configuration\\\\Entity\\\\InstitutionConfigurationOptions\\|null\\.$#" + message: '#^Cannot access property \$selfVetOption on Surfnet\\StepupMiddleware\\ApiBundle\\Configuration\\Entity\\InstitutionConfigurationOptions\|null\.$#' + identifier: property.nonObject count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Configuration/Projector/InstitutionConfigurationOptionsProjector.php - - message: "#^Cannot access property \\$showRaaContactInformationOption on Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Configuration\\\\Entity\\\\InstitutionConfigurationOptions\\|null\\.$#" + message: '#^Cannot access property \$showRaaContactInformationOption on Surfnet\\StepupMiddleware\\ApiBundle\\Configuration\\Entity\\InstitutionConfigurationOptions\|null\.$#' + identifier: property.nonObject count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Configuration/Projector/InstitutionConfigurationOptionsProjector.php - - message: "#^Cannot access property \\$ssoOn2faOption on Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Configuration\\\\Entity\\\\InstitutionConfigurationOptions\\|null\\.$#" + message: '#^Cannot access property \$ssoOn2faOption on Surfnet\\StepupMiddleware\\ApiBundle\\Configuration\\Entity\\InstitutionConfigurationOptions\|null\.$#' + identifier: property.nonObject count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Configuration/Projector/InstitutionConfigurationOptionsProjector.php - - message: "#^Cannot access property \\$ssoRegistrationBypassOption on Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Configuration\\\\Entity\\\\InstitutionConfigurationOptions\\|null\\.$#" + message: '#^Cannot access property \$ssoRegistrationBypassOption on Surfnet\\StepupMiddleware\\ApiBundle\\Configuration\\Entity\\InstitutionConfigurationOptions\|null\.$#' + identifier: property.nonObject count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Configuration/Projector/InstitutionConfigurationOptionsProjector.php - - message: "#^Cannot access property \\$useRaLocationsOption on Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Configuration\\\\Entity\\\\InstitutionConfigurationOptions\\|null\\.$#" + message: '#^Cannot access property \$useRaLocationsOption on Surfnet\\StepupMiddleware\\ApiBundle\\Configuration\\Entity\\InstitutionConfigurationOptions\|null\.$#' + identifier: property.nonObject count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Configuration/Projector/InstitutionConfigurationOptionsProjector.php - - message: "#^Cannot access property \\$verifyEmailOption on Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Configuration\\\\Entity\\\\InstitutionConfigurationOptions\\|null\\.$#" + message: '#^Cannot access property \$verifyEmailOption on Surfnet\\StepupMiddleware\\ApiBundle\\Configuration\\Entity\\InstitutionConfigurationOptions\|null\.$#' + identifier: property.nonObject count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Configuration/Projector/InstitutionConfigurationOptionsProjector.php - - message: "#^Parameter \\#1 \\$institutionConfigurationOptions of method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Configuration\\\\Repository\\\\InstitutionConfigurationOptionsRepository\\:\\:save\\(\\) expects Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Configuration\\\\Entity\\\\InstitutionConfigurationOptions, Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Configuration\\\\Entity\\\\InstitutionConfigurationOptions\\|null given\\.$#" + message: '#^Parameter \#1 \$institutionConfigurationOptions of method Surfnet\\StepupMiddleware\\ApiBundle\\Configuration\\Repository\\InstitutionConfigurationOptionsRepository\:\:save\(\) expects Surfnet\\StepupMiddleware\\ApiBundle\\Configuration\\Entity\\InstitutionConfigurationOptions, Surfnet\\StepupMiddleware\\ApiBundle\\Configuration\\Entity\\InstitutionConfigurationOptions\|null given\.$#' + identifier: argument.type count: 8 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Configuration/Projector/InstitutionConfigurationOptionsProjector.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Configuration\\\\Repository\\\\AllowedSecondFactorRepository\\:\\:getAllowedSecondFactorsFor\\(\\) should return array\\ but returns mixed\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Configuration\\Repository\\AllowedSecondFactorRepository\:\:getAllowedSecondFactorsFor\(\) should return array\ but returns mixed\.$#' + identifier: return.type count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Configuration/Repository/AllowedSecondFactorRepository.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Configuration\\\\Repository\\\\InstitutionAuthorizationRepository\\:\\:findAuthorizationOptionsForInstitution\\(\\) should return array\\ but returns mixed\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Configuration\\Repository\\InstitutionAuthorizationRepository\:\:findAuthorizationOptionsForInstitution\(\) should return array\ but returns mixed\.$#' + identifier: return.type count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Configuration/Repository/InstitutionAuthorizationRepository.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Configuration\\\\Repository\\\\InstitutionAuthorizationRepository\\:\\:findAuthorizationOptionsForInstitutionByRole\\(\\) should return array\\ but returns mixed\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Configuration\\Repository\\InstitutionAuthorizationRepository\:\:findAuthorizationOptionsForInstitutionByRole\(\) should return array\ but returns mixed\.$#' + identifier: return.type count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Configuration/Repository/InstitutionAuthorizationRepository.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Configuration\\\\Repository\\\\InstitutionAuthorizationRepository\\:\\:findSelectRaasForInstitution\\(\\) should return array\\ but returns mixed\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Configuration\\Repository\\InstitutionAuthorizationRepository\:\:findSelectRaasForInstitution\(\) should return array\ but returns mixed\.$#' + identifier: return.type count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Configuration/Repository/InstitutionAuthorizationRepository.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Configuration\\\\Repository\\\\InstitutionConfigurationOptionsRepository\\:\\:findConfigurationOptionsFor\\(\\) should return Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Configuration\\\\Entity\\\\InstitutionConfigurationOptions\\|null but returns mixed\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Configuration\\Repository\\InstitutionConfigurationOptionsRepository\:\:findConfigurationOptionsFor\(\) should return Surfnet\\StepupMiddleware\\ApiBundle\\Configuration\\Entity\\InstitutionConfigurationOptions\|null but returns mixed\.$#' + identifier: return.type count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Configuration/Repository/InstitutionConfigurationOptionsRepository.php - - message: "#^Cannot call method getInstitution\\(\\) on string\\|Surfnet\\\\Stepup\\\\Configuration\\\\Value\\\\Institution\\.$#" + message: '#^Cannot call method getInstitution\(\) on string\|Surfnet\\Stepup\\Configuration\\Value\\Institution\.$#' + identifier: method.nonObject count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Configuration/Repository/RaLocationRepository.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Configuration\\\\Repository\\\\RaLocationRepository\\:\\:findByInstitution\\(\\) should return array\\ but returns mixed\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Configuration\\Repository\\RaLocationRepository\:\:findByInstitution\(\) should return array\ but returns mixed\.$#' + identifier: return.type count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Configuration/Repository/RaLocationRepository.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Configuration\\\\Repository\\\\RaLocationRepository\\:\\:findByRaLocationId\\(\\) should return Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Configuration\\\\Entity\\\\RaLocation\\|null but returns mixed\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Configuration\\Repository\\RaLocationRepository\:\:findByRaLocationId\(\) should return Surfnet\\StepupMiddleware\\ApiBundle\\Configuration\\Entity\\RaLocation\|null but returns mixed\.$#' + identifier: return.type count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Configuration/Repository/RaLocationRepository.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Configuration\\\\Repository\\\\RaLocationRepository\\:\\:search\\(\\) should return array\\\\|null but returns mixed\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Configuration\\Repository\\RaLocationRepository\:\:search\(\) should return array\\|null but returns mixed\.$#' + identifier: return.type count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Configuration/Repository/RaLocationRepository.php - - message: "#^Cannot access an offset on Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Configuration\\\\Entity\\\\AllowedSecondFactor\\.$#" + message: '#^Cannot access an offset on Surfnet\\StepupMiddleware\\ApiBundle\\Configuration\\Entity\\AllowedSecondFactor\.$#' + identifier: offsetAccess.nonOffsetAccessible count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Configuration/Service/AllowedSecondFactorMap.php - - message: "#^Parameter \\#1 \\$allowedSecondFactors of static method Surfnet\\\\Stepup\\\\Configuration\\\\Value\\\\AllowedSecondFactorList\\:\\:ofTypes\\(\\) expects array, Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Configuration\\\\Entity\\\\AllowedSecondFactor given\\.$#" + message: '#^Parameter \#1 \$allowedSecondFactors of static method Surfnet\\Stepup\\Configuration\\Value\\AllowedSecondFactorList\:\:ofTypes\(\) expects array, Surfnet\\StepupMiddleware\\ApiBundle\\Configuration\\Entity\\AllowedSecondFactor given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Configuration/Service/AllowedSecondFactorMap.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Configuration\\\\Service\\\\InstitutionAuthorizationOptionMap\\:\\:fromInstitutionAuthorizations\\(\\) has parameter \\$institutionAuthorizations with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Configuration\\Service\\InstitutionAuthorizationOptionMap\:\:fromInstitutionAuthorizations\(\) has parameter \$institutionAuthorizations with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Configuration/Service/InstitutionAuthorizationOptionMap.php - - message: "#^Parameter \\#1 \\$value of class Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\IdentityId constructor expects string, mixed given\\.$#" + message: '#^Parameter \#1 \$value of class Surfnet\\Stepup\\Identity\\Value\\IdentityId constructor expects string, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/AuditLogController.php - - message: "#^Property Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Query\\\\AbstractQuery\\:\\:\\$pageNumber \\(int\\) does not accept mixed\\.$#" + message: '#^Property Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Query\\AbstractQuery\:\:\$pageNumber \(int\) does not accept mixed\.$#' + identifier: assign.propertyType count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/AuditLogController.php - - message: "#^Property Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Query\\\\SecondFactorAuditLogQuery\\:\\:\\$orderBy \\(string\\) does not accept mixed\\.$#" + message: '#^Property Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Query\\SecondFactorAuditLogQuery\:\:\$orderBy \(string\) does not accept mixed\.$#' + identifier: assign.propertyType count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/AuditLogController.php - - message: "#^Property Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Query\\\\SecondFactorAuditLogQuery\\:\\:\\$orderDirection \\(string\\) does not accept mixed\\.$#" + message: '#^Property Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Query\\SecondFactorAuditLogQuery\:\:\$orderDirection \(string\) does not accept mixed\.$#' + identifier: assign.propertyType count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/AuditLogController.php - - message: "#^Access to an undefined property Surfnet\\\\StepupMiddleware\\\\CommandHandlingBundle\\\\Identity\\\\Command\\\\CreateIdentityCommand\\|Surfnet\\\\StepupMiddleware\\\\CommandHandlingBundle\\\\Identity\\\\Command\\\\UpdateIdentityCommand\\:\\:\\$institution\\.$#" + message: '#^Access to an undefined property Surfnet\\StepupMiddleware\\CommandHandlingBundle\\Identity\\Command\\CreateIdentityCommand\|Surfnet\\StepupMiddleware\\CommandHandlingBundle\\Identity\\Command\\UpdateIdentityCommand\:\:\$institution\.$#' + identifier: property.notFound count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/CommandController.php - - message: "#^Parameter \\#1 \\$value of class Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\IdentityId constructor expects string, string\\|null given\\.$#" + message: '#^Parameter \#1 \$value of class Surfnet\\Stepup\\Identity\\Value\\IdentityId constructor expects string, string\|null given\.$#' + identifier: argument.type count: 2 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/CommandController.php - - message: "#^Cannot cast mixed to int\\.$#" + message: '#^Cannot cast mixed to int\.$#' + identifier: cast.int count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/IdentityController.php - - message: "#^Property Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Query\\\\IdentityQuery\\:\\:\\$commonName \\(string\\|null\\) does not accept mixed\\.$#" + message: '#^Property Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Query\\IdentityQuery\:\:\$commonName \(string\|null\) does not accept mixed\.$#' + identifier: assign.propertyType count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/IdentityController.php - - message: "#^Property Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Query\\\\IdentityQuery\\:\\:\\$email \\(string\\|null\\) does not accept mixed\\.$#" + message: '#^Property Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Query\\IdentityQuery\:\:\$email \(string\|null\) does not accept mixed\.$#' + identifier: assign.propertyType count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/IdentityController.php - - message: "#^Property Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Query\\\\IdentityQuery\\:\\:\\$nameId \\(string\\|null\\) does not accept mixed\\.$#" + message: '#^Property Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Query\\IdentityQuery\:\:\$nameId \(string\|null\) does not accept mixed\.$#' + identifier: assign.propertyType count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/IdentityController.php - - message: "#^Cannot cast mixed to int\\.$#" + message: '#^Cannot cast mixed to int\.$#' + identifier: cast.int count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaCandidateController.php - - message: "#^Parameter \\#1 \\$identityId of method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Service\\\\RaCandidateService\\:\\:findOneByIdentityId\\(\\) expects string, mixed given\\.$#" + message: '#^Parameter \#1 \$identityId of method Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Service\\RaCandidateService\:\:findOneByIdentityId\(\) expects string, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaCandidateController.php - - message: "#^Parameter \\#1 \\$value of class Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\IdentityId constructor expects string, mixed given\\.$#" + message: '#^Parameter \#1 \$value of class Surfnet\\Stepup\\Identity\\Value\\IdentityId constructor expects string, mixed given\.$#' + identifier: argument.type count: 2 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaCandidateController.php - - message: "#^Parameter \\#2 \\.\\.\\.\\$values of function sprintf expects bool\\|float\\|int\\|string\\|null, mixed given\\.$#" + message: '#^Parameter \#2 \.\.\.\$values of function sprintf expects bool\|float\|int\|string\|null, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaCandidateController.php - - message: "#^Property Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Query\\\\RaCandidateQuery\\:\\:\\$commonName \\(string\\|null\\) does not accept mixed\\.$#" + message: '#^Property Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Query\\RaCandidateQuery\:\:\$commonName \(string\|null\) does not accept mixed\.$#' + identifier: assign.propertyType count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaCandidateController.php - - message: "#^Property Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Query\\\\RaCandidateQuery\\:\\:\\$email \\(string\\|null\\) does not accept mixed\\.$#" + message: '#^Property Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Query\\RaCandidateQuery\:\:\$email \(string\|null\) does not accept mixed\.$#' + identifier: assign.propertyType count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaCandidateController.php - - message: "#^Property Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Query\\\\RaCandidateQuery\\:\\:\\$institution \\(string\\|Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\Institution\\|null\\) does not accept mixed\\.$#" + message: '#^Property Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Query\\RaCandidateQuery\:\:\$institution \(string\|Surfnet\\Stepup\\Identity\\Value\\Institution\|null\) does not accept mixed\.$#' + identifier: assign.propertyType count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaCandidateController.php - - message: "#^Property Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Query\\\\RaCandidateQuery\\:\\:\\$raInstitution \\(string\\|Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\Institution\\|null\\) does not accept mixed\\.$#" + message: '#^Property Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Query\\RaCandidateQuery\:\:\$raInstitution \(string\|Surfnet\\Stepup\\Identity\\Value\\Institution\|null\) does not accept mixed\.$#' + identifier: assign.propertyType count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaCandidateController.php - - message: "#^Property Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Query\\\\RaCandidateQuery\\:\\:\\$secondFactorTypes \\(array\\\\) does not accept mixed\\.$#" + message: '#^Property Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Query\\RaCandidateQuery\:\:\$secondFactorTypes \(array\\) does not accept mixed\.$#' + identifier: assign.propertyType count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaCandidateController.php - - message: "#^Cannot cast mixed to int\\.$#" + message: '#^Cannot cast mixed to int\.$#' + identifier: cast.int count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaListingController.php - - message: "#^Parameter \\#1 \\$institution of class Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\Institution constructor expects string, mixed given\\.$#" + message: '#^Parameter \#1 \$institution of class Surfnet\\Stepup\\Identity\\Value\\Institution constructor expects string, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaListingController.php - - message: "#^Parameter \\#1 \\$value of class Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\IdentityId constructor expects string, mixed given\\.$#" + message: '#^Parameter \#1 \$value of class Surfnet\\Stepup\\Identity\\Value\\IdentityId constructor expects string, mixed given\.$#' + identifier: argument.type count: 3 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaListingController.php - - message: "#^Property Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Query\\\\RaListingQuery\\:\\:\\$email \\(string\\|null\\) does not accept mixed\\.$#" + message: '#^Property Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Query\\RaListingQuery\:\:\$email \(string\|null\) does not accept mixed\.$#' + identifier: assign.propertyType count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaListingController.php - - message: "#^Property Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Query\\\\RaListingQuery\\:\\:\\$institution \\(string\\|Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\Institution\\|null\\) does not accept mixed\\.$#" + message: '#^Property Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Query\\RaListingQuery\:\:\$institution \(string\|Surfnet\\Stepup\\Identity\\Value\\Institution\|null\) does not accept mixed\.$#' + identifier: assign.propertyType count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaListingController.php - - message: "#^Property Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Query\\\\RaListingQuery\\:\\:\\$name \\(string\\|null\\) does not accept mixed\\.$#" + message: '#^Property Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Query\\RaListingQuery\:\:\$name \(string\|null\) does not accept mixed\.$#' + identifier: assign.propertyType count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaListingController.php - - message: "#^Property Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Query\\\\RaListingQuery\\:\\:\\$orderBy \\(string\\) does not accept mixed\\.$#" + message: '#^Property Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Query\\RaListingQuery\:\:\$orderBy \(string\) does not accept mixed\.$#' + identifier: assign.propertyType count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaListingController.php - - message: "#^Property Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Query\\\\RaListingQuery\\:\\:\\$orderDirection \\(string\\) does not accept mixed\\.$#" + message: '#^Property Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Query\\RaListingQuery\:\:\$orderDirection \(string\) does not accept mixed\.$#' + identifier: assign.propertyType count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaListingController.php - - message: "#^Property Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Query\\\\RaListingQuery\\:\\:\\$raInstitution \\(string\\|null\\) does not accept mixed\\.$#" + message: '#^Property Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Query\\RaListingQuery\:\:\$raInstitution \(string\|null\) does not accept mixed\.$#' + identifier: assign.propertyType count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaListingController.php - - message: "#^Property Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Query\\\\RaListingQuery\\:\\:\\$role \\(string\\|null\\) does not accept mixed\\.$#" + message: '#^Property Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Query\\RaListingQuery\:\:\$role \(string\|null\) does not accept mixed\.$#' + identifier: assign.propertyType count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaListingController.php - - message: "#^Parameter \\#1 \\$raLocationId of class Surfnet\\\\Stepup\\\\Configuration\\\\Value\\\\RaLocationId constructor expects string, mixed given\\.$#" + message: '#^Parameter \#1 \$raLocationId of class Surfnet\\Stepup\\Configuration\\Value\\RaLocationId constructor expects string, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaLocationController.php - - message: "#^Parameter \\#1 \\$value of function count expects array\\|Countable, array\\\\|null given\\.$#" + message: '#^Parameter \#1 \$value of function count expects array\|Countable, array\\|null given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaLocationController.php - - message: "#^Parameter \\#4 \\$collection of class Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Response\\\\JsonCollectionResponse constructor expects array, array\\\\|null given\\.$#" + message: '#^Parameter \#4 \$collection of class Surfnet\\StepupMiddleware\\ApiBundle\\Response\\JsonCollectionResponse constructor expects array, array\\|null given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaLocationController.php - - message: "#^Property Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Configuration\\\\Query\\\\RaLocationQuery\\:\\:\\$orderBy \\(string\\) does not accept mixed\\.$#" + message: '#^Property Surfnet\\StepupMiddleware\\ApiBundle\\Configuration\\Query\\RaLocationQuery\:\:\$orderBy \(string\) does not accept mixed\.$#' + identifier: assign.propertyType count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaLocationController.php - - message: "#^Property Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Configuration\\\\Query\\\\RaLocationQuery\\:\\:\\$orderDirection \\(string\\) does not accept mixed\\.$#" + message: '#^Property Surfnet\\StepupMiddleware\\ApiBundle\\Configuration\\Query\\RaLocationQuery\:\:\$orderDirection \(string\) does not accept mixed\.$#' + identifier: assign.propertyType count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaLocationController.php - - message: "#^Cannot cast mixed to int\\.$#" + message: '#^Cannot cast mixed to int\.$#' + identifier: cast.int count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaSecondFactorController.php - - message: "#^Parameter \\#1 \\$value of class Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\IdentityId constructor expects string, mixed given\\.$#" + message: '#^Parameter \#1 \$value of class Surfnet\\Stepup\\Identity\\Value\\IdentityId constructor expects string, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaSecondFactorController.php - - message: "#^Property Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Query\\\\RaSecondFactorQuery\\:\\:\\$email \\(string\\|null\\) does not accept mixed\\.$#" + message: '#^Property Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Query\\RaSecondFactorQuery\:\:\$email \(string\|null\) does not accept mixed\.$#' + identifier: assign.propertyType count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaSecondFactorController.php - - message: "#^Property Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Query\\\\RaSecondFactorQuery\\:\\:\\$institution \\(string\\|null\\) does not accept mixed\\.$#" + message: '#^Property Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Query\\RaSecondFactorQuery\:\:\$institution \(string\|null\) does not accept mixed\.$#' + identifier: assign.propertyType count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaSecondFactorController.php - - message: "#^Property Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Query\\\\RaSecondFactorQuery\\:\\:\\$name \\(string\\|null\\) does not accept mixed\\.$#" + message: '#^Property Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Query\\RaSecondFactorQuery\:\:\$name \(string\|null\) does not accept mixed\.$#' + identifier: assign.propertyType count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaSecondFactorController.php - - message: "#^Property Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Query\\\\RaSecondFactorQuery\\:\\:\\$orderBy \\(string\\|null\\) does not accept mixed\\.$#" + message: '#^Property Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Query\\RaSecondFactorQuery\:\:\$orderBy \(string\|null\) does not accept mixed\.$#' + identifier: assign.propertyType count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaSecondFactorController.php - - message: "#^Property Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Query\\\\RaSecondFactorQuery\\:\\:\\$orderDirection \\(string\\|null\\) does not accept mixed\\.$#" + message: '#^Property Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Query\\RaSecondFactorQuery\:\:\$orderDirection \(string\|null\) does not accept mixed\.$#' + identifier: assign.propertyType count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaSecondFactorController.php - - message: "#^Property Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Query\\\\RaSecondFactorQuery\\:\\:\\$secondFactorId \\(string\\|null\\) does not accept mixed\\.$#" + message: '#^Property Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Query\\RaSecondFactorQuery\:\:\$secondFactorId \(string\|null\) does not accept mixed\.$#' + identifier: assign.propertyType count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaSecondFactorController.php - - message: "#^Property Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Query\\\\RaSecondFactorQuery\\:\\:\\$status \\(string\\|null\\) does not accept mixed\\.$#" + message: '#^Property Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Query\\RaSecondFactorQuery\:\:\$status \(string\|null\) does not accept mixed\.$#' + identifier: assign.propertyType count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaSecondFactorController.php - - message: "#^Property Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Query\\\\RaSecondFactorQuery\\:\\:\\$type \\(string\\|null\\) does not accept mixed\\.$#" + message: '#^Property Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Query\\RaSecondFactorQuery\:\:\$type \(string\|null\) does not accept mixed\.$#' + identifier: assign.propertyType count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaSecondFactorController.php - - message: "#^Cannot call method getRoles\\(\\) on Symfony\\\\Component\\\\Security\\\\Core\\\\User\\\\UserInterface\\|null\\.$#" + message: '#^Cannot call method getRoles\(\) on Symfony\\Component\\Security\\Core\\User\\UserInterface\|null\.$#' + identifier: method.nonObject count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/RecoveryTokenController.php - - message: "#^Cannot cast mixed to int\\.$#" + message: '#^Cannot cast mixed to int\.$#' + identifier: cast.int count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/RecoveryTokenController.php - - message: "#^Parameter \\#1 \\$value of class Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\IdentityId constructor expects string, mixed given\\.$#" + message: '#^Parameter \#1 \$value of class Surfnet\\Stepup\\Identity\\Value\\IdentityId constructor expects string, mixed given\.$#' + identifier: argument.type count: 2 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/RecoveryTokenController.php - - message: "#^Parameter \\#2 \\.\\.\\.\\$values of function sprintf expects bool\\|float\\|int\\|string\\|null, mixed given\\.$#" + message: '#^Parameter \#2 \.\.\.\$values of function sprintf expects bool\|float\|int\|string\|null, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/RecoveryTokenController.php - - message: "#^Property Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Query\\\\RecoveryTokenQuery\\:\\:\\$email \\(string\\|null\\) does not accept mixed\\.$#" + message: '#^Property Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Query\\RecoveryTokenQuery\:\:\$email \(string\|null\) does not accept mixed\.$#' + identifier: assign.propertyType count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/RecoveryTokenController.php - - message: "#^Property Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Query\\\\RecoveryTokenQuery\\:\\:\\$institution \\(string\\|null\\) does not accept mixed\\.$#" + message: '#^Property Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Query\\RecoveryTokenQuery\:\:\$institution \(string\|null\) does not accept mixed\.$#' + identifier: assign.propertyType count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/RecoveryTokenController.php - - message: "#^Property Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Query\\\\RecoveryTokenQuery\\:\\:\\$name \\(string\\|null\\) does not accept mixed\\.$#" + message: '#^Property Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Query\\RecoveryTokenQuery\:\:\$name \(string\|null\) does not accept mixed\.$#' + identifier: assign.propertyType count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/RecoveryTokenController.php - - message: "#^Property Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Query\\\\RecoveryTokenQuery\\:\\:\\$orderBy \\(string\\|null\\) does not accept mixed\\.$#" + message: '#^Property Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Query\\RecoveryTokenQuery\:\:\$orderBy \(string\|null\) does not accept mixed\.$#' + identifier: assign.propertyType count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/RecoveryTokenController.php - - message: "#^Property Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Query\\\\RecoveryTokenQuery\\:\\:\\$orderDirection \\(string\\|null\\) does not accept mixed\\.$#" + message: '#^Property Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Query\\RecoveryTokenQuery\:\:\$orderDirection \(string\|null\) does not accept mixed\.$#' + identifier: assign.propertyType count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/RecoveryTokenController.php - - message: "#^Property Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Query\\\\RecoveryTokenQuery\\:\\:\\$status \\(string\\|null\\) does not accept mixed\\.$#" + message: '#^Property Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Query\\RecoveryTokenQuery\:\:\$status \(string\|null\) does not accept mixed\.$#' + identifier: assign.propertyType count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/RecoveryTokenController.php - - message: "#^Property Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Query\\\\RecoveryTokenQuery\\:\\:\\$type \\(string\\|null\\) does not accept mixed\\.$#" + message: '#^Property Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Query\\RecoveryTokenQuery\:\:\$type \(string\|null\) does not accept mixed\.$#' + identifier: assign.propertyType count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/RecoveryTokenController.php - - message: "#^Cannot cast mixed to int\\.$#" + message: '#^Cannot cast mixed to int\.$#' + identifier: cast.int count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/UnverifiedSecondFactorController.php - - message: "#^Parameter \\#1 \\$value of class Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\IdentityId constructor expects string, mixed given\\.$#" + message: '#^Parameter \#1 \$value of class Surfnet\\Stepup\\Identity\\Value\\IdentityId constructor expects string, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/UnverifiedSecondFactorController.php - - message: "#^Property Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Query\\\\UnverifiedSecondFactorQuery\\:\\:\\$verificationNonce \\(string\\|null\\) does not accept mixed\\.$#" + message: '#^Property Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Query\\UnverifiedSecondFactorQuery\:\:\$verificationNonce \(string\|null\) does not accept mixed\.$#' + identifier: assign.propertyType count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/UnverifiedSecondFactorController.php - - message: "#^Cannot cast mixed to int\\.$#" + message: '#^Cannot cast mixed to int\.$#' + identifier: cast.int count: 2 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/VerifiedSecondFactorController.php - - message: "#^Parameter \\#1 \\$value of class Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\IdentityId constructor expects string, mixed given\\.$#" + message: '#^Parameter \#1 \$value of class Surfnet\\Stepup\\Identity\\Value\\IdentityId constructor expects string, mixed given\.$#' + identifier: argument.type count: 3 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/VerifiedSecondFactorController.php - - message: "#^Parameter \\#1 \\$value of class Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\SecondFactorId constructor expects string, mixed given\\.$#" + message: '#^Parameter \#1 \$value of class Surfnet\\Stepup\\Identity\\Value\\SecondFactorId constructor expects string, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/VerifiedSecondFactorController.php - - message: "#^Property Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Query\\\\VerifiedSecondFactorQuery\\:\\:\\$registrationCode \\(string\\|null\\) does not accept mixed\\.$#" + message: '#^Property Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Query\\VerifiedSecondFactorQuery\:\:\$registrationCode \(string\|null\) does not accept mixed\.$#' + identifier: assign.propertyType count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/VerifiedSecondFactorController.php - - message: "#^Cannot cast mixed to int\\.$#" + message: '#^Cannot cast mixed to int\.$#' + identifier: cast.int count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/VettedSecondFactorController.php - - message: "#^Parameter \\#1 \\$value of class Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\IdentityId constructor expects string, mixed given\\.$#" + message: '#^Parameter \#1 \$value of class Surfnet\\Stepup\\Identity\\Value\\IdentityId constructor expects string, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/VettedSecondFactorController.php - - message: "#^Cannot cast mixed to string\\.$#" + message: '#^Cannot cast mixed to string\.$#' + identifier: cast.string count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/AuthorityRoleType.php - - message: "#^Parameter \\#1 \\$role of class Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Value\\\\AuthorityRole constructor expects string, mixed given\\.$#" + message: '#^Parameter \#1 \$role of class Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Value\\AuthorityRole constructor expects string, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/AuthorityRoleType.php - - message: "#^Cannot cast mixed to string\\.$#" + message: '#^Cannot cast mixed to string\.$#' + identifier: cast.string count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/CommonNameType.php - - message: "#^Parameter \\#1 \\$commonName of class Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\CommonName constructor expects string, mixed given\\.$#" + message: '#^Parameter \#1 \$commonName of class Surfnet\\Stepup\\Identity\\Value\\CommonName constructor expects string, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/CommonNameType.php - - message: "#^Parameter \\#1 \\$contactInformation of class Surfnet\\\\Stepup\\\\Configuration\\\\Value\\\\ContactInformation constructor expects string, mixed given\\.$#" + message: '#^Parameter \#1 \$contactInformation of class Surfnet\\Stepup\\Configuration\\Value\\ContactInformation constructor expects string, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/ConfigurationContactInformationType.php - - message: "#^Parameter \\#1 \\$institution of class Surfnet\\\\Stepup\\\\Configuration\\\\Value\\\\Institution constructor expects string, mixed given\\.$#" + message: '#^Parameter \#1 \$institution of class Surfnet\\Stepup\\Configuration\\Value\\Institution constructor expects string, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/ConfigurationInstitutionType.php - - message: "#^Parameter \\#1 \\$location of class Surfnet\\\\Stepup\\\\Configuration\\\\Value\\\\Location constructor expects string, mixed given\\.$#" + message: '#^Parameter \#1 \$location of class Surfnet\\Stepup\\Configuration\\Value\\Location constructor expects string, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/ConfigurationLocationType.php - - message: "#^Cannot cast mixed to string\\.$#" + message: '#^Cannot cast mixed to string\.$#' + identifier: cast.string count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/ContactInformationType.php - - message: "#^Parameter \\#1 \\$contactInformation of class Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\ContactInformation constructor expects string, mixed given\\.$#" + message: '#^Parameter \#1 \$contactInformation of class Surfnet\\Stepup\\Identity\\Value\\ContactInformation constructor expects string, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/ContactInformationType.php - - message: "#^Cannot call method format\\(\\) on mixed\\.$#" + message: '#^Cannot call method format\(\) on mixed\.$#' + identifier: method.nonObject count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/DateTimeType.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Doctrine\\\\Type\\\\DateTimeType\\:\\:getSQLDeclaration\\(\\) has parameter \\$column with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Doctrine\\Type\\DateTimeType\:\:getSQLDeclaration\(\) has parameter \$column with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/DateTimeType.php - - message: "#^Parameter \\#2 \\$datetime of static method DateTime\\:\\:createFromFormat\\(\\) expects string, mixed given\\.$#" + message: '#^Parameter \#2 \$datetime of static method DateTime\:\:createFromFormat\(\) expects string, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/DateTimeType.php - - message: "#^Parameter \\#1 \\$documentNumber of class Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\DocumentNumber constructor expects string, mixed given\\.$#" + message: '#^Parameter \#1 \$documentNumber of class Surfnet\\Stepup\\Identity\\Value\\DocumentNumber constructor expects string, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/DocumentNumberType.php - - message: "#^Cannot cast mixed to string\\.$#" + message: '#^Cannot cast mixed to string\.$#' + identifier: cast.string count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/EmailType.php - - message: "#^Parameter \\#1 \\$email of class Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\Email constructor expects string, mixed given\\.$#" + message: '#^Parameter \#1 \$email of class Surfnet\\Stepup\\Identity\\Value\\Email constructor expects string, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/EmailType.php - - message: "#^Parameter \\#1 \\$type of class Surfnet\\\\Stepup\\\\Configuration\\\\Value\\\\InstitutionRole constructor expects string, mixed given\\.$#" + message: '#^Parameter \#1 \$type of class Surfnet\\Stepup\\Configuration\\Value\\InstitutionRole constructor expects string, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/InstitutionRoleType.php - - message: "#^Cannot cast mixed to string\\.$#" + message: '#^Cannot cast mixed to string\.$#' + identifier: cast.string count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/InstitutionType.php - - message: "#^Parameter \\#1 \\$institution of class Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\Institution constructor expects string, mixed given\\.$#" + message: '#^Parameter \#1 \$institution of class Surfnet\\Stepup\\Identity\\Value\\Institution constructor expects string, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/InstitutionType.php - - message: "#^Cannot cast mixed to string\\.$#" + message: '#^Cannot cast mixed to string\.$#' + identifier: cast.string count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/LocaleType.php - - message: "#^Parameter \\#1 \\$locale of class Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\Locale constructor expects string, mixed given\\.$#" + message: '#^Parameter \#1 \$locale of class Surfnet\\Stepup\\Identity\\Value\\Locale constructor expects string, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/LocaleType.php - - message: "#^Cannot cast mixed to string\\.$#" + message: '#^Cannot cast mixed to string\.$#' + identifier: cast.string count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/LocationType.php - - message: "#^Parameter \\#1 \\$location of class Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\Location constructor expects string, mixed given\\.$#" + message: '#^Parameter \#1 \$location of class Surfnet\\Stepup\\Identity\\Value\\Location constructor expects string, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/LocationType.php - - message: "#^Cannot cast mixed to string\\.$#" + message: '#^Cannot cast mixed to string\.$#' + identifier: cast.string count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/NameIdType.php - - message: "#^Parameter \\#1 \\$value of class Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\NameId constructor expects string, mixed given\\.$#" + message: '#^Parameter \#1 \$value of class Surfnet\\Stepup\\Identity\\Value\\NameId constructor expects string, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/NameIdType.php - - message: "#^Parameter \\#1 \\$raLocationName of class Surfnet\\\\Stepup\\\\Configuration\\\\Value\\\\RaLocationName constructor expects string, mixed given\\.$#" + message: '#^Cannot cast T of mixed to int\.$#' + identifier: cast.int + count: 1 + path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/NumberOfTokensPerIdentityType.php + + - + message: '#^Parameter \#1 \$raLocationName of class Surfnet\\Stepup\\Configuration\\Value\\RaLocationName constructor expects string, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/RaLocationNameType.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Doctrine\\\\Type\\\\SecondFactorStatusType\\:\\:getSQLDeclaration\\(\\) has parameter \\$column with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Doctrine\\Type\\SecondFactorStatusType\:\:getSQLDeclaration\(\) has parameter \$column with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/SecondFactorStatusType.php - - message: "#^Cannot cast mixed to string\\.$#" + message: '#^Cannot cast mixed to string\.$#' + identifier: cast.string count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/SecondFactorTypeType.php - - message: "#^Parameter \\#1 \\$type of class Surfnet\\\\StepupBundle\\\\Value\\\\SecondFactorType constructor expects string, mixed given\\.$#" + message: '#^Parameter \#1 \$type of class Surfnet\\StepupBundle\\Value\\SecondFactorType constructor expects string, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/SecondFactorTypeType.php - - message: "#^Cannot cast mixed to string\\.$#" + message: '#^Cannot cast mixed to string\.$#' + identifier: cast.string count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/VettingTypeHintsType.php - - message: "#^Parameter \\#1 \\$data of static method Surfnet\\\\Stepup\\\\Identity\\\\Collection\\\\VettingTypeHintCollection\\:\\:deserialize\\(\\) expects array, mixed given\\.$#" + message: '#^Parameter \#1 \$data of static method Surfnet\\Stepup\\Identity\\Collection\\VettingTypeHintCollection\:\:deserialize\(\) expects array, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/VettingTypeHintsType.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\EventListener\\\\ExceptionListener\\:\\:createJsonErrorResponse\\(\\) has parameter \\$headers with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\EventListener\\ExceptionListener\:\:createJsonErrorResponse\(\) has parameter \$headers with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/EventListener/ExceptionListener.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Exception\\\\BadApiRequestException\\:\\:__construct\\(\\) has parameter \\$errors with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Exception\\BadApiRequestException\:\:__construct\(\) has parameter \$errors with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Exception/BadApiRequestException.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Exception\\\\BadCommandRequestException\\:\\:__construct\\(\\) has parameter \\$errors with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Exception\\BadCommandRequestException\:\:__construct\(\) has parameter \$errors with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Exception/BadCommandRequestException.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Entity\\\\AuditLogEntry\\:\\:jsonSerialize\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Entity\\AuditLogEntry\:\:jsonSerialize\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Identity/Entity/AuditLogEntry.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Entity\\\\Identity\\:\\:jsonSerialize\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Entity\\Identity\:\:jsonSerialize\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Identity/Entity/Identity.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Entity\\\\IdentitySelfAssertedTokenOptions\\:\\:jsonSerialize\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Entity\\IdentitySelfAssertedTokenOptions\:\:jsonSerialize\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Identity/Entity/IdentitySelfAssertedTokenOptions.php - - message: "#^PHPDoc tag @var for property Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Entity\\\\IdentitySelfAssertedTokenOptions\\:\\:\\$identityId with type Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\IdentityId is incompatible with native type string\\.$#" + message: '#^PHPDoc tag @var for property Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Entity\\IdentitySelfAssertedTokenOptions\:\:\$identityId with type Surfnet\\Stepup\\Identity\\Value\\IdentityId is incompatible with native type string\.$#' + identifier: property.phpDocType count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Identity/Entity/IdentitySelfAssertedTokenOptions.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Entity\\\\InstitutionListing\\:\\:jsonSerialize\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Entity\\InstitutionListing\:\:jsonSerialize\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Identity/Entity/InstitutionListing.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Entity\\\\RaCandidate\\:\\:jsonSerialize\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Entity\\RaCandidate\:\:jsonSerialize\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Identity/Entity/RaCandidate.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Entity\\\\RaListing\\:\\:jsonSerialize\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Entity\\RaListing\:\:jsonSerialize\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Identity/Entity/RaListing.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Entity\\\\RaSecondFactor\\:\\:jsonSerialize\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Entity\\RaSecondFactor\:\:jsonSerialize\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Identity/Entity/RaSecondFactor.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Entity\\\\RecoveryToken\\:\\:jsonSerialize\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Entity\\RecoveryToken\:\:jsonSerialize\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Identity/Entity/RecoveryToken.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Entity\\\\UnverifiedSecondFactor\\:\\:jsonSerialize\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Entity\\UnverifiedSecondFactor\:\:jsonSerialize\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Identity/Entity/UnverifiedSecondFactor.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Entity\\\\VerifiedSecondFactor\\:\\:jsonSerialize\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Entity\\VerifiedSecondFactor\:\:jsonSerialize\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Identity/Entity/VerifiedSecondFactor.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Entity\\\\VettedSecondFactor\\:\\:jsonSerialize\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Entity\\VettedSecondFactor\:\:jsonSerialize\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Identity/Entity/VettedSecondFactor.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Entity\\\\VettingTypeHint\\:\\:jsonSerialize\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Entity\\VettingTypeHint\:\:jsonSerialize\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Identity/Entity/VettingTypeHint.php - - message: "#^Cannot call method getCommonName\\(\\) on Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\CommonName\\|null\\.$#" + message: '#^Cannot call method getCommonName\(\) on Surfnet\\Stepup\\Identity\\Value\\CommonName\|null\.$#' + identifier: method.nonObject count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Identity/Projector/AuditLogProjector.php - - message: "#^Parameter \\#1 \\$type of class Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\RecoveryTokenType constructor expects string, string\\|null given\\.$#" + message: '#^Parameter \#1 \$type of class Surfnet\\Stepup\\Identity\\Value\\RecoveryTokenType constructor expects string, string\|null given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Identity/Projector/AuditLogProjector.php - - message: "#^Cannot access property \\$commonName on Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Entity\\\\Identity\\|null\\.$#" + message: '#^Cannot access property \$commonName on Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Entity\\Identity\|null\.$#' + identifier: property.nonObject count: 2 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Identity/Projector/IdentityProjector.php - - message: "#^Cannot access property \\$email on Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Entity\\\\Identity\\|null\\.$#" + message: '#^Cannot access property \$email on Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Entity\\Identity\|null\.$#' + identifier: property.nonObject count: 2 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Identity/Projector/IdentityProjector.php - - message: "#^Cannot access property \\$preferredLocale on Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Entity\\\\Identity\\|null\\.$#" + message: '#^Cannot access property \$preferredLocale on Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Entity\\Identity\|null\.$#' + identifier: property.nonObject count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Identity/Projector/IdentityProjector.php - - message: "#^Parameter \\#1 \\$identity of method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Repository\\\\IdentityRepository\\:\\:save\\(\\) expects Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Entity\\\\Identity, Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Entity\\\\Identity\\|null given\\.$#" + message: '#^Parameter \#1 \$identity of method Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Repository\\IdentityRepository\:\:save\(\) expects Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Entity\\Identity, Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Entity\\Identity\|null given\.$#' + identifier: argument.type count: 4 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Identity/Projector/IdentityProjector.php - - message: "#^Parameter \\#1 \\$vettingType of method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Projector\\\\IdentityProjector\\:\\:determinePossessionOfSelfAssertedToken\\(\\) expects Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\VettingType, Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\VettingType\\|null given\\.$#" + message: '#^Parameter \#1 \$vettingType of method Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Projector\\IdentityProjector\:\:determinePossessionOfSelfAssertedToken\(\) expects Surfnet\\Stepup\\Identity\\Value\\VettingType, Surfnet\\Stepup\\Identity\\Value\\VettingType\|null given\.$#' + identifier: argument.type count: 2 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Identity/Projector/IdentityProjector.php - - message: "#^Parameter \\#1 \\$vettingType of method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Projector\\\\IdentitySelfAssertedTokenOptionsProjector\\:\\:determinePossessionOfToken\\(\\) expects Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\VettingType, Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\VettingType\\|null given\\.$#" + message: '#^Parameter \#1 \$vettingType of method Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Projector\\IdentitySelfAssertedTokenOptionsProjector\:\:determinePossessionOfToken\(\) expects Surfnet\\Stepup\\Identity\\Value\\VettingType, Surfnet\\Stepup\\Identity\\Value\\VettingType\|null given\.$#' + identifier: argument.type count: 2 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Identity/Projector/IdentitySelfAssertedTokenOptionsProjector.php - - message: "#^Cannot access property \\$commonName on Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Entity\\\\Identity\\|null\\.$#" + message: '#^Cannot access property \$commonName on Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Entity\\Identity\|null\.$#' + identifier: property.nonObject count: 4 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Identity/Projector/RaListingProjector.php - - message: "#^Cannot access property \\$email on Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Entity\\\\Identity\\|null\\.$#" + message: '#^Cannot access property \$email on Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Entity\\Identity\|null\.$#' + identifier: property.nonObject count: 4 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Identity/Projector/RaListingProjector.php - - message: "#^Cannot access property \\$role on Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Entity\\\\RaListing\\|null\\.$#" + message: '#^Cannot access property \$role on Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Entity\\RaListing\|null\.$#' + identifier: property.nonObject count: 2 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Identity/Projector/RaListingProjector.php - - message: "#^Parameter \\#1 \\$raListingEntry of method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Repository\\\\RaListingRepository\\:\\:save\\(\\) expects Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Entity\\\\RaListing, Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Entity\\\\RaListing\\|null given\\.$#" + message: '#^Parameter \#1 \$raListingEntry of method Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Repository\\RaListingRepository\:\:save\(\) expects Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Entity\\RaListing, Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Entity\\RaListing\|null given\.$#' + identifier: argument.type count: 2 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Identity/Projector/RaListingProjector.php - - message: "#^Cannot access property \\$documentNumber on Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Entity\\\\RaSecondFactor\\|null\\.$#" + message: '#^Cannot access property \$documentNumber on Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Entity\\RaSecondFactor\|null\.$#' + identifier: property.nonObject count: 3 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Identity/Projector/RaSecondFactorProjector.php - - message: "#^Cannot access property \\$id on Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Entity\\\\Identity\\|null\\.$#" + message: '#^Cannot access property \$id on Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Entity\\Identity\|null\.$#' + identifier: property.nonObject count: 2 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Identity/Projector/RaSecondFactorProjector.php - - message: "#^Cannot access property \\$institution on Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Entity\\\\Identity\\|null\\.$#" + message: '#^Cannot access property \$institution on Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Entity\\Identity\|null\.$#' + identifier: property.nonObject count: 2 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Identity/Projector/RaSecondFactorProjector.php - - message: "#^Cannot access property \\$status on Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Entity\\\\RaSecondFactor\\|null\\.$#" + message: '#^Cannot access property \$status on Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Entity\\RaSecondFactor\|null\.$#' + identifier: property.nonObject count: 4 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Identity/Projector/RaSecondFactorProjector.php - - message: "#^Cannot call method getDocumentNumber\\(\\) on Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\VettingType\\|null\\.$#" + message: '#^Cannot call method getDocumentNumber\(\) on Surfnet\\Stepup\\Identity\\Value\\VettingType\|null\.$#' + identifier: method.nonObject count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Identity/Projector/RaSecondFactorProjector.php - - message: "#^Parameter \\#1 \\$secondFactor of method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Repository\\\\RaSecondFactorRepository\\:\\:save\\(\\) expects Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Entity\\\\RaSecondFactor, Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Entity\\\\RaSecondFactor\\|null given\\.$#" + message: '#^Parameter \#1 \$secondFactor of method Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Repository\\RaSecondFactorRepository\:\:save\(\) expects Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Entity\\RaSecondFactor, Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Entity\\RaSecondFactor\|null given\.$#' + identifier: argument.type count: 3 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Identity/Projector/RaSecondFactorProjector.php - - message: "#^Cannot access property \\$status on Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Entity\\\\RecoveryToken\\|null\\.$#" + message: '#^Cannot access property \$status on Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Entity\\RecoveryToken\|null\.$#' + identifier: property.nonObject count: 2 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Identity/Projector/RecoveryTokenProjector.php - - message: "#^Parameter \\#1 \\$entry of method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Repository\\\\RecoveryTokenRepository\\:\\:save\\(\\) expects Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Entity\\\\RecoveryToken, Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Entity\\\\RecoveryToken\\|null given\\.$#" + message: '#^Parameter \#1 \$entry of method Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Repository\\RecoveryTokenRepository\:\:save\(\) expects Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Entity\\RecoveryToken, Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Entity\\RecoveryToken\|null given\.$#' + identifier: argument.type count: 2 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Identity/Projector/RecoveryTokenProjector.php - - message: "#^Cannot access property \\$secondFactorIdentifier on Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Entity\\\\UnverifiedSecondFactor\\|null\\.$#" + message: '#^Cannot access property \$secondFactorIdentifier on Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Entity\\UnverifiedSecondFactor\|null\.$#' + identifier: property.nonObject count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Identity/Projector/SecondFactorProjector.php - - message: "#^Parameter \\#1 \\$secondFactor of method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Repository\\\\UnverifiedSecondFactorRepository\\:\\:remove\\(\\) expects Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Entity\\\\UnverifiedSecondFactor, Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Entity\\\\UnverifiedSecondFactor\\|null given\\.$#" + message: '#^Parameter \#1 \$secondFactor of method Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Repository\\UnverifiedSecondFactorRepository\:\:remove\(\) expects Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Entity\\UnverifiedSecondFactor, Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Entity\\UnverifiedSecondFactor\|null given\.$#' + identifier: argument.type count: 3 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Identity/Projector/SecondFactorProjector.php - - message: "#^Parameter \\#1 \\$secondFactor of method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Repository\\\\VerifiedSecondFactorRepository\\:\\:remove\\(\\) expects Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Entity\\\\VerifiedSecondFactor, Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Entity\\\\VerifiedSecondFactor\\|null given\\.$#" + message: '#^Parameter \#1 \$secondFactor of method Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Repository\\VerifiedSecondFactorRepository\:\:remove\(\) expects Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Entity\\VerifiedSecondFactor, Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Entity\\VerifiedSecondFactor\|null given\.$#' + identifier: argument.type count: 4 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Identity/Projector/SecondFactorProjector.php - - message: "#^Parameter \\#1 \\$secondFactor of method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Repository\\\\VettedSecondFactorRepository\\:\\:remove\\(\\) expects Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Entity\\\\VettedSecondFactor, Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Entity\\\\VettedSecondFactor\\|null given\\.$#" + message: '#^Parameter \#1 \$secondFactor of method Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Repository\\VettedSecondFactorRepository\:\:remove\(\) expects Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Entity\\VettedSecondFactor, Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Entity\\VettedSecondFactor\|null given\.$#' + identifier: argument.type count: 2 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Identity/Projector/SecondFactorProjector.php - - message: "#^Parameter \\#1 \\$institution of static method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Entity\\\\WhitelistEntry\\:\\:createFrom\\(\\) expects Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\Institution, mixed given\\.$#" - count: 3 - path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Identity/Projector/WhitelistProjector.php - - - - message: "#^Parameter \\#1 \\$institutions of method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Repository\\\\WhitelistEntryRepository\\:\\:findEntriesByInstitutions\\(\\) expects array\\, array\\, mixed\\> given\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Repository\\AuditLogRepository\:\:createSecondFactorSearchQuery\(\) return type with generic class Doctrine\\ORM\\Query does not specify its types\: TKey, TResult$#' + identifier: missingType.generics count: 1 - path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Identity/Projector/WhitelistProjector.php + path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Identity/Repository/AuditLogRepository.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Repository\\\\AuditLogRepository\\:\\:findByIdentityId\\(\\) should return array\\ but returns mixed\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Repository\\AuditLogRepository\:\:findByIdentityId\(\) should return array\ but returns mixed\.$#' + identifier: return.type count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Identity/Repository/AuditLogRepository.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Repository\\\\AuditLogRepository\\:\\:findEntriesWhereIdentityIsActorOnly\\(\\) should return array\\ but returns mixed\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Repository\\AuditLogRepository\:\:findEntriesWhereIdentityIsActorOnly\(\) should return array\ but returns mixed\.$#' + identifier: return.type count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Identity/Repository/AuditLogRepository.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Repository\\\\AuditLogRepository\\:\\:saveAll\\(\\) has parameter \\$entries with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Repository\\AuditLogRepository\:\:saveAll\(\) has parameter \$entries with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Identity/Repository/AuditLogRepository.php - - message: "#^Cannot access offset 'institution' on mixed\\.$#" + message: '#^Cannot access offset ''institution'' on mixed\.$#' + identifier: offsetAccess.nonOffsetAccessible count: 5 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Identity/Repository/AuthorizationRepository.php - - message: "#^Cannot cast mixed to string\\.$#" + message: '#^Cannot cast mixed to string\.$#' + identifier: cast.string count: 3 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Identity/Repository/AuthorizationRepository.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Repository\\\\AuthorizationRepository\\:\\:getAllowedIdentityRoles\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Repository\\AuthorizationRepository\:\:getAllowedIdentityRoles\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Identity/Repository/AuthorizationRepository.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Repository\\\\AuthorizationRepository\\:\\:getAllowedInstitutionRoles\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Repository\\AuthorizationRepository\:\:getAllowedInstitutionRoles\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Identity/Repository/AuthorizationRepository.php - - message: "#^Parameter \\#2 \\.\\.\\.\\$values of function sprintf expects bool\\|float\\|int\\|string\\|null, mixed given\\.$#" + message: '#^Parameter \#2 \.\.\.\$values of function sprintf expects bool\|float\|int\|string\|null, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Identity/Repository/AuthorizationRepository.php - - message: "#^Parameter \\#3 \\.\\.\\.\\$values of function sprintf expects bool\\|float\\|int\\|string\\|null, mixed given\\.$#" + message: '#^Parameter \#3 \.\.\.\$values of function sprintf expects bool\|float\|int\|string\|null, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Identity/Repository/AuthorizationRepository.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Repository\\\\IdentityRepository\\:\\:findByNameIdsIndexed\\(\\) should return array\\ but returns mixed\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Repository\\IdentityRepository\:\:createSearchQuery\(\) return type with generic class Doctrine\\ORM\\Query does not specify its types\: TKey, TResult$#' + identifier: missingType.generics + count: 1 + path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Identity/Repository/IdentityRepository.php + + - + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Repository\\IdentityRepository\:\:findByNameIdsIndexed\(\) should return array\ but returns mixed\.$#' + identifier: return.type count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Identity/Repository/IdentityRepository.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Repository\\\\IdentityRepository\\:\\:findOneByNameIdAndInstitution\\(\\) should return Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Entity\\\\Identity but returns mixed\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Repository\\IdentityRepository\:\:findOneByNameIdAndInstitution\(\) should return Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Entity\\Identity but returns mixed\.$#' + identifier: return.type count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Identity/Repository/IdentityRepository.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Repository\\\\RaCandidateRepository\\:\\:findOneByIdentityId\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Repository\\RaCandidateRepository\:\:createOptionsQuery\(\) return type with generic class Doctrine\\ORM\\Query does not specify its types\: TKey, TResult$#' + identifier: missingType.generics + count: 1 + path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Identity/Repository/RaCandidateRepository.php + + - + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Repository\\RaCandidateRepository\:\:createSearchQuery\(\) return type with generic class Doctrine\\ORM\\Query does not specify its types\: TKey, TResult$#' + identifier: missingType.generics + count: 1 + path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Identity/Repository/RaCandidateRepository.php + + - + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Repository\\RaCandidateRepository\:\:findOneByIdentityId\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Identity/Repository/RaCandidateRepository.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Repository\\\\RaCandidateRepository\\:\\:findOneByIdentityId\\(\\) should return array\\|null but returns mixed\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Repository\\RaCandidateRepository\:\:findOneByIdentityId\(\) should return array\|null but returns mixed\.$#' + identifier: return.type count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Identity/Repository/RaCandidateRepository.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Repository\\\\RaListingRepository\\:\\:findByIdentityId\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Repository\\RaListingRepository\:\:createOptionsQuery\(\) return type with generic class Doctrine\\ORM\\Query does not specify its types\: TKey, TResult$#' + identifier: missingType.generics + count: 1 + path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Identity/Repository/RaListingRepository.php + + - + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Repository\\RaListingRepository\:\:createSearchQuery\(\) return type with generic class Doctrine\\ORM\\Query does not specify its types\: TKey, TResult$#' + identifier: missingType.generics + count: 1 + path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Identity/Repository/RaListingRepository.php + + - + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Repository\\RaListingRepository\:\:findByIdentityId\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Identity/Repository/RaListingRepository.php + + - + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Repository\\RaListingRepository\:\:findByIdentityIdAndRaInstitutionWithContext\(\) should return Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Entity\\RaListing\|null but returns mixed\.$#' + identifier: return.type count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Identity/Repository/RaListingRepository.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Repository\\\\RaListingRepository\\:\\:findByIdentityIdAndRaInstitutionWithContext\\(\\) should return Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Entity\\\\RaListing\\|null but returns mixed\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Repository\\RaListingRepository\:\:listRasFor\(\) return type with generic class Doctrine\\Common\\Collections\\ArrayCollection does not specify its types\: TKey, T$#' + identifier: missingType.generics count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Identity/Repository/RaListingRepository.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Repository\\\\RaListingRepository\\:\\:listRasFor\\(\\) return type with generic class Doctrine\\\\Common\\\\Collections\\\\ArrayCollection does not specify its types\\: TKey, T$#" + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Repository\\RaListingRepository\:\:listRasFor\(\) should return Doctrine\\Common\\Collections\\ArrayCollection&iterable\ but returns Doctrine\\Common\\Collections\\ArrayCollection\<\(int\|string\), mixed\>\.$#' + identifier: return.type count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Identity/Repository/RaListingRepository.php - - message: "#^Parameter \\#1 \\$elements of class Doctrine\\\\Common\\\\Collections\\\\ArrayCollection constructor expects array\\, mixed given\\.$#" + message: '#^Parameter \#1 \$elements of class Doctrine\\Common\\Collections\\ArrayCollection constructor expects array\, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Identity/Repository/RaListingRepository.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Repository\\\\SraaRepository\\:\\:saveAll\\(\\) has parameter \\$sraaList with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Repository\\RaSecondFactorRepository\:\:createOptionsQuery\(\) return type with generic class Doctrine\\ORM\\Query does not specify its types\: TKey, TResult$#' + identifier: missingType.generics + count: 1 + path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Identity/Repository/RaSecondFactorRepository.php + + - + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Repository\\RaSecondFactorRepository\:\:createSearchQuery\(\) return type with generic class Doctrine\\ORM\\Query does not specify its types\: TKey, TResult$#' + identifier: missingType.generics + count: 1 + path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Identity/Repository/RaSecondFactorRepository.php + + - + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Repository\\RecoveryTokenRepository\:\:createOptionsQuery\(\) return type with generic class Doctrine\\ORM\\Query does not specify its types\: TKey, TResult$#' + identifier: missingType.generics + count: 1 + path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Identity/Repository/RecoveryTokenRepository.php + + - + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Repository\\RecoveryTokenRepository\:\:createSearchQuery\(\) return type with generic class Doctrine\\ORM\\Query does not specify its types\: TKey, TResult$#' + identifier: missingType.generics + count: 1 + path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Identity/Repository/RecoveryTokenRepository.php + + - + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Repository\\SraaRepository\:\:saveAll\(\) has parameter \$sraaList with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Identity/Repository/SraaRepository.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Repository\\\\VerifiedSecondFactorRepository\\:\\:findByDate\\(\\) should return array\\ but returns mixed\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Repository\\UnverifiedSecondFactorRepository\:\:createSearchQuery\(\) return type with generic class Doctrine\\ORM\\Query does not specify its types\: TKey, TResult$#' + identifier: missingType.generics + count: 1 + path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Identity/Repository/UnverifiedSecondFactorRepository.php + + - + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Repository\\VerifiedSecondFactorRepository\:\:createSearchForIdentityQuery\(\) return type with generic class Doctrine\\ORM\\Query does not specify its types\: TKey, TResult$#' + identifier: missingType.generics count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Identity/Repository/VerifiedSecondFactorRepository.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Repository\\\\WhitelistEntryRepository\\:\\:findEntriesByInstitutions\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Repository\\VerifiedSecondFactorRepository\:\:createSearchQuery\(\) return type with generic class Doctrine\\ORM\\Query does not specify its types\: TKey, TResult$#' + identifier: missingType.generics + count: 1 + path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Identity/Repository/VerifiedSecondFactorRepository.php + + - + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Repository\\VerifiedSecondFactorRepository\:\:findByDate\(\) should return array\ but returns mixed\.$#' + identifier: return.type + count: 1 + path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Identity/Repository/VerifiedSecondFactorRepository.php + + - + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Repository\\VettedSecondFactorRepository\:\:createSearchQuery\(\) return type with generic class Doctrine\\ORM\\Query does not specify its types\: TKey, TResult$#' + identifier: missingType.generics + count: 1 + path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Identity/Repository/VettedSecondFactorRepository.php + + - + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Repository\\WhitelistEntryRepository\:\:findEntriesByInstitutions\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Identity/Repository/WhitelistEntryRepository.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Repository\\\\WhitelistEntryRepository\\:\\:findEntriesByInstitutions\\(\\) should return array but returns mixed\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Repository\\WhitelistEntryRepository\:\:findEntriesByInstitutions\(\) should return array but returns mixed\.$#' + identifier: return.type count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Identity/Repository/WhitelistEntryRepository.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Repository\\\\WhitelistEntryRepository\\:\\:getAll\\(\\) return type with generic class Doctrine\\\\Common\\\\Collections\\\\ArrayCollection does not specify its types\\: TKey, T$#" + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Repository\\WhitelistEntryRepository\:\:getAll\(\) return type with generic class Doctrine\\Common\\Collections\\ArrayCollection does not specify its types\: TKey, T$#' + identifier: missingType.generics count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Identity/Repository/WhitelistEntryRepository.php - - message: "#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\\.$#" + message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' + identifier: foreach.nonIterable count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Identity/Service/AbstractSearchService.php - - message: "#^Cannot cast mixed to string\\.$#" + message: '#^Cannot cast mixed to string\.$#' + identifier: cast.string count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Identity/Service/AbstractSearchService.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Service\\\\AbstractSearchService\\:\\:createPaginatorFrom\\(\\) return type with generic class Pagerfanta\\\\Pagerfanta does not specify its types\\: T$#" + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Service\\AbstractSearchService\:\:createPaginatorFrom\(\) should return Pagerfanta\\Pagerfanta\ but returns Pagerfanta\\Pagerfanta\\.$#' + identifier: return.type count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Identity/Service/AbstractSearchService.php - - message: "#^Parameter \\#1 \\$raListings of static method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Value\\\\RegistrationAuthorityCredentials\\:\\:fromRaListings\\(\\) expects array\\, array\\|null given\\.$#" + message: '#^Possibly invalid array key type mixed\.$#' + identifier: offsetAccess.invalidOffset count: 1 - path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Identity/Service/IdentityService.php + path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Identity/Service/AbstractSearchService.php - - message: "#^Cannot call method getInstitution\\(\\) on mixed\\.$#" + message: '#^Parameter \#1 \$raListings of static method Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Value\\RegistrationAuthorityCredentials\:\:fromRaListings\(\) expects array\, array\|null given\.$#' + identifier: argument.type count: 1 - path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Identity/Service/RaCandidateService.php + path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Identity/Service/IdentityService.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Service\\\\RaCandidateService\\:\\:findOneByIdentityId\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Service\\RaCandidateService\:\:findOneByIdentityId\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Identity/Service/RaCandidateService.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Service\\\\RaCandidateService\\:\\:getFilterOptions\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Service\\RaCandidateService\:\:getFilterOptions\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Identity/Service/RaCandidateService.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Service\\\\RaCandidateService\\:\\:setUseRaInstitutionsOnRaCandidate\\(\\) has parameter \\$raCandidate with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Service\\RaCandidateService\:\:setUseRaInstitutionsOnRaCandidate\(\) has parameter \$raCandidate with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Identity/Service/RaCandidateService.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Service\\\\RaCandidateService\\:\\:setUseRaInstitutionsOnRaCandidate\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Service\\RaCandidateService\:\:setUseRaInstitutionsOnRaCandidate\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Identity/Service/RaCandidateService.php - - message: "#^Parameter \\#1 \\$func of method Doctrine\\\\Common\\\\Collections\\\\ArrayCollection\\<\\(int\\|string\\),mixed\\>\\:\\:map\\(\\) expects Closure\\(mixed\\)\\: Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Value\\\\RegistrationAuthorityCredentials, Closure\\(Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Entity\\\\RaListing\\)\\: Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Value\\\\RegistrationAuthorityCredentials given\\.$#" + message: '#^Parameter \#1 \$func of method Doctrine\\Common\\Collections\\ArrayCollection\<\(int\|string\),mixed\>\:\:map\(\) expects Closure\(mixed\)\: Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Value\\RegistrationAuthorityCredentials, Closure\(Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Entity\\RaListing\)\: Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Value\\RegistrationAuthorityCredentials given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Identity/Service/RaListingService.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Service\\\\RaSecondFactorService\\:\\:getFilterOptions\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Service\\RaSecondFactorService\:\:getFilterOptions\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Identity/Service/RaSecondFactorService.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Service\\\\RaSecondFactorService\\:\\:searchUnpaginated\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Service\\RaSecondFactorService\:\:searchUnpaginated\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Identity/Service/RaSecondFactorService.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Service\\\\RaSecondFactorService\\:\\:searchUnpaginated\\(\\) should return array but returns mixed\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Service\\RaSecondFactorService\:\:searchUnpaginated\(\) should return array but returns mixed\.$#' + identifier: return.type count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Identity/Service/RaSecondFactorService.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Service\\\\RecoveryTokenService\\:\\:getFilterOptions\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Service\\RecoveryTokenService\:\:getFilterOptions\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Identity/Service/RecoveryTokenService.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Specification\\\\SpecificationInterface\\:\\:apply\\(\\) has parameter \\$entityRepository with generic class Doctrine\\\\ORM\\\\EntityRepository but does not specify its types\\: TEntityClass$#" + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Service\\SecondFactorService\:\:searchUnverifiedSecondFactors\(\) should return Pagerfanta\\Pagerfanta\ but returns Pagerfanta\\Pagerfanta\\.$#' + identifier: return.type + count: 1 + path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Identity/Service/SecondFactorService.php + + - + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Service\\SecondFactorService\:\:searchVerifiedSecondFactors\(\) should return Pagerfanta\\Pagerfanta\ but returns Pagerfanta\\Pagerfanta\\.$#' + identifier: return.type + count: 1 + path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Identity/Service/SecondFactorService.php + + - + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Service\\SecondFactorService\:\:searchVerifiedSecondFactorsOfIdentity\(\) should return Pagerfanta\\Pagerfanta\ but returns Pagerfanta\\Pagerfanta\\.$#' + identifier: return.type + count: 1 + path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Identity/Service/SecondFactorService.php + + - + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Service\\SecondFactorService\:\:searchVettedSecondFactors\(\) should return Pagerfanta\\Pagerfanta\ but returns Pagerfanta\\Pagerfanta\\.$#' + identifier: return.type + count: 1 + path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Identity/Service/SecondFactorService.php + + - + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Specification\\SpecificationInterface\:\:apply\(\) has parameter \$entityRepository with generic class Doctrine\\ORM\\EntityRepository but does not specify its types\: TEntityClass$#' + identifier: missingType.generics count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Identity/Specification/SpecificationInterface.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Value\\\\AuthorizedInstitutionCollection\\:\\:getAuthorizations\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Value\\AuthorizedInstitutionCollection\:\:getAuthorizations\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Identity/Value/AuthorizedInstitutionCollection.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Value\\\\Profile\\:\\:jsonSerialize\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Value\\Profile\:\:jsonSerialize\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Identity/Value/Profile.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Value\\\\RegistrationAuthorityCredentials\\:\\:getContactInformation\\(\\) should return string but returns Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\ContactInformation\\|null\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Value\\RegistrationAuthorityCredentials\:\:getContactInformation\(\) should return string but returns Surfnet\\Stepup\\Identity\\Value\\ContactInformation\|null\.$#' + identifier: return.type count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Identity/Value/RegistrationAuthorityCredentials.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Value\\\\RegistrationAuthorityCredentials\\:\\:getLocation\\(\\) should return string but returns Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\Location\\|null\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Value\\RegistrationAuthorityCredentials\:\:getLocation\(\) should return string but returns Surfnet\\Stepup\\Identity\\Value\\Location\|null\.$#' + identifier: return.type count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Identity/Value/RegistrationAuthorityCredentials.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Value\\\\RegistrationAuthorityCredentials\\:\\:jsonSerialize\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Value\\RegistrationAuthorityCredentials\:\:jsonSerialize\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Identity/Value/RegistrationAuthorityCredentials.php - - message: "#^Cannot access offset 'command' on mixed\\.$#" + message: '#^Cannot access offset ''command'' on mixed\.$#' + identifier: offsetAccess.nonOffsetAccessible count: 4 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Request/CommandValueResolver.php - - message: "#^Cannot access offset 'name' on mixed\\.$#" - count: 2 + message: '#^Cannot access offset ''name'' on mixed\.$#' + identifier: offsetAccess.nonOffsetAccessible + count: 3 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Request/CommandValueResolver.php - - message: "#^Cannot access offset 'payload' on mixed\\.$#" - count: 1 + message: '#^Cannot access offset ''payload'' on mixed\.$#' + identifier: offsetAccess.nonOffsetAccessible + count: 2 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Request/CommandValueResolver.php - - message: "#^Cannot access offset 'uuid' on mixed\\.$#" - count: 1 + message: '#^Cannot access offset ''uuid'' on mixed\.$#' + identifier: offsetAccess.nonOffsetAccessible + count: 2 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Request/CommandValueResolver.php - - message: "#^Cannot cast mixed to string\\.$#" + message: '#^Cannot cast mixed to string\.$#' + identifier: cast.string count: 3 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Request/CommandValueResolver.php - - message: "#^Cannot access property \\$meta on mixed\\.$#" + message: '#^Cannot access property \$meta on mixed\.$#' + identifier: property.nonObject count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Request/MetadataValueResolver.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Response\\\\JsonAuthorizationResponse\\:\\:__construct\\(\\) has parameter \\$errors with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Response\\JsonAuthorizationResponse\:\:__construct\(\) has parameter \$errors with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Response/JsonAuthorizationResponse.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Response\\\\JsonCollectionResponse\\:\\:__construct\\(\\) has parameter \\$collection with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Response\\JsonCollectionResponse\:\:__construct\(\) has parameter \$collection with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Response/JsonCollectionResponse.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Response\\\\JsonCollectionResponse\\:\\:__construct\\(\\) has parameter \\$filters with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Response\\JsonCollectionResponse\:\:__construct\(\) has parameter \$filters with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Response/JsonCollectionResponse.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Response\\\\JsonCollectionResponse\\:\\:__construct\\(\\) has parameter \\$headers with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Response\\JsonCollectionResponse\:\:__construct\(\) has parameter \$headers with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Response/JsonCollectionResponse.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Response\\\\JsonCollectionResponse\\:\\:fromPaginator\\(\\) has parameter \\$filters with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Response\\JsonCollectionResponse\:\:fromPaginator\(\) has parameter \$filters with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Response/JsonCollectionResponse.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Response\\\\JsonCollectionResponse\\:\\:fromPaginator\\(\\) has parameter \\$paginator with generic class Pagerfanta\\\\Pagerfanta but does not specify its types\\: T$#" + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Response\\JsonCollectionResponse\:\:fromPaginator\(\) has parameter \$paginator with generic class Pagerfanta\\Pagerfanta but does not specify its types\: T$#' + identifier: missingType.generics count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Response/JsonCollectionResponse.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Response\\\\JsonNotFoundResponse\\:\\:__construct\\(\\) has parameter \\$headers with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Response\\JsonNotFoundResponse\:\:__construct\(\) has parameter \$headers with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Response/JsonNotFoundResponse.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Service\\\\DeprovisionService\\:\\:readUserData\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Service\\DeprovisionService\:\:readUserData\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Service/DeprovisionService.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Service\\\\DeprovisionServiceInterface\\:\\:readUserData\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Service\\DeprovisionServiceInterface\:\:readUserData\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Service/DeprovisionServiceInterface.php - - message: "#^Cannot call method getValue\\(\\) on Doctrine\\\\ORM\\\\Query\\\\Parameter\\|null\\.$#" + message: '#^Cannot call method getValue\(\) on Doctrine\\ORM\\Query\\Parameter\|null\.$#' + identifier: method.nonObject count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Tests/Authorization/Filter/InstitutionAuthorizationRepositoryFilterTest.php - - message: "#^Cannot call method getInstitution\\(\\) on mixed\\.$#" - count: 1 - path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Tests/Authorization/Service/AuthorizationContextServiceTest.php - - - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Tests\\\\Configuration\\\\Service\\\\InstitutionAuthorizationServiceTest\\:\\:buildAuthorizations\\(\\) has parameter \\$expectedInstitutions with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Tests\\Configuration\\Service\\InstitutionAuthorizationServiceTest\:\:buildAuthorizations\(\) has parameter \$expectedInstitutions with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Tests/Configuration/Service/InstitutionAuthorizationServiceTest.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Tests\\\\Doctrine\\\\Type\\\\RecoveryTokenStatusTypeTest\\:\\:invalidDatabaseValues\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Tests\\Doctrine\\Type\\RecoveryTokenStatusTypeTest\:\:invalidDatabaseValues\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/RecoveryTokenStatusTypeTest.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Tests\\\\Doctrine\\\\Type\\\\RecoveryTokenStatusTypeTest\\:\\:invalidPhpValues\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Tests\\Doctrine\\Type\\RecoveryTokenStatusTypeTest\:\:invalidPhpValues\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/RecoveryTokenStatusTypeTest.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Tests\\\\Doctrine\\\\Type\\\\RecoveryTokenStatusTypeTest\\:\\:validDatabaseValues\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Tests\\Doctrine\\Type\\RecoveryTokenStatusTypeTest\:\:validDatabaseValues\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/RecoveryTokenStatusTypeTest.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Tests\\\\Doctrine\\\\Type\\\\RecoveryTokenStatusTypeTest\\:\\:validPhpValues\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Tests\\Doctrine\\Type\\RecoveryTokenStatusTypeTest\:\:validPhpValues\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/RecoveryTokenStatusTypeTest.php - - message: "#^Parameter \\#1 \\$other of method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Value\\\\RecoveryTokenStatus\\:\\:equals\\(\\) expects Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Value\\\\RecoveryTokenStatus, mixed given\\.$#" + message: '#^Parameter \#1 \$other of method Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Value\\RecoveryTokenStatus\:\:equals\(\) expects Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Value\\RecoveryTokenStatus, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/RecoveryTokenStatusTypeTest.php - - message: "#^Cannot call method equals\\(\\) on mixed\\.$#" + message: '#^Cannot call method equals\(\) on mixed\.$#' + identifier: method.nonObject count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/SecondFactorStatusTypeTest.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Tests\\\\Doctrine\\\\Type\\\\SecondFactorStatusTypeTest\\:\\:invalidDatabaseValues\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Tests\\Doctrine\\Type\\SecondFactorStatusTypeTest\:\:invalidDatabaseValues\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/SecondFactorStatusTypeTest.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Tests\\\\Doctrine\\\\Type\\\\SecondFactorStatusTypeTest\\:\\:invalidPhpValues\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Tests\\Doctrine\\Type\\SecondFactorStatusTypeTest\:\:invalidPhpValues\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/SecondFactorStatusTypeTest.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Tests\\\\Doctrine\\\\Type\\\\SecondFactorStatusTypeTest\\:\\:validDatabaseValues\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Tests\\Doctrine\\Type\\SecondFactorStatusTypeTest\:\:validDatabaseValues\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/SecondFactorStatusTypeTest.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Tests\\\\Doctrine\\\\Type\\\\SecondFactorStatusTypeTest\\:\\:validPhpValues\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Tests\\Doctrine\\Type\\SecondFactorStatusTypeTest\:\:validPhpValues\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/SecondFactorStatusTypeTest.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Tests\\\\Endpoint\\\\ConfiguredInstitutionControllerTest\\:\\:invalidHttpMethodProvider\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Tests\\Endpoint\\ConfiguredInstitutionControllerTest\:\:invalidHttpMethodProvider\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Tests/Endpoint/ConfiguredInstitutionControllerTest.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Tests\\\\Endpoint\\\\SraaControllerTest\\:\\:invalidHttpMethodProvider\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Tests\\Endpoint\\SraaControllerTest\:\:invalidHttpMethodProvider\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Tests/Endpoint/SraaControllerTest.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Tests\\\\Identity\\\\Projector\\\\AuditLogProjectorTest\\:\\:auditable_events\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Tests\\Identity\\Projector\\AuditLogProjectorTest\:\:auditable_events\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Tests/Identity/Projector/AuditLogProjectorTest.php - - message: "#^Cannot access offset 0 on iterable\\\\.$#" + message: '#^Cannot access offset 0 on iterable\\.$#' + identifier: offsetAccess.nonOffsetAccessible count: 4 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Tests/Request/CommandValueResolverTest.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Tests\\\\Request\\\\CommandValueResolverTest\\:\\:convertibleCommandNames\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Tests\\Request\\CommandValueResolverTest\:\:convertibleCommandNames\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Tests/Request/CommandValueResolverTest.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Tests\\\\Request\\\\CommandValueResolverTest\\:\\:invalidCommandJsonStructures\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Tests\\Request\\CommandValueResolverTest\:\:invalidCommandJsonStructures\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Tests/Request/CommandValueResolverTest.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Tests\\\\Request\\\\CommandValueResolverTest\\:\\:invalidCommandNames\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Tests\\Request\\CommandValueResolverTest\:\:invalidCommandNames\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Tests/Request/CommandValueResolverTest.php - - message: "#^Parameter \\#1 \\$expected of method PHPUnit\\\\Framework\\\\Assert\\:\\:assertInstanceOf\\(\\) expects class\\-string\\, string given\\.$#" + message: '#^Parameter \#1 \$expected of method PHPUnit\\Framework\\Assert\:\:assertInstanceOf\(\) expects class\-string\, string given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Tests/Request/CommandValueResolverTest.php - - message: "#^Cannot access offset 0 on iterable\\\\.$#" + message: '#^Cannot access offset 0 on iterable\\.$#' + identifier: offsetAccess.nonOffsetAccessible count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Tests/Request/InstitutionValueResolverTest.php - - message: "#^Property Symfony\\\\Component\\\\HttpFoundation\\\\Request\\:\\:\\$query \\(Symfony\\\\Component\\\\HttpFoundation\\\\InputBag\\\\) does not accept Mockery\\\\MockInterface&Symfony\\\\Component\\\\HttpFoundation\\\\ParameterBag\\.$#" + message: '#^Property Symfony\\Component\\HttpFoundation\\Request\:\:\$query \(Symfony\\Component\\HttpFoundation\\InputBag\\) does not accept Mockery\\MockInterface&Symfony\\Component\\HttpFoundation\\ParameterBag\.$#' + identifier: assign.propertyType count: 2 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Tests/Request/InstitutionValueResolverTest.php - - message: "#^Property Surfnet\\\\StepupMiddleware\\\\CommandHandlingBundle\\\\Configuration\\\\Command\\\\ReconfigureInstitutionConfigurationOptionsCommand\\:\\:\\$allowedSecondFactors type has no value type specified in iterable type array\\.$#" + message: '#^Property Surfnet\\StepupMiddleware\\CommandHandlingBundle\\Configuration\\Command\\ReconfigureInstitutionConfigurationOptionsCommand\:\:\$allowedSecondFactors type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/CommandHandlingBundle/Configuration/Command/ReconfigureInstitutionConfigurationOptionsCommand.php - - message: "#^Property Surfnet\\\\StepupMiddleware\\\\CommandHandlingBundle\\\\Configuration\\\\Command\\\\ReconfigureInstitutionConfigurationOptionsCommand\\:\\:\\$selectRaaOption type has no value type specified in iterable type array\\.$#" + message: '#^Property Surfnet\\StepupMiddleware\\CommandHandlingBundle\\Configuration\\Command\\ReconfigureInstitutionConfigurationOptionsCommand\:\:\$selectRaaOption type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/CommandHandlingBundle/Configuration/Command/ReconfigureInstitutionConfigurationOptionsCommand.php - - message: "#^Property Surfnet\\\\StepupMiddleware\\\\CommandHandlingBundle\\\\Configuration\\\\Command\\\\ReconfigureInstitutionConfigurationOptionsCommand\\:\\:\\$useRaOption type has no value type specified in iterable type array\\.$#" + message: '#^Property Surfnet\\StepupMiddleware\\CommandHandlingBundle\\Configuration\\Command\\ReconfigureInstitutionConfigurationOptionsCommand\:\:\$useRaOption type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/CommandHandlingBundle/Configuration/Command/ReconfigureInstitutionConfigurationOptionsCommand.php - - message: "#^Property Surfnet\\\\StepupMiddleware\\\\CommandHandlingBundle\\\\Configuration\\\\Command\\\\ReconfigureInstitutionConfigurationOptionsCommand\\:\\:\\$useRaaOption type has no value type specified in iterable type array\\.$#" + message: '#^Property Surfnet\\StepupMiddleware\\CommandHandlingBundle\\Configuration\\Command\\ReconfigureInstitutionConfigurationOptionsCommand\:\:\$useRaaOption type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/CommandHandlingBundle/Configuration/Command/ReconfigureInstitutionConfigurationOptionsCommand.php - - message: "#^Cannot call method getInstitution\\(\\) on mixed\\.$#" - count: 3 - path: ../../src/Surfnet/StepupMiddleware/CommandHandlingBundle/Configuration/Processor/InstitutionConfigurationProcessor.php - - - - message: "#^Negated boolean expression is always false\\.$#" + message: '#^Negated boolean expression is always false\.$#' + identifier: booleanNot.alwaysFalse count: 1 path: ../../src/Surfnet/StepupMiddleware/CommandHandlingBundle/DependencyInjection/CompilerPass/AddPipelineStagesCompilerPass.php - - message: "#^Comparison operation \"\\>\" between 0 and 0 is always false\\.$#" - count: 1 - path: ../../src/Surfnet/StepupMiddleware/CommandHandlingBundle/EventHandling/BufferedEventBus.php - - - - message: "#^Property Surfnet\\\\StepupMiddleware\\\\CommandHandlingBundle\\\\EventHandling\\\\BufferedEventBus\\:\\:\\$buffer \\(array\\\\) does not accept array\\.$#" + message: '#^Property Surfnet\\StepupMiddleware\\CommandHandlingBundle\\EventHandling\\BufferedEventBus\:\:\$buffer \(array\\) does not accept array\\.$#' + identifier: assign.propertyType count: 1 path: ../../src/Surfnet/StepupMiddleware/CommandHandlingBundle/EventHandling/BufferedEventBus.php - - message: "#^Property Surfnet\\\\StepupMiddleware\\\\CommandHandlingBundle\\\\Identity\\\\Command\\\\AddToWhitelistCommand\\:\\:\\$institutionsToBeAdded type has no value type specified in iterable type array\\.$#" + message: '#^Property Surfnet\\StepupMiddleware\\CommandHandlingBundle\\Identity\\Command\\AddToWhitelistCommand\:\:\$institutionsToBeAdded type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/CommandHandlingBundle/Identity/Command/AddToWhitelistCommand.php - - message: "#^Property Surfnet\\\\StepupMiddleware\\\\CommandHandlingBundle\\\\Identity\\\\Command\\\\RemoveFromWhitelistCommand\\:\\:\\$institutionsToBeRemoved type has no value type specified in iterable type array\\.$#" + message: '#^Property Surfnet\\StepupMiddleware\\CommandHandlingBundle\\Identity\\Command\\RemoveFromWhitelistCommand\:\:\$institutionsToBeRemoved type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/CommandHandlingBundle/Identity/Command/RemoveFromWhitelistCommand.php - - message: "#^Property Surfnet\\\\StepupMiddleware\\\\CommandHandlingBundle\\\\Identity\\\\Command\\\\ReplaceWhitelistCommand\\:\\:\\$institutions type has no value type specified in iterable type array\\.$#" + message: '#^Property Surfnet\\StepupMiddleware\\CommandHandlingBundle\\Identity\\Command\\ReplaceWhitelistCommand\:\:\$institutions type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/CommandHandlingBundle/Identity/Command/ReplaceWhitelistCommand.php - - message: "#^Property Surfnet\\\\StepupMiddleware\\\\CommandHandlingBundle\\\\Identity\\\\Command\\\\SaveVettingTypeHintCommand\\:\\:\\$hints type has no value type specified in iterable type array\\.$#" + message: '#^Property Surfnet\\StepupMiddleware\\CommandHandlingBundle\\Identity\\Command\\SaveVettingTypeHintCommand\:\:\$hints type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/CommandHandlingBundle/Identity/Command/SaveVettingTypeHintCommand.php - - message: "#^Cannot call method getType\\(\\) on Surfnet\\\\Stepup\\\\Identity\\\\Entity\\\\VettedSecondFactor\\|null\\.$#" + message: '#^Cannot call method getType\(\) on Surfnet\\Stepup\\Identity\\Entity\\VettedSecondFactor\|null\.$#' + identifier: method.nonObject count: 1 path: ../../src/Surfnet/StepupMiddleware/CommandHandlingBundle/Identity/CommandHandler/IdentityCommandHandler.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\CommandHandlingBundle\\\\Identity\\\\CommandHandler\\\\WhitelistCommandHandler\\:\\:mapArrayToInstitutions\\(\\) has parameter \\$institutions with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\CommandHandlingBundle\\Identity\\CommandHandler\\WhitelistCommandHandler\:\:mapArrayToInstitutions\(\) has parameter \$institutions with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/CommandHandlingBundle/Identity/CommandHandler/WhitelistCommandHandler.php - - message: "#^Cannot access property \\$htmlContent on Surfnet\\\\StepupMiddleware\\\\CommandHandlingBundle\\\\Configuration\\\\Dto\\\\EmailTemplate\\|null\\.$#" + message: '#^Cannot access property \$htmlContent on Surfnet\\StepupMiddleware\\CommandHandlingBundle\\Configuration\\Dto\\EmailTemplate\|null\.$#' + identifier: property.nonObject count: 3 path: ../../src/Surfnet/StepupMiddleware/CommandHandlingBundle/Identity/Service/EmailVerificationMailService.php - - message: "#^Cannot access property \\$htmlContent on Surfnet\\\\StepupMiddleware\\\\CommandHandlingBundle\\\\Configuration\\\\Dto\\\\EmailTemplate\\|null\\.$#" + message: '#^Cannot access property \$htmlContent on Surfnet\\StepupMiddleware\\CommandHandlingBundle\\Configuration\\Dto\\EmailTemplate\|null\.$#' + identifier: property.nonObject count: 6 path: ../../src/Surfnet/StepupMiddleware/CommandHandlingBundle/Identity/Service/RecoveryTokenMailService.php - - message: "#^Cannot access property \\$commonName on Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Entity\\\\Identity\\|null\\.$#" + message: '#^Cannot access property \$commonName on Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Entity\\Identity\|null\.$#' + identifier: property.nonObject count: 3 path: ../../src/Surfnet/StepupMiddleware/CommandHandlingBundle/Identity/Service/RegistrationMailService.php - - message: "#^Cannot access property \\$email on Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Entity\\\\Identity\\|null\\.$#" + message: '#^Cannot access property \$email on Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Entity\\Identity\|null\.$#' + identifier: property.nonObject count: 3 path: ../../src/Surfnet/StepupMiddleware/CommandHandlingBundle/Identity/Service/RegistrationMailService.php - - message: "#^Cannot access property \\$htmlContent on Surfnet\\\\StepupMiddleware\\\\CommandHandlingBundle\\\\Configuration\\\\Dto\\\\EmailTemplate\\|null\\.$#" + message: '#^Cannot access property \$htmlContent on Surfnet\\StepupMiddleware\\CommandHandlingBundle\\Configuration\\Dto\\EmailTemplate\|null\.$#' + identifier: property.nonObject count: 6 path: ../../src/Surfnet/StepupMiddleware/CommandHandlingBundle/Identity/Service/RegistrationMailService.php - - message: "#^Cannot access property \\$institution on Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Entity\\\\Identity\\|null\\.$#" + message: '#^Cannot access property \$institution on Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Entity\\Identity\|null\.$#' + identifier: property.nonObject count: 2 path: ../../src/Surfnet/StepupMiddleware/CommandHandlingBundle/Identity/Service/RegistrationMailService.php - - message: "#^Cannot access property \\$preferredLocale on Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Entity\\\\Identity\\|null\\.$#" + message: '#^Cannot access property \$preferredLocale on Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Entity\\Identity\|null\.$#' + identifier: property.nonObject count: 3 path: ../../src/Surfnet/StepupMiddleware/CommandHandlingBundle/Identity/Service/RegistrationMailService.php - - message: "#^Cannot access property \\$registrationCode on Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Entity\\\\VerifiedSecondFactor\\|null\\.$#" + message: '#^Cannot access property \$registrationCode on Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Entity\\VerifiedSecondFactor\|null\.$#' + identifier: property.nonObject count: 3 path: ../../src/Surfnet/StepupMiddleware/CommandHandlingBundle/Identity/Service/RegistrationMailService.php - - message: "#^Cannot access property \\$registrationRequestedAt on Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Entity\\\\VerifiedSecondFactor\\|null\\.$#" + message: '#^Cannot access property \$registrationRequestedAt on Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Entity\\VerifiedSecondFactor\|null\.$#' + identifier: property.nonObject count: 3 path: ../../src/Surfnet/StepupMiddleware/CommandHandlingBundle/Identity/Service/RegistrationMailService.php - - message: "#^Cannot access property \\$showRaaContactInformationOption on Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Configuration\\\\Entity\\\\InstitutionConfigurationOptions\\|null\\.$#" + message: '#^Cannot access property \$showRaaContactInformationOption on Surfnet\\StepupMiddleware\\ApiBundle\\Configuration\\Entity\\InstitutionConfigurationOptions\|null\.$#' + identifier: property.nonObject count: 1 path: ../../src/Surfnet/StepupMiddleware/CommandHandlingBundle/Identity/Service/RegistrationMailService.php - - message: "#^Cannot access property \\$useRaLocationsOption on Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Configuration\\\\Entity\\\\InstitutionConfigurationOptions\\|null\\.$#" + message: '#^Cannot access property \$useRaLocationsOption on Surfnet\\StepupMiddleware\\ApiBundle\\Configuration\\Entity\\InstitutionConfigurationOptions\|null\.$#' + identifier: property.nonObject count: 1 path: ../../src/Surfnet/StepupMiddleware/CommandHandlingBundle/Identity/Service/RegistrationMailService.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\CommandHandlingBundle\\\\Identity\\\\Service\\\\RegistrationMailService\\:\\:sendRegistrationEmailWithRaLocations\\(\\) has parameter \\$raLocations with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\CommandHandlingBundle\\Identity\\Service\\RegistrationMailService\:\:sendRegistrationEmailWithRaLocations\(\) has parameter \$raLocations with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/CommandHandlingBundle/Identity/Service/RegistrationMailService.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\CommandHandlingBundle\\\\Identity\\\\Service\\\\RegistrationMailService\\:\\:sendRegistrationEmailWithRas\\(\\) has parameter \\$ras with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\CommandHandlingBundle\\Identity\\Service\\RegistrationMailService\:\:sendRegistrationEmailWithRas\(\) has parameter \$ras with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/CommandHandlingBundle/Identity/Service/RegistrationMailService.php - - message: "#^Parameter \\#6 \\$raLocations of method Surfnet\\\\StepupMiddleware\\\\CommandHandlingBundle\\\\Identity\\\\Service\\\\RegistrationMailService\\:\\:sendRegistrationEmailWithRaLocations\\(\\) expects array, array\\\\|null given\\.$#" + message: '#^Parameter \#6 \$raLocations of method Surfnet\\StepupMiddleware\\CommandHandlingBundle\\Identity\\Service\\RegistrationMailService\:\:sendRegistrationEmailWithRaLocations\(\) expects array, array\\|null given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/CommandHandlingBundle/Identity/Service/RegistrationMailService.php - - message: "#^Cannot access property \\$htmlContent on Surfnet\\\\StepupMiddleware\\\\CommandHandlingBundle\\\\Configuration\\\\Dto\\\\EmailTemplate\\|null\\.$#" + message: '#^Cannot access property \$htmlContent on Surfnet\\StepupMiddleware\\CommandHandlingBundle\\Configuration\\Dto\\EmailTemplate\|null\.$#' + identifier: property.nonObject count: 2 path: ../../src/Surfnet/StepupMiddleware/CommandHandlingBundle/Identity/Service/SecondFactorRevocationMailService.php - - message: "#^Cannot access property \\$htmlContent on Surfnet\\\\StepupMiddleware\\\\CommandHandlingBundle\\\\Configuration\\\\Dto\\\\EmailTemplate\\|null\\.$#" + message: '#^Cannot access property \$htmlContent on Surfnet\\StepupMiddleware\\CommandHandlingBundle\\Configuration\\Dto\\EmailTemplate\|null\.$#' + identifier: property.nonObject count: 3 path: ../../src/Surfnet/StepupMiddleware/CommandHandlingBundle/Identity/Service/SecondFactorVettedMailService.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\CommandHandlingBundle\\\\Identity\\\\Service\\\\VettingTypeHintService\\:\\:__construct\\(\\) has parameter \\$locales with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\CommandHandlingBundle\\Identity\\Service\\VettingTypeHintService\:\:__construct\(\) has parameter \$locales with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/CommandHandlingBundle/Identity/Service/VettingTypeHintService.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\CommandHandlingBundle\\\\Identity\\\\Service\\\\VettingTypeHintService\\:\\:collectionFrom\\(\\) has parameter \\$hints with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\CommandHandlingBundle\\Identity\\Service\\VettingTypeHintService\:\:collectionFrom\(\) has parameter \$hints with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/CommandHandlingBundle/Identity/Service/VettingTypeHintService.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\CommandHandlingBundle\\\\Pipeline\\\\AuthorizingStage\\:\\:clientHasAtLeastOneRole\\(\\) has parameter \\$rolesToCheck with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\CommandHandlingBundle\\Pipeline\\AuthorizingStage\:\:clientHasAtLeastOneRole\(\) has parameter \$rolesToCheck with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/CommandHandlingBundle/Pipeline/AuthorizingStage.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\CommandHandlingBundle\\\\Pipeline\\\\Exception\\\\InvalidCommandException\\:\\:__construct\\(\\) has parameter \\$errors with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\CommandHandlingBundle\\Pipeline\\Exception\\InvalidCommandException\:\:__construct\(\) has parameter \$errors with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/CommandHandlingBundle/Pipeline/Exception/InvalidCommandException.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\CommandHandlingBundle\\\\Pipeline\\\\Exception\\\\InvalidCommandException\\:\\:mapViolationsToErrorStrings\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\CommandHandlingBundle\\Pipeline\\Exception\\InvalidCommandException\:\:mapViolationsToErrorStrings\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/CommandHandlingBundle/Pipeline/Exception/InvalidCommandException.php - - message: "#^Cannot call method getIdentityId\\(\\) on Surfnet\\\\StepupMiddleware\\\\CommandHandlingBundle\\\\SensitiveData\\\\EventSourcing\\\\SensitiveDataMessage\\|null\\.$#" + message: '#^Cannot call method getIdentityId\(\) on Surfnet\\StepupMiddleware\\CommandHandlingBundle\\SensitiveData\\EventSourcing\\SensitiveDataMessage\|null\.$#' + identifier: method.nonObject count: 2 path: ../../src/Surfnet/StepupMiddleware/CommandHandlingBundle/SensitiveData/EventSourcing/SensitiveDataMessageStream.php - - message: "#^Cannot call method getSensitiveData\\(\\) on Surfnet\\\\StepupMiddleware\\\\CommandHandlingBundle\\\\SensitiveData\\\\EventSourcing\\\\SensitiveDataMessage\\|null\\.$#" + message: '#^Cannot call method getSensitiveData\(\) on Surfnet\\StepupMiddleware\\CommandHandlingBundle\\SensitiveData\\EventSourcing\\SensitiveDataMessage\|null\.$#' + identifier: method.nonObject count: 1 path: ../../src/Surfnet/StepupMiddleware/CommandHandlingBundle/SensitiveData/EventSourcing/SensitiveDataMessageStream.php - - message: "#^Cannot call method getPayload\\(\\) on mixed\\.$#" + message: '#^Cannot call method getPayload\(\) on mixed\.$#' + identifier: method.nonObject count: 1 path: ../../src/Surfnet/StepupMiddleware/CommandHandlingBundle/SensitiveData/EventStore/SensitiveDataEventStoreDecorator.php - - message: "#^Parameter \\#1 \\$identityId of class Surfnet\\\\StepupMiddleware\\\\CommandHandlingBundle\\\\SensitiveData\\\\EventSourcing\\\\SensitiveDataMessage constructor expects string, mixed given\\.$#" + message: '#^Parameter \#1 \$identityId of class Surfnet\\StepupMiddleware\\CommandHandlingBundle\\SensitiveData\\EventSourcing\\SensitiveDataMessage constructor expects string, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/CommandHandlingBundle/SensitiveData/EventStore/SensitiveDataEventStoreDecorator.php - - message: "#^Parameter \\#1 \\$identityId of method Surfnet\\\\StepupMiddleware\\\\CommandHandlingBundle\\\\SensitiveData\\\\Repository\\\\SensitiveDataMessageRepository\\:\\:findByIdentityId\\(\\) expects Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\IdentityId, mixed given\\.$#" + message: '#^Parameter \#1 \$identityId of method Surfnet\\StepupMiddleware\\CommandHandlingBundle\\SensitiveData\\Repository\\SensitiveDataMessageRepository\:\:findByIdentityId\(\) expects Surfnet\\Stepup\\Identity\\Value\\IdentityId, mixed given\.$#' + identifier: argument.type count: 2 path: ../../src/Surfnet/StepupMiddleware/CommandHandlingBundle/SensitiveData/EventStore/SensitiveDataEventStoreDecorator.php - - message: "#^Cannot cast mixed to int\\.$#" + message: '#^Cannot cast mixed to int\.$#' + identifier: cast.int count: 1 path: ../../src/Surfnet/StepupMiddleware/CommandHandlingBundle/SensitiveData/Repository/SensitiveDataMessageRepository.php - - message: "#^Parameter \\#1 \\$data of static method Surfnet\\\\StepupMiddleware\\\\CommandHandlingBundle\\\\SensitiveData\\\\SensitiveData\\:\\:deserialize\\(\\) expects array, mixed given\\.$#" + message: '#^Parameter \#1 \$data of static method Surfnet\\StepupMiddleware\\CommandHandlingBundle\\SensitiveData\\SensitiveData\:\:deserialize\(\) expects array, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/CommandHandlingBundle/SensitiveData/Repository/SensitiveDataMessageRepository.php - - message: "#^Parameter \\#1 \\$json of static method Surfnet\\\\Stepup\\\\Helper\\\\JsonHelper\\:\\:decode\\(\\) expects string, mixed given\\.$#" + message: '#^Parameter \#1 \$json of static method Surfnet\\Stepup\\Helper\\JsonHelper\:\:decode\(\) expects string, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/CommandHandlingBundle/SensitiveData/Repository/SensitiveDataMessageRepository.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\CommandHandlingBundle\\\\SensitiveData\\\\RightToObtainDataInterface\\:\\:getAllowlist\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\CommandHandlingBundle\\SensitiveData\\RightToObtainDataInterface\:\:getAllowlist\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/CommandHandlingBundle/SensitiveData/RightToObtainDataInterface.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\CommandHandlingBundle\\\\SensitiveData\\\\RightToObtainDataInterface\\:\\:obtainUserData\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\CommandHandlingBundle\\SensitiveData\\RightToObtainDataInterface\:\:obtainUserData\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/CommandHandlingBundle/SensitiveData/RightToObtainDataInterface.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\CommandHandlingBundle\\\\SensitiveData\\\\SensitiveData\\:\\:deserialize\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\CommandHandlingBundle\\SensitiveData\\SensitiveData\:\:deserialize\(\) has parameter \$data with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/CommandHandlingBundle/SensitiveData/SensitiveData.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\CommandHandlingBundle\\\\SensitiveData\\\\SensitiveData\\:\\:serialize\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\CommandHandlingBundle\\SensitiveData\\SensitiveData\:\:serialize\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/CommandHandlingBundle/SensitiveData/SensitiveData.php - - message: "#^Parameter \\#1 \\$type of static method Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\RecoveryTokenIdentifierFactory\\:\\:forType\\(\\) expects Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\RecoveryTokenType, Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\RecoveryTokenType\\|null given\\.$#" + message: '#^Parameter \#1 \$type of static method Surfnet\\Stepup\\Identity\\Value\\RecoveryTokenIdentifierFactory\:\:forType\(\) expects Surfnet\\Stepup\\Identity\\Value\\RecoveryTokenType, Surfnet\\Stepup\\Identity\\Value\\RecoveryTokenType\|null given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/CommandHandlingBundle/SensitiveData/SensitiveData.php - - message: "#^Parameter \\#1 \\$type of static method Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\SecondFactorIdentifierFactory\\:\\:forType\\(\\) expects Surfnet\\\\StepupBundle\\\\Value\\\\SecondFactorType, Surfnet\\\\StepupBundle\\\\Value\\\\SecondFactorType\\|null given\\.$#" + message: '#^Parameter \#1 \$type of static method Surfnet\\Stepup\\Identity\\Value\\SecondFactorIdentifierFactory\:\:forType\(\) expects Surfnet\\StepupBundle\\Value\\SecondFactorType, Surfnet\\StepupBundle\\Value\\SecondFactorType\|null given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/CommandHandlingBundle/SensitiveData/SensitiveData.php - - message: "#^Parameter \\#1 \\$type of static method Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\SecondFactorIdentifierFactory\\:\\:unknownForType\\(\\) expects Surfnet\\\\StepupBundle\\\\Value\\\\SecondFactorType, Surfnet\\\\StepupBundle\\\\Value\\\\SecondFactorType\\|null given\\.$#" + message: '#^Parameter \#1 \$type of static method Surfnet\\Stepup\\Identity\\Value\\SecondFactorIdentifierFactory\:\:unknownForType\(\) expects Surfnet\\StepupBundle\\Value\\SecondFactorType, Surfnet\\StepupBundle\\Value\\SecondFactorType\|null given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/CommandHandlingBundle/SensitiveData/SensitiveData.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\CommandHandlingBundle\\\\Tests\\\\Configuration\\\\CommandHandler\\\\ConfigurationCommandHandlerTest\\:\\:createConfigurationUpdatedEvents\\(\\) has parameter \\$newConfiguration with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\CommandHandlingBundle\\Tests\\Configuration\\CommandHandler\\ConfigurationCommandHandlerTest\:\:createConfigurationUpdatedEvents\(\) has parameter \$newConfiguration with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Configuration/CommandHandler/ConfigurationCommandHandlerTest.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\CommandHandlingBundle\\\\Tests\\\\Configuration\\\\CommandHandler\\\\ConfigurationCommandHandlerTest\\:\\:createConfigurationUpdatedEvents\\(\\) has parameter \\$oldConfiguration with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\CommandHandlingBundle\\Tests\\Configuration\\CommandHandler\\ConfigurationCommandHandlerTest\:\:createConfigurationUpdatedEvents\(\) has parameter \$oldConfiguration with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Configuration/CommandHandler/ConfigurationCommandHandlerTest.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\CommandHandlingBundle\\\\Tests\\\\Configuration\\\\CommandHandler\\\\ConfigurationCommandHandlerTest\\:\\:createConfigurationUpdatedEvents\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\CommandHandlingBundle\\Tests\\Configuration\\CommandHandler\\ConfigurationCommandHandlerTest\:\:createConfigurationUpdatedEvents\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Configuration/CommandHandler/ConfigurationCommandHandlerTest.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\CommandHandlingBundle\\\\Tests\\\\Configuration\\\\CommandHandler\\\\ConfigurationCommandHandlerTest\\:\\:createUpdateCommand\\(\\) has parameter \\$configuration with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\CommandHandlingBundle\\Tests\\Configuration\\CommandHandler\\ConfigurationCommandHandlerTest\:\:createUpdateCommand\(\) has parameter \$configuration with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Configuration/CommandHandler/ConfigurationCommandHandlerTest.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\CommandHandlingBundle\\\\Tests\\\\Identity\\\\CommandHandler\\\\IdentityCommandHandlerMoveTokenTest\\:\\:setUpInstitutionConfiguration\\(\\) has parameter \\$allowedTokenTypes with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\CommandHandlingBundle\\Tests\\Identity\\CommandHandler\\IdentityCommandHandlerMoveTokenTest\:\:setUpInstitutionConfiguration\(\) has parameter \$allowedTokenTypes with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/IdentityCommandHandlerMoveTokenTest.php - - message: "#^Parameter \\#2 \\$nameId of class Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\SecondFactorVettedEvent constructor expects Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\NameId, Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\NameId\\|null given\\.$#" + message: '#^Parameter \#2 \$nameId of class Surfnet\\Stepup\\Identity\\Event\\SecondFactorVettedEvent constructor expects Surfnet\\Stepup\\Identity\\Value\\NameId, Surfnet\\Stepup\\Identity\\Value\\NameId\|null given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/IdentityCommandHandlerSelfAssertedTokensTest.php - - message: "#^Parameter \\#2 \\$nameId of class Surfnet\\\\Stepup\\\\Identity\\\\Event\\\\SecondFactorVettedWithoutTokenProofOfPossession constructor expects Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\NameId, Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\NameId\\|null given\\.$#" + message: '#^Parameter \#2 \$nameId of class Surfnet\\Stepup\\Identity\\Event\\SecondFactorVettedWithoutTokenProofOfPossession constructor expects Surfnet\\Stepup\\Identity\\Value\\NameId, Surfnet\\Stepup\\Identity\\Value\\NameId\|null given\.$#' + identifier: argument.type count: 4 path: ../../src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/IdentityCommandHandlerSelfAssertedTokensTest.php - - message: "#^Cannot call method getPayload\\(\\) on mixed\\.$#" + message: '#^Cannot call method getPayload\(\) on mixed\.$#' + identifier: method.nonObject count: 1 path: ../../src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/IdentityIdEnforcingEventStoreDecorator.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\CommandHandlingBundle\\\\Tests\\\\Identity\\\\CommandHandler\\\\WhitelistCommandHandlerTest\\:\\:mapStringValuesToInstitutions\\(\\) has parameter \\$institutions with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\CommandHandlingBundle\\Tests\\Identity\\CommandHandler\\WhitelistCommandHandlerTest\:\:mapStringValuesToInstitutions\(\) has parameter \$institutions with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/WhitelistCommandHandlerTest.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\CommandHandlingBundle\\\\Tests\\\\Identity\\\\CommandHandler\\\\WhitelistCommandHandlerTest\\:\\:mapStringValuesToInstitutions\\(\\) return type has no value type specified in iterable type array\\.$#" - count: 1 - path: ../../src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/WhitelistCommandHandlerTest.php - - - - message: "#^Parameter \\#2 \\.\\.\\.\\$values of function sprintf expects bool\\|float\\|int\\|string\\|null, mixed given\\.$#" + message: '#^Parameter \#2 \.\.\.\$values of function sprintf expects bool\|float\|int\|string\|null, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Mockery/HasInstitutionMatcher.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\CommandHandlingBundle\\\\Tests\\\\Mockery\\\\HasInstitutionMatcherTest\\:\\:has_institution_matcher_only_matches_objects_against_a_given_institution\\(\\) has parameter \\$nonObject with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\CommandHandlingBundle\\Tests\\Mockery\\HasInstitutionMatcherTest\:\:has_institution_matcher_only_matches_objects_against_a_given_institution\(\) has parameter \$nonObject with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Mockery/HasInstitutionMatcherTest.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\CommandHandlingBundle\\\\Tests\\\\Mockery\\\\HasInstitutionMatcherTest\\:\\:nonObjectProvider\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\CommandHandlingBundle\\Tests\\Mockery\\HasInstitutionMatcherTest\:\:nonObjectProvider\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Mockery/HasInstitutionMatcherTest.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\CommandHandlingBundle\\\\Tests\\\\Mockery\\\\HasInstitutionMatcherTest\\:\\:nonStringProvider\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\CommandHandlingBundle\\Tests\\Mockery\\HasInstitutionMatcherTest\:\:nonStringProvider\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Mockery/HasInstitutionMatcherTest.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\CommandHandlingBundle\\\\Tests\\\\Pipeline\\\\AuthorizingStageTest\\:\\:interfaceToRoleMappingProvider\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\CommandHandlingBundle\\Tests\\Pipeline\\AuthorizingStageTest\:\:interfaceToRoleMappingProvider\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Pipeline/AuthorizingStageTest.php - - message: "#^Cannot access property \\$sensitiveData on mixed\\.$#" + message: '#^Cannot access property \$sensitiveData on mixed\.$#' + identifier: property.nonObject count: 1 path: ../../src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/SensitiveData/EventSourcing/SensitiveDataMessageStreamTest.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\CommandHandlingBundle\\\\Tests\\\\SensitiveData\\\\EventSourcing\\\\SensitiveDataMessageStreamTest\\:\\:apply\\(\\) has parameter \\$domainMessages with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\CommandHandlingBundle\\Tests\\SensitiveData\\EventSourcing\\SensitiveDataMessageStreamTest\:\:apply\(\) has parameter \$domainMessages with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/SensitiveData/EventSourcing/SensitiveDataMessageStreamTest.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\CommandHandlingBundle\\\\Tests\\\\SensitiveData\\\\EventSourcing\\\\SensitiveDataMessageStreamTest\\:\\:apply\\(\\) has parameter \\$sensitiveDataMessages with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\CommandHandlingBundle\\Tests\\SensitiveData\\EventSourcing\\SensitiveDataMessageStreamTest\:\:apply\(\) has parameter \$sensitiveDataMessages with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/SensitiveData/EventSourcing/SensitiveDataMessageStreamTest.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\CommandHandlingBundle\\\\Tests\\\\SensitiveData\\\\SensitiveDataTest\\:\\:it_serialises_and_deserialises\\(\\) has parameter \\$getterExpectations with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\CommandHandlingBundle\\Tests\\SensitiveData\\SensitiveDataTest\:\:it_serialises_and_deserialises\(\) has parameter \$getterExpectations with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/SensitiveData/SensitiveDataTest.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\CommandHandlingBundle\\\\Tests\\\\SensitiveData\\\\SensitiveDataTest\\:\\:sensitiveDataToSerialise\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\CommandHandlingBundle\\Tests\\SensitiveData\\SensitiveDataTest\:\:sensitiveDataToSerialise\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/SensitiveData/SensitiveDataTest.php - - message: "#^Parameter \\#1 \\$data of static method Surfnet\\\\StepupMiddleware\\\\CommandHandlingBundle\\\\SensitiveData\\\\SensitiveData\\:\\:deserialize\\(\\) expects array, mixed given\\.$#" + message: '#^Parameter \#1 \$data of static method Surfnet\\StepupMiddleware\\CommandHandlingBundle\\SensitiveData\\SensitiveData\:\:deserialize\(\) expects array, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/SensitiveData/SensitiveDataTest.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\CommandHandlingBundle\\\\Tests\\\\Twig\\\\BackwardsCompatibleExtensionTest\\:\\:templateProvider\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\CommandHandlingBundle\\Tests\\Twig\\BackwardsCompatibleExtensionTest\:\:templateProvider\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Twig/BackwardsCompatibleExtensionTest.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\CommandHandlingBundle\\\\Tests\\\\Value\\\\InstitutionTest\\:\\:nonStringOrNonEmptyStringProvider\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\CommandHandlingBundle\\Tests\\Value\\InstitutionTest\:\:nonStringOrNonEmptyStringProvider\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Value/InstitutionTest.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\GatewayBundle\\\\Entity\\\\SamlEntity\\:\\:createIdentityProvider\\(\\) has parameter \\$configuration with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\GatewayBundle\\Entity\\SamlEntity\:\:createIdentityProvider\(\) has parameter \$configuration with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/GatewayBundle/Entity/SamlEntity.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\GatewayBundle\\\\Entity\\\\SamlEntity\\:\\:createServiceProvider\\(\\) has parameter \\$configuration with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\GatewayBundle\\Entity\\SamlEntity\:\:createServiceProvider\(\) has parameter \$configuration with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/GatewayBundle/Entity/SamlEntity.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\GatewayBundle\\\\Entity\\\\SamlEntityRepository\\:\\:replaceAllIdps\\(\\) has parameter \\$newSamlEntities with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\GatewayBundle\\Entity\\SamlEntityRepository\:\:replaceAllIdps\(\) has parameter \$newSamlEntities with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/GatewayBundle/Entity/SamlEntityRepository.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\GatewayBundle\\\\Entity\\\\SamlEntityRepository\\:\\:replaceAllOfType\\(\\) has parameter \\$newSamlEntities with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\GatewayBundle\\Entity\\SamlEntityRepository\:\:replaceAllOfType\(\) has parameter \$newSamlEntities with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/GatewayBundle/Entity/SamlEntityRepository.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\GatewayBundle\\\\Entity\\\\SamlEntityRepository\\:\\:replaceAllSps\\(\\) has parameter \\$newSamlEntities with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\GatewayBundle\\Entity\\SamlEntityRepository\:\:replaceAllSps\(\) has parameter \$newSamlEntities with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/GatewayBundle/Entity/SamlEntityRepository.php - - message: "#^Parameter \\#1 \\$vettingType of method Surfnet\\\\StepupMiddleware\\\\GatewayBundle\\\\Projector\\\\SecondFactorProjector\\:\\:isIdentityVetted\\(\\) expects Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\VettingType, Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\VettingType\\|null given\\.$#" + message: '#^Parameter \#1 \$vettingType of method Surfnet\\StepupMiddleware\\GatewayBundle\\Projector\\SecondFactorProjector\:\:isIdentityVetted\(\) expects Surfnet\\Stepup\\Identity\\Value\\VettingType, Surfnet\\Stepup\\Identity\\Value\\VettingType\|null given\.$#' + identifier: argument.type count: 2 path: ../../src/Surfnet/StepupMiddleware/GatewayBundle/Projector/SecondFactorProjector.php - - message: "#^Parameter \\#1 \\$institution of static method Surfnet\\\\StepupMiddleware\\\\GatewayBundle\\\\Entity\\\\WhitelistEntry\\:\\:createFrom\\(\\) expects Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\Institution, mixed given\\.$#" - count: 3 - path: ../../src/Surfnet/StepupMiddleware/GatewayBundle/Projector/WhitelistProjector.php - - - - message: "#^Parameter \\#1 \\$institutions of method Surfnet\\\\StepupMiddleware\\\\GatewayBundle\\\\Repository\\\\WhitelistEntryRepository\\:\\:findEntriesByInstitutions\\(\\) expects array\\, array\\, mixed\\> given\\.$#" - count: 1 - path: ../../src/Surfnet/StepupMiddleware/GatewayBundle/Projector/WhitelistProjector.php - - - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\GatewayBundle\\\\Repository\\\\WhitelistEntryRepository\\:\\:findEntriesByInstitutions\\(\\) should return array\\ but returns mixed\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\GatewayBundle\\Repository\\WhitelistEntryRepository\:\:findEntriesByInstitutions\(\) should return array\ but returns mixed\.$#' + identifier: return.type count: 1 path: ../../src/Surfnet/StepupMiddleware/GatewayBundle/Repository/WhitelistEntryRepository.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ManagementBundle\\\\Configuration\\\\Entity\\\\EmailTemplate\\:\\:getId\\(\\) should return string but returns string\\|null\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ManagementBundle\\Configuration\\Entity\\EmailTemplate\:\:getId\(\) should return string but returns string\|null\.$#' + identifier: return.type count: 1 path: ../../src/Surfnet/StepupMiddleware/ManagementBundle/Configuration/Entity/EmailTemplate.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ManagementBundle\\\\Configuration\\\\Repository\\\\EmailTemplateRepository\\:\\:findOneByName\\(\\) should return Surfnet\\\\StepupMiddleware\\\\ManagementBundle\\\\Configuration\\\\Entity\\\\EmailTemplate\\|null but returns mixed\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ManagementBundle\\Configuration\\Repository\\EmailTemplateRepository\:\:findOneByName\(\) should return Surfnet\\StepupMiddleware\\ManagementBundle\\Configuration\\Entity\\EmailTemplate\|null but returns mixed\.$#' + identifier: return.type count: 1 path: ../../src/Surfnet/StepupMiddleware/ManagementBundle/Configuration/Repository/EmailTemplateRepository.php - - message: "#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\\.$#" - count: 1 - path: ../../src/Surfnet/StepupMiddleware/ManagementBundle/Controller/InstitutionConfigurationController.php - - - - message: "#^Cannot access offset 'allow_self_asserted…' on mixed\\.$#" - count: 1 - path: ../../src/Surfnet/StepupMiddleware/ManagementBundle/Controller/InstitutionConfigurationController.php - - - - message: "#^Cannot access offset 'allowed_second…' on mixed\\.$#" - count: 1 - path: ../../src/Surfnet/StepupMiddleware/ManagementBundle/Controller/InstitutionConfigurationController.php - - - - message: "#^Cannot access offset 'number_of_tokens…' on mixed\\.$#" - count: 1 - path: ../../src/Surfnet/StepupMiddleware/ManagementBundle/Controller/InstitutionConfigurationController.php - - - - message: "#^Cannot access offset 'select_raa' on mixed\\.$#" - count: 1 - path: ../../src/Surfnet/StepupMiddleware/ManagementBundle/Controller/InstitutionConfigurationController.php - - - - message: "#^Cannot access offset 'self_vet' on mixed\\.$#" - count: 1 - path: ../../src/Surfnet/StepupMiddleware/ManagementBundle/Controller/InstitutionConfigurationController.php - - - - message: "#^Cannot access offset 'show_raa_contact…' on mixed\\.$#" - count: 1 - path: ../../src/Surfnet/StepupMiddleware/ManagementBundle/Controller/InstitutionConfigurationController.php - - - - message: "#^Cannot access offset 'sso_on_2fa' on mixed\\.$#" - count: 1 - path: ../../src/Surfnet/StepupMiddleware/ManagementBundle/Controller/InstitutionConfigurationController.php - - - - message: "#^Cannot access offset 'sso_registration…' on mixed\\.$#" - count: 1 - path: ../../src/Surfnet/StepupMiddleware/ManagementBundle/Controller/InstitutionConfigurationController.php - - - - message: "#^Cannot access offset 'use_ra' on mixed\\.$#" - count: 1 - path: ../../src/Surfnet/StepupMiddleware/ManagementBundle/Controller/InstitutionConfigurationController.php - - - - message: "#^Cannot access offset 'use_ra_locations' on mixed\\.$#" - count: 1 - path: ../../src/Surfnet/StepupMiddleware/ManagementBundle/Controller/InstitutionConfigurationController.php - - - - message: "#^Cannot access offset 'use_raa' on mixed\\.$#" - count: 1 - path: ../../src/Surfnet/StepupMiddleware/ManagementBundle/Controller/InstitutionConfigurationController.php - - - - message: "#^Cannot access offset 'verify_email' on mixed\\.$#" - count: 1 - path: ../../src/Surfnet/StepupMiddleware/ManagementBundle/Controller/InstitutionConfigurationController.php - - - - message: "#^Property Surfnet\\\\StepupMiddleware\\\\CommandHandlingBundle\\\\Configuration\\\\Command\\\\ReconfigureInstitutionConfigurationOptionsCommand\\:\\:\\$allowedSecondFactors \\(array\\) does not accept mixed\\.$#" - count: 1 - path: ../../src/Surfnet/StepupMiddleware/ManagementBundle/Controller/InstitutionConfigurationController.php - - - - message: "#^Property Surfnet\\\\StepupMiddleware\\\\CommandHandlingBundle\\\\Configuration\\\\Command\\\\ReconfigureInstitutionConfigurationOptionsCommand\\:\\:\\$institution \\(string\\) does not accept mixed\\.$#" - count: 1 - path: ../../src/Surfnet/StepupMiddleware/ManagementBundle/Controller/InstitutionConfigurationController.php - - - - message: "#^Property Surfnet\\\\StepupMiddleware\\\\CommandHandlingBundle\\\\Configuration\\\\Command\\\\ReconfigureInstitutionConfigurationOptionsCommand\\:\\:\\$numberOfTokensPerIdentityOption \\(int\\) does not accept mixed\\.$#" - count: 1 - path: ../../src/Surfnet/StepupMiddleware/ManagementBundle/Controller/InstitutionConfigurationController.php - - - - message: "#^Property Surfnet\\\\StepupMiddleware\\\\CommandHandlingBundle\\\\Configuration\\\\Command\\\\ReconfigureInstitutionConfigurationOptionsCommand\\:\\:\\$selectRaaOption \\(array\\|null\\) does not accept mixed\\.$#" - count: 1 - path: ../../src/Surfnet/StepupMiddleware/ManagementBundle/Controller/InstitutionConfigurationController.php - - - - message: "#^Property Surfnet\\\\StepupMiddleware\\\\CommandHandlingBundle\\\\Configuration\\\\Command\\\\ReconfigureInstitutionConfigurationOptionsCommand\\:\\:\\$selfAssertedTokensOption \\(bool\\|null\\) does not accept mixed\\.$#" - count: 1 - path: ../../src/Surfnet/StepupMiddleware/ManagementBundle/Controller/InstitutionConfigurationController.php - - - - message: "#^Property Surfnet\\\\StepupMiddleware\\\\CommandHandlingBundle\\\\Configuration\\\\Command\\\\ReconfigureInstitutionConfigurationOptionsCommand\\:\\:\\$selfVetOption \\(bool\\|null\\) does not accept mixed\\.$#" + message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' + identifier: foreach.nonIterable count: 1 path: ../../src/Surfnet/StepupMiddleware/ManagementBundle/Controller/InstitutionConfigurationController.php - - message: "#^Property Surfnet\\\\StepupMiddleware\\\\CommandHandlingBundle\\\\Configuration\\\\Command\\\\ReconfigureInstitutionConfigurationOptionsCommand\\:\\:\\$showRaaContactInformationOption \\(bool\\) does not accept mixed\\.$#" + message: '#^Property Surfnet\\StepupMiddleware\\CommandHandlingBundle\\Configuration\\Command\\ReconfigureInstitutionConfigurationOptionsCommand\:\:\$allowedSecondFactors \(array\) does not accept mixed\.$#' + identifier: assign.propertyType count: 1 path: ../../src/Surfnet/StepupMiddleware/ManagementBundle/Controller/InstitutionConfigurationController.php - - message: "#^Property Surfnet\\\\StepupMiddleware\\\\CommandHandlingBundle\\\\Configuration\\\\Command\\\\ReconfigureInstitutionConfigurationOptionsCommand\\:\\:\\$ssoOn2faOption \\(bool\\|null\\) does not accept mixed\\.$#" + message: '#^Property Surfnet\\StepupMiddleware\\CommandHandlingBundle\\Configuration\\Command\\ReconfigureInstitutionConfigurationOptionsCommand\:\:\$institution \(string\) does not accept mixed\.$#' + identifier: assign.propertyType count: 1 path: ../../src/Surfnet/StepupMiddleware/ManagementBundle/Controller/InstitutionConfigurationController.php - - message: "#^Property Surfnet\\\\StepupMiddleware\\\\CommandHandlingBundle\\\\Configuration\\\\Command\\\\ReconfigureInstitutionConfigurationOptionsCommand\\:\\:\\$ssoRegistrationBypassOption \\(bool\\|null\\) does not accept mixed\\.$#" + message: '#^Property Surfnet\\StepupMiddleware\\CommandHandlingBundle\\Configuration\\Command\\ReconfigureInstitutionConfigurationOptionsCommand\:\:\$numberOfTokensPerIdentityOption \(int\) does not accept mixed\.$#' + identifier: assign.propertyType count: 1 path: ../../src/Surfnet/StepupMiddleware/ManagementBundle/Controller/InstitutionConfigurationController.php - - message: "#^Property Surfnet\\\\StepupMiddleware\\\\CommandHandlingBundle\\\\Configuration\\\\Command\\\\ReconfigureInstitutionConfigurationOptionsCommand\\:\\:\\$useRaLocationsOption \\(bool\\) does not accept mixed\\.$#" + message: '#^Property Surfnet\\StepupMiddleware\\CommandHandlingBundle\\Configuration\\Command\\ReconfigureInstitutionConfigurationOptionsCommand\:\:\$showRaaContactInformationOption \(bool\) does not accept mixed\.$#' + identifier: assign.propertyType count: 1 path: ../../src/Surfnet/StepupMiddleware/ManagementBundle/Controller/InstitutionConfigurationController.php - - message: "#^Property Surfnet\\\\StepupMiddleware\\\\CommandHandlingBundle\\\\Configuration\\\\Command\\\\ReconfigureInstitutionConfigurationOptionsCommand\\:\\:\\$useRaOption \\(array\\|null\\) does not accept mixed\\.$#" + message: '#^Property Surfnet\\StepupMiddleware\\CommandHandlingBundle\\Configuration\\Command\\ReconfigureInstitutionConfigurationOptionsCommand\:\:\$useRaLocationsOption \(bool\) does not accept mixed\.$#' + identifier: assign.propertyType count: 1 path: ../../src/Surfnet/StepupMiddleware/ManagementBundle/Controller/InstitutionConfigurationController.php - - message: "#^Property Surfnet\\\\StepupMiddleware\\\\CommandHandlingBundle\\\\Configuration\\\\Command\\\\ReconfigureInstitutionConfigurationOptionsCommand\\:\\:\\$useRaaOption \\(array\\|null\\) does not accept mixed\\.$#" + message: '#^Property Surfnet\\StepupMiddleware\\CommandHandlingBundle\\Configuration\\Command\\ReconfigureInstitutionConfigurationOptionsCommand\:\:\$useRaOption \(array\|null\) does not accept mixed\.$#' + identifier: assign.propertyType count: 1 path: ../../src/Surfnet/StepupMiddleware/ManagementBundle/Controller/InstitutionConfigurationController.php - - message: "#^Property Surfnet\\\\StepupMiddleware\\\\CommandHandlingBundle\\\\Configuration\\\\Command\\\\ReconfigureInstitutionConfigurationOptionsCommand\\:\\:\\$verifyEmailOption \\(bool\\) does not accept mixed\\.$#" + message: '#^Property Surfnet\\StepupMiddleware\\CommandHandlingBundle\\Configuration\\Command\\ReconfigureInstitutionConfigurationOptionsCommand\:\:\$verifyEmailOption \(bool\) does not accept mixed\.$#' + identifier: assign.propertyType count: 1 path: ../../src/Surfnet/StepupMiddleware/ManagementBundle/Controller/InstitutionConfigurationController.php - - message: "#^Cannot access offset 'institution' on mixed\\.$#" + message: '#^Cannot access offset ''institution'' on mixed\.$#' + identifier: offsetAccess.nonOffsetAccessible count: 1 path: ../../src/Surfnet/StepupMiddleware/ManagementBundle/Controller/RightToBeForgottenController.php - - message: "#^Cannot access offset 'name_id' on mixed\\.$#" + message: '#^Cannot access offset ''name_id'' on mixed\.$#' + identifier: offsetAccess.nonOffsetAccessible count: 1 path: ../../src/Surfnet/StepupMiddleware/ManagementBundle/Controller/RightToBeForgottenController.php - - message: "#^Parameter \\#1 \\$institution of class Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\Institution constructor expects string, mixed given\\.$#" + message: '#^Parameter \#1 \$institution of class Surfnet\\Stepup\\Identity\\Value\\Institution constructor expects string, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/ManagementBundle/Controller/RightToBeForgottenController.php - - message: "#^Parameter \\#1 \\$value of class Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\NameId constructor expects string, mixed given\\.$#" + message: '#^Parameter \#1 \$value of class Surfnet\\Stepup\\Identity\\Value\\NameId constructor expects string, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/ManagementBundle/Controller/RightToBeForgottenController.php - - message: "#^Property Surfnet\\\\StepupMiddleware\\\\CommandHandlingBundle\\\\Identity\\\\Command\\\\ForgetIdentityCommand\\:\\:\\$institution \\(string\\) does not accept mixed\\.$#" + message: '#^Property Surfnet\\StepupMiddleware\\CommandHandlingBundle\\Identity\\Command\\ForgetIdentityCommand\:\:\$institution \(string\) does not accept mixed\.$#' + identifier: assign.propertyType count: 1 path: ../../src/Surfnet/StepupMiddleware/ManagementBundle/Controller/RightToBeForgottenController.php - - message: "#^Property Surfnet\\\\StepupMiddleware\\\\CommandHandlingBundle\\\\Identity\\\\Command\\\\ForgetIdentityCommand\\:\\:\\$nameId \\(string\\) does not accept mixed\\.$#" + message: '#^Property Surfnet\\StepupMiddleware\\CommandHandlingBundle\\Identity\\Command\\ForgetIdentityCommand\:\:\$nameId \(string\) does not accept mixed\.$#' + identifier: assign.propertyType count: 1 path: ../../src/Surfnet/StepupMiddleware/ManagementBundle/Controller/RightToBeForgottenController.php - - message: "#^Cannot access offset 'institutions' on mixed\\.$#" + message: '#^Cannot access offset ''institutions'' on mixed\.$#' + identifier: offsetAccess.nonOffsetAccessible count: 1 path: ../../src/Surfnet/StepupMiddleware/ManagementBundle/Controller/WhitelistController.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ManagementBundle\\\\Controller\\\\WhitelistController\\:\\:getInstitutionsFromBody\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ManagementBundle\\Controller\\WhitelistController\:\:getInstitutionsFromBody\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/ManagementBundle/Controller/WhitelistController.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ManagementBundle\\\\Tests\\\\Controller\\\\ConfigurationControllerTest\\:\\:invalidHttpMethodProvider\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ManagementBundle\\Tests\\Controller\\ConfigurationControllerTest\:\:invalidHttpMethodProvider\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/ManagementBundle/Tests/Controller/ConfigurationControllerTest.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ManagementBundle\\\\Tests\\\\Controller\\\\InstitutionConfigurationControllerTest\\:\\:invalidHttpMethodProvider\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ManagementBundle\\Tests\\Controller\\InstitutionConfigurationControllerTest\:\:invalidHttpMethodProvider\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/ManagementBundle/Tests/Controller/InstitutionConfigurationControllerTest.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ManagementBundle\\\\Tests\\\\Validator\\\\ConfigurationValidationTest\\:\\:it_rejects_invalid_configuration\\(\\) has parameter \\$configuration with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ManagementBundle\\Tests\\Validator\\ConfigurationValidationTest\:\:it_rejects_invalid_configuration\(\) has parameter \$configuration with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/ManagementBundle/Tests/Validator/ConfigurationValidationTest.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ManagementBundle\\\\Tests\\\\Validator\\\\ReconfigureInstitutionRequestValidatorTest\\:\\:it_rejects_invalid_configuration\\(\\) has parameter \\$reconfigureRequest with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ManagementBundle\\Tests\\Validator\\ReconfigureInstitutionRequestValidatorTest\:\:it_rejects_invalid_configuration\(\) has parameter \$reconfigureRequest with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/ManagementBundle/Tests/Validator/ReconfigureInstitutionRequestValidatorTest.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ManagementBundle\\\\Validator\\\\Assert\\:\\:keysMatch\\(\\) has parameter \\$keys with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ManagementBundle\\Validator\\Assert\:\:keysMatch\(\) has parameter \$keys with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/ManagementBundle/Validator/Assert.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ManagementBundle\\\\Validator\\\\Assert\\:\\:keysMatch\\(\\) has parameter \\$value with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ManagementBundle\\Validator\\Assert\:\:keysMatch\(\) has parameter \$value with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/ManagementBundle/Validator/Assert.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ManagementBundle\\\\Validator\\\\Assert\\:\\:requiredAndOptionalOptions\\(\\) has parameter \\$optional with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ManagementBundle\\Validator\\Assert\:\:requiredAndOptionalOptions\(\) has parameter \$optional with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/ManagementBundle/Validator/Assert.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ManagementBundle\\\\Validator\\\\Assert\\:\\:requiredAndOptionalOptions\\(\\) has parameter \\$required with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ManagementBundle\\Validator\\Assert\:\:requiredAndOptionalOptions\(\) has parameter \$required with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/ManagementBundle/Validator/Assert.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ManagementBundle\\\\Validator\\\\Assert\\:\\:requiredAndOptionalOptions\\(\\) has parameter \\$value with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ManagementBundle\\Validator\\Assert\:\:requiredAndOptionalOptions\(\) has parameter \$value with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/ManagementBundle/Validator/Assert.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ManagementBundle\\\\Validator\\\\ConfigurationStructureValidator\\:\\:validateGatewayConfiguration\\(\\) has parameter \\$configuration with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ManagementBundle\\Validator\\ConfigurationStructureValidator\:\:validateGatewayConfiguration\(\) has parameter \$configuration with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/ManagementBundle/Validator/ConfigurationStructureValidator.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ManagementBundle\\\\Validator\\\\ConfigurationStructureValidator\\:\\:validateRoot\\(\\) has parameter \\$configuration with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ManagementBundle\\Validator\\ConfigurationStructureValidator\:\:validateRoot\(\) has parameter \$configuration with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/ManagementBundle/Validator/ConfigurationStructureValidator.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ManagementBundle\\\\Validator\\\\ConfigurationStructureValidator\\:\\:validateSraaConfiguration\\(\\) has parameter \\$configuration with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ManagementBundle\\Validator\\ConfigurationStructureValidator\:\:validateSraaConfiguration\(\) has parameter \$configuration with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/ManagementBundle/Validator/ConfigurationStructureValidator.php - - message: "#^Parameter \\#1 \\$configuration of method Surfnet\\\\StepupMiddleware\\\\ManagementBundle\\\\Validator\\\\ConfigurationStructureValidator\\:\\:validateRoot\\(\\) expects array, mixed given\\.$#" + message: '#^Parameter \#1 \$configuration of method Surfnet\\StepupMiddleware\\ManagementBundle\\Validator\\ConfigurationStructureValidator\:\:validateRoot\(\) expects array, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/ManagementBundle/Validator/ConfigurationStructureValidator.php - - message: "#^Parameter \\#1 \\$path of method Symfony\\\\Component\\\\Validator\\\\Violation\\\\ConstraintViolationBuilderInterface\\:\\:atPath\\(\\) expects string, string\\|null given\\.$#" + message: '#^Parameter \#1 \$path of method Symfony\\Component\\Validator\\Violation\\ConstraintViolationBuilderInterface\:\:atPath\(\) expects string, string\|null given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/ManagementBundle/Validator/ConfigurationStructureValidator.php - - message: "#^Parameter \\#1 \\$rawValue of method Surfnet\\\\StepupMiddleware\\\\ManagementBundle\\\\Validator\\\\ConfigurationStructureValidator\\:\\:decodeJson\\(\\) expects string, mixed given\\.$#" + message: '#^Parameter \#1 \$rawValue of method Surfnet\\StepupMiddleware\\ManagementBundle\\Validator\\ConfigurationStructureValidator\:\:decodeJson\(\) expects string, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/ManagementBundle/Validator/ConfigurationStructureValidator.php - - message: "#^Parameter \\#1 \\$identityProviders of method Surfnet\\\\StepupMiddleware\\\\ManagementBundle\\\\Validator\\\\GatewayConfigurationValidator\\:\\:validateIdentityProviders\\(\\) expects array\\\\>, mixed given\\.$#" + message: '#^Parameter \#1 \$identityProviders of method Surfnet\\StepupMiddleware\\ManagementBundle\\Validator\\GatewayConfigurationValidator\:\:validateIdentityProviders\(\) expects array\\>, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/ManagementBundle/Validator/GatewayConfigurationValidator.php - - message: "#^Parameter \\#1 \\$serviceProviders of method Surfnet\\\\StepupMiddleware\\\\ManagementBundle\\\\Validator\\\\GatewayConfigurationValidator\\:\\:validateServiceProviders\\(\\) expects array\\\\>, mixed given\\.$#" + message: '#^Parameter \#1 \$serviceProviders of method Surfnet\\StepupMiddleware\\ManagementBundle\\Validator\\GatewayConfigurationValidator\:\:validateServiceProviders\(\) expects array\\>, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/ManagementBundle/Validator/GatewayConfigurationValidator.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ManagementBundle\\\\Validator\\\\IdentityProviderConfigurationValidator\\:\\:validateBooleanValue\\(\\) has parameter \\$configuration with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ManagementBundle\\Validator\\IdentityProviderConfigurationValidator\:\:validateBooleanValue\(\) has parameter \$configuration with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/ManagementBundle/Validator/IdentityProviderConfigurationValidator.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ManagementBundle\\\\Validator\\\\IdentityProviderConfigurationValidator\\:\\:validateLoaDefinition\\(\\) has parameter \\$configuration with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ManagementBundle\\Validator\\IdentityProviderConfigurationValidator\:\:validateLoaDefinition\(\) has parameter \$configuration with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/ManagementBundle/Validator/IdentityProviderConfigurationValidator.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ManagementBundle\\\\Validator\\\\IdentityProviderConfigurationValidator\\:\\:validateStringValue\\(\\) has parameter \\$configuration with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ManagementBundle\\Validator\\IdentityProviderConfigurationValidator\:\:validateStringValue\(\) has parameter \$configuration with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/ManagementBundle/Validator/IdentityProviderConfigurationValidator.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ManagementBundle\\\\Validator\\\\ReconfigureInstitutionRequestValidator\\:\\:validateAuthorizationSettings\\(\\) has parameter \\$authorizationSettings with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ManagementBundle\\Validator\\ReconfigureInstitutionRequestValidator\:\:validateAuthorizationSettings\(\) has parameter \$authorizationSettings with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/ManagementBundle/Validator/ReconfigureInstitutionRequestValidator.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ManagementBundle\\\\Validator\\\\ReconfigureInstitutionRequestValidator\\:\\:validateInstitutionConfigurationOptions\\(\\) has parameter \\$options with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ManagementBundle\\Validator\\ReconfigureInstitutionRequestValidator\:\:validateInstitutionConfigurationOptions\(\) has parameter \$options with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/ManagementBundle/Validator/ReconfigureInstitutionRequestValidator.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ManagementBundle\\\\Validator\\\\ReconfigureInstitutionRequestValidator\\:\\:validateInstitutionsExist\\(\\) has parameter \\$institutions with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ManagementBundle\\Validator\\ReconfigureInstitutionRequestValidator\:\:validateInstitutionsExist\(\) has parameter \$institutions with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/ManagementBundle/Validator/ReconfigureInstitutionRequestValidator.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ManagementBundle\\\\Validator\\\\ReconfigureInstitutionRequestValidator\\:\\:validateRoot\\(\\) has parameter \\$configuration with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ManagementBundle\\Validator\\ReconfigureInstitutionRequestValidator\:\:validateRoot\(\) has parameter \$configuration with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/ManagementBundle/Validator/ReconfigureInstitutionRequestValidator.php - - message: "#^Parameter \\#1 \\$configuration of method Surfnet\\\\StepupMiddleware\\\\ManagementBundle\\\\Validator\\\\ReconfigureInstitutionRequestValidator\\:\\:validateRoot\\(\\) expects array, mixed given\\.$#" + message: '#^Parameter \#1 \$configuration of method Surfnet\\StepupMiddleware\\ManagementBundle\\Validator\\ReconfigureInstitutionRequestValidator\:\:validateRoot\(\) expects array, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/ManagementBundle/Validator/ReconfigureInstitutionRequestValidator.php - - message: "#^Parameter \\#1 \\$path of method Symfony\\\\Component\\\\Validator\\\\Violation\\\\ConstraintViolationBuilderInterface\\:\\:atPath\\(\\) expects string, string\\|null given\\.$#" + message: '#^Parameter \#1 \$path of method Symfony\\Component\\Validator\\Violation\\ConstraintViolationBuilderInterface\:\:atPath\(\) expects string, string\|null given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/ManagementBundle/Validator/ReconfigureInstitutionRequestValidator.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ManagementBundle\\\\Validator\\\\ServiceProviderConfigurationValidator\\:\\:assertValidInstitutionIdentifiers\\(\\) has parameter \\$spLoaConfiguration with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ManagementBundle\\Validator\\ServiceProviderConfigurationValidator\:\:assertValidInstitutionIdentifiers\(\) has parameter \$spLoaConfiguration with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/ManagementBundle/Validator/ServiceProviderConfigurationValidator.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ManagementBundle\\\\Validator\\\\ServiceProviderConfigurationValidator\\:\\:validateAssertionConsumerUrls\\(\\) has parameter \\$configuration with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ManagementBundle\\Validator\\ServiceProviderConfigurationValidator\:\:validateAssertionConsumerUrls\(\) has parameter \$configuration with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/ManagementBundle/Validator/ServiceProviderConfigurationValidator.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ManagementBundle\\\\Validator\\\\ServiceProviderConfigurationValidator\\:\\:validateBooleanValue\\(\\) has parameter \\$configuration with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ManagementBundle\\Validator\\ServiceProviderConfigurationValidator\:\:validateBooleanValue\(\) has parameter \$configuration with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/ManagementBundle/Validator/ServiceProviderConfigurationValidator.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ManagementBundle\\\\Validator\\\\ServiceProviderConfigurationValidator\\:\\:validateListOfNameIdPatterns\\(\\) has parameter \\$configuration with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ManagementBundle\\Validator\\ServiceProviderConfigurationValidator\:\:validateListOfNameIdPatterns\(\) has parameter \$configuration with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/ManagementBundle/Validator/ServiceProviderConfigurationValidator.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ManagementBundle\\\\Validator\\\\ServiceProviderConfigurationValidator\\:\\:validateLoaDefinition\\(\\) has parameter \\$configuration with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ManagementBundle\\Validator\\ServiceProviderConfigurationValidator\:\:validateLoaDefinition\(\) has parameter \$configuration with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/ManagementBundle/Validator/ServiceProviderConfigurationValidator.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ManagementBundle\\\\Validator\\\\ServiceProviderConfigurationValidator\\:\\:validateStringValue\\(\\) has parameter \\$configuration with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ManagementBundle\\Validator\\ServiceProviderConfigurationValidator\:\:validateStringValue\(\) has parameter \$configuration with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/ManagementBundle/Validator/ServiceProviderConfigurationValidator.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\ManagementBundle\\\\Validator\\\\ServiceProviderConfigurationValidator\\:\\:validateStringValues\\(\\) has parameter \\$configuration with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\ManagementBundle\\Validator\\ServiceProviderConfigurationValidator\:\:validateStringValues\(\) has parameter \$configuration with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/ManagementBundle/Validator/ServiceProviderConfigurationValidator.php - - message: "#^Parameter \\#1 \\$actorId of method Surfnet\\\\StepupMiddleware\\\\MiddlewareBundle\\\\Service\\\\BootstrapCommandService\\:\\:enrichEventMetadata\\(\\) expects string, mixed given\\.$#" + message: '#^Parameter \#1 \$actorId of method Surfnet\\StepupMiddleware\\MiddlewareBundle\\Service\\BootstrapCommandService\:\:enrichEventMetadata\(\) expects string, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapGsspSecondFactorCommand.php - - message: "#^Parameter \\#1 \\$institution of class Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\Institution constructor expects string, mixed given\\.$#" + message: '#^Parameter \#1 \$institution of class Surfnet\\Stepup\\Identity\\Value\\Institution constructor expects string, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapGsspSecondFactorCommand.php - - message: "#^Parameter \\#1 \\$institution of method Surfnet\\\\StepupMiddleware\\\\MiddlewareBundle\\\\Service\\\\BootstrapCommandService\\:\\:requiresMailVerification\\(\\) expects string, mixed given\\.$#" + message: '#^Parameter \#1 \$institution of method Surfnet\\StepupMiddleware\\MiddlewareBundle\\Service\\BootstrapCommandService\:\:requiresMailVerification\(\) expects string, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapGsspSecondFactorCommand.php - - message: "#^Parameter \\#1 \\$registrationStatus of method Surfnet\\\\StepupMiddleware\\\\MiddlewareBundle\\\\Service\\\\BootstrapCommandService\\:\\:validRegistrationStatus\\(\\) expects string, mixed given\\.$#" + message: '#^Parameter \#1 \$registrationStatus of method Surfnet\\StepupMiddleware\\MiddlewareBundle\\Service\\BootstrapCommandService\:\:validRegistrationStatus\(\) expects string, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapGsspSecondFactorCommand.php - - message: "#^Parameter \\#1 \\$tokenType of method Surfnet\\\\StepupMiddleware\\\\MiddlewareBundle\\\\Service\\\\BootstrapCommandService\\:\\:vetSecondFactor\\(\\) expects string, mixed given\\.$#" + message: '#^Parameter \#1 \$tokenType of method Surfnet\\StepupMiddleware\\MiddlewareBundle\\Service\\BootstrapCommandService\:\:vetSecondFactor\(\) expects string, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapGsspSecondFactorCommand.php - - message: "#^Parameter \\#1 \\$value of class Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\NameId constructor expects string, mixed given\\.$#" + message: '#^Parameter \#1 \$value of class Surfnet\\Stepup\\Identity\\Value\\NameId constructor expects string, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapGsspSecondFactorCommand.php - - message: "#^Parameter \\#2 \\$actorId of method Surfnet\\\\StepupMiddleware\\\\MiddlewareBundle\\\\Service\\\\BootstrapCommandService\\:\\:vetSecondFactor\\(\\) expects string, mixed given\\.$#" + message: '#^Parameter \#2 \$actorId of method Surfnet\\StepupMiddleware\\MiddlewareBundle\\Service\\BootstrapCommandService\:\:vetSecondFactor\(\) expects string, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapGsspSecondFactorCommand.php - - message: "#^Parameter \\#2 \\$tokenType of method Surfnet\\\\StepupMiddleware\\\\MiddlewareBundle\\\\Service\\\\BootstrapCommandService\\:\\:verifyEmail\\(\\) expects string, mixed given\\.$#" + message: '#^Parameter \#2 \$tokenType of method Surfnet\\StepupMiddleware\\MiddlewareBundle\\Service\\BootstrapCommandService\:\:verifyEmail\(\) expects string, mixed given\.$#' + identifier: argument.type count: 2 path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapGsspSecondFactorCommand.php - - message: "#^Parameter \\#2 \\.\\.\\.\\$values of function sprintf expects bool\\|float\\|int\\|string\\|null, mixed given\\.$#" + message: '#^Parameter \#2 \.\.\.\$values of function sprintf expects bool\|float\|int\|string\|null, mixed given\.$#' + identifier: argument.type count: 9 path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapGsspSecondFactorCommand.php - - message: "#^Parameter \\#3 \\$tokenType of method Surfnet\\\\StepupMiddleware\\\\MiddlewareBundle\\\\Service\\\\BootstrapCommandService\\:\\:proveGsspPossession\\(\\) expects string, mixed given\\.$#" + message: '#^Parameter \#3 \$tokenType of method Surfnet\\StepupMiddleware\\MiddlewareBundle\\Service\\BootstrapCommandService\:\:proveGsspPossession\(\) expects string, mixed given\.$#' + identifier: argument.type count: 3 path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapGsspSecondFactorCommand.php - - message: "#^Parameter \\#3 \\.\\.\\.\\$values of function sprintf expects bool\\|float\\|int\\|string\\|null, mixed given\\.$#" + message: '#^Parameter \#3 \.\.\.\$values of function sprintf expects bool\|float\|int\|string\|null, mixed given\.$#' + identifier: argument.type count: 2 path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapGsspSecondFactorCommand.php - - message: "#^Parameter \\#4 \\$tokenIdentifier of method Surfnet\\\\StepupMiddleware\\\\MiddlewareBundle\\\\Service\\\\BootstrapCommandService\\:\\:proveGsspPossession\\(\\) expects string, mixed given\\.$#" + message: '#^Parameter \#4 \$tokenIdentifier of method Surfnet\\StepupMiddleware\\MiddlewareBundle\\Service\\BootstrapCommandService\:\:proveGsspPossession\(\) expects string, mixed given\.$#' + identifier: argument.type count: 3 path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapGsspSecondFactorCommand.php - - message: "#^Parameter \\#5 \\$secondFactorIdentifier of method Surfnet\\\\StepupMiddleware\\\\MiddlewareBundle\\\\Service\\\\BootstrapCommandService\\:\\:vetSecondFactor\\(\\) expects string, mixed given\\.$#" + message: '#^Parameter \#5 \$secondFactorIdentifier of method Surfnet\\StepupMiddleware\\MiddlewareBundle\\Service\\BootstrapCommandService\:\:vetSecondFactor\(\) expects string, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapGsspSecondFactorCommand.php - - message: "#^Parameter \\#1 \\$actorId of method Surfnet\\\\StepupMiddleware\\\\MiddlewareBundle\\\\Service\\\\BootstrapCommandService\\:\\:enrichEventMetadata\\(\\) expects string, mixed given\\.$#" + message: '#^Parameter \#1 \$actorId of method Surfnet\\StepupMiddleware\\MiddlewareBundle\\Service\\BootstrapCommandService\:\:enrichEventMetadata\(\) expects string, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapIdentityCommand.php - - message: "#^Parameter \\#1 \\$institution of class Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\Institution constructor expects string, mixed given\\.$#" + message: '#^Parameter \#1 \$institution of class Surfnet\\Stepup\\Identity\\Value\\Institution constructor expects string, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapIdentityCommand.php - - message: "#^Parameter \\#1 \\$value of class Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\NameId constructor expects string, mixed given\\.$#" + message: '#^Parameter \#1 \$value of class Surfnet\\Stepup\\Identity\\Value\\NameId constructor expects string, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapIdentityCommand.php - - message: "#^Parameter \\#2 \\.\\.\\.\\$values of function sprintf expects bool\\|float\\|int\\|string\\|null, mixed given\\.$#" + message: '#^Parameter \#2 \.\.\.\$values of function sprintf expects bool\|float\|int\|string\|null, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapIdentityCommand.php - - message: "#^Parameter \\#3 \\$commonName of method Surfnet\\\\StepupMiddleware\\\\MiddlewareBundle\\\\Service\\\\BootstrapCommandService\\:\\:createIdentity\\(\\) expects string, mixed given\\.$#" + message: '#^Parameter \#3 \$commonName of method Surfnet\\StepupMiddleware\\MiddlewareBundle\\Service\\BootstrapCommandService\:\:createIdentity\(\) expects string, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapIdentityCommand.php - - message: "#^Parameter \\#4 \\$email of method Surfnet\\\\StepupMiddleware\\\\MiddlewareBundle\\\\Service\\\\BootstrapCommandService\\:\\:createIdentity\\(\\) expects string, mixed given\\.$#" + message: '#^Parameter \#4 \$email of method Surfnet\\StepupMiddleware\\MiddlewareBundle\\Service\\BootstrapCommandService\:\:createIdentity\(\) expects string, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapIdentityCommand.php - - message: "#^Parameter \\#5 \\$preferredLocale of method Surfnet\\\\StepupMiddleware\\\\MiddlewareBundle\\\\Service\\\\BootstrapCommandService\\:\\:createIdentity\\(\\) expects string, mixed given\\.$#" + message: '#^Parameter \#5 \$preferredLocale of method Surfnet\\StepupMiddleware\\MiddlewareBundle\\Service\\BootstrapCommandService\:\:createIdentity\(\) expects string, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapIdentityCommand.php - - message: "#^Parameter \\#1 \\$institution of class Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\Institution constructor expects string, mixed given\\.$#" + message: '#^Parameter \#1 \$institution of class Surfnet\\Stepup\\Identity\\Value\\Institution constructor expects string, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapIdentityWithYubikeySecondFactorCommand.php - - message: "#^Parameter \\#1 \\$value of class Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\NameId constructor expects string, mixed given\\.$#" + message: '#^Parameter \#1 \$value of class Surfnet\\Stepup\\Identity\\Value\\NameId constructor expects string, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapIdentityWithYubikeySecondFactorCommand.php - - message: "#^Property Surfnet\\\\StepupMiddleware\\\\CommandHandlingBundle\\\\Identity\\\\Command\\\\BootstrapIdentityWithYubikeySecondFactorCommand\\:\\:\\$commonName \\(string\\) does not accept mixed\\.$#" + message: '#^Property Surfnet\\StepupMiddleware\\CommandHandlingBundle\\Identity\\Command\\BootstrapIdentityWithYubikeySecondFactorCommand\:\:\$commonName \(string\) does not accept mixed\.$#' + identifier: assign.propertyType count: 1 path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapIdentityWithYubikeySecondFactorCommand.php - - message: "#^Property Surfnet\\\\StepupMiddleware\\\\CommandHandlingBundle\\\\Identity\\\\Command\\\\BootstrapIdentityWithYubikeySecondFactorCommand\\:\\:\\$email \\(string\\) does not accept mixed\\.$#" + message: '#^Property Surfnet\\StepupMiddleware\\CommandHandlingBundle\\Identity\\Command\\BootstrapIdentityWithYubikeySecondFactorCommand\:\:\$email \(string\) does not accept mixed\.$#' + identifier: assign.propertyType count: 1 path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapIdentityWithYubikeySecondFactorCommand.php - - message: "#^Property Surfnet\\\\StepupMiddleware\\\\CommandHandlingBundle\\\\Identity\\\\Command\\\\BootstrapIdentityWithYubikeySecondFactorCommand\\:\\:\\$institution \\(string\\) does not accept mixed\\.$#" + message: '#^Property Surfnet\\StepupMiddleware\\CommandHandlingBundle\\Identity\\Command\\BootstrapIdentityWithYubikeySecondFactorCommand\:\:\$institution \(string\) does not accept mixed\.$#' + identifier: assign.propertyType count: 1 path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapIdentityWithYubikeySecondFactorCommand.php - - message: "#^Property Surfnet\\\\StepupMiddleware\\\\CommandHandlingBundle\\\\Identity\\\\Command\\\\BootstrapIdentityWithYubikeySecondFactorCommand\\:\\:\\$nameId \\(string\\) does not accept mixed\\.$#" + message: '#^Property Surfnet\\StepupMiddleware\\CommandHandlingBundle\\Identity\\Command\\BootstrapIdentityWithYubikeySecondFactorCommand\:\:\$nameId \(string\) does not accept mixed\.$#' + identifier: assign.propertyType count: 1 path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapIdentityWithYubikeySecondFactorCommand.php - - message: "#^Property Surfnet\\\\StepupMiddleware\\\\CommandHandlingBundle\\\\Identity\\\\Command\\\\BootstrapIdentityWithYubikeySecondFactorCommand\\:\\:\\$preferredLocale \\(string\\) does not accept mixed\\.$#" + message: '#^Property Surfnet\\StepupMiddleware\\CommandHandlingBundle\\Identity\\Command\\BootstrapIdentityWithYubikeySecondFactorCommand\:\:\$preferredLocale \(string\) does not accept mixed\.$#' + identifier: assign.propertyType count: 1 path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapIdentityWithYubikeySecondFactorCommand.php - - message: "#^Property Surfnet\\\\StepupMiddleware\\\\CommandHandlingBundle\\\\Identity\\\\Command\\\\BootstrapIdentityWithYubikeySecondFactorCommand\\:\\:\\$yubikeyPublicId \\(string\\) does not accept mixed\\.$#" + message: '#^Property Surfnet\\StepupMiddleware\\CommandHandlingBundle\\Identity\\Command\\BootstrapIdentityWithYubikeySecondFactorCommand\:\:\$yubikeyPublicId \(string\) does not accept mixed\.$#' + identifier: assign.propertyType count: 1 path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapIdentityWithYubikeySecondFactorCommand.php - - message: "#^Parameter \\#1 \\$actorId of method Surfnet\\\\StepupMiddleware\\\\MiddlewareBundle\\\\Service\\\\BootstrapCommandService\\:\\:enrichEventMetadata\\(\\) expects string, mixed given\\.$#" + message: '#^Parameter \#1 \$actorId of method Surfnet\\StepupMiddleware\\MiddlewareBundle\\Service\\BootstrapCommandService\:\:enrichEventMetadata\(\) expects string, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapSmsSecondFactorCommand.php - - message: "#^Parameter \\#1 \\$institution of class Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\Institution constructor expects string, mixed given\\.$#" + message: '#^Parameter \#1 \$institution of class Surfnet\\Stepup\\Identity\\Value\\Institution constructor expects string, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapSmsSecondFactorCommand.php - - message: "#^Parameter \\#1 \\$institution of method Surfnet\\\\StepupMiddleware\\\\MiddlewareBundle\\\\Service\\\\BootstrapCommandService\\:\\:requiresMailVerification\\(\\) expects string, mixed given\\.$#" + message: '#^Parameter \#1 \$institution of method Surfnet\\StepupMiddleware\\MiddlewareBundle\\Service\\BootstrapCommandService\:\:requiresMailVerification\(\) expects string, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapSmsSecondFactorCommand.php - - message: "#^Parameter \\#1 \\$registrationStatus of method Surfnet\\\\StepupMiddleware\\\\MiddlewareBundle\\\\Service\\\\BootstrapCommandService\\:\\:validRegistrationStatus\\(\\) expects string, mixed given\\.$#" + message: '#^Parameter \#1 \$registrationStatus of method Surfnet\\StepupMiddleware\\MiddlewareBundle\\Service\\BootstrapCommandService\:\:validRegistrationStatus\(\) expects string, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapSmsSecondFactorCommand.php - - message: "#^Parameter \\#1 \\$value of class Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\NameId constructor expects string, mixed given\\.$#" + message: '#^Parameter \#1 \$value of class Surfnet\\Stepup\\Identity\\Value\\NameId constructor expects string, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapSmsSecondFactorCommand.php - - message: "#^Parameter \\#2 \\$actorId of method Surfnet\\\\StepupMiddleware\\\\MiddlewareBundle\\\\Service\\\\BootstrapCommandService\\:\\:vetSecondFactor\\(\\) expects string, mixed given\\.$#" + message: '#^Parameter \#2 \$actorId of method Surfnet\\StepupMiddleware\\MiddlewareBundle\\Service\\BootstrapCommandService\:\:vetSecondFactor\(\) expects string, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapSmsSecondFactorCommand.php - - message: "#^Parameter \\#2 \\.\\.\\.\\$values of function sprintf expects bool\\|float\\|int\\|string\\|null, mixed given\\.$#" + message: '#^Parameter \#2 \.\.\.\$values of function sprintf expects bool\|float\|int\|string\|null, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapSmsSecondFactorCommand.php - - message: "#^Parameter \\#3 \\$phoneNumber of method Surfnet\\\\StepupMiddleware\\\\MiddlewareBundle\\\\Service\\\\BootstrapCommandService\\:\\:provePhonePossession\\(\\) expects string, mixed given\\.$#" + message: '#^Parameter \#3 \$phoneNumber of method Surfnet\\StepupMiddleware\\MiddlewareBundle\\Service\\BootstrapCommandService\:\:provePhonePossession\(\) expects string, mixed given\.$#' + identifier: argument.type count: 3 path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapSmsSecondFactorCommand.php - - message: "#^Parameter \\#5 \\$secondFactorIdentifier of method Surfnet\\\\StepupMiddleware\\\\MiddlewareBundle\\\\Service\\\\BootstrapCommandService\\:\\:vetSecondFactor\\(\\) expects string, mixed given\\.$#" + message: '#^Parameter \#5 \$secondFactorIdentifier of method Surfnet\\StepupMiddleware\\MiddlewareBundle\\Service\\BootstrapCommandService\:\:vetSecondFactor\(\) expects string, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapSmsSecondFactorCommand.php - - message: "#^Parameter \\#1 \\$actorId of method Surfnet\\\\StepupMiddleware\\\\MiddlewareBundle\\\\Service\\\\BootstrapCommandService\\:\\:enrichEventMetadata\\(\\) expects string, mixed given\\.$#" + message: '#^Parameter \#1 \$actorId of method Surfnet\\StepupMiddleware\\MiddlewareBundle\\Service\\BootstrapCommandService\:\:enrichEventMetadata\(\) expects string, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapYubikeySecondFactorCommand.php - - message: "#^Parameter \\#1 \\$institution of class Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\Institution constructor expects string, mixed given\\.$#" + message: '#^Parameter \#1 \$institution of class Surfnet\\Stepup\\Identity\\Value\\Institution constructor expects string, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapYubikeySecondFactorCommand.php - - message: "#^Parameter \\#1 \\$institution of method Surfnet\\\\StepupMiddleware\\\\MiddlewareBundle\\\\Service\\\\BootstrapCommandService\\:\\:requiresMailVerification\\(\\) expects string, mixed given\\.$#" + message: '#^Parameter \#1 \$institution of method Surfnet\\StepupMiddleware\\MiddlewareBundle\\Service\\BootstrapCommandService\:\:requiresMailVerification\(\) expects string, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapYubikeySecondFactorCommand.php - - message: "#^Parameter \\#1 \\$registrationStatus of method Surfnet\\\\StepupMiddleware\\\\MiddlewareBundle\\\\Service\\\\BootstrapCommandService\\:\\:validRegistrationStatus\\(\\) expects string, mixed given\\.$#" + message: '#^Parameter \#1 \$registrationStatus of method Surfnet\\StepupMiddleware\\MiddlewareBundle\\Service\\BootstrapCommandService\:\:validRegistrationStatus\(\) expects string, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapYubikeySecondFactorCommand.php - - message: "#^Parameter \\#1 \\$value of class Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\NameId constructor expects string, mixed given\\.$#" + message: '#^Parameter \#1 \$value of class Surfnet\\Stepup\\Identity\\Value\\NameId constructor expects string, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapYubikeySecondFactorCommand.php - - message: "#^Parameter \\#2 \\$actorId of method Surfnet\\\\StepupMiddleware\\\\MiddlewareBundle\\\\Service\\\\BootstrapCommandService\\:\\:vetSecondFactor\\(\\) expects string, mixed given\\.$#" + message: '#^Parameter \#2 \$actorId of method Surfnet\\StepupMiddleware\\MiddlewareBundle\\Service\\BootstrapCommandService\:\:vetSecondFactor\(\) expects string, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapYubikeySecondFactorCommand.php - - message: "#^Parameter \\#2 \\.\\.\\.\\$values of function sprintf expects bool\\|float\\|int\\|string\\|null, mixed given\\.$#" + message: '#^Parameter \#2 \.\.\.\$values of function sprintf expects bool\|float\|int\|string\|null, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapYubikeySecondFactorCommand.php - - message: "#^Parameter \\#3 \\$yubikeyPublicId of method Surfnet\\\\StepupMiddleware\\\\MiddlewareBundle\\\\Service\\\\BootstrapCommandService\\:\\:proveYubikeyPossession\\(\\) expects string, mixed given\\.$#" + message: '#^Parameter \#3 \$yubikeyPublicId of method Surfnet\\StepupMiddleware\\MiddlewareBundle\\Service\\BootstrapCommandService\:\:proveYubikeyPossession\(\) expects string, mixed given\.$#' + identifier: argument.type count: 3 path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapYubikeySecondFactorCommand.php - - message: "#^Parameter \\#5 \\$secondFactorIdentifier of method Surfnet\\\\StepupMiddleware\\\\MiddlewareBundle\\\\Service\\\\BootstrapCommandService\\:\\:vetSecondFactor\\(\\) expects string, mixed given\\.$#" + message: '#^Parameter \#5 \$secondFactorIdentifier of method Surfnet\\StepupMiddleware\\MiddlewareBundle\\Service\\BootstrapCommandService\:\:vetSecondFactor\(\) expects string, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapYubikeySecondFactorCommand.php - - message: "#^Parameter \\#1 \\$value of static method Assert\\\\Assertion\\:\\:nullOrDate\\(\\) expects string\\|null, mixed given\\.$#" + message: '#^Parameter \#1 \$value of static method Assert\\Assertion\:\:nullOrDate\(\) expects string\|null, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/EmailVerifiedSecondFactorRemindersCommand.php - - message: "#^Parameter \\#2 \\$datetime of static method DateTime\\:\\:createFromFormat\\(\\) expects string, mixed given\\.$#" + message: '#^Parameter \#2 \$datetime of static method DateTime\:\:createFromFormat\(\) expects string, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/EmailVerifiedSecondFactorRemindersCommand.php - - message: "#^Parameter \\#2 \\.\\.\\.\\$values of function sprintf expects bool\\|float\\|int\\|string\\|null, mixed given\\.$#" + message: '#^Parameter \#2 \.\.\.\$values of function sprintf expects bool\|float\|int\|string\|null, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/EmailVerifiedSecondFactorRemindersCommand.php - - message: "#^Property Surfnet\\\\StepupMiddleware\\\\CommandHandlingBundle\\\\Identity\\\\Command\\\\SendVerifiedSecondFactorRemindersCommand\\:\\:\\$dryRun \\(bool\\) does not accept mixed\\.$#" + message: '#^Property Surfnet\\StepupMiddleware\\CommandHandlingBundle\\Identity\\Command\\SendVerifiedSecondFactorRemindersCommand\:\:\$dryRun \(bool\) does not accept mixed\.$#' + identifier: assign.propertyType count: 1 path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/EmailVerifiedSecondFactorRemindersCommand.php - - message: "#^Cannot access property \\$id on Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Entity\\\\Identity\\|null\\.$#" + message: '#^Cannot access property \$id on Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Entity\\Identity\|null\.$#' + identifier: property.nonObject count: 2 path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/MigrateSecondFactorCommand.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\MiddlewareBundle\\\\Console\\\\Command\\\\MigrateSecondFactorCommand\\:\\:tokenExists\\(\\) has parameter \\$targetSecondFactors with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\MiddlewareBundle\\Console\\Command\\MigrateSecondFactorCommand\:\:tokenExists\(\) has parameter \$targetSecondFactors with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/MigrateSecondFactorCommand.php - - message: "#^Parameter \\#1 \\$identity of method Surfnet\\\\StepupMiddleware\\\\MiddlewareBundle\\\\Service\\\\BootstrapCommandService\\:\\:getVettedSecondFactorsFromIdentity\\(\\) expects Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Entity\\\\Identity, Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Entity\\\\Identity\\|null given\\.$#" + message: '#^Parameter \#1 \$identity of method Surfnet\\StepupMiddleware\\MiddlewareBundle\\Service\\BootstrapCommandService\:\:getVettedSecondFactorsFromIdentity\(\) expects Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Entity\\Identity, Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Entity\\Identity\|null given\.$#' + identifier: argument.type count: 2 path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/MigrateSecondFactorCommand.php - - message: "#^Parameter \\#1 \\$institution of class Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\Institution constructor expects string, mixed given\\.$#" + message: '#^Parameter \#1 \$institution of class Surfnet\\Stepup\\Identity\\Value\\Institution constructor expects string, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/MigrateSecondFactorCommand.php - - message: "#^Parameter \\#1 \\$sourceIdentity of method Surfnet\\\\StepupMiddleware\\\\MiddlewareBundle\\\\Service\\\\BootstrapCommandService\\:\\:migrateVettedSecondFactor\\(\\) expects Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Entity\\\\Identity, Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Entity\\\\Identity\\|null given\\.$#" + message: '#^Parameter \#1 \$sourceIdentity of method Surfnet\\StepupMiddleware\\MiddlewareBundle\\Service\\BootstrapCommandService\:\:migrateVettedSecondFactor\(\) expects Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Entity\\Identity, Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Entity\\Identity\|null given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/MigrateSecondFactorCommand.php - - message: "#^Parameter \\#1 \\$value of class Surfnet\\\\Stepup\\\\Identity\\\\Value\\\\NameId constructor expects string, mixed given\\.$#" + message: '#^Parameter \#1 \$value of class Surfnet\\Stepup\\Identity\\Value\\NameId constructor expects string, mixed given\.$#' + identifier: argument.type count: 2 path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/MigrateSecondFactorCommand.php - - message: "#^Parameter \\#2 \\$sourceIdentity of method Surfnet\\\\StepupMiddleware\\\\MiddlewareBundle\\\\Console\\\\Command\\\\MigrateSecondFactorCommand\\:\\:createIdentity\\(\\) expects Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Entity\\\\Identity, Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Entity\\\\Identity\\|null given\\.$#" + message: '#^Parameter \#2 \$sourceIdentity of method Surfnet\\StepupMiddleware\\MiddlewareBundle\\Console\\Command\\MigrateSecondFactorCommand\:\:createIdentity\(\) expects Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Entity\\Identity, Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Entity\\Identity\|null given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/MigrateSecondFactorCommand.php - - message: "#^Parameter \\#2 \\$targetIdentity of method Surfnet\\\\StepupMiddleware\\\\MiddlewareBundle\\\\Service\\\\BootstrapCommandService\\:\\:migrateVettedSecondFactor\\(\\) expects Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Entity\\\\Identity, Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Entity\\\\Identity\\|null given\\.$#" + message: '#^Parameter \#2 \$targetIdentity of method Surfnet\\StepupMiddleware\\MiddlewareBundle\\Service\\BootstrapCommandService\:\:migrateVettedSecondFactor\(\) expects Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Entity\\Identity, Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Entity\\Identity\|null given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/MigrateSecondFactorCommand.php - - message: "#^Parameter \\#4 \\$email of method Surfnet\\\\StepupMiddleware\\\\MiddlewareBundle\\\\Service\\\\BootstrapCommandService\\:\\:createIdentity\\(\\) expects string, mixed given\\.$#" + message: '#^Parameter \#4 \$email of method Surfnet\\StepupMiddleware\\MiddlewareBundle\\Service\\BootstrapCommandService\:\:createIdentity\(\) expects string, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/MigrateSecondFactorCommand.php - - message: "#^Cannot cast mixed to int\\.$#" + message: '#^Cannot cast mixed to int\.$#' + identifier: cast.int count: 1 path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/ReplayEventsCommand.php - - message: "#^Parameter \\#2 \\.\\.\\.\\$values of function sprintf expects bool\\|float\\|int\\|string\\|null, mixed given\\.$#" + message: '#^Parameter \#2 \.\.\.\$values of function sprintf expects bool\|float\|int\|string\|null, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/ReplayEventsCommand.php - - message: "#^Parameter \\#1 \\$projector of method Surfnet\\\\StepupMiddleware\\\\MiddlewareBundle\\\\Service\\\\TransactionAwareEventDispatcher\\:\\:registerProjector\\(\\) expects Broadway\\\\EventHandling\\\\EventListener, mixed given\\.$#" + message: '#^Parameter \#1 \$projector of method Surfnet\\StepupMiddleware\\MiddlewareBundle\\Service\\TransactionAwareEventDispatcher\:\:registerProjector\(\) expects Broadway\\EventHandling\\EventListener, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/ReplaySpecificEventsCommand.php - - message: "#^Parameter \\#1 \\$projectorNames of method Surfnet\\\\StepupMiddleware\\\\MiddlewareBundle\\\\EventSourcing\\\\ProjectorCollection\\:\\:selectByNames\\(\\) expects array, mixed given\\.$#" + message: '#^Parameter \#1 \$projectorNames of method Surfnet\\StepupMiddleware\\MiddlewareBundle\\EventSourcing\\ProjectorCollection\:\:selectByNames\(\) expects array, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/ReplaySpecificEventsCommand.php - - message: "#^Parameter \\#1 \\$subset of method Surfnet\\\\StepupMiddleware\\\\MiddlewareBundle\\\\EventSourcing\\\\EventCollection\\:\\:select\\(\\) expects array, mixed given\\.$#" + message: '#^Parameter \#1 \$subset of method Surfnet\\StepupMiddleware\\MiddlewareBundle\\EventSourcing\\EventCollection\:\:select\(\) expects array, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/ReplaySpecificEventsCommand.php - - message: "#^Cannot cast mixed to int\\.$#" + message: '#^Cannot cast mixed to int\.$#' + identifier: cast.int count: 1 path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/EventSourcing/DBALEventHydrator.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\MiddlewareBundle\\\\EventSourcing\\\\DBALEventHydrator\\:\\:deserializeEvent\\(\\) has parameter \\$row with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\MiddlewareBundle\\EventSourcing\\DBALEventHydrator\:\:deserializeEvent\(\) has parameter \$row with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/EventSourcing/DBALEventHydrator.php - - message: "#^Parameter \\#1 \\$data of static method Surfnet\\\\StepupMiddleware\\\\CommandHandlingBundle\\\\SensitiveData\\\\SensitiveData\\:\\:deserialize\\(\\) expects array, mixed given\\.$#" + message: '#^Parameter \#1 \$data of static method Surfnet\\StepupMiddleware\\CommandHandlingBundle\\SensitiveData\\SensitiveData\:\:deserialize\(\) expects array, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/EventSourcing/DBALEventHydrator.php - - message: "#^Parameter \\#1 \\$serializedObject of method Broadway\\\\Serializer\\\\SimpleInterfaceSerializer\\:\\:deserialize\\(\\) expects array, mixed given\\.$#" + message: '#^Parameter \#1 \$serializedObject of method Broadway\\Serializer\\SimpleInterfaceSerializer\:\:deserialize\(\) expects array, mixed given\.$#' + identifier: argument.type count: 2 path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/EventSourcing/DBALEventHydrator.php - - message: "#^Parameter \\#3 \\$metadata of class Broadway\\\\Domain\\\\DomainMessage constructor expects Broadway\\\\Domain\\\\Metadata, mixed given\\.$#" + message: '#^Parameter \#3 \$metadata of class Broadway\\Domain\\DomainMessage constructor expects Broadway\\Domain\\Metadata, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/EventSourcing/DBALEventHydrator.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\MiddlewareBundle\\\\EventSourcing\\\\EventCollection\\:\\:select\\(\\) has parameter \\$subset with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\MiddlewareBundle\\EventSourcing\\EventCollection\:\:select\(\) has parameter \$subset with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/EventSourcing/EventCollection.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\MiddlewareBundle\\\\EventSourcing\\\\ProjectorCollection\\:\\:selectByNames\\(\\) has parameter \\$projectorNames with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\MiddlewareBundle\\EventSourcing\\ProjectorCollection\:\:selectByNames\(\) has parameter \$projectorNames with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/EventSourcing/ProjectorCollection.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\MiddlewareBundle\\\\Migrations\\\\InstitutionConfiguration\\\\MappedInstitutionConfiguration\\:\\:__construct\\(\\) has parameter \\$raLocations with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\MiddlewareBundle\\Migrations\\InstitutionConfiguration\\MappedInstitutionConfiguration\:\:__construct\(\) has parameter \$raLocations with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Migrations/InstitutionConfiguration/MappedInstitutionConfiguration.php - - message: "#^Cannot access property \\$id on Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Entity\\\\Identity\\|null\\.$#" + message: '#^Cannot access property \$id on Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Entity\\Identity\|null\.$#' + identifier: property.nonObject count: 1 path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Service/BootstrapCommandService.php - - message: "#^Cannot access property \\$institution on Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Entity\\\\Identity\\|null\\.$#" + message: '#^Cannot access property \$institution on Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Entity\\Identity\|null\.$#' + identifier: property.nonObject count: 1 path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Service/BootstrapCommandService.php - - message: "#^Cannot access property \\$registrationCode on Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Entity\\\\VerifiedSecondFactor\\|null\\.$#" + message: '#^Cannot access property \$registrationCode on Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Entity\\VerifiedSecondFactor\|null\.$#' + identifier: property.nonObject count: 1 path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Service/BootstrapCommandService.php - - message: "#^Cannot access property \\$verificationNonce on Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Identity\\\\Entity\\\\UnverifiedSecondFactor\\|null\\.$#" + message: '#^Cannot access property \$verificationNonce on Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Entity\\UnverifiedSecondFactor\|null\.$#' + identifier: property.nonObject count: 1 path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Service/BootstrapCommandService.php - - message: "#^Parameter \\#2 \\$criteria of method Doctrine\\\\DBAL\\\\Connection\\:\\:delete\\(\\) expects array\\, array\\ given\\.$#" + message: '#^Parameter \#2 \$criteria of method Doctrine\\DBAL\\Connection\:\:delete\(\) expects array\, array\ given\.$#' + identifier: argument.type count: 2 path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Service/EventStreamReplayer.php - - message: "#^Argument of an invalid type array\\\\|null supplied for foreach, only iterables are supported\\.$#" + message: '#^Argument of an invalid type array\\|null supplied for foreach, only iterables are supported\.$#' + identifier: foreach.nonIterable count: 1 path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Service/ReplayingEventDispatcher.php - - message: "#^Parameter \\#1 \\$domainMessage of method Broadway\\\\EventHandling\\\\EventListener\\:\\:handle\\(\\) expects Broadway\\\\Domain\\\\DomainMessage, mixed given\\.$#" + message: '#^Parameter \#1 \$domainMessage of method Broadway\\EventHandling\\EventListener\:\:handle\(\) expects Broadway\\Domain\\DomainMessage, mixed given\.$#' + identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Service/ReplayingEventDispatcher.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\MiddlewareBundle\\\\Service\\\\SecondFactorDisplayNameResolverService\\:\\:__construct\\(\\) has parameter \\$secondFactors with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\MiddlewareBundle\\Service\\SecondFactorDisplayNameResolverService\:\:__construct\(\) has parameter \$secondFactors with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Service/SecondFactorDisplayNameResolverService.php - - message: "#^Cannot access property \\$htmlContent on Surfnet\\\\StepupMiddleware\\\\CommandHandlingBundle\\\\Configuration\\\\Dto\\\\EmailTemplate\\|null\\.$#" + message: '#^Cannot access property \$htmlContent on Surfnet\\StepupMiddleware\\CommandHandlingBundle\\Configuration\\Dto\\EmailTemplate\|null\.$#' + identifier: property.nonObject count: 2 path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Service/VerifiedSecondFactorReminderMailService.php - - message: "#^Cannot access property \\$showRaaContactInformationOption on Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Configuration\\\\Entity\\\\InstitutionConfigurationOptions\\|null\\.$#" + message: '#^Cannot access property \$showRaaContactInformationOption on Surfnet\\StepupMiddleware\\ApiBundle\\Configuration\\Entity\\InstitutionConfigurationOptions\|null\.$#' + identifier: property.nonObject count: 1 path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Service/VerifiedSecondFactorReminderMailService.php - - message: "#^Cannot access property \\$useRaLocationsOption on Surfnet\\\\StepupMiddleware\\\\ApiBundle\\\\Configuration\\\\Entity\\\\InstitutionConfigurationOptions\\|null\\.$#" + message: '#^Cannot access property \$useRaLocationsOption on Surfnet\\StepupMiddleware\\ApiBundle\\Configuration\\Entity\\InstitutionConfigurationOptions\|null\.$#' + identifier: property.nonObject count: 1 path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Service/VerifiedSecondFactorReminderMailService.php - - message: "#^Method Surfnet\\\\StepupMiddleware\\\\MiddlewareBundle\\\\Tests\\\\EventSourcing\\\\EventCollectionTest\\:\\:an_event_collection_must_be_created_from_an_array_of_non_empty_strings\\(\\) has parameter \\$emptyOrNonString with no value type specified in iterable type array\\.$#" + message: '#^Method Surfnet\\StepupMiddleware\\MiddlewareBundle\\Tests\\EventSourcing\\EventCollectionTest\:\:an_event_collection_must_be_created_from_an_array_of_non_empty_strings\(\) has parameter \$emptyOrNonString with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Tests/EventSourcing/EventCollectionTest.php diff --git a/src/Surfnet/Stepup/DateTime/DateTime.php b/src/Surfnet/Stepup/DateTime/DateTime.php index 137e093e2..40b5f48f2 100644 --- a/src/Surfnet/Stepup/DateTime/DateTime.php +++ b/src/Surfnet/Stepup/DateTime/DateTime.php @@ -25,6 +25,8 @@ use TypeError; /** + * Do not confuse with \Surfnet\StepupBundle\DateTime\DateTime + * * @SuppressWarnings("PHPMD.TooManyMethods") * @SuppressWarnings("PHPMD.TooManyPublicMethods") */ diff --git a/src/Surfnet/Stepup/Tests/Configuration/Value/AllowedSecondFactorListTest.php b/src/Surfnet/Stepup/Tests/Configuration/Value/AllowedSecondFactorListTest.php index 2d4873afa..2de23c948 100644 --- a/src/Surfnet/Stepup/Tests/Configuration/Value/AllowedSecondFactorListTest.php +++ b/src/Surfnet/Stepup/Tests/Configuration/Value/AllowedSecondFactorListTest.php @@ -109,7 +109,12 @@ public function an_allowed_second_factor_list_contains_the_given_second_factors( $allowedSecondFactorList = AllowedSecondFactorList::ofTypes($secondFactorTypes); - foreach ($allowedSecondFactorList as $index => $actualSecondFactorType) { + $builtList = []; + foreach ($allowedSecondFactorList as $item){ + $builtList[] = $item; + } + + foreach ($builtList as $index => $actualSecondFactorType) { $this->assertTrue($secondFactorTypes[$index]->equals($actualSecondFactorType)); } } diff --git a/src/Surfnet/Stepup/Tests/Configuration/Value/InstitutionSetTest.php b/src/Surfnet/Stepup/Tests/Configuration/Value/InstitutionSetTest.php index 2a749c131..60cb9f041 100644 --- a/src/Surfnet/Stepup/Tests/Configuration/Value/InstitutionSetTest.php +++ b/src/Surfnet/Stepup/Tests/Configuration/Value/InstitutionSetTest.php @@ -42,7 +42,7 @@ public function the_set_is_built_out_of_institution_vos(): void $institutionC = new Institution('C'); $set = InstitutionSet::create([$institutionA, $institutionB, $institutionC]); - $this->assertTrue(is_array($set->toScalarArray())); + $this->assertSame(['a', 'b', 'c'], $set->toScalarArray()); } /** diff --git a/src/Surfnet/Stepup/Tests/Identity/Event/ForgettableEventsTest.php b/src/Surfnet/Stepup/Tests/Identity/Event/ForgettableEventsTest.php index a210d06ec..65877a3a2 100644 --- a/src/Surfnet/Stepup/Tests/Identity/Event/ForgettableEventsTest.php +++ b/src/Surfnet/Stepup/Tests/Identity/Event/ForgettableEventsTest.php @@ -121,9 +121,15 @@ public function certain_events_are_forgettable_events_and_others_are_not(): void */ private function getConcreteIdentityEventFqcns(): array { + $files = glob(__DIR__ . '/../../../Identity/Event/*Event.php'); + + if($files === false){ + return []; + } + return array_filter( array_map( - function ($file): ?string { + static function ($file): ?string { $fqcn = sprintf( 'Surfnet\Stepup\Identity\Event\%s', preg_replace('/\\..+?$/', '', basename($file)), @@ -131,7 +137,7 @@ function ($file): ?string { $reflection = new ReflectionClass($fqcn); return $reflection->isInstantiable() ? $fqcn : null; }, - glob(__DIR__ . '/../../../Identity/Event/*Event.php'), + $files, ), ); } diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Repository/VerifiedSecondFactorRepository.php b/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Repository/VerifiedSecondFactorRepository.php index 5d3dd5f19..e1f06ef1d 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Repository/VerifiedSecondFactorRepository.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Repository/VerifiedSecondFactorRepository.php @@ -68,9 +68,6 @@ public function findByDate(DateTime $requestedAt): array ->getResult(); } - /** - * @return Query - */ public function createSearchQuery(VerifiedSecondFactorQuery $query): Query { $queryBuilder = $this->createQueryBuilder('sf'); diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Repository/VettedSecondFactorRepository.php b/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Repository/VettedSecondFactorRepository.php index ef86bb5d1..b77a72c29 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Repository/VettedSecondFactorRepository.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Repository/VettedSecondFactorRepository.php @@ -47,7 +47,7 @@ public function createSearchQuery(VettedSecondFactorQuery $query): Query { $queryBuilder = $this->createQueryBuilder('sf'); - if ($query->identityId instanceof \Surfnet\Stepup\Identity\Value\IdentityId) { + if ($query->identityId instanceof IdentityId) { $queryBuilder ->andWhere('sf.identityId = :identityId') ->setParameter('identityId', (string)$query->identityId); diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Identity/Projector/AuditLogProjectorTest.php b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Identity/Projector/AuditLogProjectorTest.php index 4430eae9b..2b1981c16 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Identity/Projector/AuditLogProjectorTest.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Identity/Projector/AuditLogProjectorTest.php @@ -142,8 +142,10 @@ public function auditable_events(): array public function it_creates_entries_for_auditable_events(DomainMessage $message, AuditLogEntry $expectedEntry): void { $repository = m::mock(AuditLogRepository::class); + $actualEntry = null; $repository->shouldReceive('save')->with($this->spy($actualEntry)); - $this->assertInstanceOf(AuditLogEntry::class, $actualEntry); + /** @var null|AuditLogEntry $actualEntry */ + $identityRepository = m::mock(IdentityRepository::class); $identity = new Identity(); @@ -154,7 +156,11 @@ public function it_creates_entries_for_auditable_events(DomainMessage $message, $projector->handle($message); // we are not concerned about matching the UUID generated by the auditlogprojector - $expectedEntry->id = $actualEntry->id; + if($actualEntry !== null) { + $expectedEntry->id = $actualEntry->id; + }else{ + $expectedEntry->id = ''; + } // PHPUnit's comparison is more informative than Mockery's no-match exception. $this->assertEquals($expectedEntry, $actualEntry); From a15da7b5a146971503094345783ecf8e0bea17bf Mon Sep 17 00:00:00 2001 From: Johan Kromhout Date: Mon, 24 Nov 2025 14:32:49 +0100 Subject: [PATCH 04/32] Allow dynamic properties on FooBarCommand Surfnet\StepupMiddleware\CommandHandlingBundle\Root\Command\FooBarCommand::$snakeCase is deprecated --- .../StepupMiddleware/ApiBundle/Tests/Request/commands.php | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Request/commands.php b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Request/commands.php index 40ad7bc7f..b0db13ddc 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Request/commands.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Request/commands.php @@ -20,6 +20,7 @@ use Surfnet\StepupMiddleware\CommandHandlingBundle\Command\AbstractCommand; + #[\AllowDynamicProperties] class FooBarCommand extends AbstractCommand { } From 1b2cb57c52c3f22d9fb119edc84473dfb3140bc1 Mon Sep 17 00:00:00 2001 From: Johan Kromhout Date: Mon, 24 Nov 2025 14:34:58 +0100 Subject: [PATCH 05/32] Add rector & apply basic rules MagicClosureTwigExtensionToNativeMethodsRector + attribute rules. --- ci/qa/rector.php | 21 +++++++++++++++++++ ci/qa/rector.sh | 5 +++++ composer.json | 3 +++ .../Twig/BackwardsCompatibleExtension.php | 2 +- .../BootstrapGsspSecondFactorCommand.php | 7 ++++++- .../Command/BootstrapIdentityCommand.php | 3 ++- ...IdentityWithYubikeySecondFactorCommand.php | 8 ++++--- .../BootstrapSmsSecondFactorCommand.php | 6 +++++- .../BootstrapYubikeySecondFactorCommand.php | 6 +++++- ...ilVerifiedSecondFactorRemindersCommand.php | 8 ++++--- .../Command/MigrateSecondFactorCommand.php | 7 ++++++- .../Resources/config/console_commands.yml | 18 ---------------- 12 files changed, 64 insertions(+), 30 deletions(-) create mode 100644 ci/qa/rector.php create mode 100755 ci/qa/rector.sh diff --git a/ci/qa/rector.php b/ci/qa/rector.php new file mode 100644 index 000000000..4d0d9be62 --- /dev/null +++ b/ci/qa/rector.php @@ -0,0 +1,21 @@ +withPaths([ + __DIR__ . '/../../config', + __DIR__ . '/../../src', + __DIR__ . '/../../tests', + __DIR__ . '/../../templates', + ]) + // uncomment to reach your current PHP version +// ->withPhpSets() +// ->withAttributesSets(all: true) + ->withComposerBased(symfony: true) +// ->withTypeCoverageLevel(0) +// ->withDeadCodeLevel(0) +// ->withCodeQualityLevel(0) +; diff --git a/ci/qa/rector.sh b/ci/qa/rector.sh new file mode 100755 index 000000000..b2b585710 --- /dev/null +++ b/ci/qa/rector.sh @@ -0,0 +1,5 @@ +#!/usr/bin/env sh + +# Ensure we run from project root +cd "$(dirname "$0")/../../" || exit 1 +./vendor/bin/rector --config=ci/qa/rector.php "$@" diff --git a/composer.json b/composer.json index fac2cc322..aa52a87b9 100644 --- a/composer.json +++ b/composer.json @@ -83,6 +83,7 @@ }, "check": [ "@check-ci", + "@rector", "composer audit" ], "check-ci": [ @@ -97,6 +98,8 @@ "phplint": "./ci/qa/phplint", "phpmd": "./ci/qa/phpmd", "license-headers": "./ci/qa/docheader", + "rector": "./ci/qa/rector.sh --dry-run", + "rector-fix": "./ci/qa/rector.sh", "phpstan": "./ci/qa/phpstan", "phpcs": "./ci/qa/phpcs", "phpcbf": "./ci/qa/phpcbf", diff --git a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Twig/BackwardsCompatibleExtension.php b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Twig/BackwardsCompatibleExtension.php index 8c254acf9..22ad7b863 100644 --- a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Twig/BackwardsCompatibleExtension.php +++ b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Twig/BackwardsCompatibleExtension.php @@ -42,7 +42,7 @@ public function __construct(IntlExtension $intlExtension) public function getFilters(): array { return [ - new TwigFilter('localizeddate', [$this, 'localizedDate'], ['needs_environment' => true]), + new TwigFilter('localizeddate', $this->localizedDate(...), ['needs_environment' => true]), ]; } diff --git a/src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapGsspSecondFactorCommand.php b/src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapGsspSecondFactorCommand.php index 5d1b08b19..63f6c6e12 100644 --- a/src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapGsspSecondFactorCommand.php +++ b/src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapGsspSecondFactorCommand.php @@ -24,11 +24,17 @@ use Surfnet\Stepup\Identity\Value\NameId; use Surfnet\StepupMiddleware\MiddlewareBundle\Service\BootstrapCommandService; use Surfnet\StepupMiddleware\MiddlewareBundle\Service\TransactionHelper; +use Symfony\Component\Console\Attribute\AsCommand; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; +#[AsCommand( + name: 'middleware:bootstrap:gssp', + description: 'Creates a Generic SAML Second Factor (GSSF) second factor for a specified user' +) +] final class BootstrapGsspSecondFactorCommand extends Command { public function __construct( @@ -41,7 +47,6 @@ public function __construct( protected function configure(): void { $this - ->setDescription('Creates a Generic SAML Second Factor (GSSF) second factor for a specified user') ->addArgument('name-id', InputArgument::REQUIRED, 'The NameID of the identity to create') ->addArgument('institution', InputArgument::REQUIRED, 'The institution of the identity to create') ->addArgument( diff --git a/src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapIdentityCommand.php b/src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapIdentityCommand.php index 7b8b7e0b6..645621f47 100644 --- a/src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapIdentityCommand.php +++ b/src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapIdentityCommand.php @@ -23,11 +23,13 @@ use Surfnet\Stepup\Identity\Value\NameId; use Surfnet\StepupMiddleware\MiddlewareBundle\Service\BootstrapCommandService; use Surfnet\StepupMiddleware\MiddlewareBundle\Service\TransactionHelper; +use Symfony\Component\Console\Attribute\AsCommand; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; +#[AsCommand(name: 'middleware:bootstrap:identity', description: 'Creates an identity')] final class BootstrapIdentityCommand extends Command { public function __construct( @@ -40,7 +42,6 @@ public function __construct( protected function configure(): void { $this - ->setDescription('Creates an identity') ->addArgument('name-id', InputArgument::REQUIRED, 'The NameID of the identity to create') ->addArgument('institution', InputArgument::REQUIRED, 'The institution of the identity to create') ->addArgument('common-name', InputArgument::REQUIRED, 'The Common Name of the identity to create') diff --git a/src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapIdentityWithYubikeySecondFactorCommand.php b/src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapIdentityWithYubikeySecondFactorCommand.php index c562f269f..7b62be0d6 100644 --- a/src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapIdentityWithYubikeySecondFactorCommand.php +++ b/src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapIdentityWithYubikeySecondFactorCommand.php @@ -26,6 +26,7 @@ use Surfnet\StepupMiddleware\CommandHandlingBundle\Identity\Command\BootstrapIdentityWithYubikeySecondFactorCommand as BootstrapIdentityWithYubikeySecondFactorIdentityCommand; use Surfnet\StepupMiddleware\MiddlewareBundle\Service\TransactionHelper; +use Symfony\Component\Console\Attribute\AsCommand; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputInterface; @@ -34,14 +35,15 @@ /** * @SuppressWarnings("PHPMD.CouplingBetweenObjects") */ +#[AsCommand( + name: 'middleware:bootstrap:identity-with-yubikey', + description: 'Creates an identity with a vetted Yubikey second factor', +)] final class BootstrapIdentityWithYubikeySecondFactorCommand extends Command { - protected static $defaultName = 'middleware:bootstrap:identity-with-yubikey'; - protected function configure(): void { $this - ->setDescription('Creates an identity with a vetted Yubikey second factor') ->addArgument('name-id', InputArgument::REQUIRED, 'The NameID of the identity to create') ->addArgument('institution', InputArgument::REQUIRED, 'The institution of the identity to create') ->addArgument('common-name', InputArgument::REQUIRED, 'The Common Name of the identity to create') diff --git a/src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapSmsSecondFactorCommand.php b/src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapSmsSecondFactorCommand.php index b79000553..28a68ca92 100644 --- a/src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapSmsSecondFactorCommand.php +++ b/src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapSmsSecondFactorCommand.php @@ -24,11 +24,16 @@ use Surfnet\Stepup\Identity\Value\NameId; use Surfnet\StepupMiddleware\MiddlewareBundle\Service\BootstrapCommandService; use Surfnet\StepupMiddleware\MiddlewareBundle\Service\TransactionHelper; +use Symfony\Component\Console\Attribute\AsCommand; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; +#[AsCommand( + name: 'middleware:bootstrap:sms', + description: 'Creates a SMS second factor for a specified user' +)] final class BootstrapSmsSecondFactorCommand extends Command { public function __construct( @@ -41,7 +46,6 @@ public function __construct( protected function configure(): void { $this - ->setDescription('Creates a SMS second factor for a specified user') ->addArgument('name-id', InputArgument::REQUIRED, 'The NameID of the identity to create') ->addArgument('institution', InputArgument::REQUIRED, 'The institution of the identity to create') ->addArgument( diff --git a/src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapYubikeySecondFactorCommand.php b/src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapYubikeySecondFactorCommand.php index ee35cd331..bc0744d7c 100644 --- a/src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapYubikeySecondFactorCommand.php +++ b/src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapYubikeySecondFactorCommand.php @@ -24,11 +24,16 @@ use Surfnet\Stepup\Identity\Value\NameId; use Surfnet\StepupMiddleware\MiddlewareBundle\Service\BootstrapCommandService; use Surfnet\StepupMiddleware\MiddlewareBundle\Service\TransactionHelper; +use Symfony\Component\Console\Attribute\AsCommand; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; +#[AsCommand( + name: 'middleware:bootstrap:yubikey', + description: 'Creates a Yubikey second factor for a specified user' +)] final class BootstrapYubikeySecondFactorCommand extends Command { public function __construct( @@ -41,7 +46,6 @@ public function __construct( protected function configure(): void { $this - ->setDescription('Creates a Yubikey second factor for a specified user') ->addArgument('name-id', InputArgument::REQUIRED, 'The NameID of the identity to create') ->addArgument('institution', InputArgument::REQUIRED, 'The institution of the identity to create') ->addArgument( diff --git a/src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/EmailVerifiedSecondFactorRemindersCommand.php b/src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/EmailVerifiedSecondFactorRemindersCommand.php index 22a765abb..51fc71928 100644 --- a/src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/EmailVerifiedSecondFactorRemindersCommand.php +++ b/src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/EmailVerifiedSecondFactorRemindersCommand.php @@ -29,6 +29,7 @@ use Surfnet\StepupMiddleware\CommandHandlingBundle\Identity\Command\SendVerifiedSecondFactorRemindersCommand; use Surfnet\StepupMiddleware\CommandHandlingBundle\Pipeline\TransactionAwarePipeline; use Surfnet\StepupMiddleware\MiddlewareBundle\Service\DBALConnectionHelper; +use Symfony\Component\Console\Attribute\AsCommand; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputOption; @@ -42,14 +43,15 @@ * * @SuppressWarnings("PHPMD.CouplingBetweenObjects") */ +#[AsCommand( + name: 'middleware:cron:email-reminder', + description: 'Sends email reminders to identities with verified tokens more than 7 days old.' +)] final class EmailVerifiedSecondFactorRemindersCommand extends Command { - protected static $defaultName = 'middleware:cron:email-reminder'; - protected function configure(): void { $this - ->setDescription('Sends email reminders to identities with verified tokens more than 7 days old.') ->addOption( 'dry-run', null, diff --git a/src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/MigrateSecondFactorCommand.php b/src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/MigrateSecondFactorCommand.php index 66a6e148b..a2a463077 100644 --- a/src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/MigrateSecondFactorCommand.php +++ b/src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/MigrateSecondFactorCommand.php @@ -26,11 +26,17 @@ use Surfnet\StepupMiddleware\ApiBundle\Identity\Entity\VettedSecondFactor; use Surfnet\StepupMiddleware\MiddlewareBundle\Service\BootstrapCommandService; use Surfnet\StepupMiddleware\MiddlewareBundle\Service\TransactionHelper; +use Symfony\Component\Console\Attribute\AsCommand; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; +#[AsCommand( + name: 'middleware:migrate:vetted-tokens', + description: 'Migrates the tokens of an identity to a new institution while preserving the old tokens' +) +] final class MigrateSecondFactorCommand extends Command { public function __construct( @@ -43,7 +49,6 @@ public function __construct( protected function configure(): void { $this - ->setDescription('Migrates the tokens of an identity to a new institution while preserving the old tokens') ->addArgument( 'old-name-id', InputArgument::REQUIRED, diff --git a/src/Surfnet/StepupMiddleware/MiddlewareBundle/Resources/config/console_commands.yml b/src/Surfnet/StepupMiddleware/MiddlewareBundle/Resources/config/console_commands.yml index a3cf334cf..2f83ea214 100644 --- a/src/Surfnet/StepupMiddleware/MiddlewareBundle/Resources/config/console_commands.yml +++ b/src/Surfnet/StepupMiddleware/MiddlewareBundle/Resources/config/console_commands.yml @@ -17,8 +17,6 @@ services: - "@surfnet_stepup_middleware_middleware.dbal_connection_helper" Surfnet\StepupMiddleware\MiddlewareBundle\Console\Command\ReplaySpecificEventsCommand: - tags: - - { name: 'console.command', command: 'stepup:event:replay' } arguments: - "@middleware.event_replay.event_collection" - "@middleware.event_replay.projector_collection" @@ -26,22 +24,16 @@ services: - "@middleware.event_replay.transaction_aware_event_dispatcher" Surfnet\StepupMiddleware\MiddlewareBundle\Console\Command\ReplayEventsCommand: - tags: - - { name: 'console.command', command: 'middleware:event:replay' } arguments: - "@middleware.event_replay.event_stream_replayer" - '%env(APP_ENV)%' Surfnet\StepupMiddleware\MiddlewareBundle\Console\Command\BootstrapIdentityWithYubikeySecondFactorCommand: - tags: - - { name: 'console.command', command: 'middleware:bootstrap:identity-with-yubikey' } arguments: - "@surfnet_stepup_middleware_api.repository.identity" - '@Surfnet\StepupMiddleware\MiddlewareBundle\Service\TransactionHelper' Surfnet\StepupMiddleware\MiddlewareBundle\Console\Command\EmailVerifiedSecondFactorRemindersCommand: - tags: - - { name: 'console.command', command: 'middleware:cron:email-reminder' } arguments: - "@surfnet_stepup_middleware_command_handling.pipeline.transaction_aware_pipeline" - "@surfnet_stepup_middleware_command_handling.event_bus.buffered" @@ -52,33 +44,23 @@ services: arguments: - '@Surfnet\StepupMiddleware\MiddlewareBundle\Service\BootstrapCommandService' - '@Surfnet\StepupMiddleware\MiddlewareBundle\Service\TransactionHelper' - tags: - - { name: 'console.command', command: 'middleware:bootstrap:identity' } Surfnet\StepupMiddleware\MiddlewareBundle\Console\Command\BootstrapSmsSecondFactorCommand: arguments: - '@Surfnet\StepupMiddleware\MiddlewareBundle\Service\BootstrapCommandService' - '@Surfnet\StepupMiddleware\MiddlewareBundle\Service\TransactionHelper' - tags: - - { name: 'console.command', command: 'middleware:bootstrap:sms' } Surfnet\StepupMiddleware\MiddlewareBundle\Console\Command\BootstrapYubikeySecondFactorCommand: arguments: - '@Surfnet\StepupMiddleware\MiddlewareBundle\Service\BootstrapCommandService' - '@Surfnet\StepupMiddleware\MiddlewareBundle\Service\TransactionHelper' - tags: - - { name: 'console.command', command: 'middleware:bootstrap:yubikey' } Surfnet\StepupMiddleware\MiddlewareBundle\Console\Command\BootstrapGsspSecondFactorCommand: arguments: - '@Surfnet\StepupMiddleware\MiddlewareBundle\Service\BootstrapCommandService' - '@Surfnet\StepupMiddleware\MiddlewareBundle\Service\TransactionHelper' - tags: - - { name: 'console.command', command: 'middleware:bootstrap:gssp' } Surfnet\StepupMiddleware\MiddlewareBundle\Console\Command\MigrateSecondFactorCommand: arguments: - '@Surfnet\StepupMiddleware\MiddlewareBundle\Service\BootstrapCommandService' - '@Surfnet\StepupMiddleware\MiddlewareBundle\Service\TransactionHelper' - tags: - - { name: 'console.command', command: 'middleware:migrate:vetted-tokens' } From 788892de32c46433b2718fe505b5d2ab08b4d283 Mon Sep 17 00:00:00 2001 From: Johan Kromhout Date: Mon, 24 Nov 2025 15:22:21 +0100 Subject: [PATCH 06/32] Clean & enforce clean imports Prior to this change, organised imports was not enforced, but required by coding guidelines. This would result in PR feedback about unused imports, usage of fqn in code, etc. This change auto fixes & enforces correct import usage via phpcs / phpcbf. --- ci/qa/phpcs.xml | 8 + composer.json | 2 + composer.lock | 210 +++++++++++++++++- .../Event/ConfigurationEvent.php | 2 - .../InstitutionConfiguration.php | 12 +- .../Value/ContactInformation.php | 1 - .../Stepup/Configuration/Value/Location.php | 1 - .../Value/NumberOfTokensPerIdentityOption.php | 1 - .../Value/ShowRaaContactInformationOption.php | 1 - .../Value/UseRaLocationsOption.php | 1 - .../Configuration/Value/VerifyEmailOption.php | 1 - src/Surfnet/Stepup/DateTime/DateTime.php | 1 - .../Stepup/Exception/DomainException.php | 1 + .../Exception/InvalidArgumentException.php | 1 + .../Stepup/Exception/LogicException.php | 1 + src/Surfnet/Stepup/Helper/JsonHelper.php | 1 - src/Surfnet/Stepup/Identity/Api/Identity.php | 1 - .../Identity/Entity/VerifiedSecondFactor.php | 1 - .../Event/U2fDevicePossessionProvenEvent.php | 1 - src/Surfnet/Stepup/Identity/Identity.php | 4 +- .../Identity/Value/ContactInformation.php | 1 - .../Stepup/Identity/Value/IdentityId.php | 1 - src/Surfnet/Stepup/Identity/Value/Locale.php | 1 - .../Stepup/Identity/Value/Location.php | 1 - .../Stepup/Identity/Value/RecoveryTokenId.php | 1 - .../Stepup/Identity/Value/SafeStore.php | 1 - .../Stepup/Identity/Value/SecondFactorId.php | 1 - .../Stepup/Identity/Value/VettingTypeHint.php | 3 +- .../Service/AuthorizationService.php | 1 - .../Service/CommandAuthorizationService.php | 3 +- .../Configuration/Entity/RaLocation.php | 1 - .../AllowedSecondFactorListProjector.php | 2 +- .../ConfiguredInstitutionProjector.php | 4 +- .../InstitutionAuthorizationProjector.php | 5 +- ...stitutionConfigurationOptionsProjector.php | 4 +- .../Projector/RaLocationProjector.php | 4 +- .../AllowedSecondFactorListService.php | 3 +- .../Controller/AuditLogController.php | 2 +- .../Controller/AuthorizationController.php | 2 +- .../Controller/CommandController.php | 2 +- .../Controller/IdentityController.php | 3 +- ...titutionConfigurationOptionsController.php | 3 +- .../Controller/ProfileController.php | 2 +- .../Controller/RaCandidateController.php | 2 +- .../ApiBundle/Controller/RaController.php | 2 +- .../Controller/RaListingController.php | 5 +- .../Controller/RaLocationController.php | 2 +- .../Controller/RaSecondFactorController.php | 2 +- .../Controller/RecoveryTokenController.php | 2 +- .../ApiBundle/Controller/SraaController.php | 5 +- .../UnverifiedSecondFactorController.php | 2 +- .../VerifiedSecondFactorController.php | 2 +- .../VettedSecondFactorController.php | 2 +- .../Controller/VettingTypeHintController.php | 2 +- .../Type/NumberOfTokensPerIdentityType.php | 1 - .../Type/SelfAssertedTokensOptionType.php | 2 - .../Doctrine/Type/SelfVetOptionType.php | 1 - .../Doctrine/Type/SsoOn2faOptionType.php | 1 - .../Doctrine/Type/VerifyEmailOptionType.php | 1 - .../Doctrine/Type/VettingTypeHintsType.php | 1 - .../ApiBundle/Identity/Entity/RaListing.php | 1 - .../Identity/Projector/AuditLogProjector.php | 13 +- .../Identity/Projector/IdentityProjector.php | 4 +- ...ntitySelfAssertedTokenOptionsProjector.php | 4 +- .../Projector/InstitutionListingProjector.php | 2 +- .../Identity/Projector/RaListingProjector.php | 6 +- .../Projector/RaSecondFactorProjector.php | 2 +- .../Projector/RecoveryTokenProjector.php | 2 +- .../Projector/SecondFactorProjector.php | 6 +- .../SecondFactorRevocationProjector.php | 4 +- .../Identity/Projector/SraaProjector.php | 4 +- .../Projector/VettingTypeHintProjector.php | 2 +- .../Identity/Projector/WhitelistProjector.php | 2 +- .../Repository/IdentityRepository.php | 2 - .../InstitutionListingRepository.php | 1 - .../UnverifiedSecondFactorRepository.php | 2 +- .../VerifiedSecondFactorRepository.php | 5 +- .../InstitutionConfigurationProcessor.php | 1 - .../Exception/InvalidArgumentException.php | 1 + .../CommandHandler/IdentityCommandHandler.php | 3 +- .../EventSourcing/SensitiveDataMessage.php | 1 - .../InstitutionConfigurationProjector.php | 6 +- .../Projector/SamlEntityProjector.php | 4 +- .../Projector/SecondFactorProjector.php | 2 +- .../Projector/WhitelistProjector.php | 2 +- .../Projector/EmailTemplatesProjector.php | 2 +- .../Service/EmailTemplateService.php | 3 +- .../Controller/ConfigurationController.php | 1 - .../RightToBeForgottenController.php | 3 +- .../Exception/InvalidArgumentException.php | 1 + .../Exception/RuntimeException.php | 1 + .../Service/BootstrapCommandService.php | 3 +- .../Service/EventStreamReplayer.php | 1 - 93 files changed, 318 insertions(+), 117 deletions(-) diff --git a/ci/qa/phpcs.xml b/ci/qa/phpcs.xml index 0797fd159..873e6c356 100644 --- a/ci/qa/phpcs.xml +++ b/ci/qa/phpcs.xml @@ -22,4 +22,12 @@ + + + + + + + + diff --git a/composer.json b/composer.json index aa52a87b9..f9c84fcec 100644 --- a/composer.json +++ b/composer.json @@ -70,6 +70,7 @@ "phpunit/phpunit": "^9.6.22", "rector/rector": "^2.2", "sebastian/phpcpd": "^6.0.3", + "slevomat/coding-standard": "^8.22", "squizlabs/php_codesniffer": "^3.11.3", "symfony/browser-kit": "6.4.*", "symfony/phpunit-bridge": "^6.4.16", @@ -135,6 +136,7 @@ }, "config": { "allow-plugins": { + "dealerdirect/phpcodesniffer-composer-installer": true, "endroid/installer": false, "symfony/flex": true, "symfony/runtime": true diff --git a/composer.lock b/composer.lock index b19b19cf2..00055b3c4 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "4e0f8ecb8ccf9ee7c028536843528a94", + "content-hash": "a9ddcee786f044a81b5e3e7b5ba88691", "packages": [ { "name": "beberlei/assert", @@ -8673,6 +8673,102 @@ ], "time": "2024-05-06T16:37:16+00:00" }, + { + "name": "dealerdirect/phpcodesniffer-composer-installer", + "version": "v1.2.0", + "source": { + "type": "git", + "url": "https://github.com/PHPCSStandards/composer-installer.git", + "reference": "845eb62303d2ca9b289ef216356568ccc075ffd1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PHPCSStandards/composer-installer/zipball/845eb62303d2ca9b289ef216356568ccc075ffd1", + "reference": "845eb62303d2ca9b289ef216356568ccc075ffd1", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^2.2", + "php": ">=5.4", + "squizlabs/php_codesniffer": "^3.1.0 || ^4.0" + }, + "require-dev": { + "composer/composer": "^2.2", + "ext-json": "*", + "ext-zip": "*", + "php-parallel-lint/php-parallel-lint": "^1.4.0", + "phpcompatibility/php-compatibility": "^9.0 || ^10.0.0@dev", + "yoast/phpunit-polyfills": "^1.0" + }, + "type": "composer-plugin", + "extra": { + "class": "PHPCSStandards\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\Plugin" + }, + "autoload": { + "psr-4": { + "PHPCSStandards\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Franck Nijhof", + "email": "opensource@frenck.dev", + "homepage": "https://frenck.dev", + "role": "Open source developer" + }, + { + "name": "Contributors", + "homepage": "https://github.com/PHPCSStandards/composer-installer/graphs/contributors" + } + ], + "description": "PHP_CodeSniffer Standards Composer Installer Plugin", + "keywords": [ + "PHPCodeSniffer", + "PHP_CodeSniffer", + "code quality", + "codesniffer", + "composer", + "installer", + "phpcbf", + "phpcs", + "plugin", + "qa", + "quality", + "standard", + "standards", + "style guide", + "stylecheck", + "tests" + ], + "support": { + "issues": "https://github.com/PHPCSStandards/composer-installer/issues", + "security": "https://github.com/PHPCSStandards/composer-installer/security/policy", + "source": "https://github.com/PHPCSStandards/composer-installer" + }, + "funding": [ + { + "url": "https://github.com/PHPCSStandards", + "type": "github" + }, + { + "url": "https://github.com/jrfnl", + "type": "github" + }, + { + "url": "https://opencollective.com/php_codesniffer", + "type": "open_collective" + }, + { + "url": "https://thanks.dev/u/gh/phpcsstandards", + "type": "thanks_dev" + } + ], + "time": "2025-11-11T04:32:07+00:00" + }, { "name": "doctrine/common", "version": "3.5.0", @@ -10052,6 +10148,53 @@ ], "time": "2025-10-06T01:07:24+00:00" }, + { + "name": "phpstan/phpdoc-parser", + "version": "2.3.0", + "source": { + "type": "git", + "url": "https://github.com/phpstan/phpdoc-parser.git", + "reference": "1e0cd5370df5dd2e556a36b9c62f62e555870495" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/1e0cd5370df5dd2e556a36b9c62f62e555870495", + "reference": "1e0cd5370df5dd2e556a36b9c62f62e555870495", + "shasum": "" + }, + "require": { + "php": "^7.4 || ^8.0" + }, + "require-dev": { + "doctrine/annotations": "^2.0", + "nikic/php-parser": "^5.3.0", + "php-parallel-lint/php-parallel-lint": "^1.2", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^2.0", + "phpstan/phpstan-phpunit": "^2.0", + "phpstan/phpstan-strict-rules": "^2.0", + "phpunit/phpunit": "^9.6", + "symfony/process": "^5.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "PHPStan\\PhpDocParser\\": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "PHPDoc parser with support for nullable, intersection and generic types", + "support": { + "issues": "https://github.com/phpstan/phpdoc-parser/issues", + "source": "https://github.com/phpstan/phpdoc-parser/tree/2.3.0" + }, + "time": "2025-08-30T15:50:23+00:00" + }, { "name": "phpstan/phpstan", "version": "2.1.32", @@ -11861,6 +12004,71 @@ ], "time": "2020-09-28T06:39:44+00:00" }, + { + "name": "slevomat/coding-standard", + "version": "8.22.1", + "source": { + "type": "git", + "url": "https://github.com/slevomat/coding-standard.git", + "reference": "1dd80bf3b93692bedb21a6623c496887fad05fec" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/slevomat/coding-standard/zipball/1dd80bf3b93692bedb21a6623c496887fad05fec", + "reference": "1dd80bf3b93692bedb21a6623c496887fad05fec", + "shasum": "" + }, + "require": { + "dealerdirect/phpcodesniffer-composer-installer": "^0.6.2 || ^0.7 || ^1.1.2", + "php": "^7.4 || ^8.0", + "phpstan/phpdoc-parser": "^2.3.0", + "squizlabs/php_codesniffer": "^3.13.4" + }, + "require-dev": { + "phing/phing": "3.0.1|3.1.0", + "php-parallel-lint/php-parallel-lint": "1.4.0", + "phpstan/phpstan": "2.1.24", + "phpstan/phpstan-deprecation-rules": "2.0.3", + "phpstan/phpstan-phpunit": "2.0.7", + "phpstan/phpstan-strict-rules": "2.0.6", + "phpunit/phpunit": "9.6.8|10.5.48|11.4.4|11.5.36|12.3.10" + }, + "type": "phpcodesniffer-standard", + "extra": { + "branch-alias": { + "dev-master": "8.x-dev" + } + }, + "autoload": { + "psr-4": { + "SlevomatCodingStandard\\": "SlevomatCodingStandard/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Slevomat Coding Standard for PHP_CodeSniffer complements Consistence Coding Standard by providing sniffs with additional checks.", + "keywords": [ + "dev", + "phpcs" + ], + "support": { + "issues": "https://github.com/slevomat/coding-standard/issues", + "source": "https://github.com/slevomat/coding-standard/tree/8.22.1" + }, + "funding": [ + { + "url": "https://github.com/kukulich", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/slevomat/coding-standard", + "type": "tidelift" + } + ], + "time": "2025-09-13T08:53:30+00:00" + }, { "name": "squizlabs/php_codesniffer", "version": "3.13.5", diff --git a/src/Surfnet/Stepup/Configuration/Event/ConfigurationEvent.php b/src/Surfnet/Stepup/Configuration/Event/ConfigurationEvent.php index b3ff80122..20518680c 100644 --- a/src/Surfnet/Stepup/Configuration/Event/ConfigurationEvent.php +++ b/src/Surfnet/Stepup/Configuration/Event/ConfigurationEvent.php @@ -19,8 +19,6 @@ namespace Surfnet\Stepup\Configuration\Event; use Broadway\Serializer\Serializable as SerializableInterface; -use Surfnet\Stepup\Configuration\Configuration; -use Symfony\Component\Form\Exception\LogicException; abstract class ConfigurationEvent implements SerializableInterface { diff --git a/src/Surfnet/Stepup/Configuration/InstitutionConfiguration.php b/src/Surfnet/Stepup/Configuration/InstitutionConfiguration.php index e814b7c90..bbb96438a 100644 --- a/src/Surfnet/Stepup/Configuration/InstitutionConfiguration.php +++ b/src/Surfnet/Stepup/Configuration/InstitutionConfiguration.php @@ -297,7 +297,7 @@ public function configureSelfVetOption(SelfVetOption $selfVetOption): void public function configureSelfAssertedTokensOption(SelfAssertedTokensOption $selfAssertedTokensOption): void { - if ($this->selfAssertedTokensOption instanceof \Surfnet\Stepup\Configuration\Value\SelfAssertedTokensOption && + if ($this->selfAssertedTokensOption instanceof SelfAssertedTokensOption && $this->selfAssertedTokensOption->equals($selfAssertedTokensOption) ) { return; @@ -314,7 +314,7 @@ public function configureSelfAssertedTokensOption(SelfAssertedTokensOption $self public function configureSsoOn2faOption(SsoOn2faOption $ssoOn2faOption): void { - if ($this->ssoOn2faOption instanceof \Surfnet\Stepup\Configuration\Value\SsoOn2faOption && $this->ssoOn2faOption->equals($ssoOn2faOption)) { + if ($this->ssoOn2faOption instanceof SsoOn2faOption && $this->ssoOn2faOption->equals($ssoOn2faOption)) { return; } @@ -345,7 +345,7 @@ public function configureSsoRegistrationBypassOption(SsoRegistrationBypassOption public function updateUseRaOption(InstitutionAuthorizationOption $useRaOption): void { - if ($this->useRaOption instanceof \Surfnet\Stepup\Configuration\Value\InstitutionAuthorizationOption + if ($this->useRaOption instanceof InstitutionAuthorizationOption && $this->useRaOption->equals($useRaOption) ) { return; @@ -362,7 +362,7 @@ public function updateUseRaOption(InstitutionAuthorizationOption $useRaOption): public function updateUseRaaOption(InstitutionAuthorizationOption $useRaaOption): void { - if ($this->useRaaOption instanceof \Surfnet\Stepup\Configuration\Value\InstitutionAuthorizationOption + if ($this->useRaaOption instanceof InstitutionAuthorizationOption && $this->useRaaOption->equals($useRaaOption) ) { return; @@ -379,7 +379,7 @@ public function updateUseRaaOption(InstitutionAuthorizationOption $useRaaOption) public function updateSelectRaaOption(InstitutionAuthorizationOption $selectRaaOption): void { - if ($this->selectRaaOption instanceof \Surfnet\Stepup\Configuration\Value\InstitutionAuthorizationOption + if ($this->selectRaaOption instanceof InstitutionAuthorizationOption && $this->selectRaaOption->equals($selectRaaOption) ) { return; @@ -397,7 +397,7 @@ public function updateSelectRaaOption(InstitutionAuthorizationOption $selectRaaO public function updateAllowedSecondFactorList(AllowedSecondFactorList $allowedSecondFactorList): void { // AllowedSecondFactorList can be null for InstitutionConfigurations for which this functionality did not exist - if ($this->allowedSecondFactorList instanceof \Surfnet\Stepup\Configuration\Value\AllowedSecondFactorList + if ($this->allowedSecondFactorList instanceof AllowedSecondFactorList && $this->allowedSecondFactorList->equals($allowedSecondFactorList) ) { return; diff --git a/src/Surfnet/Stepup/Configuration/Value/ContactInformation.php b/src/Surfnet/Stepup/Configuration/Value/ContactInformation.php index 34c1ebc10..f1c7d2a62 100644 --- a/src/Surfnet/Stepup/Configuration/Value/ContactInformation.php +++ b/src/Surfnet/Stepup/Configuration/Value/ContactInformation.php @@ -22,7 +22,6 @@ use JsonSerializable; use Stringable; -use Surfnet\Stepup\Exception\InvalidArgumentException; final class ContactInformation implements JsonSerializable, Stringable { diff --git a/src/Surfnet/Stepup/Configuration/Value/Location.php b/src/Surfnet/Stepup/Configuration/Value/Location.php index ebd280928..f9b55272c 100644 --- a/src/Surfnet/Stepup/Configuration/Value/Location.php +++ b/src/Surfnet/Stepup/Configuration/Value/Location.php @@ -22,7 +22,6 @@ use JsonSerializable; use Stringable; -use Surfnet\Stepup\Exception\InvalidArgumentException; final class Location implements JsonSerializable, Stringable { diff --git a/src/Surfnet/Stepup/Configuration/Value/NumberOfTokensPerIdentityOption.php b/src/Surfnet/Stepup/Configuration/Value/NumberOfTokensPerIdentityOption.php index be205d30e..716d49cdf 100644 --- a/src/Surfnet/Stepup/Configuration/Value/NumberOfTokensPerIdentityOption.php +++ b/src/Surfnet/Stepup/Configuration/Value/NumberOfTokensPerIdentityOption.php @@ -19,7 +19,6 @@ namespace Surfnet\Stepup\Configuration\Value; use JsonSerializable; -use Surfnet\Stepup\Exception\InvalidArgumentException; class NumberOfTokensPerIdentityOption implements JsonSerializable { diff --git a/src/Surfnet/Stepup/Configuration/Value/ShowRaaContactInformationOption.php b/src/Surfnet/Stepup/Configuration/Value/ShowRaaContactInformationOption.php index fb791c3a7..7630cd49b 100644 --- a/src/Surfnet/Stepup/Configuration/Value/ShowRaaContactInformationOption.php +++ b/src/Surfnet/Stepup/Configuration/Value/ShowRaaContactInformationOption.php @@ -19,7 +19,6 @@ namespace Surfnet\Stepup\Configuration\Value; use JsonSerializable; -use Surfnet\Stepup\Exception\InvalidArgumentException; final class ShowRaaContactInformationOption implements JsonSerializable { diff --git a/src/Surfnet/Stepup/Configuration/Value/UseRaLocationsOption.php b/src/Surfnet/Stepup/Configuration/Value/UseRaLocationsOption.php index 4d10a31ee..4a9954a8f 100644 --- a/src/Surfnet/Stepup/Configuration/Value/UseRaLocationsOption.php +++ b/src/Surfnet/Stepup/Configuration/Value/UseRaLocationsOption.php @@ -19,7 +19,6 @@ namespace Surfnet\Stepup\Configuration\Value; use JsonSerializable; -use Surfnet\Stepup\Exception\InvalidArgumentException; final class UseRaLocationsOption implements JsonSerializable { diff --git a/src/Surfnet/Stepup/Configuration/Value/VerifyEmailOption.php b/src/Surfnet/Stepup/Configuration/Value/VerifyEmailOption.php index 4422063f4..3b7a03bad 100644 --- a/src/Surfnet/Stepup/Configuration/Value/VerifyEmailOption.php +++ b/src/Surfnet/Stepup/Configuration/Value/VerifyEmailOption.php @@ -19,7 +19,6 @@ namespace Surfnet\Stepup\Configuration\Value; use JsonSerializable; -use Surfnet\Stepup\Exception\InvalidArgumentException; final class VerifyEmailOption implements JsonSerializable { diff --git a/src/Surfnet/Stepup/DateTime/DateTime.php b/src/Surfnet/Stepup/DateTime/DateTime.php index 40b5f48f2..7ecab8e0f 100644 --- a/src/Surfnet/Stepup/DateTime/DateTime.php +++ b/src/Surfnet/Stepup/DateTime/DateTime.php @@ -22,7 +22,6 @@ use DateTime as CoreDateTime; use Stringable; use Surfnet\Stepup\Exception\InvalidArgumentException; -use TypeError; /** * Do not confuse with \Surfnet\StepupBundle\DateTime\DateTime diff --git a/src/Surfnet/Stepup/Exception/DomainException.php b/src/Surfnet/Stepup/Exception/DomainException.php index e11e84741..d0caa8a03 100644 --- a/src/Surfnet/Stepup/Exception/DomainException.php +++ b/src/Surfnet/Stepup/Exception/DomainException.php @@ -18,6 +18,7 @@ namespace Surfnet\Stepup\Exception; +// phpcs:ignore SlevomatCodingStandard.Namespaces.ReferenceUsedNamesOnly class DomainException extends \DomainException implements Exception { } diff --git a/src/Surfnet/Stepup/Exception/InvalidArgumentException.php b/src/Surfnet/Stepup/Exception/InvalidArgumentException.php index dbe864320..ec215daa0 100644 --- a/src/Surfnet/Stepup/Exception/InvalidArgumentException.php +++ b/src/Surfnet/Stepup/Exception/InvalidArgumentException.php @@ -18,6 +18,7 @@ namespace Surfnet\Stepup\Exception; +// phpcs:ignore SlevomatCodingStandard.Namespaces.ReferenceUsedNamesOnly class InvalidArgumentException extends \InvalidArgumentException implements Exception { public static function invalidType(string $expected, string $parameterName, mixed $parameter): self diff --git a/src/Surfnet/Stepup/Exception/LogicException.php b/src/Surfnet/Stepup/Exception/LogicException.php index cf8fc4858..b4f1dd745 100644 --- a/src/Surfnet/Stepup/Exception/LogicException.php +++ b/src/Surfnet/Stepup/Exception/LogicException.php @@ -18,6 +18,7 @@ namespace Surfnet\Stepup\Exception; +// phpcs:ignore SlevomatCodingStandard.Namespaces.ReferenceUsedNamesOnly class LogicException extends \LogicException implements Exception { } diff --git a/src/Surfnet/Stepup/Helper/JsonHelper.php b/src/Surfnet/Stepup/Helper/JsonHelper.php index 02e2acf45..cbe197294 100644 --- a/src/Surfnet/Stepup/Helper/JsonHelper.php +++ b/src/Surfnet/Stepup/Helper/JsonHelper.php @@ -18,7 +18,6 @@ namespace Surfnet\Stepup\Helper; -use Surfnet\Stepup\Exception\InvalidArgumentException; use Surfnet\Stepup\Exception\JsonException; final class JsonHelper diff --git a/src/Surfnet/Stepup/Identity/Api/Identity.php b/src/Surfnet/Stepup/Identity/Api/Identity.php index 19f3b36cb..8ccd6e281 100644 --- a/src/Surfnet/Stepup/Identity/Api/Identity.php +++ b/src/Surfnet/Stepup/Identity/Api/Identity.php @@ -19,7 +19,6 @@ namespace Surfnet\Stepup\Identity\Api; use Broadway\Domain\AggregateRoot; -use Broadway\EventSourcing\EventSourcedAggregateRoot; use Surfnet\Stepup\Configuration\InstitutionConfiguration; use Surfnet\Stepup\Exception\DomainException; use Surfnet\Stepup\Helper\SecondFactorProvePossessionHelper; diff --git a/src/Surfnet/Stepup/Identity/Entity/VerifiedSecondFactor.php b/src/Surfnet/Stepup/Identity/Entity/VerifiedSecondFactor.php index b191f6858..3e2558878 100644 --- a/src/Surfnet/Stepup/Identity/Entity/VerifiedSecondFactor.php +++ b/src/Surfnet/Stepup/Identity/Entity/VerifiedSecondFactor.php @@ -20,7 +20,6 @@ use DateInterval; use Surfnet\Stepup\DateTime\DateTime; -use Surfnet\Stepup\Exception\InvalidArgumentException; use Surfnet\Stepup\Identity\Api\Identity; use Surfnet\Stepup\Identity\Event\CompliedWithVerifiedSecondFactorRevocationEvent; use Surfnet\Stepup\Identity\Event\IdentityForgottenEvent; diff --git a/src/Surfnet/Stepup/Identity/Event/U2fDevicePossessionProvenEvent.php b/src/Surfnet/Stepup/Identity/Event/U2fDevicePossessionProvenEvent.php index fd5d7f206..1543d738b 100644 --- a/src/Surfnet/Stepup/Identity/Event/U2fDevicePossessionProvenEvent.php +++ b/src/Surfnet/Stepup/Identity/Event/U2fDevicePossessionProvenEvent.php @@ -22,7 +22,6 @@ use Surfnet\Stepup\Identity\Value\CommonName; use Surfnet\Stepup\Identity\Value\Email; use Surfnet\Stepup\Identity\Value\EmailVerificationWindow; -use Surfnet\Stepup\Identity\Value\GssfId; use Surfnet\Stepup\Identity\Value\IdentityId; use Surfnet\Stepup\Identity\Value\Institution; use Surfnet\Stepup\Identity\Value\Locale; diff --git a/src/Surfnet/Stepup/Identity/Identity.php b/src/Surfnet/Stepup/Identity/Identity.php index 4aed033b3..f033216bf 100644 --- a/src/Surfnet/Stepup/Identity/Identity.php +++ b/src/Surfnet/Stepup/Identity/Identity.php @@ -52,8 +52,8 @@ use Surfnet\Stepup\Identity\Event\IdentityCreatedEvent; use Surfnet\Stepup\Identity\Event\IdentityEmailChangedEvent; use Surfnet\Stepup\Identity\Event\IdentityForgottenEvent; -use Surfnet\Stepup\Identity\Event\IdentityRestoredEvent; use Surfnet\Stepup\Identity\Event\IdentityRenamedEvent; +use Surfnet\Stepup\Identity\Event\IdentityRestoredEvent; use Surfnet\Stepup\Identity\Event\LocalePreferenceExpressedEvent; use Surfnet\Stepup\Identity\Event\PhonePossessionProvenAndVerifiedEvent; use Surfnet\Stepup\Identity\Event\PhonePossessionProvenEvent; @@ -516,7 +516,7 @@ public function vetSecondFactor( ); $registrantsSecondFactor = $registrant->getVerifiedSecondFactor($registrantsSecondFactorId); - if (!$registrantsSecondFactor instanceof \Surfnet\Stepup\Identity\Entity\VerifiedSecondFactor) { + if (!$registrantsSecondFactor instanceof VerifiedSecondFactor) { throw new DomainException( sprintf('Registrant second factor with ID %s does not exist', $registrantsSecondFactorId), ); diff --git a/src/Surfnet/Stepup/Identity/Value/ContactInformation.php b/src/Surfnet/Stepup/Identity/Value/ContactInformation.php index 33906678d..03cf63ad7 100644 --- a/src/Surfnet/Stepup/Identity/Value/ContactInformation.php +++ b/src/Surfnet/Stepup/Identity/Value/ContactInformation.php @@ -22,7 +22,6 @@ use JsonSerializable; use Stringable; -use Surfnet\Stepup\Exception\InvalidArgumentException; final class ContactInformation implements JsonSerializable, Stringable { diff --git a/src/Surfnet/Stepup/Identity/Value/IdentityId.php b/src/Surfnet/Stepup/Identity/Value/IdentityId.php index 068c45344..de4663f4d 100644 --- a/src/Surfnet/Stepup/Identity/Value/IdentityId.php +++ b/src/Surfnet/Stepup/Identity/Value/IdentityId.php @@ -19,7 +19,6 @@ namespace Surfnet\Stepup\Identity\Value; use JsonSerializable; -use Surfnet\Stepup\Exception\InvalidArgumentException; use Surfnet\Stepup\Identity\Api\Id; final class IdentityId implements Id, JsonSerializable diff --git a/src/Surfnet/Stepup/Identity/Value/Locale.php b/src/Surfnet/Stepup/Identity/Value/Locale.php index 349dc60f2..b3b995af7 100644 --- a/src/Surfnet/Stepup/Identity/Value/Locale.php +++ b/src/Surfnet/Stepup/Identity/Value/Locale.php @@ -20,7 +20,6 @@ use JsonSerializable; use Stringable; -use Surfnet\Stepup\Exception\InvalidArgumentException; final readonly class Locale implements JsonSerializable, Stringable { diff --git a/src/Surfnet/Stepup/Identity/Value/Location.php b/src/Surfnet/Stepup/Identity/Value/Location.php index 97540db66..230610218 100644 --- a/src/Surfnet/Stepup/Identity/Value/Location.php +++ b/src/Surfnet/Stepup/Identity/Value/Location.php @@ -22,7 +22,6 @@ use JsonSerializable; use Stringable; -use Surfnet\Stepup\Exception\InvalidArgumentException; final class Location implements JsonSerializable, Stringable { diff --git a/src/Surfnet/Stepup/Identity/Value/RecoveryTokenId.php b/src/Surfnet/Stepup/Identity/Value/RecoveryTokenId.php index c8c9a94e1..f8bf82f5e 100644 --- a/src/Surfnet/Stepup/Identity/Value/RecoveryTokenId.php +++ b/src/Surfnet/Stepup/Identity/Value/RecoveryTokenId.php @@ -18,7 +18,6 @@ namespace Surfnet\Stepup\Identity\Value; -use Surfnet\Stepup\Exception\InvalidArgumentException; use Surfnet\Stepup\Identity\Api\Id; final class RecoveryTokenId implements Id diff --git a/src/Surfnet/Stepup/Identity/Value/SafeStore.php b/src/Surfnet/Stepup/Identity/Value/SafeStore.php index 3c54f0e0c..1dab3098d 100644 --- a/src/Surfnet/Stepup/Identity/Value/SafeStore.php +++ b/src/Surfnet/Stepup/Identity/Value/SafeStore.php @@ -18,7 +18,6 @@ namespace Surfnet\Stepup\Identity\Value; -use Surfnet\Stepup\Exception\DomainException; use Surfnet\Stepup\Exception\RuntimeException; /** diff --git a/src/Surfnet/Stepup/Identity/Value/SecondFactorId.php b/src/Surfnet/Stepup/Identity/Value/SecondFactorId.php index 985439c40..935096fc4 100644 --- a/src/Surfnet/Stepup/Identity/Value/SecondFactorId.php +++ b/src/Surfnet/Stepup/Identity/Value/SecondFactorId.php @@ -18,7 +18,6 @@ namespace Surfnet\Stepup\Identity\Value; -use Surfnet\Stepup\Exception\InvalidArgumentException; use Surfnet\Stepup\Identity\Api\Id; final class SecondFactorId implements Id diff --git a/src/Surfnet/Stepup/Identity/Value/VettingTypeHint.php b/src/Surfnet/Stepup/Identity/Value/VettingTypeHint.php index f5e672f04..e9102631d 100644 --- a/src/Surfnet/Stepup/Identity/Value/VettingTypeHint.php +++ b/src/Surfnet/Stepup/Identity/Value/VettingTypeHint.php @@ -19,8 +19,9 @@ namespace Surfnet\Stepup\Identity\Value; use JsonSerializable; +use Stringable; -class VettingTypeHint implements JsonSerializable, \Stringable +class VettingTypeHint implements JsonSerializable, Stringable { public function __construct( private readonly string $locale, diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Authorization/Service/AuthorizationService.php b/src/Surfnet/StepupMiddleware/ApiBundle/Authorization/Service/AuthorizationService.php index 19f1a736e..0935fc455 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Authorization/Service/AuthorizationService.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Authorization/Service/AuthorizationService.php @@ -18,7 +18,6 @@ namespace Surfnet\StepupMiddleware\ApiBundle\Authorization\Service; -use Psr\Log\LoggerInterface; use Surfnet\Stepup\Configuration\Value\Institution; use Surfnet\Stepup\Identity\Value\IdentityId; use Surfnet\Stepup\Identity\Value\VettingType; diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Authorization/Service/CommandAuthorizationService.php b/src/Surfnet/StepupMiddleware/ApiBundle/Authorization/Service/CommandAuthorizationService.php index acc85a8f3..0b7097959 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Authorization/Service/CommandAuthorizationService.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Authorization/Service/CommandAuthorizationService.php @@ -24,6 +24,7 @@ use Surfnet\StepupMiddleware\ApiBundle\Identity\Entity\Identity; use Surfnet\StepupMiddleware\ApiBundle\Identity\Service\IdentityService; use Surfnet\StepupMiddleware\ApiBundle\Identity\Service\WhitelistService; +use Surfnet\StepupMiddleware\ApiBundle\Identity\Value\RegistrationAuthorityCredentials; use Surfnet\StepupMiddleware\CommandHandlingBundle\Command\Command; use Surfnet\StepupMiddleware\CommandHandlingBundle\Command\RaExecutable; use Surfnet\StepupMiddleware\CommandHandlingBundle\Command\SelfAsserted; @@ -264,7 +265,7 @@ private function isSraa(IdentityId $actorId = null): bool $registrationAuthorityCredentials = $this->identityService->findRegistrationAuthorityCredentialsOf( $actorId->getIdentityId(), ); - if (!$registrationAuthorityCredentials instanceof \Surfnet\StepupMiddleware\ApiBundle\Identity\Value\RegistrationAuthorityCredentials) { + if (!$registrationAuthorityCredentials instanceof RegistrationAuthorityCredentials) { return false; } return $registrationAuthorityCredentials->isSraa(); diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Configuration/Entity/RaLocation.php b/src/Surfnet/StepupMiddleware/ApiBundle/Configuration/Entity/RaLocation.php index a8379d948..0db7150af 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Configuration/Entity/RaLocation.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Configuration/Entity/RaLocation.php @@ -25,7 +25,6 @@ use Surfnet\Stepup\Configuration\Value\Location; use Surfnet\Stepup\Configuration\Value\RaLocationName; use Surfnet\StepupMiddleware\ApiBundle\Configuration\Repository\RaLocationRepository; -use Surfnet\StepupMiddleware\ApiBundle\Exception\InvalidArgumentException; #[ORM\Table] #[ORM\Index(name: 'idx_ra_location_institution', columns: ['institution'])] diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Configuration/Projector/AllowedSecondFactorListProjector.php b/src/Surfnet/StepupMiddleware/ApiBundle/Configuration/Projector/AllowedSecondFactorListProjector.php index 80f514681..0c6140a7b 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Configuration/Projector/AllowedSecondFactorListProjector.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Configuration/Projector/AllowedSecondFactorListProjector.php @@ -18,9 +18,9 @@ namespace Surfnet\StepupMiddleware\ApiBundle\Configuration\Projector; +use Surfnet\Stepup\Configuration\Event\AllowedSecondFactorListUpdatedEvent; use Surfnet\Stepup\Identity\Event\IdentityForgottenEvent; use Surfnet\Stepup\Projector\Projector; -use Surfnet\Stepup\Configuration\Event\AllowedSecondFactorListUpdatedEvent; use Surfnet\StepupMiddleware\ApiBundle\Configuration\Entity\AllowedSecondFactor; use Surfnet\StepupMiddleware\ApiBundle\Configuration\Repository\AllowedSecondFactorRepository; diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Configuration/Projector/ConfiguredInstitutionProjector.php b/src/Surfnet/StepupMiddleware/ApiBundle/Configuration/Projector/ConfiguredInstitutionProjector.php index 0f9db03b0..d214080da 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Configuration/Projector/ConfiguredInstitutionProjector.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Configuration/Projector/ConfiguredInstitutionProjector.php @@ -18,10 +18,10 @@ namespace Surfnet\StepupMiddleware\ApiBundle\Configuration\Projector; -use Surfnet\Stepup\Identity\Event\IdentityForgottenEvent; -use Surfnet\Stepup\Projector\Projector; use Surfnet\Stepup\Configuration\Event\InstitutionConfigurationRemovedEvent; use Surfnet\Stepup\Configuration\Event\NewInstitutionConfigurationCreatedEvent; +use Surfnet\Stepup\Identity\Event\IdentityForgottenEvent; +use Surfnet\Stepup\Projector\Projector; use Surfnet\StepupMiddleware\ApiBundle\Configuration\Entity\ConfiguredInstitution; use Surfnet\StepupMiddleware\ApiBundle\Configuration\Repository\ConfiguredInstitutionRepository; diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Configuration/Projector/InstitutionAuthorizationProjector.php b/src/Surfnet/StepupMiddleware/ApiBundle/Configuration/Projector/InstitutionAuthorizationProjector.php index 5071755f8..cf981eb19 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Configuration/Projector/InstitutionAuthorizationProjector.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Configuration/Projector/InstitutionAuthorizationProjector.php @@ -18,15 +18,14 @@ namespace Surfnet\StepupMiddleware\ApiBundle\Configuration\Projector; -use Surfnet\Stepup\Identity\Event\IdentityForgottenEvent; -use Surfnet\Stepup\Projector\Projector; use Surfnet\Stepup\Configuration\Event\InstitutionConfigurationRemovedEvent; use Surfnet\Stepup\Configuration\Event\NewInstitutionConfigurationCreatedEvent; use Surfnet\Stepup\Configuration\Event\SelectRaaOptionChangedEvent; use Surfnet\Stepup\Configuration\Event\UseRaaOptionChangedEvent; use Surfnet\Stepup\Configuration\Event\UseRaOptionChangedEvent; +use Surfnet\Stepup\Identity\Event\IdentityForgottenEvent; +use Surfnet\Stepup\Projector\Projector; use Surfnet\StepupMiddleware\ApiBundle\Configuration\Repository\InstitutionAuthorizationRepository; -use Surfnet\StepupMiddleware\ApiBundle\Configuration\Repository\InstitutionConfigurationOptionsRepository; /** * @SuppressWarnings("PHPMD.CouplingBetweenObjects") diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Configuration/Projector/InstitutionConfigurationOptionsProjector.php b/src/Surfnet/StepupMiddleware/ApiBundle/Configuration/Projector/InstitutionConfigurationOptionsProjector.php index 8105525c8..5dca4382f 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Configuration/Projector/InstitutionConfigurationOptionsProjector.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Configuration/Projector/InstitutionConfigurationOptionsProjector.php @@ -18,8 +18,6 @@ namespace Surfnet\StepupMiddleware\ApiBundle\Configuration\Projector; -use Surfnet\Stepup\Identity\Event\IdentityForgottenEvent; -use Surfnet\Stepup\Projector\Projector; use Surfnet\Stepup\Configuration\Event\InstitutionConfigurationRemovedEvent; use Surfnet\Stepup\Configuration\Event\NewInstitutionConfigurationCreatedEvent; use Surfnet\Stepup\Configuration\Event\NumberOfTokensPerIdentityOptionChangedEvent; @@ -30,6 +28,8 @@ use Surfnet\Stepup\Configuration\Event\SsoRegistrationBypassOptionChangedEvent; use Surfnet\Stepup\Configuration\Event\UseRaLocationsOptionChangedEvent; use Surfnet\Stepup\Configuration\Event\VerifyEmailOptionChangedEvent; +use Surfnet\Stepup\Identity\Event\IdentityForgottenEvent; +use Surfnet\Stepup\Projector\Projector; use Surfnet\StepupMiddleware\ApiBundle\Configuration\Entity\InstitutionConfigurationOptions; use Surfnet\StepupMiddleware\ApiBundle\Configuration\Repository\AllowedSecondFactorRepository; use Surfnet\StepupMiddleware\ApiBundle\Configuration\Repository\InstitutionConfigurationOptionsRepository; diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Configuration/Projector/RaLocationProjector.php b/src/Surfnet/StepupMiddleware/ApiBundle/Configuration/Projector/RaLocationProjector.php index 1c32c99d3..9de995430 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Configuration/Projector/RaLocationProjector.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Configuration/Projector/RaLocationProjector.php @@ -18,8 +18,6 @@ namespace Surfnet\StepupMiddleware\ApiBundle\Configuration\Projector; -use Surfnet\Stepup\Identity\Event\IdentityForgottenEvent; -use Surfnet\Stepup\Projector\Projector; use Surfnet\Stepup\Configuration\Event\InstitutionConfigurationRemovedEvent; use Surfnet\Stepup\Configuration\Event\RaLocationAddedEvent; use Surfnet\Stepup\Configuration\Event\RaLocationContactInformationChangedEvent; @@ -27,6 +25,8 @@ use Surfnet\Stepup\Configuration\Event\RaLocationRemovedEvent; use Surfnet\Stepup\Configuration\Event\RaLocationRenamedEvent; use Surfnet\Stepup\Configuration\Value\RaLocationId; +use Surfnet\Stepup\Identity\Event\IdentityForgottenEvent; +use Surfnet\Stepup\Projector\Projector; use Surfnet\StepupMiddleware\ApiBundle\Configuration\Entity\RaLocation; use Surfnet\StepupMiddleware\ApiBundle\Configuration\Repository\RaLocationRepository; use Surfnet\StepupMiddleware\ApiBundle\Exception\RuntimeException; diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Configuration/Service/AllowedSecondFactorListService.php b/src/Surfnet/StepupMiddleware/ApiBundle/Configuration/Service/AllowedSecondFactorListService.php index 91b6c92ea..707572f8e 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Configuration/Service/AllowedSecondFactorListService.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Configuration/Service/AllowedSecondFactorListService.php @@ -20,6 +20,7 @@ use Surfnet\Stepup\Configuration\Value\AllowedSecondFactorList; use Surfnet\Stepup\Configuration\Value\Institution; +use Surfnet\StepupBundle\Value\SecondFactorType; use Surfnet\StepupMiddleware\ApiBundle\Configuration\Entity\AllowedSecondFactor; use Surfnet\StepupMiddleware\ApiBundle\Configuration\Repository\AllowedSecondFactorRepository; @@ -33,7 +34,7 @@ public function __construct( public function getAllowedSecondFactorListFor(Institution $institution): AllowedSecondFactorList { $allowedSecondFactors = array_map( - fn(AllowedSecondFactor $allowedSecondFactor): \Surfnet\StepupBundle\Value\SecondFactorType => $allowedSecondFactor->secondFactorType, + fn(AllowedSecondFactor $allowedSecondFactor): SecondFactorType => $allowedSecondFactor->secondFactorType, $this->allowedSecondFactorRepository->getAllowedSecondFactorsFor($institution), ); diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Controller/AuditLogController.php b/src/Surfnet/StepupMiddleware/ApiBundle/Controller/AuditLogController.php index 05c3875eb..9b8cce5b0 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Controller/AuditLogController.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Controller/AuditLogController.php @@ -20,11 +20,11 @@ use Surfnet\Stepup\Identity\Value\IdentityId; use Surfnet\Stepup\Identity\Value\Institution; +use Surfnet\StepupMiddleware\ApiBundle\Controller\AbstractController; use Surfnet\StepupMiddleware\ApiBundle\Exception\BadApiRequestException; use Surfnet\StepupMiddleware\ApiBundle\Identity\Query\SecondFactorAuditLogQuery; use Surfnet\StepupMiddleware\ApiBundle\Identity\Service\AuditLogService; use Surfnet\StepupMiddleware\ApiBundle\Response\JsonCollectionResponse; -use Surfnet\StepupMiddleware\ApiBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Request; final class AuditLogController extends AbstractController diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Controller/AuthorizationController.php b/src/Surfnet/StepupMiddleware/ApiBundle/Controller/AuthorizationController.php index dd824d7c6..498dc9ef5 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Controller/AuthorizationController.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Controller/AuthorizationController.php @@ -20,8 +20,8 @@ use Surfnet\Stepup\Identity\Value\IdentityId; use Surfnet\StepupMiddleware\ApiBundle\Authorization\Service\AuthorizationService; -use Surfnet\StepupMiddleware\ApiBundle\Response\JsonAuthorizationResponse; use Surfnet\StepupMiddleware\ApiBundle\Controller\AbstractController; +use Surfnet\StepupMiddleware\ApiBundle\Response\JsonAuthorizationResponse; class AuthorizationController extends AbstractController { diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Controller/CommandController.php b/src/Surfnet/StepupMiddleware/ApiBundle/Controller/CommandController.php index c5e10c4b3..6adee0198 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Controller/CommandController.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Controller/CommandController.php @@ -22,6 +22,7 @@ use Surfnet\Stepup\Identity\Value\IdentityId; use Surfnet\Stepup\Identity\Value\Institution; use Surfnet\StepupMiddleware\ApiBundle\Authorization\Service\CommandAuthorizationService; +use Surfnet\StepupMiddleware\ApiBundle\Controller\AbstractController; use Surfnet\StepupMiddleware\CommandHandlingBundle\Command\AbstractCommand; use Surfnet\StepupMiddleware\CommandHandlingBundle\Command\Command; use Surfnet\StepupMiddleware\CommandHandlingBundle\Command\Metadata; @@ -31,7 +32,6 @@ use Surfnet\StepupMiddleware\CommandHandlingBundle\Identity\Command\CreateIdentityCommand; use Surfnet\StepupMiddleware\CommandHandlingBundle\Identity\Command\UpdateIdentityCommand; use Surfnet\StepupMiddleware\CommandHandlingBundle\Pipeline\TransactionAwarePipeline; -use Surfnet\StepupMiddleware\ApiBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException; diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Controller/IdentityController.php b/src/Surfnet/StepupMiddleware/ApiBundle/Controller/IdentityController.php index d490208e5..8af7a4392 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Controller/IdentityController.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Controller/IdentityController.php @@ -22,6 +22,7 @@ use Surfnet\StepupMiddleware\ApiBundle\Identity\Entity\Identity; use Surfnet\StepupMiddleware\ApiBundle\Identity\Query\IdentityQuery; use Surfnet\StepupMiddleware\ApiBundle\Identity\Service\IdentityService; +use Surfnet\StepupMiddleware\ApiBundle\Identity\Value\RegistrationAuthorityCredentials; use Surfnet\StepupMiddleware\ApiBundle\Response\JsonCollectionResponse; use Surfnet\StepupMiddleware\ApiBundle\Response\JsonNotFoundResponse; use Symfony\Component\HttpFoundation\JsonResponse; @@ -72,7 +73,7 @@ public function getRegistrationAuthorityCredentials(string $identityId): JsonRes $credentials = $identityService->findRegistrationAuthorityCredentialsOf($identityId); - if (!$credentials instanceof \Surfnet\StepupMiddleware\ApiBundle\Identity\Value\RegistrationAuthorityCredentials) { + if (!$credentials instanceof RegistrationAuthorityCredentials) { return new JsonNotFoundResponse(); } diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Controller/InstitutionConfigurationOptionsController.php b/src/Surfnet/StepupMiddleware/ApiBundle/Controller/InstitutionConfigurationOptionsController.php index 8f33761d2..07015990c 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Controller/InstitutionConfigurationOptionsController.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Controller/InstitutionConfigurationOptionsController.php @@ -20,6 +20,7 @@ use Surfnet\Stepup\Configuration\Value\Institution; use Surfnet\Stepup\Configuration\Value\InstitutionRole; +use Surfnet\StepupMiddleware\ApiBundle\Configuration\Entity\InstitutionConfigurationOptions; use Surfnet\StepupMiddleware\ApiBundle\Configuration\Service\AllowedSecondFactorListService; use Surfnet\StepupMiddleware\ApiBundle\Configuration\Service\InstitutionAuthorizationService; use Surfnet\StepupMiddleware\ApiBundle\Configuration\Service\InstitutionConfigurationOptionsService; @@ -50,7 +51,7 @@ public function getForInstitution(string $institutionName): JsonResponse ->allowedSecondFactorListService ->getAllowedSecondFactorListFor($institution); - if (!$institutionConfigurationOptions instanceof \Surfnet\StepupMiddleware\ApiBundle\Configuration\Entity\InstitutionConfigurationOptions) { + if (!$institutionConfigurationOptions instanceof InstitutionConfigurationOptions) { throw new NotFoundHttpException( sprintf('No institution configuration options found for institution "%s"', $institution), ); diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Controller/ProfileController.php b/src/Surfnet/StepupMiddleware/ApiBundle/Controller/ProfileController.php index 9ec1a7629..e1d08e9c1 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Controller/ProfileController.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Controller/ProfileController.php @@ -18,9 +18,9 @@ namespace Surfnet\StepupMiddleware\ApiBundle\Controller; +use Surfnet\StepupMiddleware\ApiBundle\Controller\AbstractController; use Surfnet\StepupMiddleware\ApiBundle\Identity\Service\ProfileService; use Surfnet\StepupMiddleware\ApiBundle\Identity\Value\Profile; -use Surfnet\StepupMiddleware\ApiBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException; diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaCandidateController.php b/src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaCandidateController.php index 4d34013e6..df9fae983 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaCandidateController.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaCandidateController.php @@ -21,10 +21,10 @@ use Surfnet\Stepup\Identity\Value\IdentityId; use Surfnet\Stepup\Identity\Value\RegistrationAuthorityRole; use Surfnet\StepupMiddleware\ApiBundle\Authorization\Service\AuthorizationContextService; +use Surfnet\StepupMiddleware\ApiBundle\Controller\AbstractController; use Surfnet\StepupMiddleware\ApiBundle\Identity\Query\RaCandidateQuery; use Surfnet\StepupMiddleware\ApiBundle\Identity\Service\RaCandidateService; use Surfnet\StepupMiddleware\ApiBundle\Response\JsonCollectionResponse; -use Surfnet\StepupMiddleware\ApiBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaController.php b/src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaController.php index 08afa1f4a..0a75c1c81 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaController.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaController.php @@ -19,9 +19,9 @@ namespace Surfnet\StepupMiddleware\ApiBundle\Controller; use Surfnet\Stepup\Identity\Value\Institution; +use Surfnet\StepupMiddleware\ApiBundle\Controller\AbstractController; use Surfnet\StepupMiddleware\ApiBundle\Identity\Service\RaListingService; use Surfnet\StepupMiddleware\ApiBundle\Response\JsonCollectionResponse; -use Surfnet\StepupMiddleware\ApiBundle\Controller\AbstractController; class RaController extends AbstractController { diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaListingController.php b/src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaListingController.php index 8e7760081..9228282b4 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaListingController.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaListingController.php @@ -22,10 +22,11 @@ use Surfnet\Stepup\Identity\Value\Institution; use Surfnet\Stepup\Identity\Value\RegistrationAuthorityRole; use Surfnet\StepupMiddleware\ApiBundle\Authorization\Service\AuthorizationContextService; +use Surfnet\StepupMiddleware\ApiBundle\Controller\AbstractController; +use Surfnet\StepupMiddleware\ApiBundle\Identity\Entity\RaListing; use Surfnet\StepupMiddleware\ApiBundle\Identity\Query\RaListingQuery; use Surfnet\StepupMiddleware\ApiBundle\Identity\Service\RaListingService; use Surfnet\StepupMiddleware\ApiBundle\Response\JsonCollectionResponse; -use Surfnet\StepupMiddleware\ApiBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; @@ -56,7 +57,7 @@ public function get(Request $request, string $identityId): JsonResponse $authorizationContext, ); - if (!$raListing instanceof \Surfnet\StepupMiddleware\ApiBundle\Identity\Entity\RaListing) { + if (!$raListing instanceof RaListing) { throw new NotFoundHttpException(sprintf("RaListing '%s' does not exist", $identityId)); } diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaLocationController.php b/src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaLocationController.php index b27ee7750..24cb6730c 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaLocationController.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaLocationController.php @@ -22,8 +22,8 @@ use Surfnet\Stepup\Configuration\Value\RaLocationId; use Surfnet\StepupMiddleware\ApiBundle\Configuration\Query\RaLocationQuery; use Surfnet\StepupMiddleware\ApiBundle\Configuration\Service\RaLocationService; -use Surfnet\StepupMiddleware\ApiBundle\Response\JsonCollectionResponse; use Surfnet\StepupMiddleware\ApiBundle\Controller\AbstractController; +use Surfnet\StepupMiddleware\ApiBundle\Response\JsonCollectionResponse; use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpFoundation\Request; diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaSecondFactorController.php b/src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaSecondFactorController.php index c8e84d4f5..a7f9cc1b3 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaSecondFactorController.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaSecondFactorController.php @@ -21,10 +21,10 @@ use Surfnet\Stepup\Identity\Value\IdentityId; use Surfnet\Stepup\Identity\Value\RegistrationAuthorityRole; use Surfnet\StepupMiddleware\ApiBundle\Authorization\Service\AuthorizationContextService; +use Surfnet\StepupMiddleware\ApiBundle\Controller\AbstractController; use Surfnet\StepupMiddleware\ApiBundle\Identity\Query\RaSecondFactorQuery; use Surfnet\StepupMiddleware\ApiBundle\Identity\Service\RaSecondFactorService; use Surfnet\StepupMiddleware\ApiBundle\Response\JsonCollectionResponse; -use Surfnet\StepupMiddleware\ApiBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpFoundation\Request; diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Controller/RecoveryTokenController.php b/src/Surfnet/StepupMiddleware/ApiBundle/Controller/RecoveryTokenController.php index ace32e80f..f198de1ed 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Controller/RecoveryTokenController.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Controller/RecoveryTokenController.php @@ -23,11 +23,11 @@ use Surfnet\Stepup\Identity\Value\RecoveryTokenId; use Surfnet\Stepup\Identity\Value\RegistrationAuthorityRole; use Surfnet\StepupMiddleware\ApiBundle\Authorization\Service\AuthorizationContextService; +use Surfnet\StepupMiddleware\ApiBundle\Controller\AbstractController; use Surfnet\StepupMiddleware\ApiBundle\Exception\NotFoundException; use Surfnet\StepupMiddleware\ApiBundle\Identity\Query\RecoveryTokenQuery; use Surfnet\StepupMiddleware\ApiBundle\Identity\Service\RecoveryTokenService; use Surfnet\StepupMiddleware\ApiBundle\Response\JsonCollectionResponse; -use Surfnet\StepupMiddleware\ApiBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Controller/SraaController.php b/src/Surfnet/StepupMiddleware/ApiBundle/Controller/SraaController.php index a410fde6c..d7b1b2792 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Controller/SraaController.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Controller/SraaController.php @@ -19,9 +19,10 @@ namespace Surfnet\StepupMiddleware\ApiBundle\Controller; use Surfnet\Stepup\Identity\Value\NameId; +use Surfnet\StepupMiddleware\ApiBundle\Controller\AbstractController; +use Surfnet\StepupMiddleware\ApiBundle\Identity\Entity\Sraa; use Surfnet\StepupMiddleware\ApiBundle\Identity\Service\SraaService; use Surfnet\StepupMiddleware\ApiBundle\Response\JsonNotFoundResponse; -use Surfnet\StepupMiddleware\ApiBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\JsonResponse; class SraaController extends AbstractController @@ -40,7 +41,7 @@ public function get(string $nameId): JsonResponse $sraa = $this->sraaService->findByNameId(new NameId($nameId)); - if (!$sraa instanceof \Surfnet\StepupMiddleware\ApiBundle\Identity\Entity\Sraa) { + if (!$sraa instanceof Sraa) { return new JsonNotFoundResponse(); } diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Controller/UnverifiedSecondFactorController.php b/src/Surfnet/StepupMiddleware/ApiBundle/Controller/UnverifiedSecondFactorController.php index 2cec19a2d..ae3460eba 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Controller/UnverifiedSecondFactorController.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Controller/UnverifiedSecondFactorController.php @@ -20,11 +20,11 @@ use Surfnet\Stepup\Identity\Value\IdentityId; use Surfnet\Stepup\Identity\Value\SecondFactorId; +use Surfnet\StepupMiddleware\ApiBundle\Controller\AbstractController; use Surfnet\StepupMiddleware\ApiBundle\Identity\Entity\UnverifiedSecondFactor; use Surfnet\StepupMiddleware\ApiBundle\Identity\Query\UnverifiedSecondFactorQuery; use Surfnet\StepupMiddleware\ApiBundle\Identity\Service\SecondFactorService; use Surfnet\StepupMiddleware\ApiBundle\Response\JsonCollectionResponse; -use Surfnet\StepupMiddleware\ApiBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Controller/VerifiedSecondFactorController.php b/src/Surfnet/StepupMiddleware/ApiBundle/Controller/VerifiedSecondFactorController.php index 53a4ebf4e..86d6491fb 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Controller/VerifiedSecondFactorController.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Controller/VerifiedSecondFactorController.php @@ -24,12 +24,12 @@ use Surfnet\Stepup\Identity\Value\SecondFactorId; use Surfnet\StepupBundle\Value\SecondFactorType; use Surfnet\StepupMiddleware\ApiBundle\Authorization\Service\AuthorizationContextService; +use Surfnet\StepupMiddleware\ApiBundle\Controller\AbstractController; use Surfnet\StepupMiddleware\ApiBundle\Identity\Entity\VerifiedSecondFactor; use Surfnet\StepupMiddleware\ApiBundle\Identity\Query\VerifiedSecondFactorOfIdentityQuery; use Surfnet\StepupMiddleware\ApiBundle\Identity\Query\VerifiedSecondFactorQuery; use Surfnet\StepupMiddleware\ApiBundle\Identity\Service\SecondFactorService; use Surfnet\StepupMiddleware\ApiBundle\Response\JsonCollectionResponse; -use Surfnet\StepupMiddleware\ApiBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Controller/VettedSecondFactorController.php b/src/Surfnet/StepupMiddleware/ApiBundle/Controller/VettedSecondFactorController.php index ff13fcdf1..c904366da 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Controller/VettedSecondFactorController.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Controller/VettedSecondFactorController.php @@ -20,11 +20,11 @@ use Surfnet\Stepup\Identity\Value\IdentityId; use Surfnet\Stepup\Identity\Value\SecondFactorId; +use Surfnet\StepupMiddleware\ApiBundle\Controller\AbstractController; use Surfnet\StepupMiddleware\ApiBundle\Identity\Entity\VettedSecondFactor; use Surfnet\StepupMiddleware\ApiBundle\Identity\Query\VettedSecondFactorQuery; use Surfnet\StepupMiddleware\ApiBundle\Identity\Service\SecondFactorService; use Surfnet\StepupMiddleware\ApiBundle\Response\JsonCollectionResponse; -use Surfnet\StepupMiddleware\ApiBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Controller/VettingTypeHintController.php b/src/Surfnet/StepupMiddleware/ApiBundle/Controller/VettingTypeHintController.php index 7a316c5cf..e6a310550 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Controller/VettingTypeHintController.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Controller/VettingTypeHintController.php @@ -20,9 +20,9 @@ use Psr\Log\LoggerInterface; use Surfnet\Stepup\Identity\Value\Institution; +use Surfnet\StepupMiddleware\ApiBundle\Controller\AbstractController; use Surfnet\StepupMiddleware\ApiBundle\Exception\NotFoundException; use Surfnet\StepupMiddleware\CommandHandlingBundle\Identity\Service\VettingTypeHintService; -use Surfnet\StepupMiddleware\ApiBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/NumberOfTokensPerIdentityType.php b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/NumberOfTokensPerIdentityType.php index 1bbfb6b74..8ac75e8bb 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/NumberOfTokensPerIdentityType.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/NumberOfTokensPerIdentityType.php @@ -21,7 +21,6 @@ use Doctrine\DBAL\Platforms\AbstractPlatform; use Doctrine\DBAL\Types\ConversionException; use Doctrine\DBAL\Types\IntegerType; -use Doctrine\DBAL\Types\Type; use Surfnet\Stepup\Configuration\Value\NumberOfTokensPerIdentityOption; use Surfnet\Stepup\Exception\InvalidArgumentException; diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/SelfAssertedTokensOptionType.php b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/SelfAssertedTokensOptionType.php index 3d24cfd23..57a49af4e 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/SelfAssertedTokensOptionType.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/SelfAssertedTokensOptionType.php @@ -21,8 +21,6 @@ use Doctrine\DBAL\Platforms\AbstractPlatform; use Doctrine\DBAL\Types\ConversionException; use Doctrine\DBAL\Types\IntegerType; -use Doctrine\DBAL\Types\Type; -use phpseclib3\Math\PrimeField\Integer; use Surfnet\Stepup\Configuration\Value\SelfAssertedTokensOption; use TypeError; diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/SelfVetOptionType.php b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/SelfVetOptionType.php index 1202b099a..6a32eb222 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/SelfVetOptionType.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/SelfVetOptionType.php @@ -21,7 +21,6 @@ use Doctrine\DBAL\Platforms\AbstractPlatform; use Doctrine\DBAL\Types\ConversionException; use Doctrine\DBAL\Types\IntegerType; -use Doctrine\DBAL\Types\Type; use Surfnet\Stepup\Configuration\Value\SelfVetOption; use TypeError; diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/SsoOn2faOptionType.php b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/SsoOn2faOptionType.php index 904cee34d..96818bc31 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/SsoOn2faOptionType.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/SsoOn2faOptionType.php @@ -21,7 +21,6 @@ use Doctrine\DBAL\Platforms\AbstractPlatform; use Doctrine\DBAL\Types\ConversionException; use Doctrine\DBAL\Types\IntegerType; -use Doctrine\DBAL\Types\Type; use Surfnet\Stepup\Configuration\Value\SsoOn2faOption; use TypeError; diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/VerifyEmailOptionType.php b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/VerifyEmailOptionType.php index 5ade89796..d0c153b79 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/VerifyEmailOptionType.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/VerifyEmailOptionType.php @@ -21,7 +21,6 @@ use Doctrine\DBAL\Platforms\AbstractPlatform; use Doctrine\DBAL\Types\BooleanType; use Doctrine\DBAL\Types\ConversionException; -use Doctrine\DBAL\Types\Type; use Surfnet\Stepup\Configuration\Value\VerifyEmailOption; use Surfnet\Stepup\Exception\InvalidArgumentException; diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/VettingTypeHintsType.php b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/VettingTypeHintsType.php index f58c7006b..2034d71b7 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/VettingTypeHintsType.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/VettingTypeHintsType.php @@ -21,7 +21,6 @@ use Doctrine\DBAL\Platforms\AbstractPlatform; use Doctrine\DBAL\Types\ConversionException; use Doctrine\DBAL\Types\JsonType; -use Doctrine\DBAL\Types\Type; use Surfnet\Stepup\Exception\InvalidArgumentException; use Surfnet\Stepup\Identity\Collection\VettingTypeHintCollection; diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Entity/RaListing.php b/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Entity/RaListing.php index 3848c981c..e0232209d 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Entity/RaListing.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Entity/RaListing.php @@ -25,7 +25,6 @@ use Surfnet\Stepup\Identity\Value\Email; use Surfnet\Stepup\Identity\Value\Institution; use Surfnet\Stepup\Identity\Value\Location; -use Surfnet\StepupMiddleware\ApiBundle\Exception\InvalidArgumentException; use Surfnet\StepupMiddleware\ApiBundle\Identity\Repository\RaListingRepository; use Surfnet\StepupMiddleware\ApiBundle\Identity\Value\AuthorityRole; diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Projector/AuditLogProjector.php b/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Projector/AuditLogProjector.php index 15da689e2..eba995b31 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Projector/AuditLogProjector.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Projector/AuditLogProjector.php @@ -31,8 +31,11 @@ use Surfnet\Stepup\Identity\Value\Institution; use Surfnet\Stepup\Identity\Value\RecoveryTokenIdentifierFactory; use Surfnet\Stepup\Identity\Value\RecoveryTokenType; +use Surfnet\Stepup\Identity\Value\SecondFactorId; +use Surfnet\Stepup\Identity\Value\SecondFactorIdentifier; use Surfnet\Stepup\Identity\Value\VettingType; use Surfnet\Stepup\Projector\Projector; +use Surfnet\StepupBundle\Value\SecondFactorType; use Surfnet\StepupMiddleware\ApiBundle\Exception\RuntimeException; use Surfnet\StepupMiddleware\ApiBundle\Identity\Entity\AuditLogEntry; use Surfnet\StepupMiddleware\ApiBundle\Identity\Entity\Identity; @@ -108,11 +111,11 @@ private function applyAuditableEvent(AuditableEvent $event, DomainMessage $domai $entry->event = $event::class; $entry->recordedOn = new DateTime(new CoreDateTime($domainMessage->getRecordedOn()->toString())); - if ($auditLogMetadata->secondFactorId instanceof \Surfnet\Stepup\Identity\Value\SecondFactorId) { + if ($auditLogMetadata->secondFactorId instanceof SecondFactorId) { $entry->secondFactorId = (string)$auditLogMetadata->secondFactorId; } - if ($auditLogMetadata->secondFactorType instanceof \Surfnet\StepupBundle\Value\SecondFactorType) { + if ($auditLogMetadata->secondFactorType instanceof SecondFactorType) { $entry->secondFactorType = (string)$auditLogMetadata->secondFactorType; } @@ -123,15 +126,15 @@ private function applyAuditableEvent(AuditableEvent $event, DomainMessage $domai $entry->recoveryTokenIdentifier = (string)$auditLogMetadata->recoveryTokenId; } - if ($auditLogMetadata->recoveryTokenType instanceof \Surfnet\Stepup\Identity\Value\RecoveryTokenType) { + if ($auditLogMetadata->recoveryTokenType instanceof RecoveryTokenType) { $entry->recoveryTokenType = (string)$auditLogMetadata->recoveryTokenType; } - if ($auditLogMetadata->secondFactorIdentifier instanceof \Surfnet\Stepup\Identity\Value\SecondFactorIdentifier) { + if ($auditLogMetadata->secondFactorIdentifier instanceof SecondFactorIdentifier) { $entry->secondFactorIdentifier = (string)$auditLogMetadata->secondFactorIdentifier; } - if ($auditLogMetadata->raInstitution instanceof \Surfnet\Stepup\Identity\Value\Institution) { + if ($auditLogMetadata->raInstitution instanceof Institution) { $entry->raInstitution = (string)$auditLogMetadata->raInstitution; } diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Projector/IdentityProjector.php b/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Projector/IdentityProjector.php index 9b7ab7683..e6cfb0ec7 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Projector/IdentityProjector.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Projector/IdentityProjector.php @@ -18,16 +18,16 @@ namespace Surfnet\StepupMiddleware\ApiBundle\Identity\Projector; -use Surfnet\Stepup\Identity\Event\IdentityRestoredEvent; -use Surfnet\Stepup\Projector\Projector; use Surfnet\Stepup\Identity\Event\IdentityCreatedEvent; use Surfnet\Stepup\Identity\Event\IdentityEmailChangedEvent; use Surfnet\Stepup\Identity\Event\IdentityForgottenEvent; use Surfnet\Stepup\Identity\Event\IdentityRenamedEvent; +use Surfnet\Stepup\Identity\Event\IdentityRestoredEvent; use Surfnet\Stepup\Identity\Event\LocalePreferenceExpressedEvent; use Surfnet\Stepup\Identity\Event\SecondFactorVettedEvent; use Surfnet\Stepup\Identity\Event\SecondFactorVettedWithoutTokenProofOfPossession; use Surfnet\Stepup\Identity\Value\VettingType; +use Surfnet\Stepup\Projector\Projector; use Surfnet\StepupMiddleware\ApiBundle\Identity\Entity\Identity; use Surfnet\StepupMiddleware\ApiBundle\Identity\Repository\IdentityRepository; diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Projector/IdentitySelfAssertedTokenOptionsProjector.php b/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Projector/IdentitySelfAssertedTokenOptionsProjector.php index d08af17a2..717c3380d 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Projector/IdentitySelfAssertedTokenOptionsProjector.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Projector/IdentitySelfAssertedTokenOptionsProjector.php @@ -18,13 +18,13 @@ namespace Surfnet\StepupMiddleware\ApiBundle\Identity\Projector; -use Surfnet\Stepup\Identity\Event\IdentityForgottenEvent; -use Surfnet\Stepup\Projector\Projector; use Surfnet\Stepup\Identity\Event\IdentityCreatedEvent; +use Surfnet\Stepup\Identity\Event\IdentityForgottenEvent; use Surfnet\Stepup\Identity\Event\SecondFactorVettedEvent; use Surfnet\Stepup\Identity\Event\SecondFactorVettedWithoutTokenProofOfPossession; use Surfnet\Stepup\Identity\Value\IdentityId; use Surfnet\Stepup\Identity\Value\VettingType; +use Surfnet\Stepup\Projector\Projector; use Surfnet\StepupMiddleware\ApiBundle\Identity\Entity\IdentitySelfAssertedTokenOptions; use Surfnet\StepupMiddleware\ApiBundle\Identity\Repository\IdentitySelfAssertedTokenOptionsRepository; diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Projector/InstitutionListingProjector.php b/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Projector/InstitutionListingProjector.php index 925983bfb..dc8212331 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Projector/InstitutionListingProjector.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Projector/InstitutionListingProjector.php @@ -18,9 +18,9 @@ namespace Surfnet\StepupMiddleware\ApiBundle\Identity\Projector; +use Surfnet\Stepup\Identity\Event\IdentityCreatedEvent; use Surfnet\Stepup\Identity\Event\IdentityForgottenEvent; use Surfnet\Stepup\Projector\Projector; -use Surfnet\Stepup\Identity\Event\IdentityCreatedEvent; use Surfnet\StepupMiddleware\ApiBundle\Identity\Repository\InstitutionListingRepository; /** diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Projector/RaListingProjector.php b/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Projector/RaListingProjector.php index 7edf7b9c5..4c0b25289 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Projector/RaListingProjector.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Projector/RaListingProjector.php @@ -18,7 +18,6 @@ namespace Surfnet\StepupMiddleware\ApiBundle\Identity\Projector; -use Surfnet\Stepup\Projector\Projector; use Surfnet\Stepup\Identity\Event\AppointedAsRaaEvent; use Surfnet\Stepup\Identity\Event\AppointedAsRaaForInstitutionEvent; use Surfnet\Stepup\Identity\Event\AppointedAsRaEvent; @@ -32,6 +31,7 @@ use Surfnet\Stepup\Identity\Event\RegistrationAuthorityInformationAmendedForInstitutionEvent; use Surfnet\Stepup\Identity\Event\RegistrationAuthorityRetractedEvent; use Surfnet\Stepup\Identity\Event\RegistrationAuthorityRetractedForInstitutionEvent; +use Surfnet\Stepup\Projector\Projector; use Surfnet\StepupMiddleware\ApiBundle\Exception\RuntimeException; use Surfnet\StepupMiddleware\ApiBundle\Identity\Entity\RaListing; use Surfnet\StepupMiddleware\ApiBundle\Identity\Repository\IdentityRepository; @@ -94,7 +94,7 @@ public function applyRegistrationAuthorityInformationAmendedForInstitutionEvent( $event->raInstitution, ); - if (!$raListing instanceof \Surfnet\StepupMiddleware\ApiBundle\Identity\Entity\RaListing) { + if (!$raListing instanceof RaListing) { throw new RuntimeException( "Tried to amend an RaListing's registration authority location and contact information, " . "but the listing could not be found", @@ -198,7 +198,7 @@ public function applyRegistrationAuthorityInformationAmendedEvent( $event->identityInstitution, ); - if (!$raListing instanceof \Surfnet\StepupMiddleware\ApiBundle\Identity\Entity\RaListing) { + if (!$raListing instanceof RaListing) { throw new RuntimeException( "Tried to amend an RaListing's registration authority location and contact information, " . "but the listing could not be found", diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Projector/RaSecondFactorProjector.php b/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Projector/RaSecondFactorProjector.php index 68a8e17c2..59541282d 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Projector/RaSecondFactorProjector.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Projector/RaSecondFactorProjector.php @@ -18,7 +18,6 @@ namespace Surfnet\StepupMiddleware\ApiBundle\Identity\Projector; -use Surfnet\Stepup\Projector\Projector; use Surfnet\Stepup\Identity\Event\CompliedWithUnverifiedSecondFactorRevocationEvent; use Surfnet\Stepup\Identity\Event\CompliedWithVerifiedSecondFactorRevocationEvent; use Surfnet\Stepup\Identity\Event\CompliedWithVettedSecondFactorRevocationEvent; @@ -46,6 +45,7 @@ use Surfnet\Stepup\Identity\Value\Email; use Surfnet\Stepup\Identity\Value\OnPremiseVettingType; use Surfnet\Stepup\Identity\Value\SecondFactorId; +use Surfnet\Stepup\Projector\Projector; use Surfnet\StepupMiddleware\ApiBundle\Identity\Entity\RaSecondFactor; use Surfnet\StepupMiddleware\ApiBundle\Identity\Repository\IdentityRepository; use Surfnet\StepupMiddleware\ApiBundle\Identity\Repository\RaSecondFactorRepository; diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Projector/RecoveryTokenProjector.php b/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Projector/RecoveryTokenProjector.php index 13206deed..1176e419b 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Projector/RecoveryTokenProjector.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Projector/RecoveryTokenProjector.php @@ -18,13 +18,13 @@ namespace Surfnet\StepupMiddleware\ApiBundle\Identity\Projector; -use Surfnet\Stepup\Projector\Projector; use Surfnet\Stepup\Identity\Event\CompliedWithRecoveryCodeRevocationEvent; use Surfnet\Stepup\Identity\Event\IdentityForgottenEvent; use Surfnet\Stepup\Identity\Event\PhoneRecoveryTokenPossessionProvenEvent; use Surfnet\Stepup\Identity\Event\RecoveryTokenRevokedEvent; use Surfnet\Stepup\Identity\Event\SafeStoreSecretRecoveryTokenPossessionPromisedEvent; use Surfnet\Stepup\Identity\Value\RecoveryTokenType; +use Surfnet\Stepup\Projector\Projector; use Surfnet\StepupMiddleware\ApiBundle\Identity\Entity\RecoveryToken; use Surfnet\StepupMiddleware\ApiBundle\Identity\Repository\RecoveryTokenRepository; use Surfnet\StepupMiddleware\ApiBundle\Identity\Value\RecoveryTokenStatus; diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Projector/SecondFactorProjector.php b/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Projector/SecondFactorProjector.php index e7fc180d5..9503679cd 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Projector/SecondFactorProjector.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Projector/SecondFactorProjector.php @@ -18,7 +18,6 @@ namespace Surfnet\StepupMiddleware\ApiBundle\Identity\Projector; -use Surfnet\Stepup\Projector\Projector; use Surfnet\Stepup\Identity\Event\CompliedWithUnverifiedSecondFactorRevocationEvent; use Surfnet\Stepup\Identity\Event\CompliedWithVerifiedSecondFactorRevocationEvent; use Surfnet\Stepup\Identity\Event\CompliedWithVettedSecondFactorRevocationEvent; @@ -39,6 +38,7 @@ use Surfnet\Stepup\Identity\Event\YubikeySecondFactorBootstrappedEvent; use Surfnet\Stepup\Identity\Value\UnknownVettingType; use Surfnet\Stepup\Identity\Value\VettingType; +use Surfnet\Stepup\Projector\Projector; use Surfnet\StepupMiddleware\ApiBundle\Identity\Entity\UnverifiedSecondFactor; use Surfnet\StepupMiddleware\ApiBundle\Identity\Entity\VerifiedSecondFactor; use Surfnet\StepupMiddleware\ApiBundle\Identity\Entity\VettedSecondFactor; @@ -186,7 +186,7 @@ public function applySecondFactorVettedEvent(SecondFactorVettedEvent $event): vo // In case the vetting type is unknown (for example when no event replay was performed) // fall back to the unknown vetting type. $vettingType = $event->vettingType; - if (!$vettingType instanceof \Surfnet\Stepup\Identity\Value\VettingType) { + if (!$vettingType instanceof VettingType) { $vettingType = new UnknownVettingType(); } $vetted->vettingType = $vettingType->type(); @@ -225,7 +225,7 @@ public function applySecondFactorVettedWithoutTokenProofOfPossession( $vettingType = $event->vettingType; // In case the vetting type is unknown (for example when no event replay was performed) // fall back to the unknown vetting type. - if (!$vettingType instanceof \Surfnet\Stepup\Identity\Value\VettingType) { + if (!$vettingType instanceof VettingType) { $vettingType = new UnknownVettingType(); } $vetted->vettingType = $vettingType->type(); diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Projector/SecondFactorRevocationProjector.php b/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Projector/SecondFactorRevocationProjector.php index 58f543bc5..07a13befd 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Projector/SecondFactorRevocationProjector.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Projector/SecondFactorRevocationProjector.php @@ -19,13 +19,13 @@ namespace Surfnet\StepupMiddleware\ApiBundle\Identity\Projector; use Broadway\Domain\DomainMessage; -use Surfnet\Stepup\Identity\Event\IdentityForgottenEvent; -use Surfnet\Stepup\Projector\Projector; use DateTime as CoreDateTime; use Ramsey\Uuid\Uuid; use Surfnet\Stepup\DateTime\DateTime; use Surfnet\Stepup\Identity\Event\CompliedWithVettedSecondFactorRevocationEvent; +use Surfnet\Stepup\Identity\Event\IdentityForgottenEvent; use Surfnet\Stepup\Identity\Event\VettedSecondFactorRevokedEvent; +use Surfnet\Stepup\Projector\Projector; use Surfnet\StepupMiddleware\ApiBundle\Identity\Entity\SecondFactorRevocation; use Surfnet\StepupMiddleware\ApiBundle\Identity\Repository\SecondFactorRevocationRepository; diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Projector/SraaProjector.php b/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Projector/SraaProjector.php index 31402a060..3d7323e23 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Projector/SraaProjector.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Projector/SraaProjector.php @@ -18,10 +18,10 @@ namespace Surfnet\StepupMiddleware\ApiBundle\Identity\Projector; -use Surfnet\Stepup\Identity\Event\IdentityForgottenEvent; -use Surfnet\Stepup\Projector\Projector; use Surfnet\Stepup\Configuration\Event\SraaUpdatedEvent; +use Surfnet\Stepup\Identity\Event\IdentityForgottenEvent; use Surfnet\Stepup\Identity\Value\NameId; +use Surfnet\Stepup\Projector\Projector; use Surfnet\StepupMiddleware\ApiBundle\Identity\Entity\Sraa; use Surfnet\StepupMiddleware\ApiBundle\Identity\Repository\SraaRepository; diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Projector/VettingTypeHintProjector.php b/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Projector/VettingTypeHintProjector.php index d3d8e8cfd..f1910d811 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Projector/VettingTypeHintProjector.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Projector/VettingTypeHintProjector.php @@ -19,8 +19,8 @@ namespace Surfnet\StepupMiddleware\ApiBundle\Identity\Projector; use Surfnet\Stepup\Identity\Event\IdentityForgottenEvent; -use Surfnet\Stepup\Projector\Projector; use Surfnet\Stepup\Identity\Event\VettingTypeHintsSavedEvent; +use Surfnet\Stepup\Projector\Projector; use Surfnet\StepupMiddleware\ApiBundle\Identity\Entity\VettingTypeHint; use Surfnet\StepupMiddleware\ApiBundle\Identity\Repository\VettingTypeHintRepository; diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Projector/WhitelistProjector.php b/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Projector/WhitelistProjector.php index 74ae3b35a..fd82b8554 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Projector/WhitelistProjector.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Projector/WhitelistProjector.php @@ -19,11 +19,11 @@ namespace Surfnet\StepupMiddleware\ApiBundle\Identity\Projector; use Surfnet\Stepup\Identity\Event\IdentityForgottenEvent; -use Surfnet\Stepup\Projector\Projector; use Surfnet\Stepup\Identity\Event\InstitutionsAddedToWhitelistEvent; use Surfnet\Stepup\Identity\Event\InstitutionsRemovedFromWhitelistEvent; use Surfnet\Stepup\Identity\Event\WhitelistCreatedEvent; use Surfnet\Stepup\Identity\Event\WhitelistReplacedEvent; +use Surfnet\Stepup\Projector\Projector; use Surfnet\StepupMiddleware\ApiBundle\Identity\Entity\WhitelistEntry; use Surfnet\StepupMiddleware\ApiBundle\Identity\Repository\WhitelistEntryRepository; diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Repository/IdentityRepository.php b/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Repository/IdentityRepository.php index eed634b59..19efe1d54 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Repository/IdentityRepository.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Repository/IdentityRepository.php @@ -19,11 +19,9 @@ namespace Surfnet\StepupMiddleware\ApiBundle\Identity\Repository; use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository; -use Doctrine\Common\Collections\ArrayCollection; use Doctrine\ORM\Query; use Doctrine\Persistence\ManagerRegistry; use Surfnet\Stepup\Identity\Value\CommonName; -use Surfnet\Stepup\Identity\Value\DocumentNumber; use Surfnet\Stepup\Identity\Value\Email; use Surfnet\Stepup\Identity\Value\IdentityId; use Surfnet\Stepup\Identity\Value\Institution; diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Repository/InstitutionListingRepository.php b/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Repository/InstitutionListingRepository.php index 909decef4..7752e8fe2 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Repository/InstitutionListingRepository.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Repository/InstitutionListingRepository.php @@ -21,7 +21,6 @@ use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository; use Doctrine\Persistence\ManagerRegistry; use Surfnet\Stepup\Identity\Value\Institution; -use Surfnet\StepupMiddleware\ApiBundle\Identity\Entity\Identity; use Surfnet\StepupMiddleware\ApiBundle\Identity\Entity\InstitutionListing; /** diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Repository/UnverifiedSecondFactorRepository.php b/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Repository/UnverifiedSecondFactorRepository.php index e95c72ecf..9d022256e 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Repository/UnverifiedSecondFactorRepository.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Repository/UnverifiedSecondFactorRepository.php @@ -50,7 +50,7 @@ public function createSearchQuery(UnverifiedSecondFactorQuery $query): Query { $queryBuilder = $this->createQueryBuilder('sf'); - if ($query->identityId instanceof \Surfnet\Stepup\Identity\Value\IdentityId) { + if ($query->identityId instanceof IdentityId) { $queryBuilder ->andWhere('sf.identityId = :identityId') ->setParameter('identityId', (string)$query->identityId); diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Repository/VerifiedSecondFactorRepository.php b/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Repository/VerifiedSecondFactorRepository.php index e1f06ef1d..d47ad051a 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Repository/VerifiedSecondFactorRepository.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Repository/VerifiedSecondFactorRepository.php @@ -23,6 +23,7 @@ use Doctrine\ORM\Query; use Doctrine\Persistence\ManagerRegistry; use Surfnet\Stepup\Identity\Value\IdentityId; +use Surfnet\Stepup\Identity\Value\SecondFactorId; use Surfnet\StepupMiddleware\ApiBundle\Authorization\Filter\InstitutionAuthorizationRepositoryFilter; use Surfnet\StepupMiddleware\ApiBundle\Identity\Entity\VerifiedSecondFactor; use Surfnet\StepupMiddleware\ApiBundle\Identity\Query\VerifiedSecondFactorOfIdentityQuery; @@ -72,13 +73,13 @@ public function createSearchQuery(VerifiedSecondFactorQuery $query): Query { $queryBuilder = $this->createQueryBuilder('sf'); - if ($query->identityId instanceof \Surfnet\Stepup\Identity\Value\IdentityId) { + if ($query->identityId instanceof IdentityId) { $queryBuilder ->andWhere('sf.identityId = :identityId') ->setParameter('identityId', (string)$query->identityId); } - if ($query->secondFactorId instanceof \Surfnet\Stepup\Identity\Value\SecondFactorId) { + if ($query->secondFactorId instanceof SecondFactorId) { $queryBuilder ->andWhere('sf.id = :secondFactorId') ->setParameter('secondFactorId', (string)$query->secondFactorId); diff --git a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Configuration/Processor/InstitutionConfigurationProcessor.php b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Configuration/Processor/InstitutionConfigurationProcessor.php index 99d372a7d..e33321a7c 100644 --- a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Configuration/Processor/InstitutionConfigurationProcessor.php +++ b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Configuration/Processor/InstitutionConfigurationProcessor.php @@ -28,7 +28,6 @@ use Surfnet\StepupMiddleware\ApiBundle\Configuration\Repository\ConfiguredInstitutionRepository; use Surfnet\StepupMiddleware\CommandHandlingBundle\Configuration\Command\CreateInstitutionConfigurationCommand; use Surfnet\StepupMiddleware\CommandHandlingBundle\Pipeline\Pipeline; -use Symfony\Component\DependencyInjection\ContainerInterface; final class InstitutionConfigurationProcessor extends Processor { diff --git a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Exception/InvalidArgumentException.php b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Exception/InvalidArgumentException.php index 725a658ec..8d6a6a523 100644 --- a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Exception/InvalidArgumentException.php +++ b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Exception/InvalidArgumentException.php @@ -18,6 +18,7 @@ namespace Surfnet\StepupMiddleware\CommandHandlingBundle\Exception; +// phpcs:ignore SlevomatCodingStandard.Namespaces.ReferenceUsedNamesOnly class InvalidArgumentException extends \InvalidArgumentException implements Exception { public static function invalidType(string $expected, string $parameterName, mixed $parameter): self diff --git a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Identity/CommandHandler/IdentityCommandHandler.php b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Identity/CommandHandler/IdentityCommandHandler.php index 181391a98..755a3d328 100644 --- a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Identity/CommandHandler/IdentityCommandHandler.php +++ b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Identity/CommandHandler/IdentityCommandHandler.php @@ -46,6 +46,7 @@ use Surfnet\StepupBundle\Service\LoaResolutionService; use Surfnet\StepupBundle\Service\SecondFactorTypeService; use Surfnet\StepupBundle\Value\SecondFactorType; +use Surfnet\StepupMiddleware\ApiBundle\Configuration\Entity\InstitutionConfigurationOptions; use Surfnet\StepupMiddleware\ApiBundle\Configuration\Service\AllowedSecondFactorListService; use Surfnet\StepupMiddleware\ApiBundle\Configuration\Service\InstitutionConfigurationOptionsService; use Surfnet\StepupMiddleware\ApiBundle\Identity\Repository\IdentityRepository; @@ -539,7 +540,7 @@ private function emailVerificationIsRequired(IdentityApi $identity): bool $configuration = $this->institutionConfigurationOptionsService ->findInstitutionConfigurationOptionsFor($institution); - if (!$configuration instanceof \Surfnet\StepupMiddleware\ApiBundle\Configuration\Entity\InstitutionConfigurationOptions) { + if (!$configuration instanceof InstitutionConfigurationOptions) { return true; } diff --git a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/SensitiveData/EventSourcing/SensitiveDataMessage.php b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/SensitiveData/EventSourcing/SensitiveDataMessage.php index 988a78ef5..d7095c8d5 100644 --- a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/SensitiveData/EventSourcing/SensitiveDataMessage.php +++ b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/SensitiveData/EventSourcing/SensitiveDataMessage.php @@ -19,7 +19,6 @@ namespace Surfnet\StepupMiddleware\CommandHandlingBundle\SensitiveData\EventSourcing; use Surfnet\Stepup\Identity\Value\IdentityId; -use Surfnet\StepupMiddleware\CommandHandlingBundle\Exception\InvalidArgumentException; use Surfnet\StepupMiddleware\CommandHandlingBundle\SensitiveData\SensitiveData; class SensitiveDataMessage diff --git a/src/Surfnet/StepupMiddleware/GatewayBundle/Projector/InstitutionConfigurationProjector.php b/src/Surfnet/StepupMiddleware/GatewayBundle/Projector/InstitutionConfigurationProjector.php index 57362792c..1c335a56e 100644 --- a/src/Surfnet/StepupMiddleware/GatewayBundle/Projector/InstitutionConfigurationProjector.php +++ b/src/Surfnet/StepupMiddleware/GatewayBundle/Projector/InstitutionConfigurationProjector.php @@ -20,14 +20,14 @@ namespace Surfnet\StepupMiddleware\GatewayBundle\Projector; +use Surfnet\Stepup\Configuration\Event\InstitutionConfigurationRemovedEvent; +use Surfnet\Stepup\Configuration\Event\NewInstitutionConfigurationCreatedEvent; +use Surfnet\Stepup\Configuration\Event\SsoOn2faOptionChangedEvent; use Surfnet\Stepup\Configuration\Event\SsoRegistrationBypassOptionChangedEvent; use Surfnet\Stepup\Configuration\Value\SsoOn2faOption; use Surfnet\Stepup\Configuration\Value\SsoRegistrationBypassOption; use Surfnet\Stepup\Identity\Event\IdentityForgottenEvent; use Surfnet\Stepup\Projector\Projector; -use Surfnet\Stepup\Configuration\Event\InstitutionConfigurationRemovedEvent; -use Surfnet\Stepup\Configuration\Event\NewInstitutionConfigurationCreatedEvent; -use Surfnet\Stepup\Configuration\Event\SsoOn2faOptionChangedEvent; use Surfnet\StepupMiddleware\GatewayBundle\Entity\InstitutionConfiguration; use Surfnet\StepupMiddleware\GatewayBundle\Repository\InstitutionConfigurationRepository; diff --git a/src/Surfnet/StepupMiddleware/GatewayBundle/Projector/SamlEntityProjector.php b/src/Surfnet/StepupMiddleware/GatewayBundle/Projector/SamlEntityProjector.php index c3c442ec0..c00a6bba5 100644 --- a/src/Surfnet/StepupMiddleware/GatewayBundle/Projector/SamlEntityProjector.php +++ b/src/Surfnet/StepupMiddleware/GatewayBundle/Projector/SamlEntityProjector.php @@ -18,10 +18,10 @@ namespace Surfnet\StepupMiddleware\GatewayBundle\Projector; -use Surfnet\Stepup\Identity\Event\IdentityForgottenEvent; -use Surfnet\Stepup\Projector\Projector; use Surfnet\Stepup\Configuration\Event\IdentityProvidersUpdatedEvent; use Surfnet\Stepup\Configuration\Event\ServiceProvidersUpdatedEvent; +use Surfnet\Stepup\Identity\Event\IdentityForgottenEvent; +use Surfnet\Stepup\Projector\Projector; use Surfnet\StepupMiddleware\GatewayBundle\Entity\SamlEntity; use Surfnet\StepupMiddleware\GatewayBundle\Entity\SamlEntityRepository; diff --git a/src/Surfnet/StepupMiddleware/GatewayBundle/Projector/SecondFactorProjector.php b/src/Surfnet/StepupMiddleware/GatewayBundle/Projector/SecondFactorProjector.php index 0d5bba432..a3ff3f326 100644 --- a/src/Surfnet/StepupMiddleware/GatewayBundle/Projector/SecondFactorProjector.php +++ b/src/Surfnet/StepupMiddleware/GatewayBundle/Projector/SecondFactorProjector.php @@ -18,7 +18,6 @@ namespace Surfnet\StepupMiddleware\GatewayBundle\Projector; -use Surfnet\Stepup\Projector\Projector; use Surfnet\Stepup\Identity\Event\CompliedWithVettedSecondFactorRevocationEvent; use Surfnet\Stepup\Identity\Event\IdentityForgottenEvent; use Surfnet\Stepup\Identity\Event\LocalePreferenceExpressedEvent; @@ -28,6 +27,7 @@ use Surfnet\Stepup\Identity\Event\VettedSecondFactorRevokedEvent; use Surfnet\Stepup\Identity\Event\YubikeySecondFactorBootstrappedEvent; use Surfnet\Stepup\Identity\Value\VettingType; +use Surfnet\Stepup\Projector\Projector; use Surfnet\StepupMiddleware\GatewayBundle\Entity\SecondFactor; use Surfnet\StepupMiddleware\GatewayBundle\Exception\RuntimeException; use Surfnet\StepupMiddleware\GatewayBundle\Repository\SecondFactorRepository; diff --git a/src/Surfnet/StepupMiddleware/GatewayBundle/Projector/WhitelistProjector.php b/src/Surfnet/StepupMiddleware/GatewayBundle/Projector/WhitelistProjector.php index 7e2716429..24c08f690 100644 --- a/src/Surfnet/StepupMiddleware/GatewayBundle/Projector/WhitelistProjector.php +++ b/src/Surfnet/StepupMiddleware/GatewayBundle/Projector/WhitelistProjector.php @@ -19,11 +19,11 @@ namespace Surfnet\StepupMiddleware\GatewayBundle\Projector; use Surfnet\Stepup\Identity\Event\IdentityForgottenEvent; -use Surfnet\Stepup\Projector\Projector; use Surfnet\Stepup\Identity\Event\InstitutionsAddedToWhitelistEvent; use Surfnet\Stepup\Identity\Event\InstitutionsRemovedFromWhitelistEvent; use Surfnet\Stepup\Identity\Event\WhitelistCreatedEvent; use Surfnet\Stepup\Identity\Event\WhitelistReplacedEvent; +use Surfnet\Stepup\Projector\Projector; use Surfnet\StepupMiddleware\GatewayBundle\Entity\WhitelistEntry; use Surfnet\StepupMiddleware\GatewayBundle\Repository\WhitelistEntryRepository; diff --git a/src/Surfnet/StepupMiddleware/ManagementBundle/Configuration/Projector/EmailTemplatesProjector.php b/src/Surfnet/StepupMiddleware/ManagementBundle/Configuration/Projector/EmailTemplatesProjector.php index 91cef55bd..46b0959a8 100644 --- a/src/Surfnet/StepupMiddleware/ManagementBundle/Configuration/Projector/EmailTemplatesProjector.php +++ b/src/Surfnet/StepupMiddleware/ManagementBundle/Configuration/Projector/EmailTemplatesProjector.php @@ -18,9 +18,9 @@ namespace Surfnet\StepupMiddleware\ManagementBundle\Configuration\Projector; +use Surfnet\Stepup\Configuration\Event\EmailTemplatesUpdatedEvent; use Surfnet\Stepup\Identity\Event\IdentityForgottenEvent; use Surfnet\Stepup\Projector\Projector; -use Surfnet\Stepup\Configuration\Event\EmailTemplatesUpdatedEvent; use Surfnet\StepupMiddleware\ManagementBundle\Configuration\Entity\EmailTemplate; use Surfnet\StepupMiddleware\ManagementBundle\Configuration\Repository\EmailTemplateRepository; diff --git a/src/Surfnet/StepupMiddleware/ManagementBundle/Configuration/Service/EmailTemplateService.php b/src/Surfnet/StepupMiddleware/ManagementBundle/Configuration/Service/EmailTemplateService.php index 30b5cd606..ac58d945a 100644 --- a/src/Surfnet/StepupMiddleware/ManagementBundle/Configuration/Service/EmailTemplateService.php +++ b/src/Surfnet/StepupMiddleware/ManagementBundle/Configuration/Service/EmailTemplateService.php @@ -22,6 +22,7 @@ use Surfnet\StepupMiddleware\CommandHandlingBundle\Configuration\Dto\EmailTemplate; use Surfnet\StepupMiddleware\CommandHandlingBundle\Configuration\Service\EmailTemplateService as CommandHandlingEmailTemplateService; use Surfnet\StepupMiddleware\CommandHandlingBundle\Exception\RuntimeException; +use Surfnet\StepupMiddleware\ManagementBundle\Configuration\Entity\EmailTemplate as EmailTemplateEntity; use Surfnet\StepupMiddleware\ManagementBundle\Configuration\Repository\EmailTemplateRepository; final readonly class EmailTemplateService implements CommandHandlingEmailTemplateService @@ -45,7 +46,7 @@ public function findByName(string $name, string $preferredLocale, string $fallba throw new RuntimeException($e->getMessage(), 0, $e); } - if (!$emailTemplateEntity instanceof \Surfnet\StepupMiddleware\ManagementBundle\Configuration\Entity\EmailTemplate) { + if (!$emailTemplateEntity instanceof EmailTemplateEntity) { return null; } diff --git a/src/Surfnet/StepupMiddleware/ManagementBundle/Controller/ConfigurationController.php b/src/Surfnet/StepupMiddleware/ManagementBundle/Controller/ConfigurationController.php index 21f34bc25..03c49618b 100644 --- a/src/Surfnet/StepupMiddleware/ManagementBundle/Controller/ConfigurationController.php +++ b/src/Surfnet/StepupMiddleware/ManagementBundle/Controller/ConfigurationController.php @@ -20,7 +20,6 @@ use DateTime; use Ramsey\Uuid\Uuid; -use Surfnet\Stepup\Helper\JsonHelper; use Surfnet\StepupMiddleware\ApiBundle\Exception\BadCommandRequestException; use Surfnet\StepupMiddleware\CommandHandlingBundle\Command\AbstractCommand; use Surfnet\StepupMiddleware\CommandHandlingBundle\Configuration\Command\UpdateConfigurationCommand; diff --git a/src/Surfnet/StepupMiddleware/ManagementBundle/Controller/RightToBeForgottenController.php b/src/Surfnet/StepupMiddleware/ManagementBundle/Controller/RightToBeForgottenController.php index 4e81943f5..0cd9f9564 100644 --- a/src/Surfnet/StepupMiddleware/ManagementBundle/Controller/RightToBeForgottenController.php +++ b/src/Surfnet/StepupMiddleware/ManagementBundle/Controller/RightToBeForgottenController.php @@ -24,6 +24,7 @@ use Surfnet\Stepup\Identity\Value\Institution; use Surfnet\Stepup\Identity\Value\NameId; use Surfnet\StepupMiddleware\ApiBundle\Identity\Service\IdentityService; +use Surfnet\StepupMiddleware\ApiBundle\Identity\Value\RegistrationAuthorityCredentials; use Surfnet\StepupMiddleware\CommandHandlingBundle\Command\AbstractCommand; use Surfnet\StepupMiddleware\CommandHandlingBundle\Identity\Command\ForgetIdentityCommand; use Surfnet\StepupMiddleware\CommandHandlingBundle\Pipeline\TransactionAwarePipeline; @@ -92,7 +93,7 @@ private function assertMayForget(NameId $nameId, Institution $institution): void $credentials = $this->identityService->findRegistrationAuthorityCredentialsByNameIdAndInstitution($nameId, $institution); - if (!$credentials instanceof \Surfnet\StepupMiddleware\ApiBundle\Identity\Value\RegistrationAuthorityCredentials) { + if (!$credentials instanceof RegistrationAuthorityCredentials) { return; } diff --git a/src/Surfnet/StepupMiddleware/ManagementBundle/Exception/InvalidArgumentException.php b/src/Surfnet/StepupMiddleware/ManagementBundle/Exception/InvalidArgumentException.php index 2f8d2533c..6d2d06e6c 100644 --- a/src/Surfnet/StepupMiddleware/ManagementBundle/Exception/InvalidArgumentException.php +++ b/src/Surfnet/StepupMiddleware/ManagementBundle/Exception/InvalidArgumentException.php @@ -18,6 +18,7 @@ namespace Surfnet\StepupMiddleware\ManagementBundle\Exception; +// phpcs:ignore SlevomatCodingStandard.Namespaces.ReferenceUsedNamesOnly class InvalidArgumentException extends \InvalidArgumentException implements Exception { public static function invalidType(string $expected, string $parameterName, mixed $parameter): self diff --git a/src/Surfnet/StepupMiddleware/ManagementBundle/Exception/RuntimeException.php b/src/Surfnet/StepupMiddleware/ManagementBundle/Exception/RuntimeException.php index 32d642f20..08980614a 100644 --- a/src/Surfnet/StepupMiddleware/ManagementBundle/Exception/RuntimeException.php +++ b/src/Surfnet/StepupMiddleware/ManagementBundle/Exception/RuntimeException.php @@ -18,6 +18,7 @@ namespace Surfnet\StepupMiddleware\ManagementBundle\Exception; +// phpcs:ignore SlevomatCodingStandard.Namespaces.ReferenceUsedNamesOnly class RuntimeException extends \RuntimeException implements Exception { } diff --git a/src/Surfnet/StepupMiddleware/MiddlewareBundle/Service/BootstrapCommandService.php b/src/Surfnet/StepupMiddleware/MiddlewareBundle/Service/BootstrapCommandService.php index 55e344414..18f2512e0 100644 --- a/src/Surfnet/StepupMiddleware/MiddlewareBundle/Service/BootstrapCommandService.php +++ b/src/Surfnet/StepupMiddleware/MiddlewareBundle/Service/BootstrapCommandService.php @@ -22,6 +22,7 @@ use Surfnet\Stepup\Configuration\Value\Institution as ConfigurationInstitution; use Surfnet\Stepup\Identity\Value\Institution; use Surfnet\Stepup\Identity\Value\NameId; +use Surfnet\StepupMiddleware\ApiBundle\Configuration\Entity\InstitutionConfigurationOptions; use Surfnet\StepupMiddleware\ApiBundle\Configuration\Repository\InstitutionConfigurationOptionsRepository; use Surfnet\StepupMiddleware\ApiBundle\Identity\Entity\Identity; use Surfnet\StepupMiddleware\ApiBundle\Identity\Entity\VettedSecondFactor; @@ -89,7 +90,7 @@ public function requiresMailVerification(string $institution): bool $configuration = $this->institutionConfigurationRepository->findConfigurationOptionsFor( new ConfigurationInstitution($institution), ); - if ($configuration instanceof \Surfnet\StepupMiddleware\ApiBundle\Configuration\Entity\InstitutionConfigurationOptions) { + if ($configuration instanceof InstitutionConfigurationOptions) { return $configuration->verifyEmailOption->isEnabled(); } return true; diff --git a/src/Surfnet/StepupMiddleware/MiddlewareBundle/Service/EventStreamReplayer.php b/src/Surfnet/StepupMiddleware/MiddlewareBundle/Service/EventStreamReplayer.php index d54d41318..1047487e0 100644 --- a/src/Surfnet/StepupMiddleware/MiddlewareBundle/Service/EventStreamReplayer.php +++ b/src/Surfnet/StepupMiddleware/MiddlewareBundle/Service/EventStreamReplayer.php @@ -20,7 +20,6 @@ use Broadway\Domain\DomainMessage; use Doctrine\DBAL\Exception\InvalidArgumentException; -use Exception; use Surfnet\StepupMiddleware\CommandHandlingBundle\EventHandling\BufferedEventBus; use Surfnet\StepupMiddleware\MiddlewareBundle\EventSourcing\DBALEventHydrator; use Symfony\Component\Console\Helper\ProgressBar; From 0e8cef36125cea774b2c146ec5574d74ef46ca81 Mon Sep 17 00:00:00 2001 From: Johan Kromhout Date: Mon, 24 Nov 2025 15:37:07 +0100 Subject: [PATCH 07/32] Fix deprecation: use getStringTypeDeclarationSQL instead of getVarcharTypeDeclarationSQL --- ci/qa/rector.php | 2 +- .../ApiBundle/Doctrine/Type/AuthorityRoleType.php | 2 +- .../StepupMiddleware/ApiBundle/Doctrine/Type/CommonNameType.php | 2 +- .../ApiBundle/Doctrine/Type/ConfigurationInstitutionType.php | 2 +- .../ApiBundle/Doctrine/Type/DocumentNumberType.php | 2 +- .../StepupMiddleware/ApiBundle/Doctrine/Type/EmailType.php | 2 +- .../ApiBundle/Doctrine/Type/InstitutionRoleType.php | 2 +- .../ApiBundle/Doctrine/Type/InstitutionType.php | 2 +- .../StepupMiddleware/ApiBundle/Doctrine/Type/LocaleType.php | 2 +- .../StepupMiddleware/ApiBundle/Doctrine/Type/NameIdType.php | 2 +- .../ApiBundle/Doctrine/Type/RaLocationNameType.php | 2 +- .../ApiBundle/Doctrine/Type/SecondFactorTypeType.php | 2 +- 12 files changed, 12 insertions(+), 12 deletions(-) diff --git a/ci/qa/rector.php b/ci/qa/rector.php index 4d0d9be62..85d6a6ce0 100644 --- a/ci/qa/rector.php +++ b/ci/qa/rector.php @@ -14,7 +14,7 @@ // uncomment to reach your current PHP version // ->withPhpSets() // ->withAttributesSets(all: true) - ->withComposerBased(symfony: true) + ->withComposerBased(symfony: true, twig: true, doctrine: true, phpunit: true) // ->withTypeCoverageLevel(0) // ->withDeadCodeLevel(0) // ->withCodeQualityLevel(0) diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/AuthorityRoleType.php b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/AuthorityRoleType.php index db0b778e6..d55845991 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/AuthorityRoleType.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/AuthorityRoleType.php @@ -37,7 +37,7 @@ public function getSQLDeclaration(array $column, AbstractPlatform $platform): st $column['length'] = 20; } - return $platform->getVarcharTypeDeclarationSQL($column); + return $platform->getStringTypeDeclarationSQL($column); } public function convertToDatabaseValue($value, AbstractPlatform $platform): ?string diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/CommonNameType.php b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/CommonNameType.php index 5d6f0a290..9252c8da5 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/CommonNameType.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/CommonNameType.php @@ -34,7 +34,7 @@ class CommonNameType extends Type public function getSQLDeclaration(array $column, AbstractPlatform $platform): string { - return $platform->getVarcharTypeDeclarationSQL($column); + return $platform->getStringTypeDeclarationSQL($column); } public function convertToDatabaseValue($value, AbstractPlatform $platform): ?string diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/ConfigurationInstitutionType.php b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/ConfigurationInstitutionType.php index af3c2f0a7..18de4be50 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/ConfigurationInstitutionType.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/ConfigurationInstitutionType.php @@ -33,7 +33,7 @@ class ConfigurationInstitutionType extends Type public function getSQLDeclaration(array $column, AbstractPlatform $platform): string { - return $platform->getVarcharTypeDeclarationSQL($column); + return $platform->getStringTypeDeclarationSQL($column); } public function convertToDatabaseValue($value, AbstractPlatform $platform): mixed diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/DocumentNumberType.php b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/DocumentNumberType.php index 2393a0335..49eea8447 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/DocumentNumberType.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/DocumentNumberType.php @@ -35,7 +35,7 @@ class DocumentNumberType extends Type public function getSQLDeclaration(array $column, AbstractPlatform $platform): string { - return $platform->getVarcharTypeDeclarationSQL($column); + return $platform->getStringTypeDeclarationSQL($column); } /** diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/EmailType.php b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/EmailType.php index 90e3b1ac7..330510131 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/EmailType.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/EmailType.php @@ -33,7 +33,7 @@ class EmailType extends Type public function getSQLDeclaration(array $column, AbstractPlatform $platform): string { - return $platform->getVarcharTypeDeclarationSQL($column); + return $platform->getStringTypeDeclarationSQL($column); } public function convertToDatabaseValue($value, AbstractPlatform $platform): ?string diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/InstitutionRoleType.php b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/InstitutionRoleType.php index 2630e86be..b300d21da 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/InstitutionRoleType.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/InstitutionRoleType.php @@ -33,7 +33,7 @@ class InstitutionRoleType extends Type public function getSQLDeclaration(array $column, AbstractPlatform $platform): string { - return $platform->getVarcharTypeDeclarationSQL($column); + return $platform->getStringTypeDeclarationSQL($column); } public function convertToDatabaseValue($value, AbstractPlatform $platform): mixed diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/InstitutionType.php b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/InstitutionType.php index d4570b01c..1de1dc879 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/InstitutionType.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/InstitutionType.php @@ -33,7 +33,7 @@ class InstitutionType extends Type public function getSQLDeclaration(array $column, AbstractPlatform $platform): string { - return $platform->getVarcharTypeDeclarationSQL($column); + return $platform->getStringTypeDeclarationSQL($column); } public function convertToDatabaseValue($value, AbstractPlatform $platform): ?string diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/LocaleType.php b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/LocaleType.php index a46588ecf..1520fd75c 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/LocaleType.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/LocaleType.php @@ -36,7 +36,7 @@ class LocaleType extends Type public function getSQLDeclaration(array $column, AbstractPlatform $platform): string { - return $platform->getVarcharTypeDeclarationSQL($column); + return $platform->getStringTypeDeclarationSQL($column); } public function convertToDatabaseValue($value, AbstractPlatform $platform): ?string diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/NameIdType.php b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/NameIdType.php index 83c31c081..f1c4138d9 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/NameIdType.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/NameIdType.php @@ -33,7 +33,7 @@ class NameIdType extends Type public function getSQLDeclaration(array $column, AbstractPlatform $platform): string { - return $platform->getVarcharTypeDeclarationSQL($column); + return $platform->getStringTypeDeclarationSQL($column); } public function convertToDatabaseValue($value, AbstractPlatform $platform): ?string diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/RaLocationNameType.php b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/RaLocationNameType.php index bdc0efdcc..eefeefad1 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/RaLocationNameType.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/RaLocationNameType.php @@ -33,7 +33,7 @@ class RaLocationNameType extends Type public function getSQLDeclaration(array $column, AbstractPlatform $platform): string { - return $platform->getVarcharTypeDeclarationSQL([]); + return $platform->getStringTypeDeclarationSQL([]); } public function convertToDatabaseValue($value, AbstractPlatform $platform): mixed diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/SecondFactorTypeType.php b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/SecondFactorTypeType.php index f6507e266..74d2a6a48 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/SecondFactorTypeType.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/SecondFactorTypeType.php @@ -33,7 +33,7 @@ class SecondFactorTypeType extends Type public function getSQLDeclaration(array $column, AbstractPlatform $platform): string { - return $platform->getVarcharTypeDeclarationSQL($column); + return $platform->getStringTypeDeclarationSQL($column); } public function convertToDatabaseValue($value, AbstractPlatform $platform): ?string From 74e1cf5d6c066ab29d6df58085c02f46480f14b4 Mon Sep 17 00:00:00 2001 From: Johan Kromhout Date: Mon, 24 Nov 2025 16:03:10 +0100 Subject: [PATCH 08/32] Upgrade to PHPUnit 10 (for attribute support) & transition from annotations to attributes for everything. --- ci/qa/phpcs.xml | 8 +- ci/qa/phpunit.xml | 9 - ci/qa/rector.php | 2 +- composer.json | 9 +- composer.lock | 674 ++++++++---------- ...entSerializationAndDeserializationTest.php | 11 +- .../InstitutionConfigurationTest.php | 42 +- .../Value/AllowedSecondFactorListTest.php | 62 +- .../Value/ContactInformationTest.php | 6 +- .../InstitutionAuthorizationOptionTest.php | 62 +- .../Value/InstitutionConfigurationIdTest.php | 41 +- .../Value/InstitutionRoleTest.php | 20 +- .../Value/InstitutionSetTest.php | 50 +- .../Configuration/Value/InstitutionTest.php | 16 +- .../Configuration/Value/LocationTest.php | 6 +- .../Configuration/Value/RaLocationIdTest.php | 28 +- .../Value/RaLocationListTest.php | 42 +- .../Value/RaLocationNameTest.php | 22 +- .../ShowRaaContactInformationOptionTest.php | 24 +- .../Value/UseRaLocationsOptionTest.php | 24 +- .../Stepup/Tests/DateTime/DateTimeTest.php | 46 +- .../Stepup/Tests/Helper/JsonHelperTest.php | 12 +- .../Tests/Helper/UserDataFilterTest.php | 6 +- .../Collection/InstitutionCollectionTest.php | 65 +- .../Entity/ConfigurableSettingsTest.php | 14 +- .../Entity/SecondFactorCollectionTest.php | 6 +- ...entSerializationAndDeserializationTest.php | 24 +- .../Identity/Event/ForgettableEventsTest.php | 6 +- ...entSerializationAndDeserializationTest.php | 10 +- .../Tests/Identity/Value/CommonNameTest.php | 16 +- .../Identity/Value/ContactInformationTest.php | 6 +- .../Identity/Value/DocumentNumberTest.php | 16 +- .../Stepup/Tests/Identity/Value/EmailTest.php | 26 +- .../Value/EmailVerificationWindowTest.php | 27 +- .../Tests/Identity/Value/GssfIdTest.php | 16 +- .../Tests/Identity/Value/InstitutionTest.php | 16 +- .../Tests/Identity/Value/LocationTest.php | 6 +- .../Tests/Identity/Value/PhoneNumberTest.php | 16 +- .../RecoveryTokenIdentifierFactoryTest.php | 4 +- .../Value/RegistrationAuthorityRoleTest.php | 6 +- .../Tests/Identity/Value/SafeStoreTest.php | 8 +- .../SecondFactorIdentifierFactoryTest.php | 6 +- .../Identity/Value/StepupProviderTest.php | 16 +- .../Tests/Identity/Value/TimeFrameTest.php | 16 +- .../Identity/Value/YubikeyPublicIdTest.php | 26 +- ...utionAuthorizationRepositoryFilterTest.php | 6 +- .../AuthorizationContextServiceTest.php | 18 +- .../CommandAuthorizationServiceTest.php | 42 +- .../Entity/ConfiguredInstitutionTest.php | 6 +- .../Configuration/Entity/RaLocationTest.php | 6 +- .../Service/AllowedSecondFactorMapTest.php | 12 +- .../InstitutionAuthorizationOptionMapTest.php | 12 +- .../Doctrine/Type/AuthorityRoleTypeTest.php | 30 +- .../Doctrine/Type/CommonNameTypeTest.php | 30 +- ...onfigurationContactInformationTypeTest.php | 39 +- .../Type/ConfigurationInstitutionTypeTest.php | 39 +- .../Type/ConfigurationLocationTypeTest.php | 39 +- .../Type/ContactInformationTypeTest.php | 30 +- .../Tests/Doctrine/Type/DateTimeTypeTest.php | 31 +- .../Doctrine/Type/DocumentNumberTypeTest.php | 39 +- .../Tests/Doctrine/Type/EmailTypeTest.php | 30 +- .../Doctrine/Type/InstitutionRoleTypeTest.php | 30 +- .../Doctrine/Type/InstitutionTypeTest.php | 30 +- .../Tests/Doctrine/Type/LocaleTypeTest.php | 30 +- .../Tests/Doctrine/Type/LocationTypeTest.php | 30 +- .../Tests/Doctrine/Type/NameIdTypeTest.php | 36 +- .../NumberOfTokensPerIdentityTypeTest.php | 33 +- .../Doctrine/Type/RaLocationNameTypeTest.php | 39 +- .../Type/RecoveryTokenStatusTypeTest.php | 40 +- .../Type/SecondFactorStatusTypeTest.php | 40 +- .../Doctrine/Type/SelfVetOptionTypeTest.php | 33 +- ...howRaaContactInformationOptionTypeTest.php | 33 +- .../Type/UseRaLocationsOptionTypeTest.php | 33 +- .../Type/VerifyEmailOptionTypeTest.php | 33 +- .../ConfiguredInstitutionControllerTest.php | 37 +- .../Tests/Endpoint/SraaControllerTest.php | 37 +- .../Projector/AuditLogProjectorTest.php | 8 +- .../AuthorizedInstitutionCollectionTest.php | 12 +- .../Request/CommandValueResolverTest.php | 42 +- .../Request/InstitutionValueResolverTest.php | 12 +- .../Tests/Service/DeprovisionServiceTest.php | 8 +- .../Tests/Command/AbstractCommandTest.php | 6 +- .../ConfigurationCommandHandlerTest.php | 12 +- ...itutionConfigurationCommandHandlerTest.php | 128 ++-- .../InstitutionConfigurationProcessorTest.php | 64 +- .../Tests/DateTimeHelperTest.php | 22 +- .../EventHandling/BufferedEventBusTest.php | 22 +- .../IdentityCommandHandlerMoveTokenTest.php | 10 +- ...tyCommandHandlerSelfAssertedTokensTest.php | 76 +- .../IdentityCommandHandlerTest.php | 216 ++---- ...mmandHandlerUniqueTypeRegistrationTest.php | 22 +- ...egistrationAuthorityCommandHandlerTest.php | 128 ++-- .../RightToBeForgottenCommandHandlerTest.php | 44 +- .../SecondFactorRevocationTest.php | 50 +- .../WhitelistCommandHandlerTest.php | 48 +- .../Mockery/HasInstitutionMatcherTest.php | 53 +- .../Tests/Pipeline/AuthorizingStageTest.php | 28 +- .../Tests/Pipeline/DispatchStageTest.php | 6 +- .../Pipeline/EventDispatchingStageTest.php | 12 +- .../Tests/Pipeline/StagedPipelineTest.php | 18 +- .../Tests/Pipeline/ValidationStageTest.php | 12 +- .../RecoveryTokenEmailProcessorTest.php | 32 +- .../SensitiveDataMessageStreamTest.php | 56 +- .../Tests/SensitiveData/SensitiveDataTest.php | 10 +- .../Service/SensitiveDataServiceTest.php | 6 +- .../Twig/BackwardsCompatibleExtensionTest.php | 10 +- .../Tests/Value/InstitutionTest.php | 12 +- .../ConfigurationControllerTest.php | 35 +- ...InstitutionConfigurationControllerTest.php | 47 +- .../Validator/ConfigurationValidationTest.php | 10 +- ...nfigureInstitutionRequestValidatorTest.php | 28 +- .../EventSourcing/EventCollectionTest.php | 53 +- .../EventSourcing/ProjectorCollectionTest.php | 24 +- .../MappedInstitutionConfigurationTest.php | 36 +- ...ndFactorDisplayNameResolverServiceTest.php | 8 +- symfony.lock | 6 - .../AuthorizationRepositoryMatrixTest.php | 10 +- 117 files changed, 1441 insertions(+), 2498 deletions(-) diff --git a/ci/qa/phpcs.xml b/ci/qa/phpcs.xml index 873e6c356..a5f85f9c1 100644 --- a/ci/qa/phpcs.xml +++ b/ci/qa/phpcs.xml @@ -6,10 +6,7 @@ src/*/*Bundle/Resources - src/*/*Bundle/Tests src/*/Bundle/*Bundle/Resources - src/*/Bundle/*Bundle/Tests - */Tests/* */Migrations/* @@ -21,6 +18,11 @@ + */Tests/* + + + + */Tests/* diff --git a/ci/qa/phpunit.xml b/ci/qa/phpunit.xml index 8bbcf9a74..91193bae7 100644 --- a/ci/qa/phpunit.xml +++ b/ci/qa/phpunit.xml @@ -8,11 +8,6 @@ bootstrap="../../tests/bootstrap.php" cacheDirectory="../../var/qa/phpunit.cache" > - - - ../../src - - @@ -29,8 +24,4 @@ ../../tests/database - - - - diff --git a/ci/qa/rector.php b/ci/qa/rector.php index 85d6a6ce0..2fc961178 100644 --- a/ci/qa/rector.php +++ b/ci/qa/rector.php @@ -13,7 +13,7 @@ ]) // uncomment to reach your current PHP version // ->withPhpSets() -// ->withAttributesSets(all: true) + ->withAttributesSets(all: true) ->withComposerBased(symfony: true, twig: true, doctrine: true, phpunit: true) // ->withTypeCoverageLevel(0) // ->withDeadCodeLevel(0) diff --git a/composer.json b/composer.json index f9c84fcec..b31e9497c 100644 --- a/composer.json +++ b/composer.json @@ -57,6 +57,7 @@ "require-dev": { "doctrine/data-fixtures": "^1.8.1", "doctrine/doctrine-fixtures-bundle": "^3.7.1", + "irstea/phpcpd-shim": "^6.0", "liip/test-fixtures-bundle": "^2.9.2", "malukenho/docheader": "^1.1", "mockery/mockery": "1.7.x-dev", @@ -67,11 +68,11 @@ "phpstan/phpstan-doctrine": "^2.0", "phpstan/phpstan-mockery": "^2.0", "phpstan/phpstan-symfony": "^2.0", - "phpunit/phpunit": "^9.6.22", + "phpunit/php-code-coverage": "^10.1", + "phpunit/phpunit": "^10", "rector/rector": "^2.2", - "sebastian/phpcpd": "^6.0.3", - "slevomat/coding-standard": "^8.22", - "squizlabs/php_codesniffer": "^3.11.3", + "slevomat/coding-standard": "^8.25", + "squizlabs/php_codesniffer": "^4", "symfony/browser-kit": "6.4.*", "symfony/phpunit-bridge": "^6.4.16", "symfony/stopwatch": "6.4.*", diff --git a/composer.lock b/composer.lock index 00055b3c4..fae09bac2 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "a9ddcee786f044a81b5e3e7b5ba88691", + "content-hash": "51c85a7cb6dab026497edffa7aac650d", "packages": [ { "name": "beberlei/assert", @@ -9084,6 +9084,48 @@ }, "time": "2025-04-30T06:54:44+00:00" }, + { + "name": "irstea/phpcpd-shim", + "version": "6.0.3", + "source": { + "type": "git", + "url": "https://gitlab.irstea.fr/pole-is/tools/phpcpd-shim.git", + "reference": "5829d11d1379fd92176b7e2105060c7f09f4fdda" + }, + "require": { + "ext-dom": "*", + "php": ">=7.3" + }, + "replace": { + "sebastian/phpcpd": "self.version" + }, + "bin": [ + "phpcpd" + ], + "type": "library", + "autoload": { + "exclude-from-classmap": [ + "phpcpd" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Shim repository for sebastian/phpcpd", + "homepage": "https://github.com/sebastianbergmann/phpcpd", + "keywords": [ + "shim" + ], + "time": "2020-12-08T03:20:09+00:00" + }, { "name": "liip/test-fixtures-bundle", "version": "2.10.0", @@ -10443,16 +10485,16 @@ }, { "name": "phpunit/php-code-coverage", - "version": "9.2.32", + "version": "10.1.16", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "85402a822d1ecf1db1096959413d35e1c37cf1a5" + "reference": "7e308268858ed6baedc8704a304727d20bc07c77" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/85402a822d1ecf1db1096959413d35e1c37cf1a5", - "reference": "85402a822d1ecf1db1096959413d35e1c37cf1a5", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/7e308268858ed6baedc8704a304727d20bc07c77", + "reference": "7e308268858ed6baedc8704a304727d20bc07c77", "shasum": "" }, "require": { @@ -10460,18 +10502,18 @@ "ext-libxml": "*", "ext-xmlwriter": "*", "nikic/php-parser": "^4.19.1 || ^5.1.0", - "php": ">=7.3", - "phpunit/php-file-iterator": "^3.0.6", - "phpunit/php-text-template": "^2.0.4", - "sebastian/code-unit-reverse-lookup": "^2.0.3", - "sebastian/complexity": "^2.0.3", - "sebastian/environment": "^5.1.5", - "sebastian/lines-of-code": "^1.0.4", - "sebastian/version": "^3.0.2", + "php": ">=8.1", + "phpunit/php-file-iterator": "^4.1.0", + "phpunit/php-text-template": "^3.0.1", + "sebastian/code-unit-reverse-lookup": "^3.0.0", + "sebastian/complexity": "^3.2.0", + "sebastian/environment": "^6.1.0", + "sebastian/lines-of-code": "^2.0.2", + "sebastian/version": "^4.0.1", "theseer/tokenizer": "^1.2.3" }, "require-dev": { - "phpunit/phpunit": "^9.6" + "phpunit/phpunit": "^10.1" }, "suggest": { "ext-pcov": "PHP extension that provides line coverage", @@ -10480,7 +10522,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "9.2.x-dev" + "dev-main": "10.1.x-dev" } }, "autoload": { @@ -10509,7 +10551,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.32" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.16" }, "funding": [ { @@ -10517,32 +10559,32 @@ "type": "github" } ], - "time": "2024-08-22T04:23:01+00:00" + "time": "2024-08-22T04:31:57+00:00" }, { "name": "phpunit/php-file-iterator", - "version": "3.0.6", + "version": "4.1.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" + "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/a95037b6d9e608ba092da1b23931e537cadc3c3c", + "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-main": "4.0-dev" } }, "autoload": { @@ -10569,7 +10611,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" + "security": "https://github.com/sebastianbergmann/php-file-iterator/security/policy", + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/4.1.0" }, "funding": [ { @@ -10577,28 +10620,28 @@ "type": "github" } ], - "time": "2021-12-02T12:48:52+00:00" + "time": "2023-08-31T06:24:48+00:00" }, { "name": "phpunit/php-invoker", - "version": "3.1.1", + "version": "4.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" + "reference": "f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", + "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7", + "reference": "f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { "ext-pcntl": "*", - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "suggest": { "ext-pcntl": "*" @@ -10606,7 +10649,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.1-dev" + "dev-main": "4.0-dev" } }, "autoload": { @@ -10632,7 +10675,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-invoker/issues", - "source": "https://github.com/sebastianbergmann/php-invoker/tree/3.1.1" + "source": "https://github.com/sebastianbergmann/php-invoker/tree/4.0.0" }, "funding": [ { @@ -10640,32 +10683,32 @@ "type": "github" } ], - "time": "2020-09-28T05:58:55+00:00" + "time": "2023-02-03T06:56:09+00:00" }, { "name": "phpunit/php-text-template", - "version": "2.0.4", + "version": "3.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" + "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/0c7b06ff49e3d5072f057eb1fa59258bf287a748", + "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-main": "3.0-dev" } }, "autoload": { @@ -10691,7 +10734,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" + "security": "https://github.com/sebastianbergmann/php-text-template/security/policy", + "source": "https://github.com/sebastianbergmann/php-text-template/tree/3.0.1" }, "funding": [ { @@ -10699,32 +10743,32 @@ "type": "github" } ], - "time": "2020-10-26T05:33:50+00:00" + "time": "2023-08-31T14:07:24+00:00" }, { "name": "phpunit/php-timer", - "version": "5.0.3", + "version": "6.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" + "reference": "e2a2d67966e740530f4a3343fe2e030ffdc1161d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/e2a2d67966e740530f4a3343fe2e030ffdc1161d", + "reference": "e2a2d67966e740530f4a3343fe2e030ffdc1161d", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "5.0-dev" + "dev-main": "6.0-dev" } }, "autoload": { @@ -10750,7 +10794,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-timer/issues", - "source": "https://github.com/sebastianbergmann/php-timer/tree/5.0.3" + "source": "https://github.com/sebastianbergmann/php-timer/tree/6.0.0" }, "funding": [ { @@ -10758,24 +10802,23 @@ "type": "github" } ], - "time": "2020-10-26T13:16:10+00:00" + "time": "2023-02-03T06:57:52+00:00" }, { "name": "phpunit/phpunit", - "version": "9.6.29", + "version": "10.5.58", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "9ecfec57835a5581bc888ea7e13b51eb55ab9dd3" + "reference": "e24fb46da450d8e6a5788670513c1af1424f16ca" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/9ecfec57835a5581bc888ea7e13b51eb55ab9dd3", - "reference": "9ecfec57835a5581bc888ea7e13b51eb55ab9dd3", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/e24fb46da450d8e6a5788670513c1af1424f16ca", + "reference": "e24fb46da450d8e6a5788670513c1af1424f16ca", "shasum": "" }, "require": { - "doctrine/instantiator": "^1.5.0 || ^2", "ext-dom": "*", "ext-json": "*", "ext-libxml": "*", @@ -10785,27 +10828,26 @@ "myclabs/deep-copy": "^1.13.4", "phar-io/manifest": "^2.0.4", "phar-io/version": "^3.2.1", - "php": ">=7.3", - "phpunit/php-code-coverage": "^9.2.32", - "phpunit/php-file-iterator": "^3.0.6", - "phpunit/php-invoker": "^3.1.1", - "phpunit/php-text-template": "^2.0.4", - "phpunit/php-timer": "^5.0.3", - "sebastian/cli-parser": "^1.0.2", - "sebastian/code-unit": "^1.0.8", - "sebastian/comparator": "^4.0.9", - "sebastian/diff": "^4.0.6", - "sebastian/environment": "^5.1.5", - "sebastian/exporter": "^4.0.8", - "sebastian/global-state": "^5.0.8", - "sebastian/object-enumerator": "^4.0.4", - "sebastian/resource-operations": "^3.0.4", - "sebastian/type": "^3.2.1", - "sebastian/version": "^3.0.2" + "php": ">=8.1", + "phpunit/php-code-coverage": "^10.1.16", + "phpunit/php-file-iterator": "^4.1.0", + "phpunit/php-invoker": "^4.0.0", + "phpunit/php-text-template": "^3.0.1", + "phpunit/php-timer": "^6.0.0", + "sebastian/cli-parser": "^2.0.1", + "sebastian/code-unit": "^2.0.0", + "sebastian/comparator": "^5.0.4", + "sebastian/diff": "^5.1.1", + "sebastian/environment": "^6.1.0", + "sebastian/exporter": "^5.1.4", + "sebastian/global-state": "^6.0.2", + "sebastian/object-enumerator": "^5.0.0", + "sebastian/recursion-context": "^5.0.1", + "sebastian/type": "^4.0.0", + "sebastian/version": "^4.0.1" }, "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" + "ext-soap": "To be able to generate mocks based on WSDL files" }, "bin": [ "phpunit" @@ -10813,7 +10855,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "9.6-dev" + "dev-main": "10.5-dev" } }, "autoload": { @@ -10845,7 +10887,7 @@ "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.29" + "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.58" }, "funding": [ { @@ -10869,7 +10911,7 @@ "type": "tidelift" } ], - "time": "2025-09-24T06:29:11+00:00" + "time": "2025-09-28T12:04:46+00:00" }, { "name": "rector/rector", @@ -10933,28 +10975,28 @@ }, { "name": "sebastian/cli-parser", - "version": "1.0.2", + "version": "2.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "2b56bea83a09de3ac06bb18b92f068e60cc6f50b" + "reference": "c34583b87e7b7a8055bf6c450c2c77ce32a24084" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/2b56bea83a09de3ac06bb18b92f068e60cc6f50b", - "reference": "2b56bea83a09de3ac06bb18b92f068e60cc6f50b", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/c34583b87e7b7a8055bf6c450c2c77ce32a24084", + "reference": "c34583b87e7b7a8055bf6c450c2c77ce32a24084", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-main": "2.0-dev" } }, "autoload": { @@ -10977,7 +11019,8 @@ "homepage": "https://github.com/sebastianbergmann/cli-parser", "support": { "issues": "https://github.com/sebastianbergmann/cli-parser/issues", - "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.2" + "security": "https://github.com/sebastianbergmann/cli-parser/security/policy", + "source": "https://github.com/sebastianbergmann/cli-parser/tree/2.0.1" }, "funding": [ { @@ -10985,32 +11028,32 @@ "type": "github" } ], - "time": "2024-03-02T06:27:43+00:00" + "time": "2024-03-02T07:12:49+00:00" }, { "name": "sebastian/code-unit", - "version": "1.0.8", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/code-unit.git", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" + "reference": "a81fee9eef0b7a76af11d121767abc44c104e503" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/a81fee9eef0b7a76af11d121767abc44c104e503", + "reference": "a81fee9eef0b7a76af11d121767abc44c104e503", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-main": "2.0-dev" } }, "autoload": { @@ -11033,7 +11076,7 @@ "homepage": "https://github.com/sebastianbergmann/code-unit", "support": { "issues": "https://github.com/sebastianbergmann/code-unit/issues", - "source": "https://github.com/sebastianbergmann/code-unit/tree/1.0.8" + "source": "https://github.com/sebastianbergmann/code-unit/tree/2.0.0" }, "funding": [ { @@ -11041,32 +11084,32 @@ "type": "github" } ], - "time": "2020-10-26T13:08:54+00:00" + "time": "2023-02-03T06:58:43+00:00" }, { "name": "sebastian/code-unit-reverse-lookup", - "version": "2.0.3", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" + "reference": "5e3a687f7d8ae33fb362c5c0743794bbb2420a1d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/5e3a687f7d8ae33fb362c5c0743794bbb2420a1d", + "reference": "5e3a687f7d8ae33fb362c5c0743794bbb2420a1d", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-main": "3.0-dev" } }, "autoload": { @@ -11088,7 +11131,7 @@ "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", "support": { "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", - "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/2.0.3" + "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/3.0.0" }, "funding": [ { @@ -11096,34 +11139,36 @@ "type": "github" } ], - "time": "2020-09-28T05:30:19+00:00" + "time": "2023-02-03T06:59:15+00:00" }, { "name": "sebastian/comparator", - "version": "4.0.9", + "version": "5.0.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "67a2df3a62639eab2cc5906065e9805d4fd5dfc5" + "reference": "e8e53097718d2b53cfb2aa859b06a41abf58c62e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/67a2df3a62639eab2cc5906065e9805d4fd5dfc5", - "reference": "67a2df3a62639eab2cc5906065e9805d4fd5dfc5", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/e8e53097718d2b53cfb2aa859b06a41abf58c62e", + "reference": "e8e53097718d2b53cfb2aa859b06a41abf58c62e", "shasum": "" }, "require": { - "php": ">=7.3", - "sebastian/diff": "^4.0", - "sebastian/exporter": "^4.0" + "ext-dom": "*", + "ext-mbstring": "*", + "php": ">=8.1", + "sebastian/diff": "^5.0", + "sebastian/exporter": "^5.0" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-main": "5.0-dev" } }, "autoload": { @@ -11162,7 +11207,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/comparator/issues", - "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.9" + "security": "https://github.com/sebastianbergmann/comparator/security/policy", + "source": "https://github.com/sebastianbergmann/comparator/tree/5.0.4" }, "funding": [ { @@ -11182,33 +11228,33 @@ "type": "tidelift" } ], - "time": "2025-08-10T06:51:50+00:00" + "time": "2025-09-07T05:25:07+00:00" }, { "name": "sebastian/complexity", - "version": "2.0.3", + "version": "3.2.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "25f207c40d62b8b7aa32f5ab026c53561964053a" + "reference": "68ff824baeae169ec9f2137158ee529584553799" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/25f207c40d62b8b7aa32f5ab026c53561964053a", - "reference": "25f207c40d62b8b7aa32f5ab026c53561964053a", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/68ff824baeae169ec9f2137158ee529584553799", + "reference": "68ff824baeae169ec9f2137158ee529584553799", "shasum": "" }, "require": { "nikic/php-parser": "^4.18 || ^5.0", - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-main": "3.2-dev" } }, "autoload": { @@ -11231,7 +11277,8 @@ "homepage": "https://github.com/sebastianbergmann/complexity", "support": { "issues": "https://github.com/sebastianbergmann/complexity/issues", - "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.3" + "security": "https://github.com/sebastianbergmann/complexity/security/policy", + "source": "https://github.com/sebastianbergmann/complexity/tree/3.2.0" }, "funding": [ { @@ -11239,33 +11286,33 @@ "type": "github" } ], - "time": "2023-12-22T06:19:30+00:00" + "time": "2023-12-21T08:37:17+00:00" }, { "name": "sebastian/diff", - "version": "4.0.6", + "version": "5.1.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "ba01945089c3a293b01ba9badc29ad55b106b0bc" + "reference": "c41e007b4b62af48218231d6c2275e4c9b975b2e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/ba01945089c3a293b01ba9badc29ad55b106b0bc", - "reference": "ba01945089c3a293b01ba9badc29ad55b106b0bc", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/c41e007b4b62af48218231d6c2275e4c9b975b2e", + "reference": "c41e007b4b62af48218231d6c2275e4c9b975b2e", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3", - "symfony/process": "^4.2 || ^5" + "phpunit/phpunit": "^10.0", + "symfony/process": "^6.4" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-main": "5.1-dev" } }, "autoload": { @@ -11297,7 +11344,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.6" + "security": "https://github.com/sebastianbergmann/diff/security/policy", + "source": "https://github.com/sebastianbergmann/diff/tree/5.1.1" }, "funding": [ { @@ -11305,27 +11353,27 @@ "type": "github" } ], - "time": "2024-03-02T06:30:58+00:00" + "time": "2024-03-02T07:15:17+00:00" }, { "name": "sebastian/environment", - "version": "5.1.5", + "version": "6.1.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed" + "reference": "8074dbcd93529b357029f5cc5058fd3e43666984" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/830c43a844f1f8d5b7a1f6d6076b784454d8b7ed", - "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/8074dbcd93529b357029f5cc5058fd3e43666984", + "reference": "8074dbcd93529b357029f5cc5058fd3e43666984", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "suggest": { "ext-posix": "*" @@ -11333,7 +11381,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "5.1-dev" + "dev-main": "6.1-dev" } }, "autoload": { @@ -11352,7 +11400,7 @@ } ], "description": "Provides functionality to handle HHVM/PHP environments", - "homepage": "http://www.github.com/sebastianbergmann/environment", + "homepage": "https://github.com/sebastianbergmann/environment", "keywords": [ "Xdebug", "environment", @@ -11360,7 +11408,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/5.1.5" + "security": "https://github.com/sebastianbergmann/environment/security/policy", + "source": "https://github.com/sebastianbergmann/environment/tree/6.1.0" }, "funding": [ { @@ -11368,34 +11417,34 @@ "type": "github" } ], - "time": "2023-02-03T06:03:51+00:00" + "time": "2024-03-23T08:47:14+00:00" }, { "name": "sebastian/exporter", - "version": "4.0.8", + "version": "5.1.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "14c6ba52f95a36c3d27c835d65efc7123c446e8c" + "reference": "0735b90f4da94969541dac1da743446e276defa6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/14c6ba52f95a36c3d27c835d65efc7123c446e8c", - "reference": "14c6ba52f95a36c3d27c835d65efc7123c446e8c", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/0735b90f4da94969541dac1da743446e276defa6", + "reference": "0735b90f4da94969541dac1da743446e276defa6", "shasum": "" }, "require": { - "php": ">=7.3", - "sebastian/recursion-context": "^4.0" + "ext-mbstring": "*", + "php": ">=8.1", + "sebastian/recursion-context": "^5.0" }, "require-dev": { - "ext-mbstring": "*", - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-main": "5.1-dev" } }, "autoload": { @@ -11437,7 +11486,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/exporter/issues", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.8" + "security": "https://github.com/sebastianbergmann/exporter/security/policy", + "source": "https://github.com/sebastianbergmann/exporter/tree/5.1.4" }, "funding": [ { @@ -11457,38 +11507,35 @@ "type": "tidelift" } ], - "time": "2025-09-24T06:03:27+00:00" + "time": "2025-09-24T06:09:11+00:00" }, { "name": "sebastian/global-state", - "version": "5.0.8", + "version": "6.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "b6781316bdcd28260904e7cc18ec983d0d2ef4f6" + "reference": "987bafff24ecc4c9ac418cab1145b96dd6e9cbd9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/b6781316bdcd28260904e7cc18ec983d0d2ef4f6", - "reference": "b6781316bdcd28260904e7cc18ec983d0d2ef4f6", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/987bafff24ecc4c9ac418cab1145b96dd6e9cbd9", + "reference": "987bafff24ecc4c9ac418cab1145b96dd6e9cbd9", "shasum": "" }, "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" + "php": ">=8.1", + "sebastian/object-reflector": "^3.0", + "sebastian/recursion-context": "^5.0" }, "require-dev": { "ext-dom": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-uopz": "*" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "5.0-dev" + "dev-main": "6.0-dev" } }, "autoload": { @@ -11507,59 +11554,48 @@ } ], "description": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", + "homepage": "https://www.github.com/sebastianbergmann/global-state", "keywords": [ "global state" ], "support": { "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.8" + "security": "https://github.com/sebastianbergmann/global-state/security/policy", + "source": "https://github.com/sebastianbergmann/global-state/tree/6.0.2" }, "funding": [ { "url": "https://github.com/sebastianbergmann", "type": "github" - }, - { - "url": "https://liberapay.com/sebastianbergmann", - "type": "liberapay" - }, - { - "url": "https://thanks.dev/u/gh/sebastianbergmann", - "type": "thanks_dev" - }, - { - "url": "https://tidelift.com/funding/github/packagist/sebastian/global-state", - "type": "tidelift" } ], - "time": "2025-08-10T07:10:35+00:00" + "time": "2024-03-02T07:19:19+00:00" }, { "name": "sebastian/lines-of-code", - "version": "1.0.4", + "version": "2.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "e1e4a170560925c26d424b6a03aed157e7dcc5c5" + "reference": "856e7f6a75a84e339195d48c556f23be2ebf75d0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/e1e4a170560925c26d424b6a03aed157e7dcc5c5", - "reference": "e1e4a170560925c26d424b6a03aed157e7dcc5c5", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/856e7f6a75a84e339195d48c556f23be2ebf75d0", + "reference": "856e7f6a75a84e339195d48c556f23be2ebf75d0", "shasum": "" }, "require": { "nikic/php-parser": "^4.18 || ^5.0", - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-main": "2.0-dev" } }, "autoload": { @@ -11582,7 +11618,8 @@ "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.4" + "security": "https://github.com/sebastianbergmann/lines-of-code/security/policy", + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/2.0.2" }, "funding": [ { @@ -11590,34 +11627,34 @@ "type": "github" } ], - "time": "2023-12-22T06:20:34+00:00" + "time": "2023-12-21T08:38:20+00:00" }, { "name": "sebastian/object-enumerator", - "version": "4.0.4", + "version": "5.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" + "reference": "202d0e344a580d7f7d04b3fafce6933e59dae906" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/202d0e344a580d7f7d04b3fafce6933e59dae906", + "reference": "202d0e344a580d7f7d04b3fafce6933e59dae906", "shasum": "" }, "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" + "php": ">=8.1", + "sebastian/object-reflector": "^3.0", + "sebastian/recursion-context": "^5.0" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-main": "5.0-dev" } }, "autoload": { @@ -11639,7 +11676,7 @@ "homepage": "https://github.com/sebastianbergmann/object-enumerator/", "support": { "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", - "source": "https://github.com/sebastianbergmann/object-enumerator/tree/4.0.4" + "source": "https://github.com/sebastianbergmann/object-enumerator/tree/5.0.0" }, "funding": [ { @@ -11647,32 +11684,32 @@ "type": "github" } ], - "time": "2020-10-26T13:12:34+00:00" + "time": "2023-02-03T07:08:32+00:00" }, { "name": "sebastian/object-reflector", - "version": "2.0.4", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" + "reference": "24ed13d98130f0e7122df55d06c5c4942a577957" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/24ed13d98130f0e7122df55d06c5c4942a577957", + "reference": "24ed13d98130f0e7122df55d06c5c4942a577957", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-main": "3.0-dev" } }, "autoload": { @@ -11694,7 +11731,7 @@ "homepage": "https://github.com/sebastianbergmann/object-reflector/", "support": { "issues": "https://github.com/sebastianbergmann/object-reflector/issues", - "source": "https://github.com/sebastianbergmann/object-reflector/tree/2.0.4" + "source": "https://github.com/sebastianbergmann/object-reflector/tree/3.0.0" }, "funding": [ { @@ -11702,94 +11739,32 @@ "type": "github" } ], - "time": "2020-10-26T13:14:26+00:00" - }, - { - "name": "sebastian/phpcpd", - "version": "6.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpcpd.git", - "reference": "f3683aa0db2e8e09287c2bb33a595b2873ea9176" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpcpd/zipball/f3683aa0db2e8e09287c2bb33a595b2873ea9176", - "reference": "f3683aa0db2e8e09287c2bb33a595b2873ea9176", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "php": ">=7.3", - "phpunit/php-file-iterator": "^3.0", - "phpunit/php-timer": "^5.0", - "sebastian/cli-parser": "^1.0", - "sebastian/version": "^3.0" - }, - "bin": [ - "phpcpd" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "6.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Copy/Paste Detector (CPD) for PHP code.", - "homepage": "https://github.com/sebastianbergmann/phpcpd", - "support": { - "issues": "https://github.com/sebastianbergmann/phpcpd/issues", - "source": "https://github.com/sebastianbergmann/phpcpd/tree/6.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "abandoned": true, - "time": "2020-12-07T05:39:23+00:00" + "time": "2023-02-03T07:06:18+00:00" }, { "name": "sebastian/recursion-context", - "version": "4.0.6", + "version": "5.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "539c6691e0623af6dc6f9c20384c120f963465a0" + "reference": "47e34210757a2f37a97dcd207d032e1b01e64c7a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/539c6691e0623af6dc6f9c20384c120f963465a0", - "reference": "539c6691e0623af6dc6f9c20384c120f963465a0", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/47e34210757a2f37a97dcd207d032e1b01e64c7a", + "reference": "47e34210757a2f37a97dcd207d032e1b01e64c7a", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-main": "5.0-dev" } }, "autoload": { @@ -11819,7 +11794,8 @@ "homepage": "https://github.com/sebastianbergmann/recursion-context", "support": { "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.6" + "security": "https://github.com/sebastianbergmann/recursion-context/security/policy", + "source": "https://github.com/sebastianbergmann/recursion-context/tree/5.0.1" }, "funding": [ { @@ -11839,86 +11815,32 @@ "type": "tidelift" } ], - "time": "2025-08-10T06:57:39+00:00" - }, - { - "name": "sebastian/resource-operations", - "version": "3.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "05d5692a7993ecccd56a03e40cd7e5b09b1d404e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/05d5692a7993ecccd56a03e40cd7e5b09b1d404e", - "reference": "05d5692a7993ecccd56a03e40cd7e5b09b1d404e", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Provides a list of PHP built-in functions that operate on resources", - "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "support": { - "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2024-03-14T16:00:52+00:00" + "time": "2025-08-10T07:50:56+00:00" }, { "name": "sebastian/type", - "version": "3.2.1", + "version": "4.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/type.git", - "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7" + "reference": "462699a16464c3944eefc02ebdd77882bd3925bf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7", - "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/462699a16464c3944eefc02ebdd77882bd3925bf", + "reference": "462699a16464c3944eefc02ebdd77882bd3925bf", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.5" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.2-dev" + "dev-main": "4.0-dev" } }, "autoload": { @@ -11941,7 +11863,7 @@ "homepage": "https://github.com/sebastianbergmann/type", "support": { "issues": "https://github.com/sebastianbergmann/type/issues", - "source": "https://github.com/sebastianbergmann/type/tree/3.2.1" + "source": "https://github.com/sebastianbergmann/type/tree/4.0.0" }, "funding": [ { @@ -11949,29 +11871,29 @@ "type": "github" } ], - "time": "2023-02-03T06:13:03+00:00" + "time": "2023-02-03T07:10:45+00:00" }, { "name": "sebastian/version", - "version": "3.0.2", + "version": "4.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/version.git", - "reference": "c6c1022351a901512170118436c764e473f6de8c" + "reference": "c51fa83a5d8f43f1402e3f32a005e6262244ef17" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", - "reference": "c6c1022351a901512170118436c764e473f6de8c", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c51fa83a5d8f43f1402e3f32a005e6262244ef17", + "reference": "c51fa83a5d8f43f1402e3f32a005e6262244ef17", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-main": "4.0-dev" } }, "autoload": { @@ -11994,7 +11916,7 @@ "homepage": "https://github.com/sebastianbergmann/version", "support": { "issues": "https://github.com/sebastianbergmann/version/issues", - "source": "https://github.com/sebastianbergmann/version/tree/3.0.2" + "source": "https://github.com/sebastianbergmann/version/tree/4.0.1" }, "funding": [ { @@ -12002,36 +11924,36 @@ "type": "github" } ], - "time": "2020-09-28T06:39:44+00:00" + "time": "2023-02-07T11:34:05+00:00" }, { "name": "slevomat/coding-standard", - "version": "8.22.1", + "version": "8.25.0", "source": { "type": "git", "url": "https://github.com/slevomat/coding-standard.git", - "reference": "1dd80bf3b93692bedb21a6623c496887fad05fec" + "reference": "3ce4dafb4fe2493715f397f21772988ef2122e20" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/slevomat/coding-standard/zipball/1dd80bf3b93692bedb21a6623c496887fad05fec", - "reference": "1dd80bf3b93692bedb21a6623c496887fad05fec", + "url": "https://api.github.com/repos/slevomat/coding-standard/zipball/3ce4dafb4fe2493715f397f21772988ef2122e20", + "reference": "3ce4dafb4fe2493715f397f21772988ef2122e20", "shasum": "" }, "require": { - "dealerdirect/phpcodesniffer-composer-installer": "^0.6.2 || ^0.7 || ^1.1.2", + "dealerdirect/phpcodesniffer-composer-installer": "^0.6.2 || ^0.7 || ^1.2.0", "php": "^7.4 || ^8.0", "phpstan/phpdoc-parser": "^2.3.0", - "squizlabs/php_codesniffer": "^3.13.4" + "squizlabs/php_codesniffer": "^4.0.1" }, "require-dev": { "phing/phing": "3.0.1|3.1.0", "php-parallel-lint/php-parallel-lint": "1.4.0", - "phpstan/phpstan": "2.1.24", + "phpstan/phpstan": "2.1.32", "phpstan/phpstan-deprecation-rules": "2.0.3", - "phpstan/phpstan-phpunit": "2.0.7", - "phpstan/phpstan-strict-rules": "2.0.6", - "phpunit/phpunit": "9.6.8|10.5.48|11.4.4|11.5.36|12.3.10" + "phpstan/phpstan-phpunit": "2.0.8", + "phpstan/phpstan-strict-rules": "2.0.7", + "phpunit/phpunit": "9.6.8|10.5.48|11.4.4|11.5.36|12.4.4" }, "type": "phpcodesniffer-standard", "extra": { @@ -12055,7 +11977,7 @@ ], "support": { "issues": "https://github.com/slevomat/coding-standard/issues", - "source": "https://github.com/slevomat/coding-standard/tree/8.22.1" + "source": "https://github.com/slevomat/coding-standard/tree/8.25.0" }, "funding": [ { @@ -12067,30 +11989,30 @@ "type": "tidelift" } ], - "time": "2025-09-13T08:53:30+00:00" + "time": "2025-11-22T10:33:53+00:00" }, { "name": "squizlabs/php_codesniffer", - "version": "3.13.5", + "version": "4.0.1", "source": { "type": "git", "url": "https://github.com/PHPCSStandards/PHP_CodeSniffer.git", - "reference": "0ca86845ce43291e8f5692c7356fccf3bcf02bf4" + "reference": "0525c73950de35ded110cffafb9892946d7771b5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/0ca86845ce43291e8f5692c7356fccf3bcf02bf4", - "reference": "0ca86845ce43291e8f5692c7356fccf3bcf02bf4", + "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/0525c73950de35ded110cffafb9892946d7771b5", + "reference": "0525c73950de35ded110cffafb9892946d7771b5", "shasum": "" }, "require": { "ext-simplexml": "*", "ext-tokenizer": "*", "ext-xmlwriter": "*", - "php": ">=5.4.0" + "php": ">=7.2.0" }, "require-dev": { - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.3.4" + "phpunit/phpunit": "^8.4.0 || ^9.3.4 || ^10.5.32 || 11.3.3 - 11.5.28 || ^11.5.31" }, "bin": [ "bin/phpcbf", @@ -12115,7 +12037,7 @@ "homepage": "https://github.com/PHPCSStandards/PHP_CodeSniffer/graphs/contributors" } ], - "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", + "description": "PHP_CodeSniffer tokenizes PHP files and detects violations of a defined set of coding standards.", "homepage": "https://github.com/PHPCSStandards/PHP_CodeSniffer", "keywords": [ "phpcs", @@ -12146,7 +12068,7 @@ "type": "thanks_dev" } ], - "time": "2025-11-04T16:30:35+00:00" + "time": "2025-11-10T16:43:36+00:00" }, { "name": "symfony/browser-kit", diff --git a/src/Surfnet/Stepup/Tests/Configuration/Event/EventSerializationAndDeserializationTest.php b/src/Surfnet/Stepup/Tests/Configuration/Event/EventSerializationAndDeserializationTest.php index b95b92177..64aef8800 100644 --- a/src/Surfnet/Stepup/Tests/Configuration/Event/EventSerializationAndDeserializationTest.php +++ b/src/Surfnet/Stepup/Tests/Configuration/Event/EventSerializationAndDeserializationTest.php @@ -64,12 +64,9 @@ class EventSerializationAndDeserializationTest extends TestCase { use MockeryPHPUnitIntegration; - /** - * @test - * @group domain - * - * @dataProvider institutionConfigurationEventsProvider - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\DataProvider('institutionConfigurationEventsProvider')] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function an_event_should_be_the_same_after_serialization_and_deserialization( SerializableInterface $unserializedEvent, ): void { @@ -80,7 +77,7 @@ public function an_event_should_be_the_same_after_serialization_and_deserializat $this->assertEquals($unserializedEvent, $deserializedEvent); } - public function institutionConfigurationEventsProvider(): array + public static function institutionConfigurationEventsProvider(): array { $institution = new Institution('A test institution'); $institutionConfigurationId = InstitutionConfigurationId::from($institution); diff --git a/src/Surfnet/Stepup/Tests/Configuration/InstitutionConfigurationTest.php b/src/Surfnet/Stepup/Tests/Configuration/InstitutionConfigurationTest.php index 48b8ce800..002103593 100644 --- a/src/Surfnet/Stepup/Tests/Configuration/InstitutionConfigurationTest.php +++ b/src/Surfnet/Stepup/Tests/Configuration/InstitutionConfigurationTest.php @@ -47,10 +47,8 @@ class InstitutionConfigurationTest extends AggregateRootScenarioTestCase { use MockeryPHPUnitIntegration; - /** - * @test - * @group aggregate - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('aggregate')] public function use_ra_locations_option_is_set_to_false_by_default_upon_creation_of_an_institution_configuration(): void { $institution = new Institution('Institution'); @@ -107,10 +105,8 @@ public function use_ra_locations_option_is_set_to_false_by_default_upon_creation ]); } - /** - * @test - * @group aggregate - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('aggregate')] public function show_raa_contact_information_option_is_set_to_true_by_default_upon_creation_of_an_institution_configuration(): void { $institution = new Institution('Institution'); @@ -167,10 +163,8 @@ public function show_raa_contact_information_option_is_set_to_true_by_default_up ]); } - /** - * @test - * @group aggregate - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('aggregate')] public function use_ra_locations_option_is_not_changed_if_its_given_value_is_not_different_from_the_current_value(): void { $institution = new Institution('Institution'); @@ -209,10 +203,8 @@ function (InstitutionConfiguration $institutionConfiguration) use ($theSameUseRa ->then([]); } - /** - * @test - * @group aggregate - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('aggregate')] public function show_raa_contact_information_option_is_not_changed_if_its_given_value_is_not_different_from_the_current_value(): void { $institution = new Institution('Institution'); @@ -254,10 +246,8 @@ function (InstitutionConfiguration $institutionConfiguration) use ($sameShowRaaC ->then([]); } - /** - * @test - * @group aggregate - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('aggregate')] public function use_ra_locations_option_is_changed_if_its_given_value_is_different_from_the_current_value(): void { $institution = new Institution('Institution'); @@ -303,10 +293,8 @@ function (InstitutionConfiguration $institutionConfiguration) use ($expectedUseR ]); } - /** - * @test - * @group aggregate - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('aggregate')] public function show_raa_contact_information_option_is_changed_if_its_given_value_is_different_from_the_current_value(): void { $institution = new Institution('Institution'); @@ -355,10 +343,8 @@ function (InstitutionConfiguration $institutionConfiguration) use ( ]); } - /** - * @test - * @group aggregate - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('aggregate')] public function test_the_setting_of_fga_options_on_an_institution_configuration(): void { $institution = new Institution('Institution'); diff --git a/src/Surfnet/Stepup/Tests/Configuration/Value/AllowedSecondFactorListTest.php b/src/Surfnet/Stepup/Tests/Configuration/Value/AllowedSecondFactorListTest.php index 2de23c948..0083c4653 100644 --- a/src/Surfnet/Stepup/Tests/Configuration/Value/AllowedSecondFactorListTest.php +++ b/src/Surfnet/Stepup/Tests/Configuration/Value/AllowedSecondFactorListTest.php @@ -28,10 +28,8 @@ class AllowedSecondFactorListTest extends TestCase { use MockeryPHPUnitIntegration; - /** - * @test - * @group domain - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function an_allowed_second_factor_list_deduplicates_its_second_factors_upon_creation(): void { $allowedSecondFactorList = AllowedSecondFactorList::ofTypes([ @@ -47,12 +45,12 @@ public function an_allowed_second_factor_list_deduplicates_its_second_factors_up } /** - * @test - * @group domain * - * @dataProvider availableSecondFactorTypeProvider * @param $availableSecondFactorType */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\DataProvider('availableSecondFactorTypeProvider')] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function a_blank_allowed_second_factor_list_allows_all_second_factors(\Surfnet\StepupBundle\Value\SecondFactorType $availableSecondFactorType): void { $allowedSecondFactorList = AllowedSecondFactorList::blank(); @@ -62,10 +60,8 @@ public function a_blank_allowed_second_factor_list_allows_all_second_factors(\Su $this->assertTrue($isSecondFactorAllowed); } - /** - * @test - * @group domain - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function an_allowed_second_factor_list_contains_a_given_second_factor(): void { $allowedSecondFactorList = AllowedSecondFactorList::ofTypes([new SecondFactorType('sms')]); @@ -79,10 +75,8 @@ public function an_allowed_second_factor_list_contains_a_given_second_factor(): ); } - /** - * @test - * @group domain - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function an_allowed_second_factor_list_does_not_contain_a_given_second_factor(): void { $allowedSecondFactorList = AllowedSecondFactorList::ofTypes([new SecondFactorType('sms')]); @@ -96,10 +90,8 @@ public function an_allowed_second_factor_list_does_not_contain_a_given_second_fa ); } - /** - * @test - * @group domain - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function an_allowed_second_factor_list_contains_the_given_second_factors(): void { $secondFactorTypes = [ @@ -119,10 +111,8 @@ public function an_allowed_second_factor_list_contains_the_given_second_factors( } } - /** - * @test - * @group domain - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function a_second_factor_on_the_allowed_second_factor_list_is_allowed(): void { $allowedSecondFactorList = AllowedSecondFactorList::ofTypes([new SecondFactorType('sms')]); @@ -136,10 +126,8 @@ public function a_second_factor_on_the_allowed_second_factor_list_is_allowed(): ); } - /** - * @test - * @group domain - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function a_second_factor_not_on_the_allowed_second_factor_list_is_not_allowed(): void { $allowedSecondFactorList = AllowedSecondFactorList::ofTypes([new SecondFactorType('sms')]); @@ -154,13 +142,12 @@ public function a_second_factor_not_on_the_allowed_second_factor_list_is_not_all } /** - * @test - * @group domain - * - * @dataProvider differentAllowedSecondFactorListsProvider * @param SecondFactorType[] $firstList * @param SecondFactorType[] $secondList */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\DataProvider('differentAllowedSecondFactorListsProvider')] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function allowed_second_factor_lists_with_different_elements_are_not_considered_equal( array $firstList, array $secondList, @@ -172,13 +159,12 @@ public function allowed_second_factor_lists_with_different_elements_are_not_cons } /** - * @test - * @group domain - * - * @dataProvider sameAllowedSecondFactorListsProvider * @param SecondFactorType[] $firstList * @param SecondFactorType[] $secondList */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\DataProvider('sameAllowedSecondFactorListsProvider')] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function allowed_second_factor_lists_with_the_same_elements_are_considered_equal( array $firstList, array $secondList, @@ -189,7 +175,7 @@ public function allowed_second_factor_lists_with_the_same_elements_are_considere $this->assertTrue($base->equals($other)); } - public function differentAllowedSecondFactorListsProvider(): array + public static function differentAllowedSecondFactorListsProvider(): array { return [ 'Different second factor types' => [ @@ -211,7 +197,7 @@ public function differentAllowedSecondFactorListsProvider(): array ]; } - public function sameAllowedSecondFactorListsProvider(): array + public static function sameAllowedSecondFactorListsProvider(): array { return [ 'Same second factor types' => [ @@ -233,7 +219,7 @@ public function sameAllowedSecondFactorListsProvider(): array ]; } - public function availableSecondFactorTypeProvider(): array + public static function availableSecondFactorTypeProvider(): array { $service = new SecondFactorTypeService([ 'biometric' => ['loa' => 3], diff --git a/src/Surfnet/Stepup/Tests/Configuration/Value/ContactInformationTest.php b/src/Surfnet/Stepup/Tests/Configuration/Value/ContactInformationTest.php index c6fac3bf1..b5ed06503 100644 --- a/src/Surfnet/Stepup/Tests/Configuration/Value/ContactInformationTest.php +++ b/src/Surfnet/Stepup/Tests/Configuration/Value/ContactInformationTest.php @@ -28,10 +28,8 @@ class ContactInformationTest extends UnitTest { use MockeryPHPUnitIntegration; - /** - * @test - * @group domain - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function two_instances_with_the_same_value_are_equal(): void { $contactInformation = new ContactInformation('a'); diff --git a/src/Surfnet/Stepup/Tests/Configuration/Value/InstitutionAuthorizationOptionTest.php b/src/Surfnet/Stepup/Tests/Configuration/Value/InstitutionAuthorizationOptionTest.php index 8496cf977..c7ffc5b7f 100644 --- a/src/Surfnet/Stepup/Tests/Configuration/Value/InstitutionAuthorizationOptionTest.php +++ b/src/Surfnet/Stepup/Tests/Configuration/Value/InstitutionAuthorizationOptionTest.php @@ -45,20 +45,16 @@ public function setUp(): void $this->institutionRole = InstitutionRole::useRa(); } - /** - * @test - * @group domain - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function institution_entries_are_sorted(): void { $useRaOption = InstitutionAuthorizationOption::fromInstitutionConfig($this->institutionRole, ['z', 'y', 'x']); $this->assertEquals(['x', 'y', 'z'], $useRaOption->getInstitutions($this->institution)); } - /** - * @test - * @group domain - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function institution_entries_default_is_own_institution(): void { $useRaOption1 = InstitutionAuthorizationOption::fromInstitutionConfig($this->institutionRole, null); @@ -70,11 +66,9 @@ public function institution_entries_default_is_own_institution(): void $this->assertEquals([$this->institution], $useRaOption2->getInstitutions($this->institution)); } - /** - * @test - * @group domain - * @dataProvider institutionSetComparisonProvider - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\DataProvider('institutionSetComparisonProvider')] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function institution_option_instances_can_be_compared( bool $expectation, ?array $configurationA, @@ -101,20 +95,16 @@ public function can_be_retrieved_json_serializable(): void $this->assertEquals(['x', 'y', 'z'], $institutionOption->jsonSerialize()); } - /** - * @test - * @group domain - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function can_be_retrieved_json_serializable_on_empty_set(): void { $institutionOption = InstitutionAuthorizationOption::fromInstitutionConfig($this->institutionRole); $this->assertEquals(null, $institutionOption->jsonSerialize()); } - /** - * @test - * @group domain - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function should_be_set_to_default_if_created_with_own_institution_as_institutions(): void { $institutions = [ @@ -131,10 +121,8 @@ public function should_be_set_to_default_if_created_with_own_institution_as_inst $this->assertEquals([], $option->getInstitutionSet()->toScalarArray()); } - /** - * @test - * @group domain - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function the_default_value_is_given_institution(): void { $this->assertEquals( @@ -143,10 +131,8 @@ public function the_default_value_is_given_institution(): void ); } - /** - * @test - * @group domain - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function the_empty_value_is_no_value(): void { $this->assertEquals( @@ -155,20 +141,16 @@ public function the_empty_value_is_no_value(): void ); } - /** - * @test - * @group domain - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function the_blank_method_should_return_null(): void { $this->assertEquals(null, InstitutionAuthorizationOption::blank()); } - /** - * @test - * @group domain - * @dataProvider institutionHasInstitutionProvider - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\DataProvider('institutionHasInstitutionProvider')] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function the_has_institution_method_should_check_for_institutions( bool $expectation, array $institutionList, @@ -185,7 +167,7 @@ public function the_has_institution_method_should_check_for_institutions( } - public function institutionHasInstitutionProvider(): array + public static function institutionHasInstitutionProvider(): array { return [ 'array-with-institution' => [true, ['a', 'b'], 'a'], @@ -194,7 +176,7 @@ public function institutionHasInstitutionProvider(): array ]; } - public function institutionSetComparisonProvider(): array + public static function institutionSetComparisonProvider(): array { return [ 'both-same-set-of-institutions' => [true, ['a', 'b'], ['a', 'b']], diff --git a/src/Surfnet/Stepup/Tests/Configuration/Value/InstitutionConfigurationIdTest.php b/src/Surfnet/Stepup/Tests/Configuration/Value/InstitutionConfigurationIdTest.php index 181b6d41e..46f1cc8ff 100644 --- a/src/Surfnet/Stepup/Tests/Configuration/Value/InstitutionConfigurationIdTest.php +++ b/src/Surfnet/Stepup/Tests/Configuration/Value/InstitutionConfigurationIdTest.php @@ -29,10 +29,8 @@ class InstitutionConfigurationIdTest extends TestCase { use MockeryPHPUnitIntegration; - /** - * @test - * @group domain - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function two_institution_configuration_ids_created_for_the_different_institution_are_not_equal(): void { $institutionConfigurationId = InstitutionConfigurationId::from(new Institution('An institution')); @@ -41,12 +39,9 @@ public function two_institution_configuration_ids_created_for_the_different_inst $this->assertNotEquals($institutionConfigurationId, $different); } - /** - * @test - * @group domain - * - * @dataProvider nonStringOrEmptyStringProvider - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\DataProvider('nonStringOrEmptyStringProvider')] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function an_institution_configuration_id_cannot_be_created_from_something_other_than_a_string( string $nonStringOrEmptyString, ): void { @@ -55,10 +50,8 @@ public function an_institution_configuration_id_cannot_be_created_from_something new InstitutionConfigurationId($nonStringOrEmptyString); } - /** - * @test - * @group domain - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function an_institution_configuration_id_cannot_be_created_from_something_other_than_a_uuid(): void { $this->expectException(InvalidArgumentException::class); @@ -68,10 +61,8 @@ public function an_institution_configuration_id_cannot_be_created_from_something new InstitutionConfigurationId($nonUuid); } - /** - * @test - * @group domain - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function two_institution_configuration_ids_created_for_the_same_institution_are_equal(): void { $institutionConfigurationId = InstitutionConfigurationId::from(new Institution('An institution')); @@ -80,10 +71,8 @@ public function two_institution_configuration_ids_created_for_the_same_instituti $this->assertEquals($institutionConfigurationId, $same); } - /** - * @test - * @group domain - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function institution_configuration_ids_are_created_case_insensitively_from_institutions(): void { $mixedCaseInstitution = new Institution('An InStItUtIoN'); @@ -101,10 +90,8 @@ public function institution_configuration_ids_are_created_case_insensitively_fro ); } - /** - * @test - * @group domain - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function normalized_institution_configuration_ids_and_unnormalized_institution_configuration_ids_are_the_same(): void { $mixedCaseInstitution = new Institution('An InStItUtIoN'); @@ -120,7 +107,7 @@ public function normalized_institution_configuration_ids_and_unnormalized_instit /** * dataprovider */ - public function nonStringOrEmptyStringProvider(): array + public static function nonStringOrEmptyStringProvider(): array { return [ 'empty string' => [''], diff --git a/src/Surfnet/Stepup/Tests/Configuration/Value/InstitutionRoleTest.php b/src/Surfnet/Stepup/Tests/Configuration/Value/InstitutionRoleTest.php index fa7f8bb09..a9f69a954 100644 --- a/src/Surfnet/Stepup/Tests/Configuration/Value/InstitutionRoleTest.php +++ b/src/Surfnet/Stepup/Tests/Configuration/Value/InstitutionRoleTest.php @@ -27,22 +27,18 @@ class InstitutionRoleTest extends TestCase { use MockeryPHPUnitIntegration; - /** - * @test - * @group domain - * @dataProvider invalidConstructorArgumentsProvider - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\DataProvider('invalidConstructorArgumentsProvider')] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function invalid_types_are_rejected_during_construction(bool|string|int $arguments): void { $this->expectException(InvalidArgumentException::class); new InstitutionRole($arguments); } - /** - * @test - * @group domain - * @dataProvider institutionTypeProvider - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\DataProvider('institutionTypeProvider')] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function institution_roles_can_be_created_by_type(string $type): void { $role1 = new InstitutionRole($type); @@ -52,7 +48,7 @@ public function institution_roles_can_be_created_by_type(string $type): void $this->assertTrue($role1->equals($role2)); } - public function institutionTypeProvider(): array + public static function institutionTypeProvider(): array { return [ 'use_ra' => ['use_ra'], @@ -61,7 +57,7 @@ public function institutionTypeProvider(): array ]; } - public function invalidConstructorArgumentsProvider(): array + public static function invalidConstructorArgumentsProvider(): array { return [ 'cant-be-boolean' => [false], diff --git a/src/Surfnet/Stepup/Tests/Configuration/Value/InstitutionSetTest.php b/src/Surfnet/Stepup/Tests/Configuration/Value/InstitutionSetTest.php index 60cb9f041..15719e008 100644 --- a/src/Surfnet/Stepup/Tests/Configuration/Value/InstitutionSetTest.php +++ b/src/Surfnet/Stepup/Tests/Configuration/Value/InstitutionSetTest.php @@ -31,10 +31,8 @@ class InstitutionSetTest extends UnitTest { use MockeryPHPUnitIntegration; - /** - * @test - * @group domain - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function the_set_is_built_out_of_institution_vos(): void { $institutionA = new Institution('a'); @@ -45,10 +43,8 @@ public function the_set_is_built_out_of_institution_vos(): void $this->assertSame(['a', 'b', 'c'], $set->toScalarArray()); } - /** - * @test - * @group domain - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function duplicate_entries_are_not_allowed(): void { $this->expectExceptionMessage("Duplicate entries are not allowed in the InstitutionSet"); @@ -60,10 +56,8 @@ public function duplicate_entries_are_not_allowed(): void InstitutionSet::create([$institutionB, $institutionBDupe]); } - /** - * @test - * @group domain - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function duplicate_entries_are_not_allowed_case_insensitive(): void { $this->expectExceptionMessage("Duplicate entries are not allowed in the InstitutionSet"); @@ -75,10 +69,8 @@ public function duplicate_entries_are_not_allowed_case_insensitive(): void InstitutionSet::create([$institutionB, $institutionBDupe]); } - /** - * @test - * @group domain - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function only_institutions_can_be_present_in_set(): void { $this->expectExceptionMessage( @@ -92,10 +84,8 @@ public function only_institutions_can_be_present_in_set(): void InstitutionSet::create([$institution, $location]); } - /** - * @test - * @group domain - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function factory_method_can_build_from_empty_array(): void { $input = []; @@ -103,10 +93,8 @@ public function factory_method_can_build_from_empty_array(): void $this->assertEmpty($set->toScalarArray()); } - /** - * @test - * @group domain - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function factory_method_can_build_from_array_of_string(): void { $input = [ @@ -125,11 +113,11 @@ public function factory_method_can_build_from_array_of_string(): void /** * This test actually tests the Institution's input validation during construction time * - * @test - * @group domain - * @dataProvider dirtyInstitutionListProvider * */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\DataProvider('dirtyInstitutionListProvider')] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function factory_method_can_build_from_array_of_string_and_rejects_invalid_types(array $invalid): void { $this->expectException(InvalidArgumentException::class); @@ -137,10 +125,8 @@ public function factory_method_can_build_from_array_of_string_and_rejects_invali InstitutionSet::create($invalid); } - /** - * @test - * @group domain - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function sets_can_be_compared(): void { $input = [ @@ -154,7 +140,7 @@ public function sets_can_be_compared(): void $this->assertTrue($set->equals($secondSet)); } - public function dirtyInstitutionListProvider(): array + public static function dirtyInstitutionListProvider(): array { return [ 'numeric_entry' => [['a', 1, 'b']], diff --git a/src/Surfnet/Stepup/Tests/Configuration/Value/InstitutionTest.php b/src/Surfnet/Stepup/Tests/Configuration/Value/InstitutionTest.php index 999341ebb..33ee5a084 100644 --- a/src/Surfnet/Stepup/Tests/Configuration/Value/InstitutionTest.php +++ b/src/Surfnet/Stepup/Tests/Configuration/Value/InstitutionTest.php @@ -29,11 +29,9 @@ class InstitutionTest extends UnitTest { use MockeryPHPUnitIntegration; - /** - * @test - * @group domain - * @dataProvider nonStringOrNonEmptyStringProvider - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\DataProvider('nonStringOrNonEmptyStringProvider')] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function an_institution_cannot_be_created_with_anything_but_a_nonempty_string( string $invalidValue, ): void { @@ -41,10 +39,8 @@ public function an_institution_cannot_be_created_with_anything_but_a_nonempty_st new Institution($invalidValue); } - /** - * @test - * @group domain - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function two_institutions_with_the_same_value_are_equal(): void { $institution = new Institution('a'); @@ -57,7 +53,7 @@ public function two_institutions_with_the_same_value_are_equal(): void $this->assertTrue($institution->equals($different)); } - public function nonStringOrNonEmptyStringProvider(): array + public static function nonStringOrNonEmptyStringProvider(): array { return [ 'empty string' => [''], diff --git a/src/Surfnet/Stepup/Tests/Configuration/Value/LocationTest.php b/src/Surfnet/Stepup/Tests/Configuration/Value/LocationTest.php index a85043c1d..a04129579 100644 --- a/src/Surfnet/Stepup/Tests/Configuration/Value/LocationTest.php +++ b/src/Surfnet/Stepup/Tests/Configuration/Value/LocationTest.php @@ -28,10 +28,8 @@ class LocationTest extends UnitTest { use MockeryPHPUnitIntegration; - /** - * @test - * @group domain - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function two_locations_with_the_same_value_are_equal(): void { $location = new Location('a'); diff --git a/src/Surfnet/Stepup/Tests/Configuration/Value/RaLocationIdTest.php b/src/Surfnet/Stepup/Tests/Configuration/Value/RaLocationIdTest.php index 4cc9b255b..952d900d8 100644 --- a/src/Surfnet/Stepup/Tests/Configuration/Value/RaLocationIdTest.php +++ b/src/Surfnet/Stepup/Tests/Configuration/Value/RaLocationIdTest.php @@ -30,11 +30,9 @@ class RaLocationIdTest extends TestCase { use MockeryPHPUnitIntegration; - /** - * @test - * @group domain - * @dataProvider nonStringOrEmptyStringProvider - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\DataProvider('nonStringOrEmptyStringProvider')] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function an_ra_location_id_cannot_be_created_with_anything_but_a_nonempty_string( string $nonStringOrEmptyString, ): void { @@ -43,10 +41,8 @@ public function an_ra_location_id_cannot_be_created_with_anything_but_a_nonempty new RaLocationId($nonStringOrEmptyString); } - /** - * @test - * @group domain - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function an_ra_location_id_cannot_be_created_with_anything_but_a_uuid(): void { $this->expectException(InvalidArgumentException::class); @@ -56,10 +52,8 @@ public function an_ra_location_id_cannot_be_created_with_anything_but_a_uuid(): new RaLocationId($nonUuid); } - /** - * @test - * @group domain - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function two_ra_location_ids_with_the_same_values_are_equal(): void { $uuid = $this->uuid(); @@ -70,10 +64,8 @@ public function two_ra_location_ids_with_the_same_values_are_equal(): void $this->assertTrue($raLocationId->equals($theSame)); } - /** - * @test - * @group domain - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function two_ra_location_ids_with_different_values_are_not_equal(): void { $raLocationId = new RaLocationId($this->uuid()); @@ -82,7 +74,7 @@ public function two_ra_location_ids_with_different_values_are_not_equal(): void $this->assertFalse($raLocationId->equals($different)); } - public function nonStringOrEmptyStringProvider(): array + public static function nonStringOrEmptyStringProvider(): array { return [ 'empty string' => [''], diff --git a/src/Surfnet/Stepup/Tests/Configuration/Value/RaLocationListTest.php b/src/Surfnet/Stepup/Tests/Configuration/Value/RaLocationListTest.php index 497d6febe..2a59342f1 100644 --- a/src/Surfnet/Stepup/Tests/Configuration/Value/RaLocationListTest.php +++ b/src/Surfnet/Stepup/Tests/Configuration/Value/RaLocationListTest.php @@ -33,10 +33,8 @@ class RaLocationListTest extends TestCase { use MockeryPHPUnitIntegration; - /** - * @test - * @group domain - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function an_ra_location_list_does_not_allow_ra_locations_with_the_same_ra_location_id_upon_creation(): void { $this->expectException(LogicException::class); @@ -49,10 +47,8 @@ public function an_ra_location_list_does_not_allow_ra_locations_with_the_same_ra new RaLocationList($raLocations); } - /** - * @test - * @group domain - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function an_ra_location_list_does_not_allow_adding_ra_locations_with_an_ra_location_id_that_is_already_present(): void { $this->expectException(LogicException::class); @@ -65,10 +61,8 @@ public function an_ra_location_list_does_not_allow_adding_ra_locations_with_an_r $raLocationList->add($existingRaLocation); } - /** - * @test - * @group domain - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function an_ra_location_list_is_created_from_ra_locations(): void { $raLocations = $this->getRaLocationsArray(); @@ -79,10 +73,8 @@ public function an_ra_location_list_is_created_from_ra_locations(): void $this->assertEquals($raLocations, $raLocationListAsArray); } - /** - * @test - * @group domain - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function an_ra_location_list_has_an_ra_location_with_a_given_ra_location_id(): void { $raLocations = $this->getRaLocationsArray(); @@ -93,10 +85,8 @@ public function an_ra_location_list_has_an_ra_location_with_a_given_ra_location_ $this->assertTrue($raLocationList->containsWithId($expectedRaLocationIdToBePresent)); } - /** - * @test - * @group domain - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function an_ra_location_list_does_not_have_ra_locations_with_a_non_present_ra_location_id(): void { $raLocations = $this->getRaLocationsArray(); @@ -107,10 +97,8 @@ public function an_ra_location_list_does_not_have_ra_locations_with_a_non_presen $this->assertFalse($raLocationList->containsWithId($expectedRaLocationIdNotToBePresent)); } - /** - * @test - * @group domain - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function an_ra_location_is_added_to_an_ra_location_list(): void { $raLocations = $this->getRaLocationsArray(); @@ -123,10 +111,8 @@ public function an_ra_location_is_added_to_an_ra_location_list(): void $this->assertEquals($raLocations[0], $raLocationListAsArray[0]); } - /** - * @test - * @group domain - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function an_ra_location_is_removed_from_an_ra_location_list_by_its_ra_location_id(): void { $raLocations = $this->getRaLocationsArray(); diff --git a/src/Surfnet/Stepup/Tests/Configuration/Value/RaLocationNameTest.php b/src/Surfnet/Stepup/Tests/Configuration/Value/RaLocationNameTest.php index 5fdf4714c..c50606872 100644 --- a/src/Surfnet/Stepup/Tests/Configuration/Value/RaLocationNameTest.php +++ b/src/Surfnet/Stepup/Tests/Configuration/Value/RaLocationNameTest.php @@ -29,11 +29,9 @@ class RaLocationNameTest extends TestCase { use MockeryPHPUnitIntegration; - /** - * @test - * @group domain - * @dataProvider nonStringOrEmptyStringProvider - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\DataProvider('nonStringOrEmptyStringProvider')] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function an_ra_location_name_cannot_be_created_with_anything_but_a_nonempty_string( string $nonStringOrEmptyString, ): void { @@ -42,10 +40,8 @@ public function an_ra_location_name_cannot_be_created_with_anything_but_a_nonemp new RaLocationName($nonStringOrEmptyString); } - /** - * @test - * @group domain - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function two_ra_location_names_with_the_same_values_are_equal(): void { $raLocationName = new RaLocationName('a'); @@ -54,10 +50,8 @@ public function two_ra_location_names_with_the_same_values_are_equal(): void $this->assertTrue($raLocationName->equals($theSame)); } - /** - * @test - * @group domain - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function two_ra_location_names_with_different_values_are_not_equal(): void { $raLocationName = new RaLocationName('a'); @@ -66,7 +60,7 @@ public function two_ra_location_names_with_different_values_are_not_equal(): voi $this->assertFalse($raLocationName->equals($different)); } - public function nonStringOrEmptyStringProvider(): array + public static function nonStringOrEmptyStringProvider(): array { return [ 'empty string' => [''], diff --git a/src/Surfnet/Stepup/Tests/Configuration/Value/ShowRaaContactInformationOptionTest.php b/src/Surfnet/Stepup/Tests/Configuration/Value/ShowRaaContactInformationOptionTest.php index efa48b195..0619e79af 100644 --- a/src/Surfnet/Stepup/Tests/Configuration/Value/ShowRaaContactInformationOptionTest.php +++ b/src/Surfnet/Stepup/Tests/Configuration/Value/ShowRaaContactInformationOptionTest.php @@ -28,11 +28,9 @@ class ShowRaaContactInformationOptionTest extends TestCase { use MockeryPHPUnitIntegration; - /** - * @test - * @group domain - * @group institution-configuration-option - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('domain')] + #[\PHPUnit\Framework\Attributes\Group('institution-configuration-option')] public function two_show_raa_contact_information_options_with_the_same_values_are_equal(): void { $option = true; @@ -43,11 +41,9 @@ public function two_show_raa_contact_information_options_with_the_same_values_ar $this->assertTrue($showRaaContactInformationOption->equals($theSame)); } - /** - * @test - * @group domain - * @group institution-configuration-option - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('domain')] + #[\PHPUnit\Framework\Attributes\Group('institution-configuration-option')] public function two_show_raa_contact_information_options_with_different_values_are_not_equal(): void { $showRaaContactInformationOption = new ShowRaaContactInformationOption(true); @@ -56,11 +52,9 @@ public function two_show_raa_contact_information_options_with_different_values_a $this->assertFalse($showRaaContactInformationOption->equals($different)); } - /** - * @test - * @group domain - * @group institution-configuration-option - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('domain')] + #[\PHPUnit\Framework\Attributes\Group('institution-configuration-option')] public function default_value_is_true(): void { $default = ShowRaaContactInformationOption::getDefault(); diff --git a/src/Surfnet/Stepup/Tests/Configuration/Value/UseRaLocationsOptionTest.php b/src/Surfnet/Stepup/Tests/Configuration/Value/UseRaLocationsOptionTest.php index f6f5fa259..c394492e0 100644 --- a/src/Surfnet/Stepup/Tests/Configuration/Value/UseRaLocationsOptionTest.php +++ b/src/Surfnet/Stepup/Tests/Configuration/Value/UseRaLocationsOptionTest.php @@ -28,11 +28,9 @@ class UseRaLocationsOptionTest extends TestCase { use MockeryPHPUnitIntegration; - /** - * @test - * @group domain - * @group institution-configuration-option - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('domain')] + #[\PHPUnit\Framework\Attributes\Group('institution-configuration-option')] public function two_use_ra_location_options_with_the_same_values_are_equal(): void { $option = true; @@ -43,11 +41,9 @@ public function two_use_ra_location_options_with_the_same_values_are_equal(): vo $this->assertTrue($useRaLocationsOption->equals($theSame)); } - /** - * @test - * @group domain - * @group institution-configuration-option - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('domain')] + #[\PHPUnit\Framework\Attributes\Group('institution-configuration-option')] public function two_use_ra_location_options_with_different_values_are_not_equal(): void { $useRaLocationsOption = new UseRaLocationsOption(true); @@ -56,11 +52,9 @@ public function two_use_ra_location_options_with_different_values_are_not_equal( $this->assertFalse($useRaLocationsOption->equals($different)); } - /** - * @test - * @group domain - * @group institution-configuration-option - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('domain')] + #[\PHPUnit\Framework\Attributes\Group('institution-configuration-option')] public function default_value_is_false(): void { $default = UseRaLocationsOption::getDefault(); diff --git a/src/Surfnet/Stepup/Tests/DateTime/DateTimeTest.php b/src/Surfnet/Stepup/Tests/DateTime/DateTimeTest.php index 26b96c80c..e614bf9e7 100644 --- a/src/Surfnet/Stepup/Tests/DateTime/DateTimeTest.php +++ b/src/Surfnet/Stepup/Tests/DateTime/DateTimeTest.php @@ -33,10 +33,9 @@ class DateTimeTest extends UnitTest * this might lead to some unforeseen errors. This ensures that if the format is changed, this test fails and * that you're hopefully reading this as an instruction to check all the places that handle datetime for * compatibility with the new format. Think about log(-processors), (de-)serializers, etc. - * - * @test - * @group domain */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function the_configured_format_is_what_is_needed_for_correct_application_behavior(): void { $this->assertEquals('Y-m-d\\TH:i:sP', DateTime::FORMAT); @@ -45,10 +44,9 @@ public function the_configured_format_is_what_is_needed_for_correct_application_ /** * Ensure that the __toString of our DateTime object actually uses the correct format. For the reason why, read the * docblock above the {@see the_configured_format_is_what_is_needed_for_correct_application_behavior()} test - * - * @test - * @group domain */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function to_string_returns_the_time_in_the_correct_format(): void { $coreDateTimeObject = new CoreDateTime('@1000'); @@ -57,10 +55,8 @@ public function to_string_returns_the_time_in_the_correct_format(): void $this->assertEquals($coreDateTimeObject->format(DateTime::FORMAT), (string)$ourDateTimeObject); } - /** - * @test - * @group domain - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function add_returns_a_different_object_that_has_the_interval_added(): void { $base = new DateTime(new CoreDateTime('@1000')); @@ -72,10 +68,8 @@ public function add_returns_a_different_object_that_has_the_interval_added(): vo $this->assertTrue($result > $base, 'DateTime::add adds the interval to the new object'); } - /** - * @test - * @group domain - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function sub_returns_a_different_object_that_has_the_interval_substracted(): void { $base = new DateTime(new CoreDateTime('@1000')); @@ -87,10 +81,8 @@ public function sub_returns_a_different_object_that_has_the_interval_substracted $this->assertTrue($result < $base, 'DateTime::sub subtracts the interval to the new object'); } - /** - * @test - * @group domain - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function comes_before_works_with_exclusive_comparison(): void { $base = new DateTime(new CoreDateTime('@1000')); @@ -103,10 +95,8 @@ public function comes_before_works_with_exclusive_comparison(): void $this->assertFalse($after->comesBefore($base)); } - /** - * @test - * @group domain - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function comes_before_or_is_equal_works_with_inclusive_comparison(): void { $base = new DateTime(new CoreDateTime('@1000')); @@ -119,10 +109,8 @@ public function comes_before_or_is_equal_works_with_inclusive_comparison(): void $this->assertFalse($after->comesBeforeOrIsEqual($base)); } - /** - * @test - * @group domain - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function comes_after_works_with_exclusive_comparison(): void { $base = new DateTime(new CoreDateTime('@1000')); @@ -135,10 +123,8 @@ public function comes_after_works_with_exclusive_comparison(): void $this->assertTrue($after->comesAfter($base)); } - /** - * @test - * @group domain - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function comes_after_or_is_equal_works_with_inclusive_comparison(): void { $base = new DateTime(new CoreDateTime('@1000')); diff --git a/src/Surfnet/Stepup/Tests/Helper/JsonHelperTest.php b/src/Surfnet/Stepup/Tests/Helper/JsonHelperTest.php index 6d7f1b128..566ca49e5 100644 --- a/src/Surfnet/Stepup/Tests/Helper/JsonHelperTest.php +++ b/src/Surfnet/Stepup/Tests/Helper/JsonHelperTest.php @@ -29,10 +29,8 @@ class JsonHelperTest extends TestCase { use MockeryPHPUnitIntegration; - /** - * @test - * @group json - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('json')] public function json_helper_decodes_strings_to_arrays(): void { $expectedDecodedResult = ['hello' => 'world']; @@ -43,10 +41,8 @@ public function json_helper_decodes_strings_to_arrays(): void $this->assertSame($expectedDecodedResult, $actualDecodedResult); } - /** - * @test - * @group json - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('json')] public function json_helper_throws_an_exception_when_there_is_a_syntax_error(): void { $this->expectException(JsonException::class); diff --git a/src/Surfnet/Stepup/Tests/Helper/UserDataFilterTest.php b/src/Surfnet/Stepup/Tests/Helper/UserDataFilterTest.php index 0241bcc53..483f82c46 100644 --- a/src/Surfnet/Stepup/Tests/Helper/UserDataFilterTest.php +++ b/src/Surfnet/Stepup/Tests/Helper/UserDataFilterTest.php @@ -42,9 +42,7 @@ class UserDataFilterTest extends TestCase { use MockeryPHPUnitIntegration; - /** - * @dataProvider provideEvents - */ + #[\PHPUnit\Framework\Attributes\DataProvider('provideEvents')] public function test_filtering_is_applied_with_expected_result( IdentityCreatedEvent|PhonePossessionProvenAndVerifiedEvent|AppointedAsRaaForInstitutionEvent|PhonePossessionProvenEvent $event, array $expectation, @@ -54,7 +52,7 @@ public function test_filtering_is_applied_with_expected_result( $this->assertSame($expectation, array_keys($data)); } - public function provideEvents(): Generator + public static function provideEvents(): Generator { $event = new IdentityCreatedEvent( new IdentityId("id"), diff --git a/src/Surfnet/Stepup/Tests/Identity/Collection/InstitutionCollectionTest.php b/src/Surfnet/Stepup/Tests/Identity/Collection/InstitutionCollectionTest.php index 21cd80b56..2127dde3e 100644 --- a/src/Surfnet/Stepup/Tests/Identity/Collection/InstitutionCollectionTest.php +++ b/src/Surfnet/Stepup/Tests/Identity/Collection/InstitutionCollectionTest.php @@ -28,11 +28,9 @@ class InstitutionCollectionTest extends UnitTest { use MockeryPHPUnitIntegration; - /** - * @test - * @group domain - * @group whitelist - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('domain')] + #[\PHPUnit\Framework\Attributes\Group('whitelist')] public function it_can_be_constructed_with_or_without_institutions(): void { $collection1 = new InstitutionCollection($this->getInstitutions()); @@ -42,11 +40,9 @@ public function it_can_be_constructed_with_or_without_institutions(): void $this->assertInstanceOf(InstitutionCollection::class, $collection2); } - /** - * @test - * @group domain - * @group whitelist - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('domain')] + #[\PHPUnit\Framework\Attributes\Group('whitelist')] public function it_correctly_asserts_whether_or_not_it_contains_an_institution(): void { $institutions = $this->getInstitutions(); @@ -60,11 +56,9 @@ public function it_correctly_asserts_whether_or_not_it_contains_an_institution() $this->assertFalse($institutionCollection->contains(new Institution('not listed'))); } - /** - * @test - * @group domain - * @group whitelist - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('domain')] + #[\PHPUnit\Framework\Attributes\Group('whitelist')] public function it_allows_to_add_an_institution_that_it_does_not_already_contain(): void { $toAdd = new Institution('to be added'); @@ -75,11 +69,9 @@ public function it_allows_to_add_an_institution_that_it_does_not_already_contain $this->assertTrue($institutionCollection->contains($toAdd)); } - /** - * @test - * @group domain - * @group whitelist - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('domain')] + #[\PHPUnit\Framework\Attributes\Group('whitelist')] public function an_institution_already_in_the_collection_cannot_be_added(): void { $this->expectException(RuntimeException::class); @@ -92,11 +84,9 @@ public function an_institution_already_in_the_collection_cannot_be_added(): void $institutionCollection->add($alreadyExists); } - /** - * @test - * @group domain - * @group whitelist - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('domain')] + #[\PHPUnit\Framework\Attributes\Group('whitelist')] public function an_institution_in_the_collection_can_be_removed(): void { $institutions = $this->getInstitutions(); @@ -109,12 +99,9 @@ public function an_institution_in_the_collection_can_be_removed(): void $this->assertFalse($institutionCollection->contains($inCollection)); } - /** - * @test - * @group domain - * @group whitelist - * - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('domain')] + #[\PHPUnit\Framework\Attributes\Group('whitelist')] public function an_institution_not_in_the_collection_cannot_be_removed(): void { $this->expectException(RuntimeException::class); @@ -128,11 +115,9 @@ public function an_institution_not_in_the_collection_cannot_be_removed(): void $institutionCollection->remove($notInCollection); } - /** - * @test - * @group domain - * @group whitelist - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('domain')] + #[\PHPUnit\Framework\Attributes\Group('whitelist')] public function multiple_institutions_can_be_added_from_another_collection(): void { $institutions = $this->getInstitutions(); @@ -149,11 +134,9 @@ public function multiple_institutions_can_be_added_from_another_collection(): vo } } - /** - * @test - * @group domain - * @group whitelist - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('domain')] + #[\PHPUnit\Framework\Attributes\Group('whitelist')] public function multiple_institutions_can_be_removed(): void { $collectionOneElements = $this->getInstitutions(); diff --git a/src/Surfnet/Stepup/Tests/Identity/Entity/ConfigurableSettingsTest.php b/src/Surfnet/Stepup/Tests/Identity/Entity/ConfigurableSettingsTest.php index 1105eb676..219d343cd 100644 --- a/src/Surfnet/Stepup/Tests/Identity/Entity/ConfigurableSettingsTest.php +++ b/src/Surfnet/Stepup/Tests/Identity/Entity/ConfigurableSettingsTest.php @@ -30,10 +30,8 @@ class ConfigurableSettingsTest extends UnitTest { use MockeryPHPUnitIntegration; - /** - * @test - * @group domain - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function a_new_email_verification_window_always_starts_now(): void { $settings = ConfigurableSettings::create(3, []); @@ -56,7 +54,7 @@ public function a_new_email_verification_window_always_starts_now(): void $this->assertTrue($secondWindow->isOpen()); } - public function localeVerifications(): array + public static function localeVerifications(): array { return [ 'No app locales, false' => [false, 'nl_NL', []], @@ -67,11 +65,11 @@ public function localeVerifications(): array } /** - * @test - * @group domain - * @dataProvider localeVerifications * @param string[] $validLocaleStrings */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\DataProvider('localeVerifications')] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function a_locale_can_be_verified_to_be_a_valid_locale( bool $isValid, string $localeString, diff --git a/src/Surfnet/Stepup/Tests/Identity/Entity/SecondFactorCollectionTest.php b/src/Surfnet/Stepup/Tests/Identity/Entity/SecondFactorCollectionTest.php index e74740015..eb8d70e04 100644 --- a/src/Surfnet/Stepup/Tests/Identity/Entity/SecondFactorCollectionTest.php +++ b/src/Surfnet/Stepup/Tests/Identity/Entity/SecondFactorCollectionTest.php @@ -33,10 +33,8 @@ class SecondFactorCollectionTest extends UnitTest { use MockeryPHPUnitIntegration; - /** - * @test - * @group domain - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function collection_can_return_second_factor_with_highest_loa(): void { $collection = new SecondFactorCollection([ diff --git a/src/Surfnet/Stepup/Tests/Identity/Event/EventSerializationAndDeserializationTest.php b/src/Surfnet/Stepup/Tests/Identity/Event/EventSerializationAndDeserializationTest.php index d0d376009..93c2e103d 100644 --- a/src/Surfnet/Stepup/Tests/Identity/Event/EventSerializationAndDeserializationTest.php +++ b/src/Surfnet/Stepup/Tests/Identity/Event/EventSerializationAndDeserializationTest.php @@ -79,11 +79,9 @@ class EventSerializationAndDeserializationTest extends UnitTest { use MockeryPHPUnitIntegration; - /** - * @test - * @group domain - * @dataProvider eventProvider - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\DataProvider('eventProvider')] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function an_event_should_be_the_same_after_serialization_and_deserialization(SerializableInterface $event): void { $isForgettableEvent = $event instanceof Forgettable; @@ -113,11 +111,9 @@ public function an_event_should_be_the_same_after_serialization_and_deserializat $this->assertTrue($event == $deserializedEvent); } - /** - * @test - * @group domain - * @dataProvider serializedDataProvider - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\DataProvider('serializedDataProvider')] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function an_serialized_event_should_be_the_same( string $serializedData, string $serializedSensitiveData, @@ -136,10 +132,8 @@ public function an_serialized_event_should_be_the_same( $this->assertEquals($event, $deserializedEvent); } - /** - * @test - * @group domain - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function an_email_verification_window_should_be_the_same_after_serialization_and_deserialization(): void { // use a fixed datetime instance, to prevent microsecond precision issues in PHP 7.1+ @@ -569,7 +563,7 @@ public function eventProvider(): array ]; } - public function serializedDataProvider(): array + public static function serializedDataProvider(): array { return [ // Tests for changes in BC support for adding the VettingType in the SecondFactorVettedEvents in favour of the 'DocumentNumber' diff --git a/src/Surfnet/Stepup/Tests/Identity/Event/ForgettableEventsTest.php b/src/Surfnet/Stepup/Tests/Identity/Event/ForgettableEventsTest.php index 65877a3a2..01d04e5e5 100644 --- a/src/Surfnet/Stepup/Tests/Identity/Event/ForgettableEventsTest.php +++ b/src/Surfnet/Stepup/Tests/Identity/Event/ForgettableEventsTest.php @@ -58,10 +58,8 @@ final class ForgettableEventsTest extends TestCase { use MockeryPHPUnitIntegration; - /** - * @test - * @group domain - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function certain_events_are_forgettable_events_and_others_are_not(): void { $forgettableEventFqcns = [ diff --git a/src/Surfnet/Stepup/Tests/Identity/Event/WhitelistEventSerializationAndDeserializationTest.php b/src/Surfnet/Stepup/Tests/Identity/Event/WhitelistEventSerializationAndDeserializationTest.php index ca587a765..9da4901ea 100644 --- a/src/Surfnet/Stepup/Tests/Identity/Event/WhitelistEventSerializationAndDeserializationTest.php +++ b/src/Surfnet/Stepup/Tests/Identity/Event/WhitelistEventSerializationAndDeserializationTest.php @@ -32,12 +32,10 @@ class WhitelistEventSerializationAndDeserializationTest extends UnitTest { use MockeryPHPUnitIntegration; - /** - * @test - * @group domain - * @group whitelist - * @dataProvider eventProvider - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\DataProvider('eventProvider')] + #[\PHPUnit\Framework\Attributes\Group('domain')] + #[\PHPUnit\Framework\Attributes\Group('whitelist')] public function an_event_should_be_the_same_after_serialization_and_deserialization(SerializableInterface $event,): void { $class = $event::class; diff --git a/src/Surfnet/Stepup/Tests/Identity/Value/CommonNameTest.php b/src/Surfnet/Stepup/Tests/Identity/Value/CommonNameTest.php index 7ca82305b..fd7496a2c 100644 --- a/src/Surfnet/Stepup/Tests/Identity/Value/CommonNameTest.php +++ b/src/Surfnet/Stepup/Tests/Identity/Value/CommonNameTest.php @@ -29,11 +29,9 @@ class CommonNameTest extends UnitTest { use MockeryPHPUnitIntegration; - /** - * @test - * @group domain - * @dataProvider invalidArgumentProvider - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\DataProvider('invalidArgumentProvider')] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function the_common_name_address_must_be_a_non_empty_string(string $invalidValue): void { $this->expectException(InvalidArgumentException::class); @@ -41,10 +39,8 @@ public function the_common_name_address_must_be_a_non_empty_string(string $inval new CommonName($invalidValue); } - /** - * @test - * @group domain - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function two_common_names_with_the_same_value_are_equal(): void { $commonName = new CommonName('John Doe'); @@ -57,7 +53,7 @@ public function two_common_names_with_the_same_value_are_equal(): void $this->assertFalse($commonName->equals($unknown)); } - public function invalidArgumentProvider(): array + public static function invalidArgumentProvider(): array { return [ 'empty string' => [''], diff --git a/src/Surfnet/Stepup/Tests/Identity/Value/ContactInformationTest.php b/src/Surfnet/Stepup/Tests/Identity/Value/ContactInformationTest.php index 63b0652af..789bdc1c6 100644 --- a/src/Surfnet/Stepup/Tests/Identity/Value/ContactInformationTest.php +++ b/src/Surfnet/Stepup/Tests/Identity/Value/ContactInformationTest.php @@ -28,10 +28,8 @@ class ContactInformationTest extends UnitTest { use MockeryPHPUnitIntegration; - /** - * @test - * @group domain - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function two_instances_with_the_same_value_are_equal(): void { $contactInformation = new ContactInformation('a'); diff --git a/src/Surfnet/Stepup/Tests/Identity/Value/DocumentNumberTest.php b/src/Surfnet/Stepup/Tests/Identity/Value/DocumentNumberTest.php index 83d4e5d9a..7b00dfa18 100644 --- a/src/Surfnet/Stepup/Tests/Identity/Value/DocumentNumberTest.php +++ b/src/Surfnet/Stepup/Tests/Identity/Value/DocumentNumberTest.php @@ -29,21 +29,17 @@ class DocumentNumberTest extends UnitTest { use MockeryPHPUnitIntegration; - /** - * @test - * @group domain - * @dataProvider invalidArgumentProvider - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\DataProvider('invalidArgumentProvider')] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function the_document_number_must_be_a_non_empty_string(string $invalidValue): void { $this->expectException(InvalidArgumentException::class); new DocumentNumber($invalidValue); } - /** - * @test - * @group domain - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function two_document_numbers_with_the_same_value_are_equal(): void { $commonName = new DocumentNumber('John Doe'); @@ -56,7 +52,7 @@ public function two_document_numbers_with_the_same_value_are_equal(): void $this->assertFalse($commonName->equals($unknown)); } - public function invalidArgumentProvider(): array + public static function invalidArgumentProvider(): array { return [ 'empty string' => [''], diff --git a/src/Surfnet/Stepup/Tests/Identity/Value/EmailTest.php b/src/Surfnet/Stepup/Tests/Identity/Value/EmailTest.php index 14be0428d..24e63f6af 100644 --- a/src/Surfnet/Stepup/Tests/Identity/Value/EmailTest.php +++ b/src/Surfnet/Stepup/Tests/Identity/Value/EmailTest.php @@ -29,22 +29,18 @@ class EmailTest extends UnitTest { use MockeryPHPUnitIntegration; - /** - * @test - * @group domain - * @dataProvider invalidArgumentProvider - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\DataProvider('invalidArgumentProvider')] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function the_email_address_must_be_a_non_empty_string(string $invalidValue): void { $this->expectException(InvalidArgumentException::class); new Email($invalidValue); } - /** - * @test - * @group domain - * @dataProvider invalidEmailProvider - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\DataProvider('invalidEmailProvider')] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function the_email_address_given_must_be_rfc_822_compliant(string $invalidValue): void { $this->expectException(InvalidArgumentException::class); @@ -52,10 +48,8 @@ public function the_email_address_given_must_be_rfc_822_compliant(string $invali new Email($invalidValue); } - /** - * @test - * @group domain - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function two_emails_with_the_same_value_are_equal(): void { $email = new Email('email@example.invalid'); @@ -68,7 +62,7 @@ public function two_emails_with_the_same_value_are_equal(): void $this->assertFalse($email->equals($unknown)); } - public function invalidArgumentProvider(): array + public static function invalidArgumentProvider(): array { return [ 'empty string' => [''], @@ -83,7 +77,7 @@ public function invalidArgumentProvider(): array * * @return array */ - public function invalidEmailProvider(): array + public static function invalidEmailProvider(): array { return [ 'no @-sign' => ['mailboxexample.invalid'], diff --git a/src/Surfnet/Stepup/Tests/Identity/Value/EmailVerificationWindowTest.php b/src/Surfnet/Stepup/Tests/Identity/Value/EmailVerificationWindowTest.php index 630d0c72f..e32ebe3d0 100644 --- a/src/Surfnet/Stepup/Tests/Identity/Value/EmailVerificationWindowTest.php +++ b/src/Surfnet/Stepup/Tests/Identity/Value/EmailVerificationWindowTest.php @@ -32,12 +32,9 @@ class EmailVerificationWindowTest extends TestCase { use MockeryPHPUnitIntegration; - /** - * @test - * @group domain - * - * @runInSeparateProcess - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\RunInSeparateProcess] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function window_is_open_for_instructed_timeframe_after_given_time(): void { $startTime = new DateTime(new CoreDateTime('@1')); @@ -62,12 +59,9 @@ public function window_is_open_for_instructed_timeframe_after_given_time(): void $this->assertFalse($window->isOpen(), 'The window should be closed after the end time'); } - /** - * @test - * @group domain - * - * @runInSeparateProcess - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\RunInSeparateProcess] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function a_window_is_considered_equal_when_the_start_and_end_are_the_same(): void { // since we work with second precision, we might run issues trusting normal time, so we fixate the time @@ -91,12 +85,9 @@ public function a_window_is_considered_equal_when_the_start_and_end_are_the_same $this->assertFalse($base->equals($startsEarlierEndsAtSameTime)); } - /** - * @test - * @group domain - * - * @runInSeparateProcess - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\RunInSeparateProcess] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function the_window_correctly_calculates_the_end_datetime(): void { // since we work with second precision, we might run issues trusting normal time, so we fixate the time diff --git a/src/Surfnet/Stepup/Tests/Identity/Value/GssfIdTest.php b/src/Surfnet/Stepup/Tests/Identity/Value/GssfIdTest.php index 9c8fc1eab..e15a28987 100644 --- a/src/Surfnet/Stepup/Tests/Identity/Value/GssfIdTest.php +++ b/src/Surfnet/Stepup/Tests/Identity/Value/GssfIdTest.php @@ -28,11 +28,9 @@ class GssfIdTest extends UnitTest { use MockeryPHPUnitIntegration; - /** - * @test - * @group domain - * @dataProvider invalidValueProvider - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\DataProvider('invalidValueProvider')] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function a_gssf_id_cannot_be_created_with_anything_but_a_nonempty_string( string $invalidValue, ): void { @@ -41,10 +39,8 @@ public function a_gssf_id_cannot_be_created_with_anything_but_a_nonempty_string( new GssfId($invalidValue); } - /** - * @test - * @group domain - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function two_gssf_ids_with_the_same_value_are_equal(): void { $gssf = new GssfId('a'); @@ -60,7 +56,7 @@ public function two_gssf_ids_with_the_same_value_are_equal(): void /** * DataProvider for {@see a_gssf_od_cannot_be_created_with_anything_but_a_nonempty_string()} */ - public function invalidValueProvider(): array + public static function invalidValueProvider(): array { return [ 'empty string' => [''], diff --git a/src/Surfnet/Stepup/Tests/Identity/Value/InstitutionTest.php b/src/Surfnet/Stepup/Tests/Identity/Value/InstitutionTest.php index 3e32aeb58..089b5a861 100644 --- a/src/Surfnet/Stepup/Tests/Identity/Value/InstitutionTest.php +++ b/src/Surfnet/Stepup/Tests/Identity/Value/InstitutionTest.php @@ -29,20 +29,16 @@ class InstitutionTest extends UnitTest { use MockeryPHPUnitIntegration; - /** - * @test - * @group domain - * @dataProvider invalidValueProviderInvalidString - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\DataProvider('invalidValueProviderInvalidString')] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function an_institution_cannot_be_created_with_anything_but_a_nonempty_string_type_errors(string $invalidValue): void { $this->expectException(InvalidArgumentException::class); new Institution($invalidValue); } - /** - * @test - * @group domain - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function two_institutions_with_the_same_value_are_equal(): void { $institution = new Institution('a'); @@ -58,7 +54,7 @@ public function two_institutions_with_the_same_value_are_equal(): void /** * dataprovider */ - public function invalidValueProviderInvalidString(): array + public static function invalidValueProviderInvalidString(): array { return [ 'empty string' => [''], diff --git a/src/Surfnet/Stepup/Tests/Identity/Value/LocationTest.php b/src/Surfnet/Stepup/Tests/Identity/Value/LocationTest.php index 931f9eec8..eb8a19644 100644 --- a/src/Surfnet/Stepup/Tests/Identity/Value/LocationTest.php +++ b/src/Surfnet/Stepup/Tests/Identity/Value/LocationTest.php @@ -28,10 +28,8 @@ class LocationTest extends UnitTest { use MockeryPHPUnitIntegration; - /** - * @test - * @group domain - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function two_locations_with_the_same_value_are_equal(): void { $location = new Location('a'); diff --git a/src/Surfnet/Stepup/Tests/Identity/Value/PhoneNumberTest.php b/src/Surfnet/Stepup/Tests/Identity/Value/PhoneNumberTest.php index 9b969f12e..c93208471 100644 --- a/src/Surfnet/Stepup/Tests/Identity/Value/PhoneNumberTest.php +++ b/src/Surfnet/Stepup/Tests/Identity/Value/PhoneNumberTest.php @@ -28,11 +28,9 @@ class PhoneNumberTest extends UnitTest { use MockeryPHPUnitIntegration; - /** - * @test - * @group domain - * @dataProvider invalidValueProvider - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\DataProvider('invalidValueProvider')] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function a_phone_number_cannot_be_created_with_anything_but_a_nonempty_string( string $invalidValue, ): void { @@ -41,10 +39,8 @@ public function a_phone_number_cannot_be_created_with_anything_but_a_nonempty_st new PhoneNumber($invalidValue); } - /** - * @test - * @group domain - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function two_phone_numbers_with_the_same_value_are_equal(): void { $one = new PhoneNumber('+31 (0) 12345678'); @@ -60,7 +56,7 @@ public function two_phone_numbers_with_the_same_value_are_equal(): void /** * DataProvider for {@see a_phonenumber_cannot_be_created_with_anything_but_a_nonempty_string()} */ - public function invalidValueProvider(): array + public static function invalidValueProvider(): array { return [ 'empty string' => [''], diff --git a/src/Surfnet/Stepup/Tests/Identity/Value/RecoveryTokenIdentifierFactoryTest.php b/src/Surfnet/Stepup/Tests/Identity/Value/RecoveryTokenIdentifierFactoryTest.php index 2bc97760a..93fafbf67 100644 --- a/src/Surfnet/Stepup/Tests/Identity/Value/RecoveryTokenIdentifierFactoryTest.php +++ b/src/Surfnet/Stepup/Tests/Identity/Value/RecoveryTokenIdentifierFactoryTest.php @@ -30,9 +30,7 @@ final class RecoveryTokenIdentifierFactoryTest extends TestCase { use MockeryPHPUnitIntegration; - /** - * @group domain - */ + #[\PHPUnit\Framework\Attributes\Group('domain')] public function test_generates_identifiers_of_all_types(): void { $this->assertEquals( diff --git a/src/Surfnet/Stepup/Tests/Identity/Value/RegistrationAuthorityRoleTest.php b/src/Surfnet/Stepup/Tests/Identity/Value/RegistrationAuthorityRoleTest.php index dad2c5e86..34846a41c 100644 --- a/src/Surfnet/Stepup/Tests/Identity/Value/RegistrationAuthorityRoleTest.php +++ b/src/Surfnet/Stepup/Tests/Identity/Value/RegistrationAuthorityRoleTest.php @@ -28,10 +28,8 @@ class RegistrationAuthorityRoleTest extends UnitTest { use MockeryPHPUnitIntegration; - /** - * @test - * @group domain - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function two_roles_with_the_same_value_are_equal(): void { $role = new RegistrationAuthorityRole(RegistrationAuthorityRole::ROLE_RAA); diff --git a/src/Surfnet/Stepup/Tests/Identity/Value/SafeStoreTest.php b/src/Surfnet/Stepup/Tests/Identity/Value/SafeStoreTest.php index a113946b9..246559379 100644 --- a/src/Surfnet/Stepup/Tests/Identity/Value/SafeStoreTest.php +++ b/src/Surfnet/Stepup/Tests/Identity/Value/SafeStoreTest.php @@ -31,9 +31,7 @@ class SafeStoreTest extends UnitTest { use MockeryPHPUnitIntegration; - /** - * @group domain - */ + #[\PHPUnit\Framework\Attributes\Group('domain')] public function test_creation_of_safe_store(): void { $unhashed = new UnhashedSecret('super-secret'); @@ -42,9 +40,7 @@ public function test_creation_of_safe_store(): void $this->assertTrue(password_verify('super-secret', $instance->getValue())); } - /** - * @group domain - */ + #[\PHPUnit\Framework\Attributes\Group('domain')] public function test_equals(): void { $safeStore = new SafeStore(new UnhashedSecret('a')); diff --git a/src/Surfnet/Stepup/Tests/Identity/Value/SecondFactorIdentifierFactoryTest.php b/src/Surfnet/Stepup/Tests/Identity/Value/SecondFactorIdentifierFactoryTest.php index 435ffc78c..134b2a53f 100644 --- a/src/Surfnet/Stepup/Tests/Identity/Value/SecondFactorIdentifierFactoryTest.php +++ b/src/Surfnet/Stepup/Tests/Identity/Value/SecondFactorIdentifierFactoryTest.php @@ -30,10 +30,8 @@ final class SecondFactorIdentifierFactoryTest extends TestCase { use MockeryPHPUnitIntegration; - /** - * @test - * @group domain - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function generates_identifiers_of_all_types(): void { $this->assertEquals( diff --git a/src/Surfnet/Stepup/Tests/Identity/Value/StepupProviderTest.php b/src/Surfnet/Stepup/Tests/Identity/Value/StepupProviderTest.php index f89f665fe..481b7bc1b 100644 --- a/src/Surfnet/Stepup/Tests/Identity/Value/StepupProviderTest.php +++ b/src/Surfnet/Stepup/Tests/Identity/Value/StepupProviderTest.php @@ -28,11 +28,9 @@ class StepupProviderTest extends UnitTest { use MockeryPHPUnitIntegration; - /** - * @test - * @group domain - * @dataProvider invalidValueProvider - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\DataProvider('invalidValueProvider')] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function a_stepup_provider_cannot_be_created_with_anything_but_a_nonempty_string( string $invalidValue, ): void { @@ -41,10 +39,8 @@ public function a_stepup_provider_cannot_be_created_with_anything_but_a_nonempty new StepupProvider($invalidValue); } - /** - * @test - * @group domain - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function two_stepup_providers_with_the_same_value_are_equal(): void { $institution = new StepupProvider('a'); @@ -58,7 +54,7 @@ public function two_stepup_providers_with_the_same_value_are_equal(): void /** * DataProvider for {@see a_stepup_provider_cannot_be_created_with_anything_but_a_nonempty_string()} */ - public function invalidValueProvider(): array + public static function invalidValueProvider(): array { return [ 'empty string' => [''], diff --git a/src/Surfnet/Stepup/Tests/Identity/Value/TimeFrameTest.php b/src/Surfnet/Stepup/Tests/Identity/Value/TimeFrameTest.php index bf137a49a..3ad4f7657 100644 --- a/src/Surfnet/Stepup/Tests/Identity/Value/TimeFrameTest.php +++ b/src/Surfnet/Stepup/Tests/Identity/Value/TimeFrameTest.php @@ -29,11 +29,9 @@ class TimeFrameTest extends UnitTest { use MockeryPHPUnitIntegration; - /** - * @test - * @group domain - * @dataProvider invalidValueProviderInt - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\DataProvider('invalidValueProviderInt')] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function it_cannot_be_given_an_non_positive_amount_of_seconds(int $invalidValue): void { $this->expectException(InvalidArgumentException::class); @@ -41,10 +39,8 @@ public function it_cannot_be_given_an_non_positive_amount_of_seconds(int $invali TimeFrame::ofSeconds($invalidValue); } - /** - * @test - * @group domain - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function to_string_output_matches_amount_of_seconds_as_string(): void { $seconds = 1000; @@ -61,7 +57,7 @@ public function to_string_output_matches_amount_of_seconds_as_string(): void /** * dataprovider */ - public function invalidValueProviderInt(): array + public static function invalidValueProviderInt(): array { return [ 'zero' => [0], diff --git a/src/Surfnet/Stepup/Tests/Identity/Value/YubikeyPublicIdTest.php b/src/Surfnet/Stepup/Tests/Identity/Value/YubikeyPublicIdTest.php index fa085e594..2978cb728 100644 --- a/src/Surfnet/Stepup/Tests/Identity/Value/YubikeyPublicIdTest.php +++ b/src/Surfnet/Stepup/Tests/Identity/Value/YubikeyPublicIdTest.php @@ -27,10 +27,8 @@ class YubikeyPublicIdTest extends UnitTest { use MockeryPHPUnitIntegration; - /** - * @test - * @group domain - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function two_yubikey_public_ids_with_the_same_value_are_equal(): void { $id = new YubikeyPublicId('00001234'); @@ -43,7 +41,7 @@ public function two_yubikey_public_ids_with_the_same_value_are_equal(): void $this->assertFalse($id->equals($unknown)); } - public function invalidFormatProvider(): array + public static function invalidFormatProvider(): array { return [ '7-character unpadded ID' => ['1906381'], @@ -57,11 +55,9 @@ public function invalidFormatProvider(): array ]; } - /** - * @test - * @group domain - * @dataProvider invalidFormatProvider - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\DataProvider('invalidFormatProvider')] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function it_cannot_be_constructed_with_an_invalid_format(string $invalidFormat): void { $this->expectException(InvalidArgumentException::class); @@ -69,7 +65,7 @@ public function it_cannot_be_constructed_with_an_invalid_format(string $invalidF new YubikeyPublicId($invalidFormat); } - public function validFormatProvider(): array + public static function validFormatProvider(): array { return [ '8-character ID' => ['01906381'], @@ -80,11 +76,9 @@ public function validFormatProvider(): array ]; } - /** - * @test - * @group domain - * @dataProvider validFormatProvider - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\DataProvider('validFormatProvider')] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function its_value_matches_its_input_value(string $validFormat): void { $id = new YubikeyPublicId($validFormat); diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Authorization/Filter/InstitutionAuthorizationRepositoryFilterTest.php b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Authorization/Filter/InstitutionAuthorizationRepositoryFilterTest.php index 6269e4105..22676cfb0 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Authorization/Filter/InstitutionAuthorizationRepositoryFilterTest.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Authorization/Filter/InstitutionAuthorizationRepositoryFilterTest.php @@ -50,10 +50,8 @@ public function setUp(): void $this->queryBuilder->from(InstitutionValue::class, 'i'); } - /** - * @test - * @group domain - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function a_querybuilder_object_is_filtered_with_an_institution_authorization_context(): void { $this->mockedAuthorizationContext->method('getInstitutions') diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Authorization/Service/AuthorizationContextServiceTest.php b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Authorization/Service/AuthorizationContextServiceTest.php index 0e0aaec99..549ad2428 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Authorization/Service/AuthorizationContextServiceTest.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Authorization/Service/AuthorizationContextServiceTest.php @@ -74,10 +74,8 @@ public function setUp(): void $this->authorizationRepository = $authorizationRepository; } - /** - * @test - * @group domain - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function it_can_build_a_context(): void { $actorInstitution = new Institution('institution-a'); @@ -127,10 +125,8 @@ public function it_can_build_a_context(): void $this->assertFalse($context->isActorSraa()); } - /** - * @test - * @group domain - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function it_can_build_a_context_with_sraa_actor(): void { $actorInstitution = new Institution('institution-a'); @@ -236,10 +232,8 @@ public function test_it_can_retrieve_select_raa_institutions(): void $this->assertFalse($context->isActorSraa()); } - /** - * @test - * @group domain - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function it_rejects_unknown_actor(): void { $this->expectExceptionMessage("The provided id is not associated with any known identity"); diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Authorization/Service/CommandAuthorizationServiceTest.php b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Authorization/Service/CommandAuthorizationServiceTest.php index b402981e6..4922a71d1 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Authorization/Service/CommandAuthorizationServiceTest.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Authorization/Service/CommandAuthorizationServiceTest.php @@ -138,10 +138,8 @@ public function test_shared_ra_and_ss_commands_are_correctly_authorized(): void $this->assertTrue($this->service->mayRaCommandBeExecutedOnBehalfOf($command, $actorId, $actorInstitution)); } - /** - * @test - * @dataProvider availableCommands - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\DataProvider('availableCommands')] public function a_sraa_should_be_able_to_execute_all_commands(string $file, Command $command): void { $this->assertInstanceOf(Command::class, $command); @@ -164,10 +162,8 @@ public function a_sraa_should_be_able_to_execute_all_commands(string $file, Comm } - /** - * @test - * @dataProvider availableCommands - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\DataProvider('availableCommands')] public function an_identity_should_be_able_to_execute_own_selfservice_commands(string $file, mixed $command): void { $this->assertInstanceOf(Command::class, $command); @@ -197,10 +193,8 @@ public function an_identity_should_be_able_to_execute_own_selfservice_commands(s } } - /** - * @test - * @dataProvider availableCommands - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\DataProvider('availableCommands')] public function an_identity_should_be_able_to_execute_configured_ra_commands(string $file, mixed $command): void { $this->assertInstanceOf(Command::class, $command); @@ -261,10 +255,8 @@ public function an_identity_should_be_able_to_execute_configured_ra_commands(str } - /** - * @test - * @dataProvider availableCommands - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\DataProvider('availableCommands')] public function an_identity_should_be_able_to_execute_configured_ra_and_selfservice_commands(string $file, mixed $command): void { $this->assertInstanceOf(Command::class, $command); @@ -318,10 +310,8 @@ public function an_identity_should_be_able_to_execute_configured_ra_and_selfserv } - /** - * @test - * @dataProvider availableCommands - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\DataProvider('availableCommands')] public function an_identity_should_not_be_able_to_execute_someone_elses_selfservice_commands(string $file, mixed $command): void { $this->assertInstanceOf(Command::class, $command); @@ -359,10 +349,8 @@ public function an_identity_should_not_be_able_to_execute_someone_elses_selfserv } } - /** - * @test - * @dataProvider availableCommands - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\DataProvider('availableCommands')] public function an_identity_should_be_able_to_execute_unconfigured_ra_commands(string $file, mixed $command): void { $this->assertInstanceOf(Command::class, $command); @@ -422,9 +410,7 @@ public function an_identity_should_be_able_to_execute_unconfigured_ra_commands(s } - /** - * @test - */ + #[\PHPUnit\Framework\Attributes\Test] public function all_available_commands_should_be_tested(): void { $tested = [ @@ -482,7 +468,7 @@ public function all_available_commands_should_be_tested(): void /** * @return string[][]|Command[][] */ - public function availableCommands(): array + public static function availableCommands(): array { $rootPath = realpath(__DIR__ . '/../../../../../../../src'); assert(is_string($rootPath), 'Root path could not be determined correctly'); diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Configuration/Entity/ConfiguredInstitutionTest.php b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Configuration/Entity/ConfiguredInstitutionTest.php index 636923ec4..95a7a84f1 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Configuration/Entity/ConfiguredInstitutionTest.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Configuration/Entity/ConfiguredInstitutionTest.php @@ -26,10 +26,8 @@ class ConfiguredInstitutionTest extends TestCase { use MockeryPHPUnitIntegration; - /** - * @test - * @group entity - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('entity')] public function a_configured_institution_is_correctly_serialized_to_json(): void { $deserializedConfiguredInstitution = ['institution' => 'surfnet.nl']; diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Configuration/Entity/RaLocationTest.php b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Configuration/Entity/RaLocationTest.php index bb9bf4cd6..52a1986e3 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Configuration/Entity/RaLocationTest.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Configuration/Entity/RaLocationTest.php @@ -29,10 +29,8 @@ class RaLocationTest extends TestCase { use MockeryPHPUnitIntegration; - /** - * @test - * @group entity - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('entity')] public function an_ra_location_is_correctly_serialized_to_json(): void { $deserializedRaLocation = [ diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Configuration/Service/AllowedSecondFactorMapTest.php b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Configuration/Service/AllowedSecondFactorMapTest.php index 9ca2ef191..4a18efd13 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Configuration/Service/AllowedSecondFactorMapTest.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Configuration/Service/AllowedSecondFactorMapTest.php @@ -29,10 +29,8 @@ class AllowedSecondFactorMapTest extends TestCase { use MockeryPHPUnitIntegration; - /** - * @test - * @group domain - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function an_allowed_second_factor_that_contains_a_given_institution_will_result_in_a_filled_allowed_second_factor_list(): void { $institution = new Institution('institution-with-filled-list.test'); @@ -52,10 +50,8 @@ public function an_allowed_second_factor_that_contains_a_given_institution_will_ $this->assertTrue($expectedAllowedSecondFactorList->equals($actualAllowedSecondFactorList)); } - /** - * @test - * @group domain - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function an_allowed_second_factor_map_that_does_not_contain_a_given_institution_will_result_in_a_blank_allowed_second_factor_list(): void { $institution = new Institution('institution-with-blank-list.test'); diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Configuration/Service/InstitutionAuthorizationOptionMapTest.php b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Configuration/Service/InstitutionAuthorizationOptionMapTest.php index 572025608..1036779a5 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Configuration/Service/InstitutionAuthorizationOptionMapTest.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Configuration/Service/InstitutionAuthorizationOptionMapTest.php @@ -38,10 +38,8 @@ public function setUp(): void $this->institution = new Institution('inst'); } - /** - * @test - * @group domain - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function an_array_initialized_with_authorizations_should_return_valid_institutions_per_role(): void { $testData = [ @@ -90,10 +88,8 @@ public function an_array_initialized_with_authorizations_should_return_valid_ins ); } - /** - * @test - * @group domain - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('domain')] public function an_array_initialized_with_no_authorizations_should_return_valid_institutions_per_role(): void { $institutionAuthorizationMap = InstitutionAuthorizationOptionMap::fromInstitutionAuthorizations( diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/AuthorityRoleTypeTest.php b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/AuthorityRoleTypeTest.php index 47fb8152c..704fb57a2 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/AuthorityRoleTypeTest.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/AuthorityRoleTypeTest.php @@ -44,10 +44,8 @@ public function setUp(): void $this->platform = new MariaDBPlatform(); } - /** - * @test - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function a_null_value_remains_null_in_to_sql_conversion(): void { $authorityRole = Type::getType(AuthorityRoleType::NAME); @@ -57,10 +55,8 @@ public function a_null_value_remains_null_in_to_sql_conversion(): void $this->assertNull($value); } - /** - * @test - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function a_non_null_value_is_converted_to_the_correct_format(): void { $authorityRole = Type::getType(AuthorityRoleType::NAME); @@ -72,10 +68,8 @@ public function a_non_null_value_is_converted_to_the_correct_format(): void $this->assertEquals(AuthorityRole::ROLE_RAA, $output); } - /** - * @test - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function a_null_value_remains_null_when_converting_from_db_to_php_value(): void { $authorityRole = Type::getType(AuthorityRoleType::NAME); @@ -85,10 +79,8 @@ public function a_null_value_remains_null_when_converting_from_db_to_php_value() $this->assertNull($value); } - /** - * @test - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function a_non_null_value_is_converted_to_an_authority_role_value_object(): void { $authorityRole = Type::getType(AuthorityRoleType::NAME); @@ -101,10 +93,8 @@ public function a_non_null_value_is_converted_to_an_authority_role_value_object( $this->assertEquals(new AuthorityRole($input), $output); } - /** - * @test - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function an_invalid_database_value_causes_an_exception_upon_conversion(): void { $this->expectException(ConversionException::class); diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/CommonNameTypeTest.php b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/CommonNameTypeTest.php index f1bd6b66b..2d2cee713 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/CommonNameTypeTest.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/CommonNameTypeTest.php @@ -45,10 +45,8 @@ public function setUp(): void $this->platform = new MariaDBPlatform(); } - /** - * @test - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function a_null_value_remains_null_in_to_sql_conversion(): void { $commonName = Type::getType(CommonNameType::NAME); @@ -58,10 +56,8 @@ public function a_null_value_remains_null_in_to_sql_conversion(): void $this->assertNull($value); } - /** - * @test - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function a_non_null_value_is_converted_to_the_correct_format(): void { $commonName = Type::getType(CommonNameType::NAME); @@ -73,10 +69,8 @@ public function a_non_null_value_is_converted_to_the_correct_format(): void $this->assertEquals('Arthur Dent', $output); } - /** - * @test - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function a_null_value_remains_null_when_converting_from_db_to_php_value(): void { $commonName = Type::getType(CommonNameType::NAME); @@ -86,10 +80,8 @@ public function a_null_value_remains_null_when_converting_from_db_to_php_value() $this->assertNull($value); } - /** - * @test - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function a_non_null_value_is_converted_to_the_stepup_common_name_object(): void { $commonName = Type::getType(CommonNameType::NAME); @@ -102,10 +94,8 @@ public function a_non_null_value_is_converted_to_the_stepup_common_name_object() $this->assertEquals(new CommonName($input), $output); } - /** - * @test - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function an_invalid_database_value_causes_an_exception_upon_conversion(): void { $this->expectException(ConversionException::class); diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/ConfigurationContactInformationTypeTest.php b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/ConfigurationContactInformationTypeTest.php index cf8276298..e27634617 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/ConfigurationContactInformationTypeTest.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/ConfigurationContactInformationTypeTest.php @@ -50,12 +50,9 @@ public function setUp(): void $this->platform = new MariaDBPlatform(); } - /** - * @test - * @group doctrine - * - * @dataProvider \Surfnet\StepupMiddleware\ApiBundle\Tests\TestDataProvider::notNull - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\DataProviderExternal(\Surfnet\StepupMiddleware\ApiBundle\Tests\TestDataProvider::class, 'notNull')] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function a_value_can_only_be_converted_to_sql_if_it_is_contact_information_or_null(mixed $incorrectValue): void { $this->expectException(ConversionException::class); @@ -64,10 +61,8 @@ public function a_value_can_only_be_converted_to_sql_if_it_is_contact_informatio $configurationContactInformation->convertToDatabaseValue($incorrectValue, $this->platform); } - /** - * @test - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function a_null_value_remains_null_in_to_sql_conversion(): void { $configurationContactInformation = Type::getType(ConfigurationContactInformationType::NAME); @@ -77,10 +72,8 @@ public function a_null_value_remains_null_in_to_sql_conversion(): void $this->assertNull($value); } - /** - * @test - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function a_non_null_value_is_converted_to_the_correct_format(): void { $configurationContactInformation = Type::getType(ConfigurationContactInformationType::NAME); @@ -93,10 +86,8 @@ public function a_non_null_value_is_converted_to_the_correct_format(): void $this->assertEquals($expected, $output); } - /** - * @test - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function a_null_value_remains_null_when_converting_from_db_to_php_value(): void { $configurationContactInformation = Type::getType(ConfigurationContactInformationType::NAME); @@ -106,10 +97,8 @@ public function a_null_value_remains_null_when_converting_from_db_to_php_value() $this->assertNull($value); } - /** - * @test - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function a_non_null_value_is_converted_to_a_contact_information_value_object(): void { $configurationContactInformation = Type::getType(ConfigurationContactInformationType::NAME); @@ -122,10 +111,8 @@ public function a_non_null_value_is_converted_to_a_contact_information_value_obj $this->assertEquals(new ContactInformation($input), $output); } - /** - * @test - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function an_invalid_database_value_causes_an_exception_upon_conversion(): void { $this->expectException(ConversionException::class); diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/ConfigurationInstitutionTypeTest.php b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/ConfigurationInstitutionTypeTest.php index 6eceb3e08..3353aba0f 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/ConfigurationInstitutionTypeTest.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/ConfigurationInstitutionTypeTest.php @@ -48,10 +48,8 @@ public function setUp(): void $this->platform = new MariaDBPlatform(); } - /** - * @test - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function a_null_value_remains_null_in_to_sql_conversion(): void { $configurationInstitution = Type::getType(ConfigurationInstitutionType::NAME); @@ -61,12 +59,9 @@ public function a_null_value_remains_null_in_to_sql_conversion(): void $this->assertNull($value); } - /** - * @test - * @group doctrine - * - * @dataProvider \Surfnet\StepupMiddleware\ApiBundle\Tests\TestDataProvider::notNull - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\DataProviderExternal(\Surfnet\StepupMiddleware\ApiBundle\Tests\TestDataProvider::class, 'notNull')] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function a_value_can_only_be_converted_to_sql_if_it_is_an_institution_or_null(mixed $incorrectValue): void { $this->expectException(ConversionException::class); @@ -75,10 +70,8 @@ public function a_value_can_only_be_converted_to_sql_if_it_is_an_institution_or_ $configurationContactInformation->convertToDatabaseValue($incorrectValue, $this->platform); } - /** - * @test - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function a_non_null_value_is_converted_to_the_correct_format(): void { $configurationInstitution = Type::getType(ConfigurationInstitutionType::NAME); @@ -92,10 +85,8 @@ public function a_non_null_value_is_converted_to_the_correct_format(): void $this->assertEquals($expected, $output); } - /** - * @test - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function a_null_value_remains_null_when_converting_from_db_to_php_value(): void { $configurationInstitution = Type::getType(ConfigurationInstitutionType::NAME); @@ -105,10 +96,8 @@ public function a_null_value_remains_null_when_converting_from_db_to_php_value() $this->assertNull($value); } - /** - * @test - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function a_non_null_value_is_converted_to_a_configuration_institution_value_object(): void { $configurationInstitution = Type::getType(ConfigurationInstitutionType::NAME); @@ -121,10 +110,8 @@ public function a_non_null_value_is_converted_to_a_configuration_institution_val $this->assertEquals(new Institution($input), $output); } - /** - * @test - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function an_invalid_database_value_causes_an_exception_upon_conversion(): void { $this->expectException(ConversionException::class); diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/ConfigurationLocationTypeTest.php b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/ConfigurationLocationTypeTest.php index 2e6cb23b6..09d2709f8 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/ConfigurationLocationTypeTest.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/ConfigurationLocationTypeTest.php @@ -50,10 +50,8 @@ public function setUp(): void $this->platform = new MariaDBPlatform(); } - /** - * @test - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function a_null_value_remains_null_in_to_sql_conversion(): void { $configurationLocation = Type::getType(ConfigurationLocationType::NAME); @@ -63,12 +61,9 @@ public function a_null_value_remains_null_in_to_sql_conversion(): void $this->assertNull($value); } - /** - * @test - * @group doctrine - * - * @dataProvider \Surfnet\StepupMiddleware\ApiBundle\Tests\TestDataProvider::notNull - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\DataProviderExternal(\Surfnet\StepupMiddleware\ApiBundle\Tests\TestDataProvider::class, 'notNull')] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function a_value_can_only_be_converted_to_sql_if_it_is_a_location_or_null(mixed $incorrectValue): void { $this->expectException(ConversionException::class); @@ -77,10 +72,8 @@ public function a_value_can_only_be_converted_to_sql_if_it_is_a_location_or_null $configurationContactInformation->convertToDatabaseValue($incorrectValue, $this->platform); } - /** - * @test - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function a_non_null_value_is_converted_to_the_correct_format(): void { $configurationLocation = Type::getType(ConfigurationLocationType::NAME); @@ -93,10 +86,8 @@ public function a_non_null_value_is_converted_to_the_correct_format(): void $this->assertEquals($expected, $output); } - /** - * @test - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function a_null_value_remains_null_when_converting_from_db_to_php_value(): void { $configurationLocation = Type::getType(ConfigurationLocationType::NAME); @@ -106,10 +97,8 @@ public function a_null_value_remains_null_when_converting_from_db_to_php_value() $this->assertNull($value); } - /** - * @test - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function a_non_null_value_is_converted_to_a_configuration_location_value_object(): void { $configurationLocation = Type::getType(ConfigurationLocationType::NAME); @@ -122,10 +111,8 @@ public function a_non_null_value_is_converted_to_a_configuration_location_value_ $this->assertEquals(new Location($input), $output); } - /** - * @test - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function an_invalid_database_value_causes_an_exception_upon_conversion(): void { $this->expectException(ConversionException::class); diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/ContactInformationTypeTest.php b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/ContactInformationTypeTest.php index 334641892..afb374116 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/ContactInformationTypeTest.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/ContactInformationTypeTest.php @@ -51,10 +51,8 @@ public function setUp(): void $this->platform = new MariaDBPlatform(); } - /** - * @test - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function a_null_value_remains_null_in_to_sql_conversion(): void { $contactInformation = Type::getType(ContactInformationType::NAME); @@ -64,10 +62,8 @@ public function a_null_value_remains_null_in_to_sql_conversion(): void $this->assertNull($value); } - /** - * @test - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function a_non_null_value_is_converted_to_the_correct_format(): void { $contactInformation = Type::getType(ContactInformationType::NAME); @@ -80,10 +76,8 @@ public function a_non_null_value_is_converted_to_the_correct_format(): void $this->assertEquals($expected, $output); } - /** - * @test - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function a_null_value_remains_null_when_converting_from_db_to_php_value(): void { $contactInformation = Type::getType(ContactInformationType::NAME); @@ -93,10 +87,8 @@ public function a_null_value_remains_null_when_converting_from_db_to_php_value() $this->assertNull($value); } - /** - * @test - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function a_non_null_value_is_converted_to_a_contact_information_value_object(): void { $contactInformation = Type::getType(ContactInformationType::NAME); @@ -109,10 +101,8 @@ public function a_non_null_value_is_converted_to_a_contact_information_value_obj $this->assertEquals(new ContactInformation($input), $output); } - /** - * @test - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function an_invalid_database_value_causes_an_exception_upon_conversion(): void { $this->expectException(ConversionException::class); diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/DateTimeTypeTest.php b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/DateTimeTypeTest.php index 4bb52952b..54477b4e4 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/DateTimeTypeTest.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/DateTimeTypeTest.php @@ -49,10 +49,8 @@ public function setUp(): void $this->platform = new MariaDBPlatform(); } - /** - * @test - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function a_null_value_remains_null_in_to_sql_conversion(): void { $dateTime = Type::getType(DateTimeType::NAME); @@ -62,10 +60,8 @@ public function a_null_value_remains_null_in_to_sql_conversion(): void $this->assertNull($value); } - /** - * @test - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function a_non_null_value_is_converted_to_the_correct_format(): void { $dateTime = Type::getType(DateTimeType::NAME); @@ -77,10 +73,8 @@ public function a_non_null_value_is_converted_to_the_correct_format(): void $this->assertEquals('1970-01-01 00:00:00', $output); } - /** - * @test - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function a_null_value_remains_null_when_converting_from_db_to_php_value(): void { $dateTime = Type::getType(DateTimeType::NAME); @@ -90,10 +84,8 @@ public function a_null_value_remains_null_when_converting_from_db_to_php_value() $this->assertNull($value); } - /** - * @test - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function a_string_is_converted_to_the_stepup_datetime_object(): void { $dateTime = Type::getType(DateTimeType::NAME); @@ -108,11 +100,8 @@ public function a_string_is_converted_to_the_stepup_datetime_object(): void $this->assertEquals($expectedDateTime, $actualDateTime); } - /** - * @test - * @group doctrine - * - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function an_invalid_database_value_causes_an_exception_upon_conversion(): void { $this->expectException(ConversionException::class); diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/DocumentNumberTypeTest.php b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/DocumentNumberTypeTest.php index 33ddfb91b..2a9955a59 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/DocumentNumberTypeTest.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/DocumentNumberTypeTest.php @@ -49,10 +49,8 @@ public function setUp(): void $this->platform = new MariaDBPlatform(); } - /** - * @test - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function a_null_value_remains_null_in_to_sql_conversion(): void { $type = Type::getType(DocumentNumberType::NAME); @@ -62,10 +60,8 @@ public function a_null_value_remains_null_in_to_sql_conversion(): void $this->assertNull($value); } - /** - * @test - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function a_normal_document_number_is_converted_to_a_database_value(): void { $type = Type::getType(DocumentNumberType::NAME); @@ -77,10 +73,8 @@ public function a_normal_document_number_is_converted_to_a_database_value(): voi $this->assertEquals('a', $output); } - /** - * @test - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function a_null_value_remains_null_when_converting_from_db_to_php_value(): void { $type = Type::getType(DocumentNumberType::NAME); @@ -90,12 +84,9 @@ public function a_null_value_remains_null_when_converting_from_db_to_php_value() $this->assertNull($value); } - /** - * @test - * @group doctrine - * - * @dataProvider \Surfnet\StepupMiddleware\ApiBundle\Tests\TestDataProvider::notNull - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\DataProviderExternal(\Surfnet\StepupMiddleware\ApiBundle\Tests\TestDataProvider::class, 'notNull')] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function a_value_can_only_be_converted_to_sql_if_it_is_a_document_number_or_null(mixed $incorrectValue): void { $this->expectException(ConversionException::class); @@ -104,10 +95,8 @@ public function a_value_can_only_be_converted_to_sql_if_it_is_a_document_number_ $configurationContactInformation->convertToDatabaseValue($incorrectValue, $this->platform); } - /** - * @test - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function a_non_null_value_is_converted_to_the_stepup_document_number_object(): void { $type = Type::getType(DocumentNumberType::NAME); @@ -119,10 +108,8 @@ public function a_non_null_value_is_converted_to_the_stepup_document_number_obje $this->assertTrue((new DocumentNumber($input))->equals($output)); } - /** - * @test - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function an_invalid_database_value_causes_an_exception_upon_conversion(): void { $this->expectException(TypeError::class); diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/EmailTypeTest.php b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/EmailTypeTest.php index 6c4ed6837..b20beefe4 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/EmailTypeTest.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/EmailTypeTest.php @@ -45,10 +45,8 @@ public function setUp(): void $this->platform = new MariaDBPlatform(); } - /** - * @test - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function a_null_value_remains_null_in_to_sql_conversion(): void { $email = Type::getType(EmailType::NAME); @@ -58,10 +56,8 @@ public function a_null_value_remains_null_in_to_sql_conversion(): void $this->assertNull($value); } - /** - * @test - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function a_non_null_value_is_converted_to_the_correct_format(): void { $email = Type::getType(EmailType::NAME); @@ -73,10 +69,8 @@ public function a_non_null_value_is_converted_to_the_correct_format(): void $this->assertEquals('arthur@babelfish.invalid', $output); } - /** - * @test - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function a_null_value_remains_null_when_converting_from_db_to_php_value(): void { $email = Type::getType(EmailType::NAME); @@ -86,10 +80,8 @@ public function a_null_value_remains_null_when_converting_from_db_to_php_value() $this->assertNull($value); } - /** - * @test - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function a_non_null_value_is_converted_to_the_stepup_email_object(): void { $email = Type::getType(EmailType::NAME); @@ -102,10 +94,8 @@ public function a_non_null_value_is_converted_to_the_stepup_email_object(): void $this->assertEquals(new Email($input), $output); } - /** - * @test - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function an_invalid_database_value_causes_an_exception_upon_conversion(): void { $this->expectException(ConversionException::class); diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/InstitutionRoleTypeTest.php b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/InstitutionRoleTypeTest.php index c7cb82c67..cc9721109 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/InstitutionRoleTypeTest.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/InstitutionRoleTypeTest.php @@ -48,10 +48,8 @@ public function setUp(): void $this->platform = new MariaDBPlatform(); } - /** - * @test - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function a_null_value_remains_null_in_to_sql_conversion(): void { $configurationInstitution = Type::getType(InstitutionRoleType::NAME); @@ -61,10 +59,8 @@ public function a_null_value_remains_null_in_to_sql_conversion(): void $this->assertNull($value); } - /** - * @test - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function a_non_null_value_is_converted_to_the_correct_format(): void { $configurationInstitution = Type::getType(InstitutionRoleType::NAME); @@ -77,10 +73,8 @@ public function a_non_null_value_is_converted_to_the_correct_format(): void $this->assertEquals($expected, $output); } - /** - * @test - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function a_null_value_remains_null_when_converting_from_db_to_php_value(): void { $configurationInstitution = Type::getType(InstitutionRoleType::NAME); @@ -90,10 +84,8 @@ public function a_null_value_remains_null_when_converting_from_db_to_php_value() $this->assertNull($value); } - /** - * @test - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function a_non_null_value_is_converted_to_a_configuration_institution_value_object(): void { $configurationInstitution = Type::getType(InstitutionRoleType::NAME); @@ -106,10 +98,8 @@ public function a_non_null_value_is_converted_to_a_configuration_institution_val $this->assertEquals(new InstitutionRole($input), $output); } - /** - * @test - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function an_invalid_database_value_causes_an_exception_upon_conversion(): void { $this->expectException(ConversionException::class); diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/InstitutionTypeTest.php b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/InstitutionTypeTest.php index edb107a84..54856a08c 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/InstitutionTypeTest.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/InstitutionTypeTest.php @@ -48,10 +48,8 @@ public function setUp(): void $this->platform = new MariaDBPlatform(); } - /** - * @test - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function a_null_value_remains_null_in_to_sql_conversion(): void { $configurationInstitution = Type::getType(InstitutionType::NAME); @@ -61,10 +59,8 @@ public function a_null_value_remains_null_in_to_sql_conversion(): void $this->assertNull($value); } - /** - * @test - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function a_non_null_value_is_converted_to_the_correct_format(): void { $configurationInstitution = Type::getType(InstitutionType::NAME); @@ -77,10 +73,8 @@ public function a_non_null_value_is_converted_to_the_correct_format(): void $this->assertEquals($expected, $output); } - /** - * @test - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function a_null_value_remains_null_when_converting_from_db_to_php_value(): void { $configurationInstitution = Type::getType(InstitutionType::NAME); @@ -90,10 +84,8 @@ public function a_null_value_remains_null_when_converting_from_db_to_php_value() $this->assertNull($value); } - /** - * @test - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function a_non_null_value_is_converted_to_a_configuration_institution_value_object(): void { $configurationInstitution = Type::getType(InstitutionType::NAME); @@ -106,10 +98,8 @@ public function a_non_null_value_is_converted_to_a_configuration_institution_val $this->assertEquals(new Institution($input), $output); } - /** - * @test - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function an_invalid_database_value_causes_an_exception_upon_conversion(): void { $this->expectException(ConversionException::class); diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/LocaleTypeTest.php b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/LocaleTypeTest.php index d34e64068..7c41be054 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/LocaleTypeTest.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/LocaleTypeTest.php @@ -47,10 +47,8 @@ public function setUp(): void $this->platform = new MariaDBPlatform(); } - /** - * @test - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function a_null_value_remains_null_in_to_sql_conversion(): void { $locale = Type::getType(LocaleType::NAME); @@ -60,10 +58,8 @@ public function a_null_value_remains_null_in_to_sql_conversion(): void $this->assertNull($value); } - /** - * @test - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function a_non_null_value_is_converted_to_the_correct_format(): void { $locale = Type::getType(LocaleType::NAME); @@ -76,10 +72,8 @@ public function a_non_null_value_is_converted_to_the_correct_format(): void $this->assertEquals($expected, $output); } - /** - * @test - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function a_null_value_remains_null_when_converting_from_db_to_php_value(): void { $locale = Type::getType(LocaleType::NAME); @@ -89,10 +83,8 @@ public function a_null_value_remains_null_when_converting_from_db_to_php_value() $this->assertNull($value); } - /** - * @test - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function a_non_null_value_is_converted_to_a_locale_value_object(): void { $locale = Type::getType(LocaleType::NAME); @@ -105,10 +97,8 @@ public function a_non_null_value_is_converted_to_a_locale_value_object(): void $this->assertEquals(new Locale($input), $output); } - /** - * @test - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function an_invalid_database_value_causes_an_exception_upon_conversion(): void { $this->expectException(ConversionException::class); diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/LocationTypeTest.php b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/LocationTypeTest.php index 3b228596e..bd50785d4 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/LocationTypeTest.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/LocationTypeTest.php @@ -51,10 +51,8 @@ public function setUp(): void $this->platform = new MariaDBPlatform(); } - /** - * @test - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function a_null_value_remains_null_in_to_sql_conversion(): void { $location = Type::getType(LocationType::NAME); @@ -64,10 +62,8 @@ public function a_null_value_remains_null_in_to_sql_conversion(): void $this->assertNull($value); } - /** - * @test - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function a_non_null_value_is_converted_to_the_correct_format(): void { $location = Type::getType(LocationType::NAME); @@ -80,10 +76,8 @@ public function a_non_null_value_is_converted_to_the_correct_format(): void $this->assertEquals($expected, $output); } - /** - * @test - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function a_null_value_remains_null_when_converting_from_db_to_php_value(): void { $location = Type::getType(LocationType::NAME); @@ -93,10 +87,8 @@ public function a_null_value_remains_null_when_converting_from_db_to_php_value() $this->assertNull($value); } - /** - * @test - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function a_non_null_value_is_converted_to_a_location_value_object(): void { $location = Type::getType(LocationType::NAME); @@ -109,10 +101,8 @@ public function a_non_null_value_is_converted_to_a_location_value_object(): void $this->assertEquals(new Location($input), $output); } - /** - * @test - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function an_invalid_database_value_causes_an_exception_upon_conversion(): void { $this->expectException(ConversionException::class); diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/NameIdTypeTest.php b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/NameIdTypeTest.php index 6c40a2c0d..c801cb7a7 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/NameIdTypeTest.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/NameIdTypeTest.php @@ -46,10 +46,8 @@ public function setUp(): void $this->platform = new MariaDBPlatform(); } - /** - * @test - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function a_null_value_remains_null_in_to_sql_conversion(): void { $nameId = Type::getType(NameIdType::NAME); @@ -59,10 +57,8 @@ public function a_null_value_remains_null_in_to_sql_conversion(): void $this->assertNull($value); } - /** - * @test - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function a_non_null_value_is_converted_to_the_correct_format(): void { $nameId = Type::getType(NameIdType::NAME); @@ -75,10 +71,8 @@ public function a_non_null_value_is_converted_to_the_correct_format(): void $this->assertEquals($expected, $output); } - /** - * @test - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function a_null_value_remains_null_when_converting_from_db_to_php_value(): void { $nameId = Type::getType(NameIdType::NAME); @@ -88,10 +82,8 @@ public function a_null_value_remains_null_when_converting_from_db_to_php_value() $this->assertNull($value); } - /** - * @test - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function a_non_null_value_is_converted_to_a_name_id_value_object(): void { $nameId = Type::getType(NameIdType::NAME); @@ -104,10 +96,8 @@ public function a_non_null_value_is_converted_to_a_name_id_value_object(): void $this->assertEquals(new NameId($input), $output); } - /** - * @test - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function an_invalid_database_value_causes_an_exception_upon_conversion(): void { $this->expectException(ConversionException::class); @@ -117,10 +107,8 @@ public function an_invalid_database_value_causes_an_exception_upon_conversion(): $nameId->convertToPHPValue(false, $this->platform); } - /** - * @test - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function a_excessive_long_database_value_causes_an_exception_upon_conversion(): void { $this->expectException(ConversionException::class); diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/NumberOfTokensPerIdentityTypeTest.php b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/NumberOfTokensPerIdentityTypeTest.php index ef7bd8bc2..78657e3ae 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/NumberOfTokensPerIdentityTypeTest.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/NumberOfTokensPerIdentityTypeTest.php @@ -49,10 +49,8 @@ public function setUp(): void $this->platform = new MariaDBPlatform(); } - /** - * @test - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function a_null_value_remains_null_in_to_sql_conversion(): void { $numberOfTokensPerIdentity = Type::getType(NumberOfTokensPerIdentityType::NAME); @@ -62,12 +60,9 @@ public function a_null_value_remains_null_in_to_sql_conversion(): void $this->assertNull($value); } - /** - * @test - * @group doctrine - * - * @dataProvider \Surfnet\StepupMiddleware\ApiBundle\Tests\TestDataProvider::notNull - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\DataProviderExternal(\Surfnet\StepupMiddleware\ApiBundle\Tests\TestDataProvider::class, 'notNull')] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function a_value_can_only_be_converted_to_sql_if_it_is_an_option_type_or_null(mixed $incorrectValue): void { $this->expectException(ConversionException::class); @@ -76,10 +71,8 @@ public function a_value_can_only_be_converted_to_sql_if_it_is_an_option_type_or_ $numberOfTokensPerIdentity->convertToDatabaseValue($incorrectValue, $this->platform); } - /** - * @test - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function a_non_null_value_is_converted_to_the_correct_format(): void { $numberOfTokensPerIdentity = Type::getType(NumberOfTokensPerIdentityType::NAME); @@ -92,10 +85,8 @@ public function a_non_null_value_is_converted_to_the_correct_format(): void $this->assertEquals($expected, $output); } - /** - * @test - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function a_null_value_remains_null_when_converting_from_db_to_php_value(): void { $numberOfTokensPerIdentity = Type::getType(NumberOfTokensPerIdentityType::NAME); @@ -105,10 +96,8 @@ public function a_null_value_remains_null_when_converting_from_db_to_php_value() $this->assertNull($value); } - /** - * @test - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function a_non_null_value_is_converted_to_an_option_value_object(): void { $numberOfTokensPerIdentity = Type::getType(NumberOfTokensPerIdentityType::NAME); diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/RaLocationNameTypeTest.php b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/RaLocationNameTypeTest.php index cfdb117de..0e50fe150 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/RaLocationNameTypeTest.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/RaLocationNameTypeTest.php @@ -48,10 +48,8 @@ public function setUp(): void $this->platform = new MariaDBPlatform(); } - /** - * @test - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function a_null_value_remains_null_in_to_sql_conversion(): void { $raLocationName = Type::getType(RaLocationNameType::NAME); @@ -61,10 +59,8 @@ public function a_null_value_remains_null_in_to_sql_conversion(): void $this->assertNull($value); } - /** - * @test - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function a_non_null_value_is_converted_to_the_correct_format(): void { $raLocationName = Type::getType(RaLocationNameType::NAME); @@ -77,12 +73,9 @@ public function a_non_null_value_is_converted_to_the_correct_format(): void $this->assertEquals($expected, $output); } - /** - * @test - * @group doctrine - * - * @dataProvider \Surfnet\StepupMiddleware\ApiBundle\Tests\TestDataProvider::notNull - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\DataProviderExternal(\Surfnet\StepupMiddleware\ApiBundle\Tests\TestDataProvider::class, 'notNull')] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function a_value_can_only_be_converted_to_sql_if_it_is_an_ra_location_or_null(mixed $incorrectValue): void { $this->expectException(ConversionException::class); @@ -91,10 +84,8 @@ public function a_value_can_only_be_converted_to_sql_if_it_is_an_ra_location_or_ $configurationContactInformation->convertToDatabaseValue($incorrectValue, $this->platform); } - /** - * @test - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function a_null_value_remains_null_when_converting_from_db_to_php_value(): void { $raLocationName = Type::getType(RaLocationNameType::NAME); @@ -104,10 +95,8 @@ public function a_null_value_remains_null_when_converting_from_db_to_php_value() $this->assertNull($value); } - /** - * @test - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function a_non_null_value_is_converted_to_a_ra_location_name_value_object(): void { $raLocationName = Type::getType(RaLocationNameType::NAME); @@ -120,10 +109,8 @@ public function a_non_null_value_is_converted_to_a_ra_location_name_value_object $this->assertEquals(new RaLocationName($input), $output); } - /** - * @test - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function an_invalid_database_value_causes_an_exception_upon_conversion(): void { $this->expectException(ConversionException::class); diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/RecoveryTokenStatusTypeTest.php b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/RecoveryTokenStatusTypeTest.php index 6267e421d..d7dae8754 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/RecoveryTokenStatusTypeTest.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/RecoveryTokenStatusTypeTest.php @@ -46,7 +46,7 @@ public function setUp(): void $this->platform = new MariaDBPlatform(); } - public function invalidPhpValues(): array + public static function invalidPhpValues(): array { return [ 'null' => [null], @@ -59,11 +59,9 @@ public function invalidPhpValues(): array ]; } - /** - * @test - * @dataProvider invalidPhpValues - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\DataProvider('invalidPhpValues')] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function an_invalid_php_value_is_not_accepted_in_to_sql_conversion(mixed $value): void { $this->expectException(ConversionException::class); @@ -72,7 +70,7 @@ public function an_invalid_php_value_is_not_accepted_in_to_sql_conversion(mixed $type->convertToDatabaseValue($value, $this->platform); } - public function validPhpValues(): array + public static function validPhpValues(): array { return [ 'active' => [RecoveryTokenStatus::active(), 0], @@ -81,11 +79,9 @@ public function validPhpValues(): array ]; } - /** - * @test - * @dataProvider validPhpValues - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\DataProvider('validPhpValues')] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function a_valid_php_value_is_converted_to_a_sql_value( RecoveryTokenStatus $phpValue, int $databaseValue, @@ -94,7 +90,7 @@ public function a_valid_php_value_is_converted_to_a_sql_value( $this->assertSame($databaseValue, $type->convertToDatabaseValue($phpValue, $this->platform)); } - public function invalidDatabaseValues(): array + public static function invalidDatabaseValues(): array { return [ 'null' => [null], @@ -107,11 +103,9 @@ public function invalidDatabaseValues(): array ]; } - /** - * @test - * @dataProvider invalidDatabaseValues - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\DataProvider('invalidDatabaseValues')] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function an_invalid_database_value_causes_an_exception_upon_conversion(mixed $input): void { $this->expectException(ConversionException::class); @@ -120,7 +114,7 @@ public function an_invalid_database_value_causes_an_exception_upon_conversion(mi $type->convertToPHPValue($input, $this->platform); } - public function validDatabaseValues(): array + public static function validDatabaseValues(): array { return [ 'active' => ['0', RecoveryTokenStatus::active()], @@ -129,11 +123,9 @@ public function validDatabaseValues(): array ]; } - /** - * @test - * @dataProvider validDatabaseValues - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\DataProvider('validDatabaseValues')] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function a_valid_database_value_is_converted_to_a_sql_value( string $databaseValue, RecoveryTokenStatus $phpValue, diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/SecondFactorStatusTypeTest.php b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/SecondFactorStatusTypeTest.php index 6fa40236d..88bb9c890 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/SecondFactorStatusTypeTest.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/SecondFactorStatusTypeTest.php @@ -47,7 +47,7 @@ public function setUp(): void $this->platform = new MariaDBPlatform(); } - public function invalidPhpValues(): array + public static function invalidPhpValues(): array { return [ 'null' => [null], @@ -60,11 +60,9 @@ public function invalidPhpValues(): array ]; } - /** - * @test - * @dataProvider invalidPhpValues - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\DataProvider('invalidPhpValues')] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function an_invalid_php_value_is_not_accepted_in_to_sql_conversion(mixed $value): void { $this->expectException(ConversionException::class); @@ -73,7 +71,7 @@ public function an_invalid_php_value_is_not_accepted_in_to_sql_conversion(mixed $type->convertToDatabaseValue($value, $this->platform); } - public function validPhpValues(): array + public static function validPhpValues(): array { return [ 'unverified' => [SecondFactorStatus::unverified(), 0], @@ -84,18 +82,16 @@ public function validPhpValues(): array ]; } - /** - * @test - * @dataProvider validPhpValues - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\DataProvider('validPhpValues')] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function a_valid_php_value_is_converted_to_a_sql_value(mixed $phpValue, int $databaseValue): void { $type = Type::getType(SecondFactorStatusType::NAME); $this->assertSame($databaseValue, $type->convertToDatabaseValue($phpValue, $this->platform)); } - public function invalidDatabaseValues(): array + public static function invalidDatabaseValues(): array { return [ 'null' => [null], @@ -108,11 +104,9 @@ public function invalidDatabaseValues(): array ]; } - /** - * @test - * @dataProvider invalidDatabaseValues - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\DataProvider('invalidDatabaseValues')] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function an_invalid_database_value_causes_an_exception_upon_conversion(mixed $input): void { $this->expectException(ConversionException::class); @@ -121,7 +115,7 @@ public function an_invalid_database_value_causes_an_exception_upon_conversion(mi $type->convertToPHPValue($input, $this->platform); } - public function validDatabaseValues(): array + public static function validDatabaseValues(): array { return [ 'unverified' => ['0', SecondFactorStatus::unverified()], @@ -132,11 +126,9 @@ public function validDatabaseValues(): array ]; } - /** - * @test - * @dataProvider validDatabaseValues - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\DataProvider('validDatabaseValues')] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function a_valid_database_value_is_converted_to_a_sql_value(string $databaseValue, mixed $phpValue): void { $type = Type::getType(SecondFactorStatusType::NAME); diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/SelfVetOptionTypeTest.php b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/SelfVetOptionTypeTest.php index 33bf62589..6b79cce93 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/SelfVetOptionTypeTest.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/SelfVetOptionTypeTest.php @@ -49,10 +49,8 @@ public function setUp(): void $this->platform = new MariaDBPlatform(); } - /** - * @test - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function a_null_value_remains_null_in_to_sql_conversion(): void { $configurationInstitution = Type::getType(SelfVetOptionType::NAME); @@ -62,12 +60,9 @@ public function a_null_value_remains_null_in_to_sql_conversion(): void $this->assertNull($value); } - /** - * @test - * @group doctrine - * - * @dataProvider \Surfnet\StepupMiddleware\ApiBundle\Tests\TestDataProvider::notNull - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\DataProviderExternal(\Surfnet\StepupMiddleware\ApiBundle\Tests\TestDataProvider::class, 'notNull')] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function a_value_can_only_be_converted_to_sql_if_it_is_an_option_type_or_null(mixed $incorrectValue): void { $this->expectException(ConversionException::class); @@ -76,10 +71,8 @@ public function a_value_can_only_be_converted_to_sql_if_it_is_an_option_type_or_ $configurationContactInformation->convertToDatabaseValue($incorrectValue, $this->platform); } - /** - * @test - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function a_non_null_value_is_converted_to_the_correct_format(): void { $configurationInstitution = Type::getType(SelfVetOptionType::NAME); @@ -92,10 +85,8 @@ public function a_non_null_value_is_converted_to_the_correct_format(): void $this->assertEquals($expected, $output); } - /** - * @test - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function a_null_value_remains_null_when_converting_from_db_to_php_value(): void { $configurationInstitution = Type::getType(SelfVetOptionType::NAME); @@ -105,10 +96,8 @@ public function a_null_value_remains_null_when_converting_from_db_to_php_value() $this->assertNull($value); } - /** - * @test - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function a_non_null_value_is_converted_to_an_option_valu_object(): void { $configurationInstitution = Type::getType(SelfVetOptionType::NAME); diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/ShowRaaContactInformationOptionTypeTest.php b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/ShowRaaContactInformationOptionTypeTest.php index 1466d15cf..1a05f8e52 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/ShowRaaContactInformationOptionTypeTest.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/ShowRaaContactInformationOptionTypeTest.php @@ -50,10 +50,8 @@ public function setUp(): void $this->platform = new MariaDBPlatform(); } - /** - * @test - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function a_null_value_remains_null_in_to_sql_conversion(): void { $configurationInstitution = Type::getType(ShowRaaContactInformationOptionType::NAME); @@ -63,12 +61,9 @@ public function a_null_value_remains_null_in_to_sql_conversion(): void $this->assertNull($value); } - /** - * @test - * @group doctrine - * - * @dataProvider \Surfnet\StepupMiddleware\ApiBundle\Tests\TestDataProvider::notNull - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\DataProviderExternal(\Surfnet\StepupMiddleware\ApiBundle\Tests\TestDataProvider::class, 'notNull')] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function a_value_can_only_be_converted_to_sql_if_it_is_a_show_raa_contact_information_option_or_null( mixed $incorrectValue, ): void { @@ -78,10 +73,8 @@ public function a_value_can_only_be_converted_to_sql_if_it_is_a_show_raa_contact $configurationContactInformation->convertToDatabaseValue($incorrectValue, $this->platform); } - /** - * @test - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function a_non_null_value_is_converted_to_the_correct_format(): void { $configurationInstitution = Type::getType(ShowRaaContactInformationOptionType::NAME); @@ -94,10 +87,8 @@ public function a_non_null_value_is_converted_to_the_correct_format(): void $this->assertEquals($expected, $output); } - /** - * @test - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function a_null_value_remains_null_when_converting_from_db_to_php_value(): void { $configurationInstitution = Type::getType(ShowRaaContactInformationOptionType::NAME); @@ -107,10 +98,8 @@ public function a_null_value_remains_null_when_converting_from_db_to_php_value() $this->assertNull($value); } - /** - * @test - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function a_non_null_value_is_converted_to_a_show_raa_contact_information_option_value_object(): void { $configurationInstitution = Type::getType(ShowRaaContactInformationOptionType::NAME); diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/UseRaLocationsOptionTypeTest.php b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/UseRaLocationsOptionTypeTest.php index 4e7462fcb..1ba9a58d4 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/UseRaLocationsOptionTypeTest.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/UseRaLocationsOptionTypeTest.php @@ -49,10 +49,8 @@ public function setUp(): void $this->platform = new MariaDBPlatform(); } - /** - * @test - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function a_null_value_remains_null_in_to_sql_conversion(): void { $configurationInstitution = Type::getType(UseRaLocationsOptionType::NAME); @@ -62,12 +60,9 @@ public function a_null_value_remains_null_in_to_sql_conversion(): void $this->assertNull($value); } - /** - * @test - * @group doctrine - * - * @dataProvider \Surfnet\StepupMiddleware\ApiBundle\Tests\TestDataProvider::notNull - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\DataProviderExternal(\Surfnet\StepupMiddleware\ApiBundle\Tests\TestDataProvider::class, 'notNull')] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function a_value_can_only_be_converted_to_sql_if_it_is_a_use_ra_locations_option_or_null(mixed $incorrectValue,): void { $this->expectException(ConversionException::class); @@ -76,10 +71,8 @@ public function a_value_can_only_be_converted_to_sql_if_it_is_a_use_ra_locations $configurationContactInformation->convertToDatabaseValue($incorrectValue, $this->platform); } - /** - * @test - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function a_non_null_value_is_converted_to_the_correct_format(): void { $configurationInstitution = Type::getType(UseRaLocationsOptionType::NAME); @@ -92,10 +85,8 @@ public function a_non_null_value_is_converted_to_the_correct_format(): void $this->assertEquals($expected, $output); } - /** - * @test - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function a_null_value_remains_null_when_converting_from_db_to_php_value(): void { $configurationInstitution = Type::getType(UseRaLocationsOptionType::NAME); @@ -105,10 +96,8 @@ public function a_null_value_remains_null_when_converting_from_db_to_php_value() $this->assertNull($value); } - /** - * @test - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function a_non_null_value_is_converted_to_a_use_ra_locations_option_value_object(): void { $configurationInstitution = Type::getType(UseRaLocationsOptionType::NAME); diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/VerifyEmailOptionTypeTest.php b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/VerifyEmailOptionTypeTest.php index 367fe53d4..818746bb0 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/VerifyEmailOptionTypeTest.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/VerifyEmailOptionTypeTest.php @@ -48,10 +48,8 @@ public function setUp(): void $this->platform = new MariaDBPlatform(); } - /** - * @test - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function a_null_value_remains_null_in_to_sql_conversion(): void { $configurationInstitution = Type::getType(VerifyEmailOptionType::NAME); @@ -61,12 +59,9 @@ public function a_null_value_remains_null_in_to_sql_conversion(): void $this->assertNull($value); } - /** - * @test - * @group doctrine - * - * @dataProvider \Surfnet\StepupMiddleware\ApiBundle\Tests\TestDataProvider::notNull - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\DataProviderExternal(\Surfnet\StepupMiddleware\ApiBundle\Tests\TestDataProvider::class, 'notNull')] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function a_value_can_only_be_converted_to_sql_if_it_is_an_option_type_or_null(mixed $incorrectValue): void { $this->expectException(ConversionException::class); @@ -75,10 +70,8 @@ public function a_value_can_only_be_converted_to_sql_if_it_is_an_option_type_or_ $configurationContactInformation->convertToDatabaseValue($incorrectValue, $this->platform); } - /** - * @test - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function a_non_null_value_is_converted_to_the_correct_format(): void { $configurationInstitution = Type::getType(VerifyEmailOptionType::NAME); @@ -91,10 +84,8 @@ public function a_non_null_value_is_converted_to_the_correct_format(): void $this->assertEquals($expected, $output); } - /** - * @test - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function a_null_value_remains_null_when_converting_from_db_to_php_value(): void { $configurationInstitution = Type::getType(VerifyEmailOptionType::NAME); @@ -104,10 +95,8 @@ public function a_null_value_remains_null_when_converting_from_db_to_php_value() $this->assertNull($value); } - /** - * @test - * @group doctrine - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('doctrine')] public function a_non_null_value_is_converted_to_an_option_valu_object(): void { $configurationInstitution = Type::getType(VerifyEmailOptionType::NAME); diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Endpoint/ConfiguredInstitutionControllerTest.php b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Endpoint/ConfiguredInstitutionControllerTest.php index 160a9ccfe..19f605252 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Endpoint/ConfiguredInstitutionControllerTest.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Endpoint/ConfiguredInstitutionControllerTest.php @@ -87,12 +87,9 @@ public function tearDown(): void static::ensureKernelShutdown(); } - /** - * @test - * @group api - * - * @dataProvider invalidHttpMethodProvider - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\DataProvider('invalidHttpMethodProvider')] + #[\PHPUnit\Framework\Attributes\Group('api')] public function only_get_requests_are_accepted(string $invalidHttpMethod): void { $this->client->request( @@ -110,11 +107,9 @@ public function only_get_requests_are_accepted(string $invalidHttpMethod): void $this->assertEquals(Response::HTTP_METHOD_NOT_ALLOWED, $this->client->getResponse()->getStatusCode()); } - /** - * @test - * @group api - * @dataProvider notAllowedAccountsProvider - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\DataProvider('notAllowedAccountsProvider')] + #[\PHPUnit\Framework\Attributes\Group('api')] public function no_access_for_not_allowed_account(string $account): void { $this->client->request( @@ -134,10 +129,8 @@ public function no_access_for_not_allowed_account(string $account): void $this->assertEquals(Response::HTTP_FORBIDDEN, $this->client->getResponse()->getStatusCode()); } - /** - * @test - * @group api - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('api')] public function json_is_returned_from_the_api(): void { $this->client->request( @@ -162,11 +155,9 @@ public function json_is_returned_from_the_api(): void ); } - /** - * @test - * @group api - * @dataProvider allowedAccountsProvider - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\DataProvider('allowedAccountsProvider')] + #[\PHPUnit\Framework\Attributes\Group('api')] public function correct_institutions_are_returned(string $account): void { $this->client->request( @@ -193,7 +184,7 @@ public function correct_institutions_are_returned(string $account): void /** * Dataprovider for only_get_requests_are_accepted */ - public function invalidHttpMethodProvider(): array + public static function invalidHttpMethodProvider(): array { return [ 'POST' => ['POST'], @@ -203,13 +194,13 @@ public function invalidHttpMethodProvider(): array ]; } - public function allowedAccountsProvider(): Generator + public static function allowedAccountsProvider(): Generator { yield ['ra']; yield ['apireader']; } - public function notAllowedAccountsProvider(): Generator + public static function notAllowedAccountsProvider(): Generator { yield ['ss']; } diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Endpoint/SraaControllerTest.php b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Endpoint/SraaControllerTest.php index dce2051c0..935e13260 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Endpoint/SraaControllerTest.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Endpoint/SraaControllerTest.php @@ -75,12 +75,9 @@ public function tearDown(): void static::ensureKernelShutdown(); } - /** - * @test - * @group api - * - * @dataProvider invalidHttpMethodProvider - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\DataProvider('invalidHttpMethodProvider')] + #[\PHPUnit\Framework\Attributes\Group('api')] public function only_get_requests_are_accepted(string $invalidHttpMethod): void { $this->client->request( @@ -98,11 +95,9 @@ public function only_get_requests_are_accepted(string $invalidHttpMethod): void $this->assertEquals(Response::HTTP_METHOD_NOT_ALLOWED, $this->client->getResponse()->getStatusCode()); } - /** - * @test - * @group api - * @dataProvider notAllowedAccountsProvider - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\DataProvider('notAllowedAccountsProvider')] + #[\PHPUnit\Framework\Attributes\Group('api')] public function no_access_for_not_allowed_account(string $account): void { $this->client->request( @@ -122,10 +117,8 @@ public function no_access_for_not_allowed_account(string $account): void $this->assertEquals(Response::HTTP_FORBIDDEN, $this->client->getResponse()->getStatusCode()); } - /** - * @test - * @group api - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('api')] public function json_is_returned_from_the_api(): void { $this->client->request( @@ -150,11 +143,9 @@ public function json_is_returned_from_the_api(): void ); } - /** - * @test - * @group api - * @dataProvider allowedAccountsProvider - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\DataProvider('allowedAccountsProvider')] + #[\PHPUnit\Framework\Attributes\Group('api')] public function correct_institutions_are_returned(string $account): void { $this->client->request( @@ -181,7 +172,7 @@ public function correct_institutions_are_returned(string $account): void /** * Dataprovider for only_get_requests_are_accepted */ - public function invalidHttpMethodProvider(): array + public static function invalidHttpMethodProvider(): array { return [ 'POST' => ['POST'], @@ -191,13 +182,13 @@ public function invalidHttpMethodProvider(): array ]; } - public function allowedAccountsProvider(): Generator + public static function allowedAccountsProvider(): Generator { yield ['ra']; yield ['apireader']; } - public function notAllowedAccountsProvider(): Generator + public static function notAllowedAccountsProvider(): Generator { yield ['ss']; } diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Identity/Projector/AuditLogProjectorTest.php b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Identity/Projector/AuditLogProjectorTest.php index 2b1981c16..a854df85a 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Identity/Projector/AuditLogProjectorTest.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Identity/Projector/AuditLogProjectorTest.php @@ -134,11 +134,9 @@ public function auditable_events(): array ]; } - /** - * @test - * @group api-projector - * @dataProvider auditable_events - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\DataProvider('auditable_events')] + #[\PHPUnit\Framework\Attributes\Group('api-projector')] public function it_creates_entries_for_auditable_events(DomainMessage $message, AuditLogEntry $expectedEntry): void { $repository = m::mock(AuditLogRepository::class); diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Identity/Value/AuthorizedInstitutionCollectionTest.php b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Identity/Value/AuthorizedInstitutionCollectionTest.php index 16edab40d..550a987c4 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Identity/Value/AuthorizedInstitutionCollectionTest.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Identity/Value/AuthorizedInstitutionCollectionTest.php @@ -25,18 +25,14 @@ final class AuthorizedInstitutionCollectionTest extends TestCase { - /** - * @test - */ + #[\PHPUnit\Framework\Attributes\Test] public function empty_collection(): void { $collection = AuthorizedInstitutionCollection::from($this->buildInstitutionCollection([]), null); $this->assertEmpty($collection->getAuthorizations()); } - /** - * @test - */ + #[\PHPUnit\Framework\Attributes\Test] public function retrieve_institutions(): void { $collection = AuthorizedInstitutionCollection::from( @@ -51,9 +47,7 @@ public function retrieve_institutions(): void $this->assertEquals('raa', $collection->getAuthorizations()['b'][0]); } - /** - * @test - */ + #[\PHPUnit\Framework\Attributes\Test] public function retrieve_institutions_only_raa(): void { $collection = AuthorizedInstitutionCollection::from( diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Request/CommandValueResolverTest.php b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Request/CommandValueResolverTest.php index b1cca7a72..ba5ba088a 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Request/CommandValueResolverTest.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Request/CommandValueResolverTest.php @@ -36,11 +36,9 @@ class CommandValueResolverTest extends TestCase { use MockeryPHPUnitIntegration; - /** - * @test - * @group api-bundle - * @dataProvider invalidCommandJsonStructures - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\DataProvider('invalidCommandJsonStructures')] + #[\PHPUnit\Framework\Attributes\Group('api-bundle')] public function it_validates_the_command_structure(string $commandJson): void { $this->expectException(BadCommandRequestException::class); @@ -63,11 +61,9 @@ public function it_validates_the_command_structure(string $commandJson): void $this->assertInstanceOf(Command::class, $result[0]); } - /** - * @test - * @group api-bundle - * @dataProvider convertibleCommandNames - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\DataProvider('convertibleCommandNames')] + #[\PHPUnit\Framework\Attributes\Group('api-bundle')] public function it_can_convert_command_name_notation(string $expectedCommandClass, string $commandName): void { $command = ['command' => ['name' => $commandName, 'uuid' => 'abcdef', 'payload' => new stdClass]]; @@ -90,11 +86,9 @@ public function it_can_convert_command_name_notation(string $expectedCommandClas $this->assertInstanceOf($expectedCommandClass, $result[0]); } - /** - * @test - * @group api-bundle - * @dataProvider invalidCommandNames - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\DataProvider('invalidCommandNames')] + #[\PHPUnit\Framework\Attributes\Group('api-bundle')] public function it_fails_converting_invalid_command_name_notation(string $expectedCommandClass, string $commandName): void { $this->expectException(BadCommandRequestException::class); @@ -117,10 +111,8 @@ public function it_fails_converting_invalid_command_name_notation(string $expect $converter->resolve($request, $argument); } - /** - * @test - * @group api-bundle - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('api-bundle')] public function it_sets_uuid(): void { $command = ['command' => ['name' => 'Root:FooBar', 'uuid' => 'abcdef', 'payload' => new stdClass]]; @@ -143,10 +135,8 @@ public function it_sets_uuid(): void $this->assertEquals('abcdef', $result[0]->UUID, 'UUID mismatch'); } - /** - * @test - * @group api-bundle - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('api-bundle')] public function it_sets_payload(): void { $command = ['command' => ['name' => 'Root:FooBar', 'uuid' => 'abcdef', 'payload' => ['snake_case' => true]]]; @@ -173,7 +163,7 @@ public function it_sets_payload(): void $this->assertSame(['snakeCase' => true], $spiedPayload, 'Payload mismatch'); } - public function invalidCommandJsonStructures(): array + public static function invalidCommandJsonStructures(): array { return array_map( fn($command): array => [json_encode($command)], @@ -198,7 +188,7 @@ public function invalidCommandJsonStructures(): array ); } - public function convertibleCommandNames(): array + public static function convertibleCommandNames(): array { return [ 'It can convert simple command notation with a namespace' => [ @@ -216,7 +206,7 @@ public function convertibleCommandNames(): array ]; } - public function invalidCommandNames(): array + public static function invalidCommandNames(): array { return [ 'It can not convert simple command notation with only a namespace' => [ diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Request/InstitutionValueResolverTest.php b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Request/InstitutionValueResolverTest.php index a53e83ec5..dd5632993 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Request/InstitutionValueResolverTest.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Request/InstitutionValueResolverTest.php @@ -46,10 +46,8 @@ public function setUp(): void ->andReturn(Institution::class); } - /** - * @test - * @group api-bundle - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('api-bundle')] public function an_exception_is_thrown_when_the_parameter_is_missing(): void { $this->expectException(BadApiRequestException::class); @@ -60,10 +58,8 @@ public function an_exception_is_thrown_when_the_parameter_is_missing(): void $converter->resolve($this->request, $this->argument); } - /** - * @test - * @group api-bundle - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('api-bundle')] public function an_institution_is_resolved(): void { $query = $this->mockQuery('ABC'); diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Service/DeprovisionServiceTest.php b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Service/DeprovisionServiceTest.php index 49565e34c..f01340b00 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Service/DeprovisionServiceTest.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Service/DeprovisionServiceTest.php @@ -69,9 +69,7 @@ public function test_it_can_be_created(): void $this->assertInstanceOf(DeprovisionService::class, $this->deprovisionService); } - /** - * @group api-bundle - */ + #[\PHPUnit\Framework\Attributes\Group('api-bundle')] public function test_it_deals_with_non_exisiting_collab_user_id(): void { $this->apiRepo @@ -83,9 +81,7 @@ public function test_it_deals_with_non_exisiting_collab_user_id(): void $this->assertEmpty($data); } - /** - * @group api-bundle - */ + #[\PHPUnit\Framework\Attributes\Group('api-bundle')] public function test_it_can_return_data(): void { $identity = m::mock(Identity::class); diff --git a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Command/AbstractCommandTest.php b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Command/AbstractCommandTest.php index ad28651f5..e34bc630d 100644 --- a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Command/AbstractCommandTest.php +++ b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Command/AbstractCommandTest.php @@ -25,10 +25,8 @@ class AbstractCommandTest extends UnitTest { use MockeryPHPUnitIntegration; - /** - * @test - * @group command - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('command')] public function to_string_generates_command_identifiable_information(): void { $command = new FixedUuidStubCommand(); diff --git a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Configuration/CommandHandler/ConfigurationCommandHandlerTest.php b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Configuration/CommandHandler/ConfigurationCommandHandlerTest.php index 3c900aeb1..3bed5e51c 100644 --- a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Configuration/CommandHandler/ConfigurationCommandHandlerTest.php +++ b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Configuration/CommandHandler/ConfigurationCommandHandlerTest.php @@ -45,10 +45,8 @@ final class ConfigurationCommandHandlerTest extends CommandHandlerTest */ public const CID = Configuration::CONFIGURATION_ID; - /** - * @test - * @group command-handler - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('command-handler')] public function configuration_can_be_initialised(): void { $configuration = [ @@ -70,10 +68,8 @@ public function configuration_can_be_initialised(): void ->then($this->createConfigurationUpdatedEvents($configuration, null)); } - /** - * @test - * @group command-handler - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('command-handler')] public function configuration_can_be_updated(): void { $configuration1 = [ diff --git a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Configuration/CommandHandler/InstitutionConfigurationCommandHandlerTest.php b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Configuration/CommandHandler/InstitutionConfigurationCommandHandlerTest.php index 557ec7dcf..1b34c8e36 100644 --- a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Configuration/CommandHandler/InstitutionConfigurationCommandHandlerTest.php +++ b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Configuration/CommandHandler/InstitutionConfigurationCommandHandlerTest.php @@ -70,10 +70,8 @@ class InstitutionConfigurationCommandHandlerTest extends CommandHandlerTest { - /** - * @test - * @group command-handler - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('command-handler')] public function an_institution_configuration_is_created_when_there_is_none_for_a_given_institution(): void { $command = new CreateInstitutionConfigurationCommand(); @@ -133,10 +131,8 @@ public function an_institution_configuration_is_created_when_there_is_none_for_a ]); } - /** - * @test - * @group command-handler - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('command-handler')] public function an_institution_configuration_cannot_be_created_when_there_already_is_one_for_a_given_institution(): void { $this->expectException(DomainException::class); @@ -193,10 +189,8 @@ public function an_institution_configuration_cannot_be_created_when_there_alread ->when($command); } - /** - * @test - * @group command-handler - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('command-handler')] public function institution_configuration_options_are_not_changed_if_their_given_value_is_not_different_from_their_current_value(): void { $institution = new Institution('Institution'); @@ -267,10 +261,8 @@ public function institution_configuration_options_are_not_changed_if_their_given ->then([]); } - /** - * @test - * @group command-handler - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('command-handler')] public function use_ra_locations_option_is_changed_if_its_given_value_is_different_from_the_current_value(): void { $institution = new Institution('Institution'); @@ -351,10 +343,8 @@ public function use_ra_locations_option_is_changed_if_its_given_value_is_differe ]); } - /** - * @test - * @group command-handler - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('command-handler')] public function show_raa_contact_information_option_is_changed_if_its_given_value_is_different_from_the_current_value(): void { $institution = new Institution('Institution'); @@ -431,10 +421,8 @@ public function show_raa_contact_information_option_is_changed_if_its_given_valu ]); } - /** - * @test - * @group command-handler - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('command-handler')] public function allowed_second_factor_list_is_changed_if_its_values_are_different_than_the_current_list(): void { $institution = new Institution('Institution'); @@ -516,10 +504,8 @@ public function allowed_second_factor_list_is_changed_if_its_values_are_differen ]); } - /** - * @test - * @group command-handler - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('command-handler')] public function allowed_second_factor_list_is_not_changed_if_its_values_are_the_same_as_the_current_list(): void { $secondFactorsToAllow = ['sms', 'yubikey']; @@ -594,10 +580,8 @@ public function allowed_second_factor_list_is_not_changed_if_its_values_are_the_ ->then([]); } - /** - * @test - * @group command-handler - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('command-handler')] public function an_ra_location_can_be_added_to_an_existing_institution_configuration(): void { $command = new AddRaLocationCommand(); @@ -647,10 +631,8 @@ public function an_ra_location_can_be_added_to_an_existing_institution_configura ]); } - /** - * @test - * @group command-handler - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('command-handler')] public function the_same_ra_location_cannot_be_added_twice(): void { $this->expectException(DomainException::class); @@ -701,10 +683,8 @@ public function the_same_ra_location_cannot_be_added_twice(): void ->when($command); } - /** - * @test - * @group command-handler - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('command-handler')] public function an_ra_location_can_be_renamed(): void { $originalRaLocationName = new RaLocationName('An old RA location name'); @@ -761,10 +741,8 @@ public function an_ra_location_can_be_renamed(): void ]); } - /** - * @test - * @group command-handler - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('command-handler')] public function an_ra_location_cannot_be_changed_if_it_is_not_present_within_an_institution_configuration(): void { $this->expectException(DomainException::class); @@ -807,10 +785,8 @@ public function an_ra_location_cannot_be_changed_if_it_is_not_present_within_an_ ->when($command); } - /** - * @test - * @group command-handler - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('command-handler')] public function an_ra_location_cannot_be_changed_if_its_institution_configuration_cannot_be_found(): void { $this->expectException(AggregateNotFoundException::class); @@ -853,11 +829,9 @@ public function an_ra_location_cannot_be_changed_if_its_institution_configuratio ->when($command); } - /** - * @test - * @group command-handler - * @group institution-configuration - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[\PHPUnit\Framework\Attributes\Group('institution-configuration')] public function an_ra_location_can_be_relocated(): void { $originalLocation = new Location('An old location'); @@ -914,11 +888,9 @@ public function an_ra_location_can_be_relocated(): void ]); } - /** - * @test - * @group command-handler - * @group institution-configuration - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[\PHPUnit\Framework\Attributes\Group('institution-configuration')] public function an_ra_locations_contact_information_can_be_changed(): void { $originalContactInformation = new ContactInformation('Old contact information'); @@ -975,11 +947,9 @@ public function an_ra_locations_contact_information_can_be_changed(): void ]); } - /** - * @test - * @group command-handler - * @group institution-configuration - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[\PHPUnit\Framework\Attributes\Group('institution-configuration')] public function the_self_vet_option_can_be_changed(): void { $institution = new Institution('Institution'); @@ -1055,11 +1025,9 @@ public function the_self_vet_option_can_be_changed(): void ]); } - /** - * @test - * @group command-handler - * @group institution-configuration - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[\PHPUnit\Framework\Attributes\Group('institution-configuration')] public function an_ra_location_cannot_be_removed_if_its_institution_configuration_cannot_be_found(): void { $this->expectException(AggregateNotFoundException::class); @@ -1099,11 +1067,9 @@ public function an_ra_location_cannot_be_removed_if_its_institution_configuratio ->when($command); } - /** - * @test - * @group command-handler - * @group institution-configuration - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[\PHPUnit\Framework\Attributes\Group('institution-configuration')] public function an_ra_location_cannot_be_removed_if_it_is_not_present_within_an_institution_configuration(): void { $this->expectException(DomainException::class); @@ -1143,11 +1109,9 @@ public function an_ra_location_cannot_be_removed_if_it_is_not_present_within_an_ ->when($command); } - /** - * @test - * @group command-handler - * @group institution-configuration - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[\PHPUnit\Framework\Attributes\Group('institution-configuration')] public function an_ra_location_can_be_removed(): void { $command = new RemoveRaLocationCommand(); @@ -1198,11 +1162,9 @@ public function an_ra_location_can_be_removed(): void ]); } - /** - * @test - * @group command-handler - * @group institution-configuration - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[\PHPUnit\Framework\Attributes\Group('institution-configuration')] public function an_institution_configuration_with_unnormalized_institution_configuration_id_can_be_removed(): void { $command = new RemoveInstitutionConfigurationByUnnormalizedIdCommand(); diff --git a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Configuration/Processor/InstitutionConfigurationProcessorTest.php b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Configuration/Processor/InstitutionConfigurationProcessorTest.php index f73c5211f..dd6cdb5eb 100644 --- a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Configuration/Processor/InstitutionConfigurationProcessorTest.php +++ b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Configuration/Processor/InstitutionConfigurationProcessorTest.php @@ -50,11 +50,9 @@ public function setUp(): void $this->pipelineMock = Mockery::mock(Pipeline::class); } - /** - * @test - * @group processor - * @group institution-configuration - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('processor')] + #[\PHPUnit\Framework\Attributes\Group('institution-configuration')] public function a_create_institution_configuration_command_is_processed_when_an_identity_was_created_with_a_non_configured_institution(): void { $expectedInstitution = 'institution'; @@ -86,11 +84,9 @@ public function a_create_institution_configuration_command_is_processed_when_an_ $this->assertInstanceOf(InstitutionConfigurationProcessor::class, $institutionConfigurationProcessor); } - /** - * @test - * @group processor - * @group institution-configuration - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('processor')] + #[\PHPUnit\Framework\Attributes\Group('institution-configuration')] public function no_create_institution_configuration_command_is_processed_when_an_identity_was_created_with_an_already_configured_institution(): void { $identityCreatedEvent = new IdentityCreatedEvent( @@ -119,11 +115,9 @@ public function no_create_institution_configuration_command_is_processed_when_an $this->assertInstanceOf(InstitutionConfigurationProcessor::class, $institutionConfigurationProcessor); } - /** - * @test - * @group processor - * @group institution-configuration - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('processor')] + #[\PHPUnit\Framework\Attributes\Group('institution-configuration')] public function create_institution_configuration_commands_are_processed_when_a_whitelist_was_created_containing_non_configured_institutions(): void { $firstInstitution = 'first institution'; @@ -160,11 +154,9 @@ public function create_institution_configuration_commands_are_processed_when_a_w $this->assertInstanceOf(InstitutionConfigurationProcessor::class, $institutionConfigurationProcessor); } - /** - * @test - * @group processor - * @group institution-configuration - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('processor')] + #[\PHPUnit\Framework\Attributes\Group('institution-configuration')] public function no_create_institution_configuration_command_is_processed_for_an_already_configured_institution_when_a_whitelist_was_created(): void { $alreadyPresentInstitution = 'already present'; @@ -205,11 +197,9 @@ public function no_create_institution_configuration_command_is_processed_for_an_ $this->assertInstanceOf(InstitutionConfigurationProcessor::class, $institutionConfigurationProcessor); } - /** - * @test - * @group processor - * @group institution-configuration - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('processor')] + #[\PHPUnit\Framework\Attributes\Group('institution-configuration')] public function create_institution_configuration_commands_are_created_when_a_whitelist_was_replaced_containing_non_configured_institutions(): void { $firstInstitution = 'first institution'; @@ -248,11 +238,9 @@ public function create_institution_configuration_commands_are_created_when_a_whi $this->assertInstanceOf(InstitutionConfigurationProcessor::class, $institutionConfigurationProcessor); } - /** - * @test - * @group processor - * @group institution-configuration - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('processor')] + #[\PHPUnit\Framework\Attributes\Group('institution-configuration')] public function no_create_institution_configuration_command_is_processed_for_an_already_configured_institution_when_a_whitelist_was_replaced(): void { $alreadyPresentInstitution = 'already present'; @@ -293,11 +281,9 @@ public function no_create_institution_configuration_command_is_processed_for_an_ $this->assertInstanceOf(InstitutionConfigurationProcessor::class, $institutionConfigurationProcessor); } - /** - * @test - * @group processor - * @group institution-configuration - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('processor')] + #[\PHPUnit\Framework\Attributes\Group('institution-configuration')] public function create_institution_configuration_commands_are_created_when_non_configured_institutions_are_added_to_the_whitelist(): void { $firstInstitution = 'first institution'; @@ -336,11 +322,9 @@ public function create_institution_configuration_commands_are_created_when_non_c $this->assertInstanceOf(InstitutionConfigurationProcessor::class, $institutionConfigurationProcessor); } - /** - * @test - * @group processor - * @group institution-configuration - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('processor')] + #[\PHPUnit\Framework\Attributes\Group('institution-configuration')] public function no_create_institution_configuration_command_is_created_for_an_already_configured_institution_when_institutions_are_added_to_a_whitelist(): void { $alreadyPresentInstitution = 'already present'; diff --git a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/DateTimeHelperTest.php b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/DateTimeHelperTest.php index 888f4b9b9..ff7bfce61 100644 --- a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/DateTimeHelperTest.php +++ b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/DateTimeHelperTest.php @@ -23,17 +23,13 @@ use PHPUnit\Framework\TestCase; use Surfnet\Stepup\DateTime\DateTime; -/** - * @runTestsInSeparateProcesses - */ +#[\PHPUnit\Framework\Attributes\RunTestsInSeparateProcesses] class DateTimeHelperTest extends TestCase { use MockeryPHPUnitIntegration; - /** - * @test - * @group testing - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('testing')] public function it_mocks_now(): void { DateTimeHelper::setCurrentTime(new DateTime(new CoreDateTime('@12345'))); @@ -41,10 +37,8 @@ public function it_mocks_now(): void $this->assertEquals(new DateTime(new CoreDateTime('@12345')), DateTime::now()); } - /** - * @test - * @group testing - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('testing')] public function it_can_be_disabled_in_the_same_process(): void { DateTimeHelper::setCurrentTime(new DateTime(new CoreDateTime('@12345'))); @@ -56,10 +50,8 @@ public function it_can_be_disabled_in_the_same_process(): void $this->assertTrue((new DateTime())->comesAfterOrIsEqual($now)); } - /** - * @test - * @group testing - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('testing')] public function it_works_with_separate_processes(): void { // The stub value has been removed. diff --git a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/EventHandling/BufferedEventBusTest.php b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/EventHandling/BufferedEventBusTest.php index b6ef9e995..fbbc99946 100644 --- a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/EventHandling/BufferedEventBusTest.php +++ b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/EventHandling/BufferedEventBusTest.php @@ -34,10 +34,8 @@ class BufferedEventBusTest extends TestCase { use MockeryPHPUnitIntegration; - /** - * @test - * @group event-handling - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('event-handling')] public function it_buffers_events(): void { $event = $this->createDummyDomainMessage(null); @@ -54,10 +52,8 @@ public function it_buffers_events(): void $this->assertInstanceOf(BufferedEventBus::class, $bus); } - /** - * @test - * @group event-handling - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('event-handling')] public function it_flushes_events(): void { $event = $this->createDummyDomainMessage(null); @@ -77,9 +73,9 @@ public function it_flushes_events(): void /** * This is tested by checking that the mock event listener is invoked once, while flushing twice. - * @test - * @group event-handling */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('event-handling')] public function flushing_succesfully_empties_the_buffer_to_prevent_flushing_the_same_event_twice(): void { $event = $this->createDummyDomainMessage(null); @@ -97,10 +93,8 @@ public function flushing_succesfully_empties_the_buffer_to_prevent_flushing_the_ $this->assertInstanceOf(BufferedEventBus::class, $bus); } - /** - * @test - * @group event-handling - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('event-handling')] public function an_event_caused_by_an_event_in_the_current_buffer_being_flushed_is_buffered_and_flushed_after_events_in_the_current_buffer(): void { $bus = new BufferedEventBus($this->getDummyEntityManager()); diff --git a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/IdentityCommandHandlerMoveTokenTest.php b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/IdentityCommandHandlerMoveTokenTest.php index 659d5a43c..c2fa77e73 100644 --- a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/IdentityCommandHandlerMoveTokenTest.php +++ b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/IdentityCommandHandlerMoveTokenTest.php @@ -65,9 +65,7 @@ use Surfnet\StepupMiddleware\CommandHandlingBundle\Identity\Service\RegistrationMailService; use Surfnet\StepupMiddleware\CommandHandlingBundle\Tests\CommandHandlerTest; -/** - * @runTestsInSeparateProcesses - */ +#[\PHPUnit\Framework\Attributes\RunTestsInSeparateProcesses] class IdentityCommandHandlerMoveTokenTest extends CommandHandlerTest { private static int $window = 3600; @@ -123,10 +121,8 @@ protected function createCommandHandler( ); } - /** - * @group command-handler - * @runInSeparateProcess - */ + #[\PHPUnit\Framework\Attributes\RunInSeparateProcess] + #[\PHPUnit\Framework\Attributes\Group('command-handler')] public function test_a_second_factor_can_be_moved(): void { $this->setUpInstitutionConfiguration(2, ['yubikey']); diff --git a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/IdentityCommandHandlerSelfAssertedTokensTest.php b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/IdentityCommandHandlerSelfAssertedTokensTest.php index 37099b9c0..a6ae860d2 100644 --- a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/IdentityCommandHandlerSelfAssertedTokensTest.php +++ b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/IdentityCommandHandlerSelfAssertedTokensTest.php @@ -86,9 +86,7 @@ use Surfnet\StepupMiddleware\CommandHandlingBundle\Identity\Service\RegistrationMailService; use Surfnet\StepupMiddleware\CommandHandlingBundle\Tests\CommandHandlerTest; -/** - * @runTestsInSeparateProcesses - */ +#[\PHPUnit\Framework\Attributes\RunTestsInSeparateProcesses] class IdentityCommandHandlerSelfAssertedTokensTest extends CommandHandlerTest { private static int $window = 3600; @@ -133,10 +131,8 @@ public function setUp(): void parent::setUp(); } - /** - * @group command-handler - * @runInSeparateProcess - */ + #[\PHPUnit\Framework\Attributes\RunInSeparateProcess] + #[\PHPUnit\Framework\Attributes\Group('command-handler')] public function test_a_sms_recovery_code_possession_can_be_proven(): void { $recoveryTokenId = new RecoveryTokenId(self::uuid()); @@ -168,10 +164,8 @@ public function test_a_sms_recovery_code_possession_can_be_proven(): void ]); } - /** - * @group command-handler - * @runInSeparateProcess - */ + #[\PHPUnit\Framework\Attributes\RunInSeparateProcess] + #[\PHPUnit\Framework\Attributes\Group('command-handler')] public function test_a_safe_store_secret_recovery_code_possession_can_be_proven(): void { $recoveryTokenId = new RecoveryTokenId(self::uuid()); @@ -214,10 +208,8 @@ public function test_a_safe_store_secret_recovery_code_possession_can_be_proven( ]); } - /** - * @group command-handler - * @runInSeparateProcess - */ + #[\PHPUnit\Framework\Attributes\RunInSeparateProcess] + #[\PHPUnit\Framework\Attributes\Group('command-handler')] public function test_a_safe_store_secret_and_phone_recovery_code_possession_can_be_proven(): void { $recoveryTokenId = new RecoveryTokenId(self::uuid()); @@ -279,10 +271,8 @@ public function test_a_safe_store_secret_and_phone_recovery_code_possession_can_ ]); } - /** - * @group command-handler - * @runInSeparateProcess - */ + #[\PHPUnit\Framework\Attributes\RunInSeparateProcess] + #[\PHPUnit\Framework\Attributes\Group('command-handler')] public function test_a_sms_recovery_code_possession_can_not_be_proven_twice(): void { $recoveryTokenId = new RecoveryTokenId(self::uuid()); @@ -317,10 +307,8 @@ public function test_a_sms_recovery_code_possession_can_not_be_proven_twice(): v ->when($command); } - /** - * @group command-handler - * @runInSeparateProcess - */ + #[\PHPUnit\Framework\Attributes\RunInSeparateProcess] + #[\PHPUnit\Framework\Attributes\Group('command-handler')] public function test_only_one_safe_store_secret_allowed(): void { $recoveryTokenId = new RecoveryTokenId(self::uuid()); @@ -367,10 +355,8 @@ public function test_only_one_safe_store_secret_allowed(): void ->when($command); } - /** - * @group command-handler - * @runInSeparateProcess - */ + #[\PHPUnit\Framework\Attributes\RunInSeparateProcess] + #[\PHPUnit\Framework\Attributes\Group('command-handler')] public function test_a_sms_recovery_token_possession_requires_institution_configuration_feature_enabled(): void { $identityCreatedEvent = $this->buildIdentityCreatedEvent(); @@ -407,10 +393,8 @@ public function test_a_sms_recovery_token_possession_requires_institution_config ->when($command); } - /** - * @group command-handler - * @runInSeparateProcess - */ + #[\PHPUnit\Framework\Attributes\RunInSeparateProcess] + #[\PHPUnit\Framework\Attributes\Group('command-handler')] public function test_a_safe_store_secret_recovery_code_possession_can_be_revoked_by_ra(): void { $recoveryTokenId = new RecoveryTokenId(self::uuid()); @@ -478,10 +462,8 @@ public function test_a_safe_store_secret_recovery_code_possession_can_be_revoked ]); } - /** - * @group command-handler - * @runInSeparateProcess - */ + #[\PHPUnit\Framework\Attributes\RunInSeparateProcess] + #[\PHPUnit\Framework\Attributes\Group('command-handler')] public function test_a_token_can_be_registered_self_asserted(): void { $recoveryTokenId = new RecoveryTokenId(self::uuid()); @@ -561,10 +543,8 @@ public function test_a_token_can_be_registered_self_asserted(): void ]); } - /** - * @group command-handler - * @runInSeparateProcess - */ + #[\PHPUnit\Framework\Attributes\RunInSeparateProcess] + #[\PHPUnit\Framework\Attributes\Group('command-handler')] public function test_self_asserted_token_registration_requires_possession_of_recovery_token(): void { $madeUpRecoveryTokenId = new RecoveryTokenId(self::uuid()); @@ -620,10 +600,8 @@ public function test_self_asserted_token_registration_requires_possession_of_rec ->when($command); } - /** - * @group command-handler - * @runInSeparateProcess - */ + #[\PHPUnit\Framework\Attributes\RunInSeparateProcess] + #[\PHPUnit\Framework\Attributes\Group('command-handler')] public function test_a_safe_store_secret_recovery_code_possession_can_be_revoked(): void { $recoveryTokenId = new RecoveryTokenId(self::uuid()); @@ -662,10 +640,8 @@ public function test_a_safe_store_secret_recovery_code_possession_can_be_revoked ]); } - /** - * @group command-handler - * @runInSeparateProcess - */ + #[\PHPUnit\Framework\Attributes\RunInSeparateProcess] + #[\PHPUnit\Framework\Attributes\Group('command-handler')] public function test_a_sat_token_can_be_used_to_self_vet_a_token(): void { $recoveryTokenId = new RecoveryTokenId(self::uuid()); @@ -793,10 +769,8 @@ public function test_a_sat_token_can_be_used_to_self_vet_a_token(): void ]); } - /** - * @group command-handler - * @runInSeparateProcess - */ + #[\PHPUnit\Framework\Attributes\RunInSeparateProcess] + #[\PHPUnit\Framework\Attributes\Group('command-handler')] public function test_sat_not_allowed_when_one_vetted_token_is_identity_vetted(): void { $recoveryTokenId = new RecoveryTokenId(self::uuid()); diff --git a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/IdentityCommandHandlerTest.php b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/IdentityCommandHandlerTest.php index 51c176ddc..d36ab037a 100644 --- a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/IdentityCommandHandlerTest.php +++ b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/IdentityCommandHandlerTest.php @@ -96,9 +96,7 @@ use Surfnet\StepupMiddleware\CommandHandlingBundle\Tests\DateTimeHelper; use function md5; -/** - * @runTestsInSeparateProcesses - */ +#[\PHPUnit\Framework\Attributes\RunTestsInSeparateProcesses] class IdentityCommandHandlerTest extends CommandHandlerTest { private static int $window = 3600; @@ -160,11 +158,9 @@ protected function createCommandHandler( ); } - /** - * @test - * @group command-handler - * @runInSeparateProcess - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\RunInSeparateProcess] + #[\PHPUnit\Framework\Attributes\Group('command-handler')] public function an_identity_can_be_bootstrapped_with_a_yubikey_second_factor(): void { $command = new BootstrapIdentityWithYubikeySecondFactorCommand(); @@ -210,11 +206,9 @@ public function an_identity_can_be_bootstrapped_with_a_yubikey_second_factor(): ]); } - /** - * @test - * @group command-handler - * @runInSeparateProcess - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\RunInSeparateProcess] + #[\PHPUnit\Framework\Attributes\Group('command-handler')] public function an_identity_cannot_be_bootstrapped_twice(): void { $command = new BootstrapIdentityWithYubikeySecondFactorCommand(); @@ -238,11 +232,9 @@ public function an_identity_cannot_be_bootstrapped_twice(): void ->then([]); } - /** - * @test - * @group command-handler - * @runInSeparateProcess - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\RunInSeparateProcess] + #[\PHPUnit\Framework\Attributes\Group('command-handler')] public function a_yubikey_possession_can_be_proven(): void { DateTimeHelper::setCurrentTime(new DateTime(new CoreDateTime('@12345'))); @@ -302,11 +294,9 @@ public function a_yubikey_possession_can_be_proven(): void ]); } - /** - * @test - * @group command-handler - * @runInSeparateProcess - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\RunInSeparateProcess] + #[\PHPUnit\Framework\Attributes\Group('command-handler')] public function a_yubikey_possession_cannot_be_proven_if_the_second_factor_is_not_allowed_by_the_institution(): void { DateTimeHelper::setCurrentTime(new DateTime(new CoreDateTime('@12345'))); @@ -349,10 +339,8 @@ public function a_yubikey_possession_cannot_be_proven_if_the_second_factor_is_no ->when($command); } - /** - * @test - * @group command-handler - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('command-handler')] public function yubikey_possession_cannot_be_proven_twice(): void { $this->expectException(DomainException::class); @@ -408,11 +396,9 @@ public function yubikey_possession_cannot_be_proven_twice(): void ->when($command); } - /** - * @test - * @group command-handler - * @runInSeparateProcess - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\RunInSeparateProcess] + #[\PHPUnit\Framework\Attributes\Group('command-handler')] public function a_phone_possession_can_be_proven(): void { DateTimeHelper::setCurrentTime(new DateTime(new CoreDateTime('@12345'))); @@ -472,11 +458,9 @@ public function a_phone_possession_can_be_proven(): void ]); } - /** - * @test - * @group command-handler - * @runInSeparateProcess - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\RunInSeparateProcess] + #[\PHPUnit\Framework\Attributes\Group('command-handler')] public function a_phone_possession_cannot_be_proven_if_the_second_factor_is_not_allowed_by_the_institution(): void { DateTimeHelper::setCurrentTime(new DateTime(new CoreDateTime('@12345'))); @@ -518,11 +502,9 @@ public function a_phone_possession_cannot_be_proven_if_the_second_factor_is_not_ ->then([]); } - /** - * @test - * @group command-handler - * @runInSeparateProcess - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\RunInSeparateProcess] + #[\PHPUnit\Framework\Attributes\Group('command-handler')] public function a_gssf_possession_can_be_proven(): void { DateTimeHelper::setCurrentTime(new DateTime(new CoreDateTime('@12345'))); @@ -595,11 +577,9 @@ public function a_gssf_possession_can_be_proven(): void } - /** - * @test - * @group command-handler - * @runInSeparateProcess - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\RunInSeparateProcess] + #[\PHPUnit\Framework\Attributes\Group('command-handler')] public function a_gssf_possession_can_not_be_proven_if_the_second_factor_is_not_allowed_by_the_institution(): void { DateTimeHelper::setCurrentTime(new DateTime(new CoreDateTime('@12345'))); @@ -643,11 +623,9 @@ public function a_gssf_possession_can_not_be_proven_if_the_second_factor_is_not_ ->then([]); } - /** - * @test - * @group command-handler - * @runInSeparateProcess - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\RunInSeparateProcess] + #[\PHPUnit\Framework\Attributes\Group('command-handler')] public function a_u2f_device_possession_can_be_proven(): void { DateTimeHelper::setCurrentTime(new DateTime(new CoreDateTime('@12345'))); @@ -707,11 +685,9 @@ public function a_u2f_device_possession_can_be_proven(): void ]); } - /** - * @test - * @group command-handler - * @runInSeparateProcess - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\RunInSeparateProcess] + #[\PHPUnit\Framework\Attributes\Group('command-handler')] public function a_u2f_device_possession_cannot_be_proven_if_the_second_factor_is_not_allowed_by_the_institution(): void { DateTimeHelper::setCurrentTime(new DateTime(new CoreDateTime('@12345'))); @@ -753,10 +729,8 @@ public function a_u2f_device_possession_cannot_be_proven_if_the_second_factor_is ->then([]); } - /** - * @test - * @group command-handler - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('command-handler')] public function phone_possession_cannot_be_proven_twice(): void { $this->expectException(DomainException::class); @@ -812,10 +786,8 @@ public function phone_possession_cannot_be_proven_twice(): void ->when($command); } - /** - * @test - * @group command-handler - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('command-handler')] public function cannot_prove_possession_of_arbitrary_second_factor_type_twice(): void { $this->expectException(DomainException::class); @@ -872,11 +844,9 @@ public function cannot_prove_possession_of_arbitrary_second_factor_type_twice(): ->when($command); } - /** - * @test - * @group command-handler - * @runInSeparateProcess - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\RunInSeparateProcess] + #[\PHPUnit\Framework\Attributes\Group('command-handler')] public function an_unverified_second_factors_email_can_be_verified(): void { DateTimeHelper::setCurrentTime(new DateTime(new CoreDateTime('@12345'))); @@ -941,10 +911,8 @@ public function an_unverified_second_factors_email_can_be_verified(): void ]); } - /** - * @test - * @group command-handler - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('command-handler')] public function a_verified_second_factors_email_cannot_be_verified(): void { $this->expectException(DomainException::class); @@ -1007,10 +975,8 @@ public function a_verified_second_factors_email_cannot_be_verified(): void ->when($command); } - /** - * @test - * @group command-handler - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('command-handler')] public function cannot_verify_an_email_after_the_verification_window_has_closed(): void { $this->expectException(DomainException::class); @@ -1059,10 +1025,8 @@ public function cannot_verify_an_email_after_the_verification_window_has_closed( ->when($command); } - /** - * @test - * @group command-handler - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('command-handler')] public function it_can_create_a_new_identity(): void { $createCommand = new CreateIdentityCommand(); @@ -1098,10 +1062,8 @@ public function it_can_create_a_new_identity(): void ]); } - /** - * @test - * @group command-handler - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('command-handler')] public function an_identity_can_be_updated(): void { $id = new IdentityId('42'); @@ -1133,10 +1095,8 @@ public function an_identity_can_be_updated(): void ]); } - /** - * @test - * @group command-handler - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('command-handler')] public function an_identity_can_be_updated_twice_only_emitting_events_when_changed(): void { $id = new IdentityId('42'); @@ -1170,10 +1130,8 @@ public function an_identity_can_be_updated_twice_only_emitting_events_when_chang } - /** - * @test - * @group command-handler - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('command-handler')] public function a_deprovisioned_identity_is_restored_when_updated(): void { $id = new IdentityId('42'); @@ -1210,10 +1168,8 @@ public function a_deprovisioned_identity_is_restored_when_updated(): void } - /** - * @test - * @group command-handler - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('command-handler')] public function a_second_factor_can_be_vetted(): void { $command = new VetSecondFactorCommand(); @@ -1325,10 +1281,8 @@ public function a_second_factor_can_be_vetted(): void ]); } - /** - * @test - * @group command-handler - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('command-handler')] public function a_second_factor_cannot_be_vetted_without_a_secure_enough_vetted_second_factor(): void { $this->expectExceptionMessage("Authority does not have the required LoA"); @@ -1470,10 +1424,8 @@ public function a_second_factor_cannot_be_vetted_without_a_secure_enough_vetted_ } - /** - * @test - * @group command-handler - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('command-handler')] public function a_second_factor_can_be_vetted_without_a_physical_proven_possession(): void { $command = new VetSecondFactorCommand(); @@ -1585,10 +1537,8 @@ public function a_second_factor_can_be_vetted_without_a_physical_proven_possessi ]); } - /** - * @test - * @group command-handler - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('command-handler')] public function a_second_factor_cannot_be_vetted_without_physical_prove_of_possession_when_not_configured(): void { $this->expectExceptionMessage( @@ -1736,11 +1686,9 @@ public function a_second_factor_cannot_be_vetted_without_physical_prove_of_posse ]); } - /** - * @test - * @group command-handler - * @runInSeparateProcess - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\RunInSeparateProcess] + #[\PHPUnit\Framework\Attributes\Group('command-handler')] public function an_identity_can_express_its_locale_preference(): void { $command = new ExpressLocalePreferenceCommand(); @@ -1768,11 +1716,9 @@ public function an_identity_can_express_its_locale_preference(): void ]); } - /** - * @test - * @group command-handler - * @runInSeparateProcess - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\RunInSeparateProcess] + #[\PHPUnit\Framework\Attributes\Group('command-handler')] public function an_identity_can_send_registration_mail(): void { $command = new SendSecondFactorRegistrationEmailCommand(); @@ -1802,11 +1748,9 @@ public function an_identity_can_send_registration_mail(): void ->then([]); // No event is emanated from this command } - /** - * @test - * @group command-handler - * @runInSeparateProcess - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\RunInSeparateProcess] + #[\PHPUnit\Framework\Attributes\Group('command-handler')] public function an_identity_cannot_express_a_preference_for_an_unsupported_locale(): void { $this->expectExceptionMessage("Given locale \"fi_FI\" is not a supported locale"); @@ -1834,11 +1778,9 @@ public function an_identity_cannot_express_a_preference_for_an_unsupported_local ->when($command); } - /** - * @test - * @group command-handler - * @runInSeparateProcess - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\RunInSeparateProcess] + #[\PHPUnit\Framework\Attributes\Group('command-handler')] public function an_identity_can_express_its_locale_preference_more_than_one_time(): void { $command = new ExpressLocalePreferenceCommand(); @@ -1868,11 +1810,9 @@ public function an_identity_can_express_its_locale_preference_more_than_one_time ]); } - /** - * @test - * @group command-handler - * @runInSeparateProcess - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\RunInSeparateProcess] + #[\PHPUnit\Framework\Attributes\Group('command-handler')] public function a_second_factor_can_be_self_vetted(): void { $command = new SelfVetSecondFactorCommand(); @@ -1996,12 +1936,12 @@ public function a_second_factor_can_be_self_vetted(): void } /** - * @test - * @group command-handler - * @runInSeparateProcess * * @todo remove this test once we drop BC support for SelfService 3.5 */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\RunInSeparateProcess] + #[\PHPUnit\Framework\Attributes\Group('command-handler')] public function a_second_factor_can_be_self_vetted_using_old_authoringSecondFactorIdentifier_command_property(): void { $command = new SelfVetSecondFactorCommand(); diff --git a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/IdentityCommandHandlerUniqueTypeRegistrationTest.php b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/IdentityCommandHandlerUniqueTypeRegistrationTest.php index fc52b8a8c..d280ee7bb 100644 --- a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/IdentityCommandHandlerUniqueTypeRegistrationTest.php +++ b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/IdentityCommandHandlerUniqueTypeRegistrationTest.php @@ -70,9 +70,7 @@ use Surfnet\StepupMiddleware\CommandHandlingBundle\Tests\DateTimeHelper; use function md5; -/** - * @runTestsInSeparateProcesses - */ +#[\PHPUnit\Framework\Attributes\RunTestsInSeparateProcesses] class IdentityCommandHandlerUniqueTypeRegistrationTest extends CommandHandlerTest { private static int $window = 3600; @@ -134,9 +132,7 @@ protected function createCommandHandler( ); } - /** - * @group command-handler - */ + #[\PHPUnit\Framework\Attributes\Group('command-handler')] public function test_yubikey_type_cannot_be_proven_if_type_already_exists(): void { $this->expectException(DomainException::class); @@ -194,9 +190,7 @@ public function test_yubikey_type_cannot_be_proven_if_type_already_exists(): voi ->when($command); } - /** - * @group command-handler - */ + #[\PHPUnit\Framework\Attributes\Group('command-handler')] public function test_phone_type_cannot_be_proven_if_type_already_exists(): void { $this->expectException(DomainException::class); @@ -255,9 +249,7 @@ public function test_phone_type_cannot_be_proven_if_type_already_exists(): void } - /** - * @group command-handler - */ + #[\PHPUnit\Framework\Attributes\Group('command-handler')] public function test_gssf_type_cannot_be_proven_if_type_already_exists(): void { $this->expectException(DomainException::class); @@ -322,10 +314,8 @@ public function test_gssf_type_cannot_be_proven_if_type_already_exists(): void } - /** - * @test - * @group command-handler - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('command-handler')] public function test_u2f_type_cannot_be_proven_if_type_already_exists(): void { $this->expectException(DomainException::class); diff --git a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/RegistrationAuthorityCommandHandlerTest.php b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/RegistrationAuthorityCommandHandlerTest.php index c990989d0..1f62fcf25 100644 --- a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/RegistrationAuthorityCommandHandlerTest.php +++ b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/RegistrationAuthorityCommandHandlerTest.php @@ -104,11 +104,9 @@ protected function createCommandHandler( ); } - /** - * @test - * @group command-handler - * @group ra-command-handler - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[\PHPUnit\Framework\Attributes\Group('ra-command-handler')] public function an_identity_cannot_be_accredited_for_another_institution_than_configured(): void { $this->expectExceptionMessage("An Identity may only be accredited by configured institutions"); @@ -159,11 +157,9 @@ public function an_identity_cannot_be_accredited_for_another_institution_than_co ->when($command); } - /** - * @test - * @group command-handler - * @group ra-command-handler - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[\PHPUnit\Framework\Attributes\Group('ra-command-handler')] public function an_identity_cannot_be_accredited_when_it_does_not_have_a_vetted_second_factor(): void { $this->expectExceptionMessage( @@ -204,11 +200,9 @@ public function an_identity_cannot_be_accredited_when_it_does_not_have_a_vetted_ } - /** - * @test - * @group command-handler - * @group ra-command-handler - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[\PHPUnit\Framework\Attributes\Group('ra-command-handler')] public function an_identity_cannot_be_accredited_when_it_already_has_been_accredited(): void { $this->expectExceptionMessage("Cannot accredit Identity as it has already been accredited for institution"); @@ -268,11 +262,9 @@ public function an_identity_cannot_be_accredited_when_it_already_has_been_accred ->when($command); } - /** - * @test - * @group command-handler - * @group ra-command-handler - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[\PHPUnit\Framework\Attributes\Group('ra-command-handler')] public function an_identity_cannot_be_accredited_with_an_invalid_role(): void { $this->expectException(RuntimeException::class); @@ -320,11 +312,9 @@ public function an_identity_cannot_be_accredited_with_an_invalid_role(): void ->when($command); } - /** - * @test - * @group command-handler - * @group ra-command-handler - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[\PHPUnit\Framework\Attributes\Group('ra-command-handler')] public function an_identity_can_be_accredited_with_ra_role(): void { $command = new AccreditIdentityCommand(); @@ -386,11 +376,9 @@ public function an_identity_can_be_accredited_with_ra_role(): void ]); } - /** - * @test - * @group command-handler - * @group ra-command-handler - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[\PHPUnit\Framework\Attributes\Group('ra-command-handler')] public function an_identity_can_be_accredited_with_raa_role(): void { $command = new AccreditIdentityCommand(); @@ -454,11 +442,9 @@ public function an_identity_can_be_accredited_with_raa_role(): void ); } - /** - * @test - * @group command-handler - * @group ra-command-handler - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[\PHPUnit\Framework\Attributes\Group('ra-command-handler')] public function a_registration_authoritys_information_can_be_amended(): void { $command = new AmendRegistrationAuthorityInformationCommand(); @@ -523,11 +509,9 @@ public function a_registration_authoritys_information_can_be_amended(): void ); } - /** - * @test - * @group command-handler - * @group ra-command-handler - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[\PHPUnit\Framework\Attributes\Group('ra-command-handler')] public function an_identitys_registration_authority_information_cannot_be_amended(): void { $this->expectExceptionMessage( @@ -576,11 +560,9 @@ public function an_identitys_registration_authority_information_cannot_be_amende ->when($command); } - /** - * @test - * @group command-handler - * @group ra-command-handler - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[\PHPUnit\Framework\Attributes\Group('ra-command-handler')] public function an_identity_without_vetted_second_factor_may_not_be_accredited_as_ra(): void { $this->expectExceptionMessage( @@ -621,11 +603,9 @@ public function an_identity_without_vetted_second_factor_may_not_be_accredited_a ->when($command); } - /** - * @test - * @group command-handler - * @group ra-command-handler - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[\PHPUnit\Framework\Attributes\Group('ra-command-handler')] public function an_identity_with_a_vetted_second_factor_can_be_accredited_as_ra(): void { $command = new AccreditIdentityCommand(); @@ -687,11 +667,9 @@ public function an_identity_with_a_vetted_second_factor_can_be_accredited_as_ra( ]); } - /** - * @test - * @group command-handler - * @group ra-command-handler - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[\PHPUnit\Framework\Attributes\Group('ra-command-handler')] public function an_identity_cannot_be_accredited_twice(): void { $this->expectExceptionMessage("Cannot accredit Identity as it has already been accredited for institution"); @@ -751,11 +729,9 @@ public function an_identity_cannot_be_accredited_twice(): void ->when($command); } - /** - * @test - * @group command-handler - * @group ra-command-handler - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[\PHPUnit\Framework\Attributes\Group('ra-command-handler')] public function an_identity_cannot_be_accredited_as_sraa(): void { $this->expectException(RuntimeException::class); @@ -802,11 +778,9 @@ public function an_identity_cannot_be_accredited_as_sraa(): void ->when($command); } - /** - * @test - * @group command-handler - * @group ra-command-handler - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[\PHPUnit\Framework\Attributes\Group('ra-command-handler')] public function an_identity_that_is_accredited_as_raa_can_be_appointed_as_ra(): void { $command = new AppointRoleCommand(); @@ -868,11 +842,9 @@ public function an_identity_that_is_accredited_as_raa_can_be_appointed_as_ra(): ]); } - /** - * @test - * @group command-handler - * @group ra-command-handler - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[\PHPUnit\Framework\Attributes\Group('ra-command-handler')] public function an_identity_that_is_accredited_as_ra_can_be_appointed_as_raa(): void { $command = new AppointRoleCommand(); @@ -935,11 +907,9 @@ public function an_identity_that_is_accredited_as_ra_can_be_appointed_as_raa(): ]); } - /** - * @test - * @group command-handler - * @group ra-command-handler - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[\PHPUnit\Framework\Attributes\Group('ra-command-handler')] public function an_unaccredited_identity_cannot_be_appointed_a_registration_authority_role(): void { $this->expectExceptionMessage( @@ -989,11 +959,9 @@ public function an_unaccredited_identity_cannot_be_appointed_a_registration_auth ->when($command); } - /** - * @test - * @group command-handler - * @group ra-command-handler - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[\PHPUnit\Framework\Attributes\Group('ra-command-handler')] public function an_unaccredited_identity_cannot_have_its_registration_authority_retracted(): void { $this->expectExceptionMessage( diff --git a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/RightToBeForgottenCommandHandlerTest.php b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/RightToBeForgottenCommandHandlerTest.php index fef449cc0..b79ccc9dd 100644 --- a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/RightToBeForgottenCommandHandlerTest.php +++ b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/RightToBeForgottenCommandHandlerTest.php @@ -53,9 +53,7 @@ use Surfnet\StepupMiddleware\CommandHandlingBundle\SensitiveData\Service\SensitiveDataService; use Surfnet\StepupMiddleware\CommandHandlingBundle\Tests\CommandHandlerTest; -/** - * @runTestsInSeparateProcesses - */ +#[\PHPUnit\Framework\Attributes\RunTestsInSeparateProcesses] class RightToBeForgottenCommandHandlerTest extends CommandHandlerTest { /** @var MockInterface */ @@ -96,11 +94,9 @@ protected function createCommandHandler( ); } - /** - * @test - * @group command-handler - * @group sensitive-data - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[\PHPUnit\Framework\Attributes\Group('sensitive-data')] public function an_identity_can_be_forgotten(): void { $identityId = new IdentityId('A'); @@ -155,11 +151,9 @@ public function an_identity_can_be_forgotten(): void ]); } - /** - * @test - * @group command-handler - * @group sensitive-data - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[\PHPUnit\Framework\Attributes\Group('sensitive-data')] public function an_identity_may_be_forgotten_twice(): void { $identityId = new IdentityId('A'); @@ -215,11 +209,9 @@ public function an_identity_may_be_forgotten_twice(): void ]); } - /** - * @test - * @group command-handler - * @group sensitive-data - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[\PHPUnit\Framework\Attributes\Group('sensitive-data')] public function an_ra_cannot_be_forgotten(): void { $this->expectExceptionMessage("Cannot forget an identity that is currently accredited as an RA(A)"); @@ -277,11 +269,9 @@ public function an_ra_cannot_be_forgotten(): void ->when($command); } - /** - * @test - * @group command-handler - * @group sensitive-data - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[\PHPUnit\Framework\Attributes\Group('sensitive-data')] public function an_raa_cannot_be_forgotten(): void { $this->expectExceptionMessage("Cannot forget an identity that is currently accredited as an RA(A)"); @@ -340,11 +330,9 @@ public function an_raa_cannot_be_forgotten(): void ->when($command); } - /** - * @test - * @group command-handler - * @group sensitive-data - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[\PHPUnit\Framework\Attributes\Group('sensitive-data')] public function an_sraa_cannot_be_forgotten(): void { $this->expectExceptionMessage("Cannot forget an identity that is currently accredited as an SRAA"); diff --git a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/SecondFactorRevocationTest.php b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/SecondFactorRevocationTest.php index 80253a852..8d2f1473c 100644 --- a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/SecondFactorRevocationTest.php +++ b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/SecondFactorRevocationTest.php @@ -69,9 +69,7 @@ use Surfnet\StepupMiddleware\CommandHandlingBundle\Identity\Service\RegistrationMailService; use Surfnet\StepupMiddleware\CommandHandlingBundle\Tests\CommandHandlerTest; -/** - * @runTestsInSeparateProcesses - */ +#[\PHPUnit\Framework\Attributes\RunTestsInSeparateProcesses] class SecondFactorRevocationTest extends CommandHandlerTest { private static int $window = 3600; @@ -104,10 +102,8 @@ protected function createCommandHandler( ); } - /** - * @test - * @group command-handler - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('command-handler')] public function an_identity_can_revoke_its_own_unverified_second_factor(): void { $command = new RevokeOwnSecondFactorCommand(); @@ -160,10 +156,8 @@ public function an_identity_can_revoke_its_own_unverified_second_factor(): void ]); } - /** - * @test - * @group command-handler - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('command-handler')] public function an_identity_can_revoke_its_own_verified_second_factor(): void { $command = new RevokeOwnSecondFactorCommand(); @@ -228,10 +222,8 @@ public function an_identity_can_revoke_its_own_verified_second_factor(): void ]); } - /** - * @test - * @group command-handler - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('command-handler')] public function an_identity_can_revoke_its_own_vetted_second_factor(): void { $command = new RevokeOwnSecondFactorCommand(); @@ -314,10 +306,8 @@ public function an_identity_can_revoke_its_own_vetted_second_factor(): void ]); } - /** - * @test - * @group command-handler - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('command-handler')] public function a_registration_authority_can_revoke_an_unverified_second_factor(): void { $command = new RevokeRegistrantsSecondFactorCommand(); @@ -400,10 +390,8 @@ public function a_registration_authority_can_revoke_an_unverified_second_factor( ]); } - /** - * @test - * @group command-handler - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('command-handler')] public function a_registration_authority_can_revoke_a_verified_second_factor(): void { $command = new RevokeRegistrantsSecondFactorCommand(); @@ -499,10 +487,8 @@ public function a_registration_authority_can_revoke_a_verified_second_factor(): ]); } - /** - * @test - * @group command-handler - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('command-handler')] public function a_registration_authority_can_revoke_a_vetted_second_factor(): void { $command = new RevokeRegistrantsSecondFactorCommand(); @@ -615,10 +601,8 @@ public function a_registration_authority_can_revoke_a_vetted_second_factor(): vo } - /** - * @test - * @group command-handler - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('command-handler')] public function a_registration_authority_can_revoke_a_possession_proved_skipped_vetted_second_factor(): void { $command = new RevokeRegistrantsSecondFactorCommand(); @@ -732,9 +716,9 @@ public function a_registration_authority_can_revoke_a_possession_proved_skipped_ /** * Test if the VettedSecondFactorsAllRevokedEvent is not triggered with multiple 2fa's - * @test - * @group command-handler */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('command-handler')] public function a_registration_authority_can_revoke_one_of_multiple_vetted_second_factors(): void { $command = new RevokeRegistrantsSecondFactorCommand(); diff --git a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/WhitelistCommandHandlerTest.php b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/WhitelistCommandHandlerTest.php index 63b2f5411..8ab1527be 100644 --- a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/WhitelistCommandHandlerTest.php +++ b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/WhitelistCommandHandlerTest.php @@ -53,11 +53,9 @@ protected function createCommandHandler( return new WhitelistCommandHandler(new WhitelistRepository($eventStore, $eventBus, $aggregateFactory)); } - /** - * @test - * @group command-handler - * @group whitelist - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[\PHPUnit\Framework\Attributes\Group('whitelist')] public function when_the_whitelist_does_not_exist_yet_it_is_created(): void { $command = new ReplaceWhitelistCommand(); @@ -72,11 +70,9 @@ public function when_the_whitelist_does_not_exist_yet_it_is_created(): void ]); } - /** - * @test - * @group command-handler - * @group whitelist - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[\PHPUnit\Framework\Attributes\Group('whitelist')] public function the_whitelist_can_be_fully_replaced(): void { $initialInstitutions = $this->mapStringValuesToInstitutions(['Initial One', 'Initial Two']); @@ -96,11 +92,9 @@ public function the_whitelist_can_be_fully_replaced(): void } - /** - * @test - * @group command-handler - * @group whitelist - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[\PHPUnit\Framework\Attributes\Group('whitelist')] public function an_institution_not_yet_on_the_whitelist_can_be_added_to_the_whitelist(): void { $initialInstitutions = $this->mapStringValuesToInstitutions(['Initial One', 'Initial Two']); @@ -119,11 +113,9 @@ public function an_institution_not_yet_on_the_whitelist_can_be_added_to_the_whit ]); } - /** - * @test - * @group command-handler - * @group whitelist - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[\PHPUnit\Framework\Attributes\Group('whitelist')] public function an_institution_on_the_whitelist_may_not_be_added_again(): void { $this->expectExceptionMessage("Cannot add institution \"already exists\" as it is already whitelisted"); @@ -140,11 +132,9 @@ public function an_institution_on_the_whitelist_may_not_be_added_again(): void ->when($command); } - /** - * @test - * @group command-handler - * @group whitelist - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[\PHPUnit\Framework\Attributes\Group('whitelist')] public function an_institution_on_the_whitelist_can_be_removed_from_the_whitelist(): void { $initialInstitutions = $this->mapStringValuesToInstitutions(['Initial One', 'On the whitelist']); @@ -163,11 +153,9 @@ public function an_institution_on_the_whitelist_can_be_removed_from_the_whitelis ]); } - /** - * @test - * @group command-handler - * @group whitelist - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[\PHPUnit\Framework\Attributes\Group('whitelist')] public function an_institution_that_is_not_on_the_whitelist_cannot_be_removed(): void { $this->expectExceptionMessage("Cannot remove institution \"not on the whitelist\" as it is not whitelisted"); diff --git a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Mockery/HasInstitutionMatcherTest.php b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Mockery/HasInstitutionMatcherTest.php index b19a6bcb4..cbfecd559 100644 --- a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Mockery/HasInstitutionMatcherTest.php +++ b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Mockery/HasInstitutionMatcherTest.php @@ -31,13 +31,10 @@ class HasInstitutionMatcherTest extends TestCase { use MockeryPHPUnitIntegration; - /** - * @test - * @group mockery - * @group institution - * - * @dataProvider nonObjectProvider - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\DataProvider('nonObjectProvider')] + #[\PHPUnit\Framework\Attributes\Group('mockery')] + #[\PHPUnit\Framework\Attributes\Group('institution')] public function has_institution_matcher_only_matches_objects_against_a_given_institution( bool|int|float|string|array|null $nonObject, ): void { @@ -49,11 +46,9 @@ public function has_institution_matcher_only_matches_objects_against_a_given_ins $this->assertFalse($match); } - /** - * @test - * @group mockery - * @group institution - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('mockery')] + #[\PHPUnit\Framework\Attributes\Group('institution')] public function has_institution_matcher_does_not_match_when_object_has_no_institution_property_and_no_institution_accessor(): void { $institution = 'surfnet.nl'; @@ -66,11 +61,9 @@ public function has_institution_matcher_does_not_match_when_object_has_no_instit $this->assertFalse($match); } - /** - * @test - * @group mockery - * @group institution - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('mockery')] + #[\PHPUnit\Framework\Attributes\Group('institution')] public function has_institution_matcher_does_not_match_when_objects_accessed_institution_differs_from_given_institution(): void { $institution = 'surfnet.nl'; @@ -84,11 +77,9 @@ public function has_institution_matcher_does_not_match_when_objects_accessed_ins $this->assertFalse($match); } - /** - * @test - * @group mockery - * @group institution - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('mockery')] + #[\PHPUnit\Framework\Attributes\Group('institution')] public function has_institution_matcher_matches_when_objects_accessed_institution_is_the_same_as_given_institution(): void { $institution = 'surfnet.nl'; @@ -101,11 +92,9 @@ public function has_institution_matcher_matches_when_objects_accessed_institutio $this->assertTrue($match); } - /** - * @test - * @group mockery - * @group institution - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('mockery')] + #[\PHPUnit\Framework\Attributes\Group('institution')] public function has_institution_matcher_does_not_match_when_objects_institution_property_differs_from_given_institution(): void { $institution = 'surfnet.nl'; @@ -119,11 +108,9 @@ public function has_institution_matcher_does_not_match_when_objects_institution_ $this->assertFalse($match); } - /** - * @test - * @group mockery - * @group institution - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('mockery')] + #[\PHPUnit\Framework\Attributes\Group('institution')] public function has_institution_matcher_matches_when_objects_institution_property_is_the_same_as_given_institution(): void { $institution = 'surfnet.nl'; @@ -148,7 +135,7 @@ public function nonStringProvider(): array ]; } - public function nonObjectProvider(): array + public static function nonObjectProvider(): array { return [ 'null' => [null], diff --git a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Pipeline/AuthorizingStageTest.php b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Pipeline/AuthorizingStageTest.php index 287e52dee..ac3d1427c 100644 --- a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Pipeline/AuthorizingStageTest.php +++ b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Pipeline/AuthorizingStageTest.php @@ -47,10 +47,8 @@ public function setUp(): void ); } - /** - * @test - * @group pipeline - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('pipeline')] public function when_a_command_has_no_marker_interface_authorization_is_granted_by_default(): void { $command = m::mock(AbstractCommand::class); @@ -63,11 +61,9 @@ public function when_a_command_has_no_marker_interface_authorization_is_granted_ $this->assertInstanceOf(AuthorizingStage::class, $authorizingStage); } - /** - * @test - * @group pipeline - * @dataProvider interfaceToRoleMappingProvider - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\DataProvider('interfaceToRoleMappingProvider')] + #[\PHPUnit\Framework\Attributes\Group('pipeline')] public function a_command_with_a_marker_interface_triggers_a_check_for_the_correct_role( string $interface, string $role, @@ -87,10 +83,8 @@ public function a_command_with_a_marker_interface_triggers_a_check_for_the_corre $this->assertInstanceOf(AuthorizingStage::class, $authorizingStage); } - /** - * @test - * @group pipeline - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('pipeline')] public function when_a_command_implements_multiple_marker_interfaces_at_least_one_corresponding_role_is_required(): void { /** @var AbstractCommand&SelfServiceExecutable&RaExecutable&ManagementExecutable&MockInterface $command */ @@ -126,10 +120,8 @@ public function when_a_command_implements_multiple_marker_interfaces_at_least_on $this->assertInstanceOf(AuthorizingStage::class, $authorizingStage); } - /** - * @test - * @group pipeline - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('pipeline')] public function when_the_client_does_not_have_the_required_role_an_forbidden_exception_is_thrown(): void { $this->expectException(ForbiddenException::class); @@ -156,7 +148,7 @@ public function when_the_client_does_not_have_the_required_role_an_forbidden_exc $this->assertInstanceOf(AuthorizingStage::class, $authorizingStage); } - public function interfaceToRoleMappingProvider(): array + public static function interfaceToRoleMappingProvider(): array { return [ 'SelfServiceExecutable => ROLE_SS' => [ diff --git a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Pipeline/DispatchStageTest.php b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Pipeline/DispatchStageTest.php index 9d75430f7..da52dbcbe 100644 --- a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Pipeline/DispatchStageTest.php +++ b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Pipeline/DispatchStageTest.php @@ -32,10 +32,8 @@ class DispatchStageTest extends TestCase { use MockeryPHPUnitIntegration; - /** - * @test - * @group pipeline - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('pipeline')] public function it_dispatches_commands(): void { $command = m::mock(AbstractCommand::class); diff --git a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Pipeline/EventDispatchingStageTest.php b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Pipeline/EventDispatchingStageTest.php index c6fa4d44e..e68bf5306 100644 --- a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Pipeline/EventDispatchingStageTest.php +++ b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Pipeline/EventDispatchingStageTest.php @@ -32,10 +32,8 @@ class EventDispatchingStageTest extends UnitTest { use MockeryPHPUnitIntegration; - /** - * @test - * @group pipeline - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('pipeline')] public function buffered_event_bus_flush_is_called_during_process(): void { $command = m::mock(AbstractCommand::class); @@ -50,10 +48,8 @@ public function buffered_event_bus_flush_is_called_during_process(): void $this->assertInstanceOf(EventDispatchingStage::class, $stage); } - /** - * @test - * @group pipeline - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('pipeline')] public function it_returns_the_same_command_as_it_processes_unmodified(): void { $command = new FixedUuidStubCommand(); diff --git a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Pipeline/StagedPipelineTest.php b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Pipeline/StagedPipelineTest.php index d3b791345..4f1fb60de 100644 --- a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Pipeline/StagedPipelineTest.php +++ b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Pipeline/StagedPipelineTest.php @@ -31,10 +31,8 @@ class StagedPipelineTest extends TestCase { use MockeryPHPUnitIntegration; - /** - * @test - * @group pipeline - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('pipeline')] public function it_passes_a_command_through_a_single_stage(): void { $command = m::mock(AbstractCommand::class); @@ -49,10 +47,8 @@ public function it_passes_a_command_through_a_single_stage(): void $this->assertSame($command, $pipeline->process($command)); } - /** - * @test - * @group pipeline - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('pipeline')] public function it_passes_a_command_through_multiple_stages(): void { $command = m::mock(AbstractCommand::class); @@ -72,10 +68,8 @@ public function it_passes_a_command_through_multiple_stages(): void $this->assertSame($command, $pipeline->process($command)); } - /** - * @test - * @group pipeline - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('pipeline')] public function it_passes_the_command_returned_from_an_earlier_stage_on_to_the_next(): void { $command1 = m::mock(AbstractCommand::class); diff --git a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Pipeline/ValidationStageTest.php b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Pipeline/ValidationStageTest.php index c8e24da65..e03b11eec 100644 --- a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Pipeline/ValidationStageTest.php +++ b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Pipeline/ValidationStageTest.php @@ -34,10 +34,8 @@ class ValidationStageTest extends TestCase { use MockeryPHPUnitIntegration; - /** - * @test - * @group pipeline - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('pipeline')] public function it_validates_commands(): void { $command = m::mock(AbstractCommand::class); @@ -54,10 +52,8 @@ public function it_validates_commands(): void $this->assertSame($command, $stage->process($command)); } - /** - * @test - * @group pipeline - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('pipeline')] public function it_throws_an_exception_when_validation_fails(): void { $this->expectException(InvalidCommandException::class); diff --git a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Processor/RecoveryTokenEmailProcessorTest.php b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Processor/RecoveryTokenEmailProcessorTest.php index add7b0c48..77f189f50 100644 --- a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Processor/RecoveryTokenEmailProcessorTest.php +++ b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Processor/RecoveryTokenEmailProcessorTest.php @@ -60,9 +60,7 @@ public function setUp(): void ); } - /** - * @group processor - */ + #[\PHPUnit\Framework\Attributes\Group('processor')] public function test_mails_when_complied_with_recovery_token_revocation(): void { $identity = $this->returnABogusIdentity(); @@ -92,9 +90,7 @@ public function test_mails_when_complied_with_recovery_token_revocation(): void $this->processor->handleCompliedWithRecoveryCodeRevocationEvent($event); } - /** - * @group processor - */ + #[\PHPUnit\Framework\Attributes\Group('processor')] public function test_does_not_mail_when_identity_not_found_complied_with_recovery_token_revocation(): void { $this->identityService @@ -114,9 +110,7 @@ public function test_does_not_mail_when_identity_not_found_complied_with_recover $this->processor->handleCompliedWithRecoveryCodeRevocationEvent($event); } - /** - * @group processor - */ + #[\PHPUnit\Framework\Attributes\Group('processor')] public function test_it_mails_when_recovery_token_revoked_by_identity(): void { $identity = $this->returnABogusIdentity(); @@ -145,9 +139,7 @@ public function test_it_mails_when_recovery_token_revoked_by_identity(): void $this->processor->handleRecoveryTokenRevokedEvent($event); } - /** - * @group processor - */ + #[\PHPUnit\Framework\Attributes\Group('processor')] public function test_does_not_mail_when_identity_not_found_recovery_token_revocation(): void { $this->identityService @@ -166,9 +158,7 @@ public function test_does_not_mail_when_identity_not_found_recovery_token_revoca $this->processor->handleRecoveryTokenRevokedEvent($event); } - /** - * @group processor - */ + #[\PHPUnit\Framework\Attributes\Group('processor')] public function test_it_mails_when_sms_token_created(): void { $identity = $this->returnABogusIdentity(); @@ -197,9 +187,7 @@ public function test_it_mails_when_sms_token_created(): void $this->processor->handlePhoneRecoveryTokenPossessionProvenEvent($event); } - /** - * @group processor - */ + #[\PHPUnit\Framework\Attributes\Group('processor')] public function test_does_not_mail_when_identity_not_found_sms_creation(): void { $this->identityService @@ -221,9 +209,7 @@ public function test_does_not_mail_when_identity_not_found_sms_creation(): void $this->processor->handlePhoneRecoveryTokenPossessionProvenEvent($event); } - /** - * @group processor - */ + #[\PHPUnit\Framework\Attributes\Group('processor')] public function test_it_mails_when_safe_store_token_created(): void { $identity = $this->returnABogusIdentity(); @@ -252,9 +238,7 @@ public function test_it_mails_when_safe_store_token_created(): void $this->processor->handleSafeStoreSecretRecoveryTokenPossessionPromisedEvent($event); } - /** - * @group processor - */ + #[\PHPUnit\Framework\Attributes\Group('processor')] public function test_does_not_mail_when_identity_not_found_safe_store_creation(): void { $this->identityService diff --git a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/SensitiveData/EventSourcing/SensitiveDataMessageStreamTest.php b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/SensitiveData/EventSourcing/SensitiveDataMessageStreamTest.php index c2e549654..36a77f5eb 100644 --- a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/SensitiveData/EventSourcing/SensitiveDataMessageStreamTest.php +++ b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/SensitiveData/EventSourcing/SensitiveDataMessageStreamTest.php @@ -41,20 +41,16 @@ final class SensitiveDataMessageStreamTest extends TestCase public const EVENT_STREAM_A = 'A'; public const EVENT_STREAM_B = 'B'; - /** - * @test - * @group sensitive-data - * @doesNotPerformAssertions - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\DoesNotPerformAssertions] + #[\PHPUnit\Framework\Attributes\Group('sensitive-data')] public function it_can_work_with_zero_sensitive_data_messages_and_zero_events(): void { $this->apply([], []); } - /** - * @test - * @group sensitive-data - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('sensitive-data')] public function it_can_apply_one_sensitive_data_message_to_one_matching_event(): void { $sensitiveDataMessages = [ @@ -78,10 +74,8 @@ public function it_can_apply_one_sensitive_data_message_to_one_matching_event(): $this->assertSensitiveDataEquals($sensitiveDataMessages[0], $domainMessages[0]); } - /** - * @test - * @group sensitive-data - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('sensitive-data')] public function it_can_apply_two_sensitive_data_message_to_two_matching_events(): void { $sensitiveDataMessages = [ @@ -118,10 +112,8 @@ public function it_can_apply_two_sensitive_data_message_to_two_matching_events() $this->assertSensitiveDataEquals($sensitiveDataMessages[1], $domainMessages[1]); } - /** - * @test - * @group sensitive-data - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('sensitive-data')] public function it_can_apply_one_sensitive_data_message_to_one_regular_event_and_one_matching_forgettable_event(): void { $sensitiveDataMessages = [ @@ -152,10 +144,8 @@ public function it_can_apply_one_sensitive_data_message_to_one_regular_event_and $this->assertSensitiveDataEquals($sensitiveDataMessages[0], $domainMessages[1]); } - /** - * @test - * @group sensitive-data - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('sensitive-data')] public function it_fails_when_sensitive_data_is_missing_for_an_event(): void { $this->expectExceptionMessage("Sensitive data is missing for event with UUID A, playhead 0"); @@ -175,10 +165,8 @@ public function it_fails_when_sensitive_data_is_missing_for_an_event(): void $this->apply($sensitiveDataMessages, $domainMessages); } - /** - * @test - * @group sensitive-data - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('sensitive-data')] public function it_fails_when_not_all_sensitive_data_could_be_matched_to_an_event(): void { $this->expectExceptionMessage("1 sensitive data messages are still to be matched to events"); @@ -203,10 +191,8 @@ public function it_fails_when_not_all_sensitive_data_could_be_matched_to_an_even $this->apply($sensitiveDataMessages, $domainMessages); } - /** - * @test - * @group sensitive-data - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('sensitive-data')] public function it_fails_when_sensitive_data_matches_a_regular_event(): void { $this->expectExceptionMessage( @@ -234,10 +220,8 @@ public function it_fails_when_sensitive_data_matches_a_regular_event(): void $this->apply($sensitiveDataMessages, $domainMessages); } - /** - * @test - * @group sensitive-data - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('sensitive-data')] public function it_fails_when_stream_ids_dont_match(): void { $this->expectExceptionMessage("Encountered sensitive data from stream A for event from stream B"); @@ -263,10 +247,8 @@ public function it_fails_when_stream_ids_dont_match(): void $this->apply($sensitiveDataMessages, $domainMessages); } - /** - * @test - * @group sensitive-data - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('sensitive-data')] public function it_can_forget_all_sensitive_data(): void { /** @var MockInterface&SensitiveDataMessage $command */ diff --git a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/SensitiveData/SensitiveDataTest.php b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/SensitiveData/SensitiveDataTest.php index 8fe429397..d10302478 100644 --- a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/SensitiveData/SensitiveDataTest.php +++ b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/SensitiveData/SensitiveDataTest.php @@ -35,7 +35,7 @@ class SensitiveDataTest extends TestCase { use MockeryPHPUnitIntegration; - public function sensitiveDataToSerialise(): array + public static function sensitiveDataToSerialise(): array { return [ 'None' => [ @@ -103,11 +103,9 @@ public function sensitiveDataToSerialise(): array ]; } - /** - * @test - * @group sensitive-data - * @dataProvider sensitiveDataToSerialise - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\DataProvider('sensitiveDataToSerialise')] + #[\PHPUnit\Framework\Attributes\Group('sensitive-data')] public function it_serialises_and_deserialises( SensitiveData $sensitiveData, array $getterExpectations, diff --git a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/SensitiveData/Service/SensitiveDataServiceTest.php b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/SensitiveData/Service/SensitiveDataServiceTest.php index 96af9303a..4c5512458 100644 --- a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/SensitiveData/Service/SensitiveDataServiceTest.php +++ b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/SensitiveData/Service/SensitiveDataServiceTest.php @@ -30,10 +30,8 @@ final class SensitiveDataServiceTest extends TestCase { use MockeryPHPUnitIntegration; - /** - * @test - * @group sensitive-data - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('sensitive-data')] public function it_can_forget_sensitive_data_in_a_stream(): void { $identityId = new IdentityId('A'); diff --git a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Twig/BackwardsCompatibleExtensionTest.php b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Twig/BackwardsCompatibleExtensionTest.php index 02d080689..96a2ce8ca 100644 --- a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Twig/BackwardsCompatibleExtensionTest.php +++ b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Twig/BackwardsCompatibleExtensionTest.php @@ -25,14 +25,10 @@ use Twig\Extra\Intl\IntlExtension; use Twig\Loader\ArrayLoader; -/** - * @requires extension intl - */ +#[\PHPUnit\Framework\Attributes\RequiresPhpExtension('intl')] class BackwardsCompatibleExtensionTest extends TestCase { - /** - * @dataProvider templateProvider - */ + #[\PHPUnit\Framework\Attributes\DataProvider('templateProvider')] public function testLocalizedData(string $template, string $expected, string $locale): void { $dateString = "2024-12-05 13:12:10"; @@ -47,7 +43,7 @@ public function testLocalizedData(string $template, string $expected, string $lo $this->assertEquals($expected, $output); } - public function templateProvider(): array + public static function templateProvider(): array { return [ 'date en' => ["{{ date | localizeddate('full', 'none', locale) }}", 'Thursday, 5 December 2024', 'en_GB'], diff --git a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Value/InstitutionTest.php b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Value/InstitutionTest.php index 9a0595132..920656479 100644 --- a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Value/InstitutionTest.php +++ b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Value/InstitutionTest.php @@ -27,10 +27,8 @@ class InstitutionTest extends UnitTest { use MockeryPHPUnitIntegration; - /** - * @test - * @dataProvider nonStringOrNonEmptyStringProvider - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\DataProvider('nonStringOrNonEmptyStringProvider')] public function an_institution_cannot_be_created_with_anything_but_a_nonempty_string( string $invalidValue, ): void { @@ -39,9 +37,7 @@ public function an_institution_cannot_be_created_with_anything_but_a_nonempty_st new Institution($invalidValue); } - /** - * @test - */ + #[\PHPUnit\Framework\Attributes\Test] public function two_institutions_with_the_same_value_are_equal(): void { $institution = new Institution('a'); @@ -54,7 +50,7 @@ public function two_institutions_with_the_same_value_are_equal(): void $this->assertFalse($institution->equals($different)); } - public function nonStringOrNonEmptyStringProvider(): array + public static function nonStringOrNonEmptyStringProvider(): array { return [ 'empty string' => [''], diff --git a/src/Surfnet/StepupMiddleware/ManagementBundle/Tests/Controller/ConfigurationControllerTest.php b/src/Surfnet/StepupMiddleware/ManagementBundle/Tests/Controller/ConfigurationControllerTest.php index 80d28853a..572d8610d 100644 --- a/src/Surfnet/StepupMiddleware/ManagementBundle/Tests/Controller/ConfigurationControllerTest.php +++ b/src/Surfnet/StepupMiddleware/ManagementBundle/Tests/Controller/ConfigurationControllerTest.php @@ -69,10 +69,8 @@ public function tearDown(): void static::ensureKernelShutdown(); } - /** - * @test - * @group management - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('management')] public function requests_with_invalid_content_are_bad_requests(): void { $this->client->request( @@ -96,10 +94,8 @@ public function requests_with_invalid_content_are_bad_requests(): void ); } - /** - * @test - * @group management - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('management')] public function authorization_is_required(): void { $this->client->request( @@ -117,10 +113,8 @@ public function authorization_is_required(): void $this->assertEquals(Response::HTTP_UNAUTHORIZED, $this->client->getResponse()->getStatusCode()); } - /** - * @test - * @group management - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('management')] public function readonly_user_cannot_modify_configuration(): void { $this->client->request( @@ -140,12 +134,9 @@ public function readonly_user_cannot_modify_configuration(): void $this->assertEquals(Response::HTTP_FORBIDDEN, $this->client->getResponse()->getStatusCode()); } - /** - * @test - * @group management - * - * @dataProvider invalidHttpMethodProvider - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\DataProvider('invalidHttpMethodProvider')] + #[\PHPUnit\Framework\Attributes\Group('management')] public function only_post_requests_are_accepted(string $invalidHttpMethod): void { $this->client->request( @@ -163,10 +154,8 @@ public function only_post_requests_are_accepted(string $invalidHttpMethod): void $this->assertEquals(Response::HTTP_METHOD_NOT_ALLOWED, $this->client->getResponse()->getStatusCode()); } - /** - * @test - * @group management - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('management')] public function json_is_returned_from_the_configuration_api(): void { $this->client->request( @@ -194,7 +183,7 @@ public function json_is_returned_from_the_configuration_api(): void /** * Dataprovider for only_post_requests_are_accepted */ - public function invalidHttpMethodProvider(): array + public static function invalidHttpMethodProvider(): array { return [ 'GET' => ['GET'], diff --git a/src/Surfnet/StepupMiddleware/ManagementBundle/Tests/Controller/InstitutionConfigurationControllerTest.php b/src/Surfnet/StepupMiddleware/ManagementBundle/Tests/Controller/InstitutionConfigurationControllerTest.php index 93647b23a..228e231b4 100644 --- a/src/Surfnet/StepupMiddleware/ManagementBundle/Tests/Controller/InstitutionConfigurationControllerTest.php +++ b/src/Surfnet/StepupMiddleware/ManagementBundle/Tests/Controller/InstitutionConfigurationControllerTest.php @@ -69,10 +69,8 @@ public function tearDown(): void static::ensureKernelShutdown(); } - /** - * @test - * @group management - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('management')] public function authorization_is_required_for_reconfiguring_institution_configuration_options(): void { $this->client->request( @@ -90,10 +88,8 @@ public function authorization_is_required_for_reconfiguring_institution_configur $this->assertEquals(Response::HTTP_UNAUTHORIZED, $this->client->getResponse()->getStatusCode()); } - /** - * @test - * @group management - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('management')] public function readonly_user_cannot_reconfigure_institution_configuration_options(): void { $this->client->request( @@ -113,10 +109,8 @@ public function readonly_user_cannot_reconfigure_institution_configuration_optio $this->assertEquals(Response::HTTP_FORBIDDEN, $this->client->getResponse()->getStatusCode()); } - /** - * @test - * @group management - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('management')] public function authorization_is_required_for_querying_institution_configuration_options(): void { $this->client->request( @@ -134,10 +128,8 @@ public function authorization_is_required_for_querying_institution_configuration $this->assertEquals(Response::HTTP_UNAUTHORIZED, $this->client->getResponse()->getStatusCode()); } - /** - * @test - * @group management - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('management')] public function requests_with_invalid_content_are_bad_requests(): void { $content = json_encode(['non-existing.organisation.test' => []]); @@ -161,12 +153,9 @@ public function requests_with_invalid_content_are_bad_requests(): void $this->assertEquals(Response::HTTP_BAD_REQUEST, $this->client->getResponse()->getStatusCode()); } - /** - * @test - * @group management - * - * @dataProvider invalidHttpMethodProvider - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\DataProvider('invalidHttpMethodProvider')] + #[\PHPUnit\Framework\Attributes\Group('management')] public function only_post_and_get_requests_are_accepted(string $invalidHttpMethod): void { $this->client->request( @@ -184,10 +173,8 @@ public function only_post_and_get_requests_are_accepted(string $invalidHttpMetho $this->assertEquals(Response::HTTP_METHOD_NOT_ALLOWED, $this->client->getResponse()->getStatusCode()); } - /** - * @test - * @group management - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('management')] public function a_get_request_without_content_is_valid(): void { $this->client->request( @@ -207,10 +194,8 @@ public function a_get_request_without_content_is_valid(): void $this->assertEquals(Response::HTTP_OK, $this->client->getResponse()->getStatusCode()); } - /** - * @test - * @group management - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('management')] public function json_is_returned_from_the_institution_configuration_api(): void { $this->client->request( @@ -238,7 +223,7 @@ public function json_is_returned_from_the_institution_configuration_api(): void /** * Dataprovider for only_post_and_get_requests_are_accepted */ - public function invalidHttpMethodProvider(): array + public static function invalidHttpMethodProvider(): array { return [ 'DELETE' => ['DELETE'], diff --git a/src/Surfnet/StepupMiddleware/ManagementBundle/Tests/Validator/ConfigurationValidationTest.php b/src/Surfnet/StepupMiddleware/ManagementBundle/Tests/Validator/ConfigurationValidationTest.php index 9d1d47011..98b97401f 100644 --- a/src/Surfnet/StepupMiddleware/ManagementBundle/Tests/Validator/ConfigurationValidationTest.php +++ b/src/Surfnet/StepupMiddleware/ManagementBundle/Tests/Validator/ConfigurationValidationTest.php @@ -39,7 +39,7 @@ final class ConfigurationValidationTest extends TestCase /** * @return mixed[][] */ - public function invalidConfigurations(): array + public static function invalidConfigurations(): array { $dataSet = []; $fixtureDir = __DIR__ . '/Fixtures/invalid_configuration/*.php'; @@ -58,11 +58,9 @@ public function invalidConfigurations(): array return $dataSet; } - /** - * @test - * @group command-handler - * @dataProvider invalidConfigurations - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\DataProvider('invalidConfigurations')] + #[\PHPUnit\Framework\Attributes\Group('command-handler')] public function it_rejects_invalid_configuration(array $configuration, string $expectedPropertyPath): void { $builder = m::mock(ConstraintViolationBuilderInterface::class); diff --git a/src/Surfnet/StepupMiddleware/ManagementBundle/Tests/Validator/ReconfigureInstitutionRequestValidatorTest.php b/src/Surfnet/StepupMiddleware/ManagementBundle/Tests/Validator/ReconfigureInstitutionRequestValidatorTest.php index 651497d75..60d86046a 100644 --- a/src/Surfnet/StepupMiddleware/ManagementBundle/Tests/Validator/ReconfigureInstitutionRequestValidatorTest.php +++ b/src/Surfnet/StepupMiddleware/ManagementBundle/Tests/Validator/ReconfigureInstitutionRequestValidatorTest.php @@ -43,7 +43,7 @@ class ReconfigureInstitutionRequestValidatorTest extends TestCase /** * @return mixed[][] */ - public function invalidReconfigureInstitutionRequests(): array + public static function invalidReconfigureInstitutionRequests(): array { $dataSet = []; $fixtureDir = __DIR__ . '/Fixtures/invalid_reconfigure_institution_request/*.php'; @@ -63,11 +63,9 @@ public function invalidReconfigureInstitutionRequests(): array return $dataSet; } - /** - * @test - * @group validator - * @dataProvider invalidReconfigureInstitutionRequests - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\DataProvider('invalidReconfigureInstitutionRequests')] + #[\PHPUnit\Framework\Attributes\Group('validator')] public function it_rejects_invalid_configuration( array $reconfigureRequest, string $expectedPropertyPath, @@ -125,10 +123,8 @@ public function it_rejects_invalid_configuration( ); } - /** - * @test - * @group validator - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('validator')] public function reconfigure_institution_request_cannot_contain_institutions_that_do_not_exist(): void { $existingInstitutions = []; @@ -167,10 +163,8 @@ public function reconfigure_institution_request_cannot_contain_institutions_that $this->assertStringContainsString($expectedErrorMessage, $errorMessage); } - /** - * @test - * @group validator - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('validator')] public function validation_for_existing_institutions_is_done_case_insensitively(): void { $existingInstitutions = [ConfiguredInstitution::createFrom(new Institution('surfnet.nl'))]; @@ -216,10 +210,8 @@ public function validation_for_existing_institutions_is_done_case_insensitively( $this->assertInstanceOf(ConfiguredInstitution::class, $existingInstitutions[0]); } - /** - * @test - * @group validator - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('validator')] public function valid_reconfigure_institution_requests_do_not_cause_any_violations(): void { $institution = 'surfnet.nl'; diff --git a/src/Surfnet/StepupMiddleware/MiddlewareBundle/Tests/EventSourcing/EventCollectionTest.php b/src/Surfnet/StepupMiddleware/MiddlewareBundle/Tests/EventSourcing/EventCollectionTest.php index 2f20311e5..733ab965c 100644 --- a/src/Surfnet/StepupMiddleware/MiddlewareBundle/Tests/EventSourcing/EventCollectionTest.php +++ b/src/Surfnet/StepupMiddleware/MiddlewareBundle/Tests/EventSourcing/EventCollectionTest.php @@ -30,12 +30,9 @@ class EventCollectionTest extends TestCase { use MockeryPHPUnitIntegration; - /** - * @test - * @group event-replay - * - * @dataProvider emptyOrNonStringProvider - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\DataProvider('emptyOrNonStringProvider')] + #[\PHPUnit\Framework\Attributes\Group('event-replay')] public function an_event_collection_must_be_created_from_an_array_of_non_empty_strings( bool|int|string|stdClass|array|null $emptyOrNonString, ): void { @@ -45,10 +42,8 @@ public function an_event_collection_must_be_created_from_an_array_of_non_empty_s new EventCollection([$emptyOrNonString]); // @phpstan-ignore-line argument.type: Warning about a faulty constructor argument is exactly what we are testing here } - /** - * @test - * @group event-replay - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('event-replay')] public function an_event_collection_must_contain_event_names_that_are_existing_class_names(): void { $this->expectException(InvalidArgumentException::class); @@ -59,10 +54,8 @@ public function an_event_collection_must_contain_event_names_that_are_existing_c new EventCollection([$nonExistantClass]); } - /** - * @test - * @group event-replay - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('event-replay')] public function an_event_collection_contains_given_event_names(): void { $eventCollection = new EventCollection([NewConfigurationCreatedEvent::class]); @@ -73,10 +66,8 @@ public function an_event_collection_contains_given_event_names(): void ); } - /** - * @test - * @group event-replay - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('event-replay')] public function event_names_can_be_retrieved_from_an_event_collection(): void { $eventNames = [NewConfigurationCreatedEvent::class]; @@ -91,10 +82,8 @@ public function event_names_can_be_retrieved_from_an_event_collection(): void ); } - /** - * @test - * @group event-replay - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('event-replay')] public function an_event_collection_does_not_contain_given_event_names(): void { $eventCollection = new EventCollection([SecondFactorVettedEvent::class]); @@ -105,10 +94,8 @@ public function an_event_collection_does_not_contain_given_event_names(): void ); } - /** - * @test - * @group event-replay - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('event-replay')] public function a_subset_of_events_can_be_selected_from_an_event_collection(): void { $eventCollection = new EventCollection([NewConfigurationCreatedEvent::class, SecondFactorVettedEvent::class]); @@ -121,10 +108,8 @@ public function a_subset_of_events_can_be_selected_from_an_event_collection(): v ); } - /** - * @test - * @group event-replay - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('event-replay')] public function a_subset_containing_events_not_present_in_the_event_collection_cannot_be_selected(): void { $this->expectException(InvalidArgumentException::class); @@ -134,10 +119,8 @@ public function a_subset_containing_events_not_present_in_the_event_collection_c $eventCollection->select([SecondFactorVettedEvent::class]); } - /** - * @test - * @group event-replay - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('event-replay')] public function events_in_an_event_collection_can_be_formatted_as_event_stream_compatible_event_types(): void { $eventCollection = new EventCollection([NewConfigurationCreatedEvent::class, SecondFactorVettedEvent::class]); @@ -158,7 +141,7 @@ public function events_in_an_event_collection_can_be_formatted_as_event_stream_c /** * @return array */ - public function emptyOrNonStringProvider(): array + public static function emptyOrNonStringProvider(): array { return [ 'null' => [null], diff --git a/src/Surfnet/StepupMiddleware/MiddlewareBundle/Tests/EventSourcing/ProjectorCollectionTest.php b/src/Surfnet/StepupMiddleware/MiddlewareBundle/Tests/EventSourcing/ProjectorCollectionTest.php index 603d2b44f..afa178f7a 100644 --- a/src/Surfnet/StepupMiddleware/MiddlewareBundle/Tests/EventSourcing/ProjectorCollectionTest.php +++ b/src/Surfnet/StepupMiddleware/MiddlewareBundle/Tests/EventSourcing/ProjectorCollectionTest.php @@ -30,10 +30,8 @@ class ProjectorCollectionTest extends TestCase { use m\Adapter\Phpunit\MockeryPHPUnitIntegration; - /** - * @test - * @group event-replay - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('event-replay')] public function projectors_can_be_added_to_a_projector_collection_during_runtime(): void { $sraaProjector = new SraaProjector(m::mock(SraaRepository::class)); @@ -53,10 +51,8 @@ public function projectors_can_be_added_to_a_projector_collection_during_runtime ); } - /** - * @test - * @group event-replay - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('event-replay')] public function projector_names_can_be_retrieved_from_a_projector_collection(): void { $sraaProjector = new SraaProjector(m::mock(SraaRepository::class)); @@ -76,10 +72,8 @@ public function projector_names_can_be_retrieved_from_a_projector_collection(): ); } - /** - * @test - * @group event-replay - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('event-replay')] public function a_subset_of_projectors_can_be_selected_from_a_projector_collection(): void { $sraaProjector = new SraaProjector(m::mock(SraaRepository::class)); @@ -101,10 +95,8 @@ public function a_subset_of_projectors_can_be_selected_from_a_projector_collecti ); } - /** - * @test - * @group event-replay - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('event-replay')] public function a_subset_containing_projectors_not_present_in_a_projector_collection_cannot_be_selected(): void { $this->expectException(InvalidArgumentException::class); diff --git a/src/Surfnet/StepupMiddleware/MiddlewareBundle/Tests/Migrations/InstitutionConfiguration/MappedInstitutionConfigurationTest.php b/src/Surfnet/StepupMiddleware/MiddlewareBundle/Tests/Migrations/InstitutionConfiguration/MappedInstitutionConfigurationTest.php index fa9802a14..e68e2deb4 100644 --- a/src/Surfnet/StepupMiddleware/MiddlewareBundle/Tests/Migrations/InstitutionConfiguration/MappedInstitutionConfigurationTest.php +++ b/src/Surfnet/StepupMiddleware/MiddlewareBundle/Tests/Migrations/InstitutionConfiguration/MappedInstitutionConfigurationTest.php @@ -41,10 +41,8 @@ class MappedInstitutionConfigurationTest extends UnitTest { use MockeryPHPUnitIntegration; - /** - * @test - * @group middleware-migration - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('middleware-migration')] public function infers_the_correct_remove_institution_configuration_command(): void { $institution = new Institution('Babelfish Inc.'); @@ -71,10 +69,8 @@ public function infers_the_correct_remove_institution_configuration_command(): v $this->assertEquals($institution->getInstitution(), $command->institution); } - /** - * @test - * @group middleware-migration - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('middleware-migration')] public function infers_the_correct_create_institution_configuration_command(): void { $institution = new Institution('Babelfish Inc.'); @@ -101,10 +97,8 @@ public function infers_the_correct_create_institution_configuration_command(): v $this->assertEquals($institution->getInstitution(), $command->institution); } - /** - * @test - * @group middleware-migration - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('middleware-migration')] public function infers_the_correct_reconfigure_institution_configuration_command(): void { $institution = new Institution('Babelfish Inc.'); @@ -135,10 +129,8 @@ public function infers_the_correct_reconfigure_institution_configuration_command $this->assertEquals($selfVetOption->isEnabled(), $command->selfVetOption); } - /** - * @test - * @group middleware-migration - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('middleware-migration')] public function no_ra_locations_means_no_add_ra_location_command(): void { $institution = new Institution('Babelfish Inc.'); @@ -164,10 +156,8 @@ public function no_ra_locations_means_no_add_ra_location_command(): void $this->assertEquals(0, count($commands)); } - /** - * @test - * @group middleware-migration - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('middleware-migration')] public function a_single_ra_location_means_a_single_correct_add_ra_location_command(): void { $institution = new Institution('Babelfish Inc.'); @@ -206,10 +196,8 @@ public function a_single_ra_location_means_a_single_correct_add_ra_location_comm $this->assertCommandMatches($command, $institution, $raLocation); } - /** - * @test - * @group middleware-migration - */ + #[\PHPUnit\Framework\Attributes\Test] + #[\PHPUnit\Framework\Attributes\Group('middleware-migration')] public function multiple_ra_locations_mean_multiple_correct_add_ra_location_commands(): void { $institution = new Institution('Babelfish Inc.'); diff --git a/src/Surfnet/StepupMiddleware/MiddlewareBundle/Tests/Service/SecondFactorDisplayNameResolverServiceTest.php b/src/Surfnet/StepupMiddleware/MiddlewareBundle/Tests/Service/SecondFactorDisplayNameResolverServiceTest.php index b8429fac7..d17e0ba41 100644 --- a/src/Surfnet/StepupMiddleware/MiddlewareBundle/Tests/Service/SecondFactorDisplayNameResolverServiceTest.php +++ b/src/Surfnet/StepupMiddleware/MiddlewareBundle/Tests/Service/SecondFactorDisplayNameResolverServiceTest.php @@ -27,9 +27,7 @@ class SecondFactorDisplayNameResolverServiceTest extends TestCase { use MockeryPHPUnitIntegration; - /** - * @test - */ + #[\PHPUnit\Framework\Attributes\Test] public function verify_resolve_displayname(): void { $factors = ['azuremfa' => 'Azure MFA']; @@ -39,9 +37,7 @@ public function verify_resolve_displayname(): void self::assertEquals('Azure MFA', $resolver->resolveByType($type)); } - /** - * @test - */ + #[\PHPUnit\Framework\Attributes\Test] public function verify_resolve_displayname_fallback(): void { $factors = ['azuremfa' => 'Azure MFA']; diff --git a/symfony.lock b/symfony.lock index 912463898..c8cc8ed83 100644 --- a/symfony.lock +++ b/symfony.lock @@ -296,15 +296,9 @@ "sebastian/object-reflector": { "version": "1.1.1" }, - "sebastian/phpcpd": { - "version": "2.0.1" - }, "sebastian/recursion-context": { "version": "3.0.0" }, - "sebastian/resource-operations": { - "version": "2.0.1" - }, "sebastian/type": { "version": "1.1.3" }, diff --git a/tests/database/AuthorizationRepositoryMatrixTest.php b/tests/database/AuthorizationRepositoryMatrixTest.php index 8df576fcf..a19632f20 100644 --- a/tests/database/AuthorizationRepositoryMatrixTest.php +++ b/tests/database/AuthorizationRepositoryMatrixTest.php @@ -42,7 +42,7 @@ class AuthorizationRepositoryMatrixTest extends KernelTestCase */ private ?object $authzRepository; - public function authorizationMatrix(): array + public static function authorizationMatrix(): array { $ra = RegistrationAuthorityRole::ra(); $raa = RegistrationAuthorityRole::raa(); @@ -60,7 +60,7 @@ public function authorizationMatrix(): array ]; } - public function selectRaaMatrix(): array + public static function selectRaaMatrix(): array { $aRaa = new IdentityId('cccfece4-e5e5-40b7-9aa4-a800d7cd3633'); // Raa @ institution A $ghRaa = new IdentityId('02b70719-243f-4c7d-8649-48952a816ddf'); // RAA @ institution H @@ -87,8 +87,8 @@ protected function setUp(): void /** * A test matrix to verify the correct institutions are selected for a given identity for a * specific institution role. - * @dataProvider authorizationMatrix */ + #[\PHPUnit\Framework\Attributes\DataProvider('authorizationMatrix')] public function test_get_institutions_for_role_matrix( RegistrationAuthorityRole $requiredRole, IdentityId $identity, @@ -108,9 +108,7 @@ public function test_get_institutions_for_role_matrix( ); } - /** - * @dataProvider selectRaaMatrix - */ + #[\PHPUnit\Framework\Attributes\DataProvider('selectRaaMatrix')] public function test_select_raa_authorization(IdentityId $identityId, array $expected): void { $institutions = $this->authzRepository->getInstitutionsForSelectRaaRole($identityId); From 0cd1223215303676de6f9495ea0dcc0d451bb9aa Mon Sep 17 00:00:00 2001 From: Johan Kromhout Date: Mon, 24 Nov 2025 16:04:51 +0100 Subject: [PATCH 09/32] Also apply the phpcs rules to tests, mainly for import management reasons. Only except camelcase method names and line lenghts. --- ...entSerializationAndDeserializationTest.php | 9 +- .../InstitutionConfigurationTest.php | 34 ++-- .../Value/AllowedSecondFactorListTest.php | 51 +++--- .../Value/ContactInformationTest.php | 6 +- .../InstitutionAuthorizationOptionTest.php | 46 ++--- .../Value/InstitutionConfigurationIdTest.php | 32 ++-- .../Value/InstitutionRoleTest.php | 17 +- .../Value/InstitutionSetTest.php | 37 ++-- .../Configuration/Value/InstitutionTest.php | 13 +- .../Configuration/Value/LocationTest.php | 6 +- .../Configuration/Value/RaLocationIdTest.php | 23 +-- .../Value/RaLocationListTest.php | 32 ++-- .../Value/RaLocationNameTest.php | 19 +- .../ShowRaaContactInformationOptionTest.php | 24 +-- .../Value/UseRaLocationsOptionTest.php | 26 +-- .../Stepup/Tests/DateTime/DateTimeTest.php | 34 ++-- .../Stepup/Tests/Helper/JsonHelperTest.php | 13 +- .../Tests/Helper/UserDataFilterTest.php | 3 +- .../Collection/InstitutionCollectionTest.php | 50 +++--- .../Entity/ConfigurableSettingsTest.php | 13 +- .../Entity/SecondFactorCollectionTest.php | 6 +- ...entSerializationAndDeserializationTest.php | 19 +- .../Identity/Event/ForgettableEventsTest.php | 8 +- ...entSerializationAndDeserializationTest.php | 11 +- .../Tests/Identity/Value/CommonNameTest.php | 13 +- .../Identity/Value/ContactInformationTest.php | 6 +- .../Identity/Value/DocumentNumberTest.php | 13 +- .../Stepup/Tests/Identity/Value/EmailTest.php | 19 +- .../Value/EmailVerificationWindowTest.php | 21 ++- .../Tests/Identity/Value/GssfIdTest.php | 14 +- .../Tests/Identity/Value/InstitutionTest.php | 16 +- .../Tests/Identity/Value/LocationTest.php | 6 +- .../Tests/Identity/Value/PhoneNumberTest.php | 14 +- .../RecoveryTokenIdentifierFactoryTest.php | 3 +- .../Value/RegistrationAuthorityRoleTest.php | 6 +- .../Tests/Identity/Value/SafeStoreTest.php | 5 +- .../SecondFactorIdentifierFactoryTest.php | 8 +- .../Identity/Value/StepupProviderTest.php | 14 +- .../Tests/Identity/Value/TimeFrameTest.php | 13 +- .../Identity/Value/YubikeyPublicIdTest.php | 19 +- ...utionAuthorizationRepositoryFilterTest.php | 6 +- .../AuthorizationContextServiceTest.php | 14 +- .../CommandAuthorizationServiceTest.php | 28 +-- .../Entity/ConfiguredInstitutionTest.php | 8 +- .../Configuration/Entity/RaLocationTest.php | 8 +- .../Service/AllowedSecondFactorMapTest.php | 12 +- .../InstitutionAuthorizationOptionMapTest.php | 10 +- .../Doctrine/Type/AuthorityRoleTypeTest.php | 22 +-- .../Doctrine/Type/CommonNameTypeTest.php | 22 +-- ...onfigurationContactInformationTypeTest.php | 30 ++-- .../Type/ConfigurationInstitutionTypeTest.php | 30 ++-- .../Type/ConfigurationLocationTypeTest.php | 30 ++-- .../Type/ContactInformationTypeTest.php | 22 +-- .../Tests/Doctrine/Type/DateTimeTypeTest.php | 22 +-- .../Doctrine/Type/DocumentNumberTypeTest.php | 31 ++-- .../Tests/Doctrine/Type/EmailTypeTest.php | 22 +-- .../Doctrine/Type/InstitutionRoleTypeTest.php | 22 +-- .../Doctrine/Type/InstitutionTypeTest.php | 22 +-- .../Tests/Doctrine/Type/LocaleTypeTest.php | 22 +-- .../Tests/Doctrine/Type/LocationTypeTest.php | 22 +-- .../Tests/Doctrine/Type/NameIdTypeTest.php | 26 +-- .../NumberOfTokensPerIdentityTypeTest.php | 26 +-- .../Doctrine/Type/RaLocationNameTypeTest.php | 30 ++-- .../Type/RecoveryTokenStatusTypeTest.php | 27 +-- .../Type/SecondFactorStatusTypeTest.php | 27 +-- .../Doctrine/Type/SelfVetOptionTypeTest.php | 28 +-- ...howRaaContactInformationOptionTypeTest.php | 26 +-- .../Type/UseRaLocationsOptionTypeTest.php | 26 +-- .../Type/VerifyEmailOptionTypeTest.php | 26 +-- .../ConfiguredInstitutionControllerTest.php | 26 +-- .../Tests/Endpoint/SraaControllerTest.php | 26 +-- .../Projector/AuditLogProjectorTest.php | 13 +- .../AuthorizedInstitutionCollectionTest.php | 9 +- .../Request/CommandValueResolverTest.php | 32 ++-- .../Request/InstitutionValueResolverTest.php | 10 +- .../ApiBundle/Tests/Request/commands.php | 4 +- .../Tests/Service/DeprovisionServiceTest.php | 5 +- .../Tests/Command/AbstractCommandTest.php | 6 +- .../ConfigurationCommandHandlerTest.php | 11 +- ...itutionConfigurationCommandHandlerTest.php | 93 +++++----- .../InstitutionConfigurationProcessorTest.php | 53 +++--- .../Tests/DateTimeHelperTest.php | 17 +- .../EventHandling/BufferedEventBusTest.php | 18 +- .../IdentityCommandHandlerMoveTokenTest.php | 9 +- ...tyCommandHandlerSelfAssertedTokensTest.php | 53 +++--- .../IdentityCommandHandlerTest.php | 165 +++++++++--------- ...mmandHandlerUniqueTypeRegistrationTest.php | 18 +- ...egistrationAuthorityCommandHandlerTest.php | 99 +++++------ .../RightToBeForgottenCommandHandlerTest.php | 40 +++-- .../SecondFactorRevocationTest.php | 37 ++-- .../WhitelistCommandHandlerTest.php | 38 ++-- .../Tests/Mockery/HasInstitutionMatcher.php | 1 - .../Mockery/HasInstitutionMatcherTest.php | 45 ++--- .../Tests/Pipeline/AuthorizingStageTest.php | 21 ++- .../Tests/Pipeline/DispatchStageTest.php | 7 +- .../Pipeline/EventDispatchingStageTest.php | 10 +- .../Tests/Pipeline/StagedPipelineTest.php | 14 +- .../Tests/Pipeline/ValidationStageTest.php | 10 +- .../RecoveryTokenEmailProcessorTest.php | 17 +- .../SensitiveDataMessageStreamTest.php | 43 ++--- .../Tests/SensitiveData/SensitiveDataTest.php | 11 +- .../Service/SensitiveDataServiceTest.php | 8 +- .../Twig/BackwardsCompatibleExtensionTest.php | 10 +- .../Tests/Value/InstitutionTest.php | 8 +- .../InstitutionConfigurationProjectorTest.php | 4 +- .../ConfigurationControllerTest.php | 27 +-- ...InstitutionConfigurationControllerTest.php | 34 ++-- .../Validator/ConfigurationValidationTest.php | 11 +- ...nfigureInstitutionRequestValidatorTest.php | 21 ++- .../EventSourcing/EventCollectionTest.php | 39 +++-- .../EventSourcing/ProjectorCollectionTest.php | 20 ++- ...ndFactorDisplayNameResolverServiceTest.php | 5 +- 112 files changed, 1385 insertions(+), 1132 deletions(-) diff --git a/src/Surfnet/Stepup/Tests/Configuration/Event/EventSerializationAndDeserializationTest.php b/src/Surfnet/Stepup/Tests/Configuration/Event/EventSerializationAndDeserializationTest.php index 64aef8800..d885ba635 100644 --- a/src/Surfnet/Stepup/Tests/Configuration/Event/EventSerializationAndDeserializationTest.php +++ b/src/Surfnet/Stepup/Tests/Configuration/Event/EventSerializationAndDeserializationTest.php @@ -20,6 +20,9 @@ use Broadway\Serializer\Serializable as SerializableInterface; use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\TestCase; use Ramsey\Uuid\Uuid; use Surfnet\Stepup\Configuration\Configuration; @@ -64,9 +67,9 @@ class EventSerializationAndDeserializationTest extends TestCase { use MockeryPHPUnitIntegration; - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\DataProvider('institutionConfigurationEventsProvider')] - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Test] + #[DataProvider('institutionConfigurationEventsProvider')] + #[Group('domain')] public function an_event_should_be_the_same_after_serialization_and_deserialization( SerializableInterface $unserializedEvent, ): void { diff --git a/src/Surfnet/Stepup/Tests/Configuration/InstitutionConfigurationTest.php b/src/Surfnet/Stepup/Tests/Configuration/InstitutionConfigurationTest.php index 002103593..b07930706 100644 --- a/src/Surfnet/Stepup/Tests/Configuration/InstitutionConfigurationTest.php +++ b/src/Surfnet/Stepup/Tests/Configuration/InstitutionConfigurationTest.php @@ -20,6 +20,8 @@ use Broadway\EventSourcing\Testing\AggregateRootScenarioTestCase; use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration; +use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Test; use Surfnet\Stepup\Configuration\Event\AllowedSecondFactorListUpdatedEvent; use Surfnet\Stepup\Configuration\Event\InstitutionConfigurationRemovedEvent; use Surfnet\Stepup\Configuration\Event\NewInstitutionConfigurationCreatedEvent; @@ -47,8 +49,8 @@ class InstitutionConfigurationTest extends AggregateRootScenarioTestCase { use MockeryPHPUnitIntegration; - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('aggregate')] + #[Test] + #[Group('aggregate')] public function use_ra_locations_option_is_set_to_false_by_default_upon_creation_of_an_institution_configuration(): void { $institution = new Institution('Institution'); @@ -66,7 +68,7 @@ public function use_ra_locations_option_is_set_to_false_by_default_upon_creation $selectRaaOption = InstitutionAuthorizationOption::getDefault(InstitutionRole::selectRaa()); $this->scenario - ->when(fn(): \Surfnet\Stepup\Configuration\InstitutionConfiguration => InstitutionConfiguration::create( + ->when(fn(): InstitutionConfiguration => InstitutionConfiguration::create( $institutionConfigurationId, $institution, ))->then([ @@ -105,8 +107,8 @@ public function use_ra_locations_option_is_set_to_false_by_default_upon_creation ]); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('aggregate')] + #[Test] + #[Group('aggregate')] public function show_raa_contact_information_option_is_set_to_true_by_default_upon_creation_of_an_institution_configuration(): void { $institution = new Institution('Institution'); @@ -124,7 +126,7 @@ public function show_raa_contact_information_option_is_set_to_true_by_default_up $selectRaaOption = InstitutionAuthorizationOption::getDefault(InstitutionRole::selectRaa()); $this->scenario - ->when(fn(): \Surfnet\Stepup\Configuration\InstitutionConfiguration => InstitutionConfiguration::create( + ->when(fn(): InstitutionConfiguration => InstitutionConfiguration::create( $institutionConfigurationId, $institution, ))->then([ @@ -163,8 +165,8 @@ public function show_raa_contact_information_option_is_set_to_true_by_default_up ]); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('aggregate')] + #[Test] + #[Group('aggregate')] public function use_ra_locations_option_is_not_changed_if_its_given_value_is_not_different_from_the_current_value(): void { $institution = new Institution('Institution'); @@ -203,8 +205,8 @@ function (InstitutionConfiguration $institutionConfiguration) use ($theSameUseRa ->then([]); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('aggregate')] + #[Test] + #[Group('aggregate')] public function show_raa_contact_information_option_is_not_changed_if_its_given_value_is_not_different_from_the_current_value(): void { $institution = new Institution('Institution'); @@ -246,8 +248,8 @@ function (InstitutionConfiguration $institutionConfiguration) use ($sameShowRaaC ->then([]); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('aggregate')] + #[Test] + #[Group('aggregate')] public function use_ra_locations_option_is_changed_if_its_given_value_is_different_from_the_current_value(): void { $institution = new Institution('Institution'); @@ -293,8 +295,8 @@ function (InstitutionConfiguration $institutionConfiguration) use ($expectedUseR ]); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('aggregate')] + #[Test] + #[Group('aggregate')] public function show_raa_contact_information_option_is_changed_if_its_given_value_is_different_from_the_current_value(): void { $institution = new Institution('Institution'); @@ -343,8 +345,8 @@ function (InstitutionConfiguration $institutionConfiguration) use ( ]); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('aggregate')] + #[Test] + #[Group('aggregate')] public function test_the_setting_of_fga_options_on_an_institution_configuration(): void { $institution = new Institution('Institution'); diff --git a/src/Surfnet/Stepup/Tests/Configuration/Value/AllowedSecondFactorListTest.php b/src/Surfnet/Stepup/Tests/Configuration/Value/AllowedSecondFactorListTest.php index 0083c4653..764c2416d 100644 --- a/src/Surfnet/Stepup/Tests/Configuration/Value/AllowedSecondFactorListTest.php +++ b/src/Surfnet/Stepup/Tests/Configuration/Value/AllowedSecondFactorListTest.php @@ -19,7 +19,10 @@ namespace Surfnet\Stepup\Tests\Configuration\Value; use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration; -use PHPUnit\Framework\TestCase as TestCase; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Test; +use PHPUnit\Framework\TestCase; use Surfnet\Stepup\Configuration\Value\AllowedSecondFactorList; use Surfnet\StepupBundle\Service\SecondFactorTypeService; use Surfnet\StepupBundle\Value\SecondFactorType; @@ -28,8 +31,8 @@ class AllowedSecondFactorListTest extends TestCase { use MockeryPHPUnitIntegration; - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Test] + #[Group('domain')] public function an_allowed_second_factor_list_deduplicates_its_second_factors_upon_creation(): void { $allowedSecondFactorList = AllowedSecondFactorList::ofTypes([ @@ -48,10 +51,10 @@ public function an_allowed_second_factor_list_deduplicates_its_second_factors_up * * @param $availableSecondFactorType */ - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\DataProvider('availableSecondFactorTypeProvider')] - #[\PHPUnit\Framework\Attributes\Group('domain')] - public function a_blank_allowed_second_factor_list_allows_all_second_factors(\Surfnet\StepupBundle\Value\SecondFactorType $availableSecondFactorType): void + #[Test] + #[DataProvider('availableSecondFactorTypeProvider')] + #[Group('domain')] + public function a_blank_allowed_second_factor_list_allows_all_second_factors(SecondFactorType $availableSecondFactorType): void { $allowedSecondFactorList = AllowedSecondFactorList::blank(); @@ -60,8 +63,8 @@ public function a_blank_allowed_second_factor_list_allows_all_second_factors(\Su $this->assertTrue($isSecondFactorAllowed); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Test] + #[Group('domain')] public function an_allowed_second_factor_list_contains_a_given_second_factor(): void { $allowedSecondFactorList = AllowedSecondFactorList::ofTypes([new SecondFactorType('sms')]); @@ -75,8 +78,8 @@ public function an_allowed_second_factor_list_contains_a_given_second_factor(): ); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Test] + #[Group('domain')] public function an_allowed_second_factor_list_does_not_contain_a_given_second_factor(): void { $allowedSecondFactorList = AllowedSecondFactorList::ofTypes([new SecondFactorType('sms')]); @@ -90,8 +93,8 @@ public function an_allowed_second_factor_list_does_not_contain_a_given_second_fa ); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Test] + #[Group('domain')] public function an_allowed_second_factor_list_contains_the_given_second_factors(): void { $secondFactorTypes = [ @@ -102,7 +105,7 @@ public function an_allowed_second_factor_list_contains_the_given_second_factors( $allowedSecondFactorList = AllowedSecondFactorList::ofTypes($secondFactorTypes); $builtList = []; - foreach ($allowedSecondFactorList as $item){ + foreach ($allowedSecondFactorList as $item) { $builtList[] = $item; } @@ -111,8 +114,8 @@ public function an_allowed_second_factor_list_contains_the_given_second_factors( } } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Test] + #[Group('domain')] public function a_second_factor_on_the_allowed_second_factor_list_is_allowed(): void { $allowedSecondFactorList = AllowedSecondFactorList::ofTypes([new SecondFactorType('sms')]); @@ -126,8 +129,8 @@ public function a_second_factor_on_the_allowed_second_factor_list_is_allowed(): ); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Test] + #[Group('domain')] public function a_second_factor_not_on_the_allowed_second_factor_list_is_not_allowed(): void { $allowedSecondFactorList = AllowedSecondFactorList::ofTypes([new SecondFactorType('sms')]); @@ -145,9 +148,9 @@ public function a_second_factor_not_on_the_allowed_second_factor_list_is_not_all * @param SecondFactorType[] $firstList * @param SecondFactorType[] $secondList */ - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\DataProvider('differentAllowedSecondFactorListsProvider')] - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Test] + #[DataProvider('differentAllowedSecondFactorListsProvider')] + #[Group('domain')] public function allowed_second_factor_lists_with_different_elements_are_not_considered_equal( array $firstList, array $secondList, @@ -162,9 +165,9 @@ public function allowed_second_factor_lists_with_different_elements_are_not_cons * @param SecondFactorType[] $firstList * @param SecondFactorType[] $secondList */ - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\DataProvider('sameAllowedSecondFactorListsProvider')] - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Test] + #[DataProvider('sameAllowedSecondFactorListsProvider')] + #[Group('domain')] public function allowed_second_factor_lists_with_the_same_elements_are_considered_equal( array $firstList, array $secondList, diff --git a/src/Surfnet/Stepup/Tests/Configuration/Value/ContactInformationTest.php b/src/Surfnet/Stepup/Tests/Configuration/Value/ContactInformationTest.php index b5ed06503..fc1dd27c6 100644 --- a/src/Surfnet/Stepup/Tests/Configuration/Value/ContactInformationTest.php +++ b/src/Surfnet/Stepup/Tests/Configuration/Value/ContactInformationTest.php @@ -21,6 +21,8 @@ namespace Surfnet\Stepup\Tests\Configuration\Value; use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration; +use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\TestCase as UnitTest; use Surfnet\Stepup\Configuration\Value\ContactInformation; @@ -28,8 +30,8 @@ class ContactInformationTest extends UnitTest { use MockeryPHPUnitIntegration; - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Test] + #[Group('domain')] public function two_instances_with_the_same_value_are_equal(): void { $contactInformation = new ContactInformation('a'); diff --git a/src/Surfnet/Stepup/Tests/Configuration/Value/InstitutionAuthorizationOptionTest.php b/src/Surfnet/Stepup/Tests/Configuration/Value/InstitutionAuthorizationOptionTest.php index c7ffc5b7f..a08a52709 100644 --- a/src/Surfnet/Stepup/Tests/Configuration/Value/InstitutionAuthorizationOptionTest.php +++ b/src/Surfnet/Stepup/Tests/Configuration/Value/InstitutionAuthorizationOptionTest.php @@ -19,11 +19,13 @@ namespace Surfnet\Stepup\Tests\Configuration\Value; use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration; -use PHPUnit\Framework\TestCase as TestCase; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Test; +use PHPUnit\Framework\TestCase; use Surfnet\Stepup\Configuration\Value\Institution; use Surfnet\Stepup\Configuration\Value\InstitutionAuthorizationOption; use Surfnet\Stepup\Configuration\Value\InstitutionRole; -use Surfnet\Stepup\Exception\InvalidArgumentException; class InstitutionAuthorizationOptionTest extends TestCase { @@ -45,16 +47,16 @@ public function setUp(): void $this->institutionRole = InstitutionRole::useRa(); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Test] + #[Group('domain')] public function institution_entries_are_sorted(): void { $useRaOption = InstitutionAuthorizationOption::fromInstitutionConfig($this->institutionRole, ['z', 'y', 'x']); $this->assertEquals(['x', 'y', 'z'], $useRaOption->getInstitutions($this->institution)); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Test] + #[Group('domain')] public function institution_entries_default_is_own_institution(): void { $useRaOption1 = InstitutionAuthorizationOption::fromInstitutionConfig($this->institutionRole, null); @@ -66,9 +68,9 @@ public function institution_entries_default_is_own_institution(): void $this->assertEquals([$this->institution], $useRaOption2->getInstitutions($this->institution)); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\DataProvider('institutionSetComparisonProvider')] - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Test] + #[DataProvider('institutionSetComparisonProvider')] + #[Group('domain')] public function institution_option_instances_can_be_compared( bool $expectation, ?array $configurationA, @@ -95,16 +97,16 @@ public function can_be_retrieved_json_serializable(): void $this->assertEquals(['x', 'y', 'z'], $institutionOption->jsonSerialize()); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Test] + #[Group('domain')] public function can_be_retrieved_json_serializable_on_empty_set(): void { $institutionOption = InstitutionAuthorizationOption::fromInstitutionConfig($this->institutionRole); $this->assertEquals(null, $institutionOption->jsonSerialize()); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Test] + #[Group('domain')] public function should_be_set_to_default_if_created_with_own_institution_as_institutions(): void { $institutions = [ @@ -121,8 +123,8 @@ public function should_be_set_to_default_if_created_with_own_institution_as_inst $this->assertEquals([], $option->getInstitutionSet()->toScalarArray()); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Test] + #[Group('domain')] public function the_default_value_is_given_institution(): void { $this->assertEquals( @@ -131,8 +133,8 @@ public function the_default_value_is_given_institution(): void ); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Test] + #[Group('domain')] public function the_empty_value_is_no_value(): void { $this->assertEquals( @@ -141,16 +143,16 @@ public function the_empty_value_is_no_value(): void ); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Test] + #[Group('domain')] public function the_blank_method_should_return_null(): void { $this->assertEquals(null, InstitutionAuthorizationOption::blank()); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\DataProvider('institutionHasInstitutionProvider')] - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Test] + #[DataProvider('institutionHasInstitutionProvider')] + #[Group('domain')] public function the_has_institution_method_should_check_for_institutions( bool $expectation, array $institutionList, diff --git a/src/Surfnet/Stepup/Tests/Configuration/Value/InstitutionConfigurationIdTest.php b/src/Surfnet/Stepup/Tests/Configuration/Value/InstitutionConfigurationIdTest.php index 46f1cc8ff..bac7aa60a 100644 --- a/src/Surfnet/Stepup/Tests/Configuration/Value/InstitutionConfigurationIdTest.php +++ b/src/Surfnet/Stepup/Tests/Configuration/Value/InstitutionConfigurationIdTest.php @@ -19,8 +19,10 @@ namespace Surfnet\Stepup\Tests\Configuration\Value; use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration; -use PHPUnit\Framework\TestCase as TestCase; -use StdClass; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Test; +use PHPUnit\Framework\TestCase; use Surfnet\Stepup\Configuration\Value\Institution; use Surfnet\Stepup\Configuration\Value\InstitutionConfigurationId; use Surfnet\Stepup\Exception\InvalidArgumentException; @@ -29,8 +31,8 @@ class InstitutionConfigurationIdTest extends TestCase { use MockeryPHPUnitIntegration; - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Test] + #[Group('domain')] public function two_institution_configuration_ids_created_for_the_different_institution_are_not_equal(): void { $institutionConfigurationId = InstitutionConfigurationId::from(new Institution('An institution')); @@ -39,9 +41,9 @@ public function two_institution_configuration_ids_created_for_the_different_inst $this->assertNotEquals($institutionConfigurationId, $different); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\DataProvider('nonStringOrEmptyStringProvider')] - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Test] + #[DataProvider('nonStringOrEmptyStringProvider')] + #[Group('domain')] public function an_institution_configuration_id_cannot_be_created_from_something_other_than_a_string( string $nonStringOrEmptyString, ): void { @@ -50,8 +52,8 @@ public function an_institution_configuration_id_cannot_be_created_from_something new InstitutionConfigurationId($nonStringOrEmptyString); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Test] + #[Group('domain')] public function an_institution_configuration_id_cannot_be_created_from_something_other_than_a_uuid(): void { $this->expectException(InvalidArgumentException::class); @@ -61,8 +63,8 @@ public function an_institution_configuration_id_cannot_be_created_from_something new InstitutionConfigurationId($nonUuid); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Test] + #[Group('domain')] public function two_institution_configuration_ids_created_for_the_same_institution_are_equal(): void { $institutionConfigurationId = InstitutionConfigurationId::from(new Institution('An institution')); @@ -71,8 +73,8 @@ public function two_institution_configuration_ids_created_for_the_same_instituti $this->assertEquals($institutionConfigurationId, $same); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Test] + #[Group('domain')] public function institution_configuration_ids_are_created_case_insensitively_from_institutions(): void { $mixedCaseInstitution = new Institution('An InStItUtIoN'); @@ -90,8 +92,8 @@ public function institution_configuration_ids_are_created_case_insensitively_fro ); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Test] + #[Group('domain')] public function normalized_institution_configuration_ids_and_unnormalized_institution_configuration_ids_are_the_same(): void { $mixedCaseInstitution = new Institution('An InStItUtIoN'); diff --git a/src/Surfnet/Stepup/Tests/Configuration/Value/InstitutionRoleTest.php b/src/Surfnet/Stepup/Tests/Configuration/Value/InstitutionRoleTest.php index a9f69a954..bcdb3d0d7 100644 --- a/src/Surfnet/Stepup/Tests/Configuration/Value/InstitutionRoleTest.php +++ b/src/Surfnet/Stepup/Tests/Configuration/Value/InstitutionRoleTest.php @@ -19,7 +19,10 @@ namespace Surfnet\Stepup\Tests\Configuration\Value; use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration; -use PHPUnit\Framework\TestCase as TestCase; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Test; +use PHPUnit\Framework\TestCase; use Surfnet\Stepup\Configuration\Value\InstitutionRole; use Surfnet\Stepup\Exception\InvalidArgumentException; @@ -27,18 +30,18 @@ class InstitutionRoleTest extends TestCase { use MockeryPHPUnitIntegration; - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\DataProvider('invalidConstructorArgumentsProvider')] - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Test] + #[DataProvider('invalidConstructorArgumentsProvider')] + #[Group('domain')] public function invalid_types_are_rejected_during_construction(bool|string|int $arguments): void { $this->expectException(InvalidArgumentException::class); new InstitutionRole($arguments); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\DataProvider('institutionTypeProvider')] - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Test] + #[DataProvider('institutionTypeProvider')] + #[Group('domain')] public function institution_roles_can_be_created_by_type(string $type): void { $role1 = new InstitutionRole($type); diff --git a/src/Surfnet/Stepup/Tests/Configuration/Value/InstitutionSetTest.php b/src/Surfnet/Stepup/Tests/Configuration/Value/InstitutionSetTest.php index 15719e008..4d8240f71 100644 --- a/src/Surfnet/Stepup/Tests/Configuration/Value/InstitutionSetTest.php +++ b/src/Surfnet/Stepup/Tests/Configuration/Value/InstitutionSetTest.php @@ -21,6 +21,9 @@ namespace Surfnet\Stepup\Tests\Configuration\Value; use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\TestCase as UnitTest; use Surfnet\Stepup\Configuration\Value\Institution; use Surfnet\Stepup\Configuration\Value\InstitutionSet; @@ -31,8 +34,8 @@ class InstitutionSetTest extends UnitTest { use MockeryPHPUnitIntegration; - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Test] + #[Group('domain')] public function the_set_is_built_out_of_institution_vos(): void { $institutionA = new Institution('a'); @@ -43,8 +46,8 @@ public function the_set_is_built_out_of_institution_vos(): void $this->assertSame(['a', 'b', 'c'], $set->toScalarArray()); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Test] + #[Group('domain')] public function duplicate_entries_are_not_allowed(): void { $this->expectExceptionMessage("Duplicate entries are not allowed in the InstitutionSet"); @@ -56,8 +59,8 @@ public function duplicate_entries_are_not_allowed(): void InstitutionSet::create([$institutionB, $institutionBDupe]); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Test] + #[Group('domain')] public function duplicate_entries_are_not_allowed_case_insensitive(): void { $this->expectExceptionMessage("Duplicate entries are not allowed in the InstitutionSet"); @@ -69,8 +72,8 @@ public function duplicate_entries_are_not_allowed_case_insensitive(): void InstitutionSet::create([$institutionB, $institutionBDupe]); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Test] + #[Group('domain')] public function only_institutions_can_be_present_in_set(): void { $this->expectExceptionMessage( @@ -84,8 +87,8 @@ public function only_institutions_can_be_present_in_set(): void InstitutionSet::create([$institution, $location]); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Test] + #[Group('domain')] public function factory_method_can_build_from_empty_array(): void { $input = []; @@ -93,8 +96,8 @@ public function factory_method_can_build_from_empty_array(): void $this->assertEmpty($set->toScalarArray()); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Test] + #[Group('domain')] public function factory_method_can_build_from_array_of_string(): void { $input = [ @@ -115,9 +118,9 @@ public function factory_method_can_build_from_array_of_string(): void * * */ - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\DataProvider('dirtyInstitutionListProvider')] - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Test] + #[DataProvider('dirtyInstitutionListProvider')] + #[Group('domain')] public function factory_method_can_build_from_array_of_string_and_rejects_invalid_types(array $invalid): void { $this->expectException(InvalidArgumentException::class); @@ -125,8 +128,8 @@ public function factory_method_can_build_from_array_of_string_and_rejects_invali InstitutionSet::create($invalid); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Test] + #[Group('domain')] public function sets_can_be_compared(): void { $input = [ diff --git a/src/Surfnet/Stepup/Tests/Configuration/Value/InstitutionTest.php b/src/Surfnet/Stepup/Tests/Configuration/Value/InstitutionTest.php index 33ee5a084..a67a70ae4 100644 --- a/src/Surfnet/Stepup/Tests/Configuration/Value/InstitutionTest.php +++ b/src/Surfnet/Stepup/Tests/Configuration/Value/InstitutionTest.php @@ -21,6 +21,9 @@ namespace Surfnet\Stepup\Tests\Configuration\Value; use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\TestCase as UnitTest; use Surfnet\Stepup\Configuration\Value\Institution; use Surfnet\Stepup\Exception\InvalidArgumentException; @@ -29,9 +32,9 @@ class InstitutionTest extends UnitTest { use MockeryPHPUnitIntegration; - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\DataProvider('nonStringOrNonEmptyStringProvider')] - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Test] + #[DataProvider('nonStringOrNonEmptyStringProvider')] + #[Group('domain')] public function an_institution_cannot_be_created_with_anything_but_a_nonempty_string( string $invalidValue, ): void { @@ -39,8 +42,8 @@ public function an_institution_cannot_be_created_with_anything_but_a_nonempty_st new Institution($invalidValue); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Test] + #[Group('domain')] public function two_institutions_with_the_same_value_are_equal(): void { $institution = new Institution('a'); diff --git a/src/Surfnet/Stepup/Tests/Configuration/Value/LocationTest.php b/src/Surfnet/Stepup/Tests/Configuration/Value/LocationTest.php index a04129579..a3a4be986 100644 --- a/src/Surfnet/Stepup/Tests/Configuration/Value/LocationTest.php +++ b/src/Surfnet/Stepup/Tests/Configuration/Value/LocationTest.php @@ -21,6 +21,8 @@ namespace Surfnet\Stepup\Tests\Configuration\Value; use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration; +use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\TestCase as UnitTest; use Surfnet\Stepup\Configuration\Value\Location; @@ -28,8 +30,8 @@ class LocationTest extends UnitTest { use MockeryPHPUnitIntegration; - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Test] + #[Group('domain')] public function two_locations_with_the_same_value_are_equal(): void { $location = new Location('a'); diff --git a/src/Surfnet/Stepup/Tests/Configuration/Value/RaLocationIdTest.php b/src/Surfnet/Stepup/Tests/Configuration/Value/RaLocationIdTest.php index 952d900d8..d3ce83de4 100644 --- a/src/Surfnet/Stepup/Tests/Configuration/Value/RaLocationIdTest.php +++ b/src/Surfnet/Stepup/Tests/Configuration/Value/RaLocationIdTest.php @@ -21,7 +21,10 @@ namespace Surfnet\Stepup\Tests\Configuration\Value; use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration; -use PHPUnit\Framework\TestCase as TestCase; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Test; +use PHPUnit\Framework\TestCase; use Ramsey\Uuid\Uuid; use Surfnet\Stepup\Configuration\Value\RaLocationId; use Surfnet\Stepup\Exception\InvalidArgumentException; @@ -30,9 +33,9 @@ class RaLocationIdTest extends TestCase { use MockeryPHPUnitIntegration; - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\DataProvider('nonStringOrEmptyStringProvider')] - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Test] + #[DataProvider('nonStringOrEmptyStringProvider')] + #[Group('domain')] public function an_ra_location_id_cannot_be_created_with_anything_but_a_nonempty_string( string $nonStringOrEmptyString, ): void { @@ -41,8 +44,8 @@ public function an_ra_location_id_cannot_be_created_with_anything_but_a_nonempty new RaLocationId($nonStringOrEmptyString); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Test] + #[Group('domain')] public function an_ra_location_id_cannot_be_created_with_anything_but_a_uuid(): void { $this->expectException(InvalidArgumentException::class); @@ -52,8 +55,8 @@ public function an_ra_location_id_cannot_be_created_with_anything_but_a_uuid(): new RaLocationId($nonUuid); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Test] + #[Group('domain')] public function two_ra_location_ids_with_the_same_values_are_equal(): void { $uuid = $this->uuid(); @@ -64,8 +67,8 @@ public function two_ra_location_ids_with_the_same_values_are_equal(): void $this->assertTrue($raLocationId->equals($theSame)); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Test] + #[Group('domain')] public function two_ra_location_ids_with_different_values_are_not_equal(): void { $raLocationId = new RaLocationId($this->uuid()); diff --git a/src/Surfnet/Stepup/Tests/Configuration/Value/RaLocationListTest.php b/src/Surfnet/Stepup/Tests/Configuration/Value/RaLocationListTest.php index 2a59342f1..c458d49f7 100644 --- a/src/Surfnet/Stepup/Tests/Configuration/Value/RaLocationListTest.php +++ b/src/Surfnet/Stepup/Tests/Configuration/Value/RaLocationListTest.php @@ -19,7 +19,9 @@ namespace Surfnet\Stepup\Tests\Configuration\Value; use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration; -use PHPUnit\Framework\TestCase as TestCase; +use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Test; +use PHPUnit\Framework\TestCase; use Ramsey\Uuid\Uuid; use Surfnet\Stepup\Configuration\Entity\RaLocation; use Surfnet\Stepup\Configuration\Value\ContactInformation; @@ -33,8 +35,8 @@ class RaLocationListTest extends TestCase { use MockeryPHPUnitIntegration; - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Test] + #[Group('domain')] public function an_ra_location_list_does_not_allow_ra_locations_with_the_same_ra_location_id_upon_creation(): void { $this->expectException(LogicException::class); @@ -47,8 +49,8 @@ public function an_ra_location_list_does_not_allow_ra_locations_with_the_same_ra new RaLocationList($raLocations); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Test] + #[Group('domain')] public function an_ra_location_list_does_not_allow_adding_ra_locations_with_an_ra_location_id_that_is_already_present(): void { $this->expectException(LogicException::class); @@ -61,8 +63,8 @@ public function an_ra_location_list_does_not_allow_adding_ra_locations_with_an_r $raLocationList->add($existingRaLocation); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Test] + #[Group('domain')] public function an_ra_location_list_is_created_from_ra_locations(): void { $raLocations = $this->getRaLocationsArray(); @@ -73,8 +75,8 @@ public function an_ra_location_list_is_created_from_ra_locations(): void $this->assertEquals($raLocations, $raLocationListAsArray); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Test] + #[Group('domain')] public function an_ra_location_list_has_an_ra_location_with_a_given_ra_location_id(): void { $raLocations = $this->getRaLocationsArray(); @@ -85,8 +87,8 @@ public function an_ra_location_list_has_an_ra_location_with_a_given_ra_location_ $this->assertTrue($raLocationList->containsWithId($expectedRaLocationIdToBePresent)); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Test] + #[Group('domain')] public function an_ra_location_list_does_not_have_ra_locations_with_a_non_present_ra_location_id(): void { $raLocations = $this->getRaLocationsArray(); @@ -97,8 +99,8 @@ public function an_ra_location_list_does_not_have_ra_locations_with_a_non_presen $this->assertFalse($raLocationList->containsWithId($expectedRaLocationIdNotToBePresent)); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Test] + #[Group('domain')] public function an_ra_location_is_added_to_an_ra_location_list(): void { $raLocations = $this->getRaLocationsArray(); @@ -111,8 +113,8 @@ public function an_ra_location_is_added_to_an_ra_location_list(): void $this->assertEquals($raLocations[0], $raLocationListAsArray[0]); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Test] + #[Group('domain')] public function an_ra_location_is_removed_from_an_ra_location_list_by_its_ra_location_id(): void { $raLocations = $this->getRaLocationsArray(); diff --git a/src/Surfnet/Stepup/Tests/Configuration/Value/RaLocationNameTest.php b/src/Surfnet/Stepup/Tests/Configuration/Value/RaLocationNameTest.php index c50606872..8d53bf7eb 100644 --- a/src/Surfnet/Stepup/Tests/Configuration/Value/RaLocationNameTest.php +++ b/src/Surfnet/Stepup/Tests/Configuration/Value/RaLocationNameTest.php @@ -21,7 +21,10 @@ namespace Surfnet\Stepup\Tests\Configuration\Value; use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration; -use PHPUnit\Framework\TestCase as TestCase; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Test; +use PHPUnit\Framework\TestCase; use Surfnet\Stepup\Configuration\Value\RaLocationName; use Surfnet\Stepup\Exception\InvalidArgumentException; @@ -29,9 +32,9 @@ class RaLocationNameTest extends TestCase { use MockeryPHPUnitIntegration; - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\DataProvider('nonStringOrEmptyStringProvider')] - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Test] + #[DataProvider('nonStringOrEmptyStringProvider')] + #[Group('domain')] public function an_ra_location_name_cannot_be_created_with_anything_but_a_nonempty_string( string $nonStringOrEmptyString, ): void { @@ -40,8 +43,8 @@ public function an_ra_location_name_cannot_be_created_with_anything_but_a_nonemp new RaLocationName($nonStringOrEmptyString); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Test] + #[Group('domain')] public function two_ra_location_names_with_the_same_values_are_equal(): void { $raLocationName = new RaLocationName('a'); @@ -50,8 +53,8 @@ public function two_ra_location_names_with_the_same_values_are_equal(): void $this->assertTrue($raLocationName->equals($theSame)); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Test] + #[Group('domain')] public function two_ra_location_names_with_different_values_are_not_equal(): void { $raLocationName = new RaLocationName('a'); diff --git a/src/Surfnet/Stepup/Tests/Configuration/Value/ShowRaaContactInformationOptionTest.php b/src/Surfnet/Stepup/Tests/Configuration/Value/ShowRaaContactInformationOptionTest.php index 0619e79af..04befa831 100644 --- a/src/Surfnet/Stepup/Tests/Configuration/Value/ShowRaaContactInformationOptionTest.php +++ b/src/Surfnet/Stepup/Tests/Configuration/Value/ShowRaaContactInformationOptionTest.php @@ -19,18 +19,18 @@ namespace Surfnet\Stepup\Tests\Configuration\Value; use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration; -use PHPUnit\Framework\TestCase as TestCase; -use StdClass; +use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Test; +use PHPUnit\Framework\TestCase; use Surfnet\Stepup\Configuration\Value\ShowRaaContactInformationOption; -use Surfnet\Stepup\Exception\InvalidArgumentException; class ShowRaaContactInformationOptionTest extends TestCase { use MockeryPHPUnitIntegration; - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('domain')] - #[\PHPUnit\Framework\Attributes\Group('institution-configuration-option')] + #[Test] + #[Group('domain')] + #[Group('institution-configuration-option')] public function two_show_raa_contact_information_options_with_the_same_values_are_equal(): void { $option = true; @@ -41,9 +41,9 @@ public function two_show_raa_contact_information_options_with_the_same_values_ar $this->assertTrue($showRaaContactInformationOption->equals($theSame)); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('domain')] - #[\PHPUnit\Framework\Attributes\Group('institution-configuration-option')] + #[Test] + #[Group('domain')] + #[Group('institution-configuration-option')] public function two_show_raa_contact_information_options_with_different_values_are_not_equal(): void { $showRaaContactInformationOption = new ShowRaaContactInformationOption(true); @@ -52,9 +52,9 @@ public function two_show_raa_contact_information_options_with_different_values_a $this->assertFalse($showRaaContactInformationOption->equals($different)); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('domain')] - #[\PHPUnit\Framework\Attributes\Group('institution-configuration-option')] + #[Test] + #[Group('domain')] + #[Group('institution-configuration-option')] public function default_value_is_true(): void { $default = ShowRaaContactInformationOption::getDefault(); diff --git a/src/Surfnet/Stepup/Tests/Configuration/Value/UseRaLocationsOptionTest.php b/src/Surfnet/Stepup/Tests/Configuration/Value/UseRaLocationsOptionTest.php index c394492e0..ec5bb8be8 100644 --- a/src/Surfnet/Stepup/Tests/Configuration/Value/UseRaLocationsOptionTest.php +++ b/src/Surfnet/Stepup/Tests/Configuration/Value/UseRaLocationsOptionTest.php @@ -19,18 +19,18 @@ namespace Surfnet\Stepup\Tests\Configuration\Value; use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration; -use PHPUnit\Framework\TestCase as TestCase; -use StdClass; +use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Test; +use PHPUnit\Framework\TestCase; use Surfnet\Stepup\Configuration\Value\UseRaLocationsOption; -use Surfnet\Stepup\Exception\InvalidArgumentException; class UseRaLocationsOptionTest extends TestCase { use MockeryPHPUnitIntegration; - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('domain')] - #[\PHPUnit\Framework\Attributes\Group('institution-configuration-option')] + #[Test] + #[Group('domain')] + #[Group('institution-configuration-option')] public function two_use_ra_location_options_with_the_same_values_are_equal(): void { $option = true; @@ -41,9 +41,9 @@ public function two_use_ra_location_options_with_the_same_values_are_equal(): vo $this->assertTrue($useRaLocationsOption->equals($theSame)); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('domain')] - #[\PHPUnit\Framework\Attributes\Group('institution-configuration-option')] + #[Test] + #[Group('domain')] + #[Group('institution-configuration-option')] public function two_use_ra_location_options_with_different_values_are_not_equal(): void { $useRaLocationsOption = new UseRaLocationsOption(true); @@ -52,14 +52,14 @@ public function two_use_ra_location_options_with_different_values_are_not_equal( $this->assertFalse($useRaLocationsOption->equals($different)); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('domain')] - #[\PHPUnit\Framework\Attributes\Group('institution-configuration-option')] + #[Test] + #[Group('domain')] + #[Group('institution-configuration-option')] public function default_value_is_false(): void { $default = UseRaLocationsOption::getDefault(); $false = new UseRaLocationsOption(false); $this->assertTrue($default->equals($false)); - } + } } diff --git a/src/Surfnet/Stepup/Tests/DateTime/DateTimeTest.php b/src/Surfnet/Stepup/Tests/DateTime/DateTimeTest.php index e614bf9e7..0946467ca 100644 --- a/src/Surfnet/Stepup/Tests/DateTime/DateTimeTest.php +++ b/src/Surfnet/Stepup/Tests/DateTime/DateTimeTest.php @@ -21,6 +21,8 @@ use DateInterval; use DateTime as CoreDateTime; use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration; +use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\TestCase as UnitTest; use Surfnet\Stepup\DateTime\DateTime; @@ -34,8 +36,8 @@ class DateTimeTest extends UnitTest * that you're hopefully reading this as an instruction to check all the places that handle datetime for * compatibility with the new format. Think about log(-processors), (de-)serializers, etc. */ - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Test] + #[Group('domain')] public function the_configured_format_is_what_is_needed_for_correct_application_behavior(): void { $this->assertEquals('Y-m-d\\TH:i:sP', DateTime::FORMAT); @@ -45,8 +47,8 @@ public function the_configured_format_is_what_is_needed_for_correct_application_ * Ensure that the __toString of our DateTime object actually uses the correct format. For the reason why, read the * docblock above the {@see the_configured_format_is_what_is_needed_for_correct_application_behavior()} test */ - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Test] + #[Group('domain')] public function to_string_returns_the_time_in_the_correct_format(): void { $coreDateTimeObject = new CoreDateTime('@1000'); @@ -55,8 +57,8 @@ public function to_string_returns_the_time_in_the_correct_format(): void $this->assertEquals($coreDateTimeObject->format(DateTime::FORMAT), (string)$ourDateTimeObject); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Test] + #[Group('domain')] public function add_returns_a_different_object_that_has_the_interval_added(): void { $base = new DateTime(new CoreDateTime('@1000')); @@ -68,8 +70,8 @@ public function add_returns_a_different_object_that_has_the_interval_added(): vo $this->assertTrue($result > $base, 'DateTime::add adds the interval to the new object'); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Test] + #[Group('domain')] public function sub_returns_a_different_object_that_has_the_interval_substracted(): void { $base = new DateTime(new CoreDateTime('@1000')); @@ -81,8 +83,8 @@ public function sub_returns_a_different_object_that_has_the_interval_substracted $this->assertTrue($result < $base, 'DateTime::sub subtracts the interval to the new object'); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Test] + #[Group('domain')] public function comes_before_works_with_exclusive_comparison(): void { $base = new DateTime(new CoreDateTime('@1000')); @@ -95,8 +97,8 @@ public function comes_before_works_with_exclusive_comparison(): void $this->assertFalse($after->comesBefore($base)); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Test] + #[Group('domain')] public function comes_before_or_is_equal_works_with_inclusive_comparison(): void { $base = new DateTime(new CoreDateTime('@1000')); @@ -109,8 +111,8 @@ public function comes_before_or_is_equal_works_with_inclusive_comparison(): void $this->assertFalse($after->comesBeforeOrIsEqual($base)); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Test] + #[Group('domain')] public function comes_after_works_with_exclusive_comparison(): void { $base = new DateTime(new CoreDateTime('@1000')); @@ -123,8 +125,8 @@ public function comes_after_works_with_exclusive_comparison(): void $this->assertTrue($after->comesAfter($base)); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Test] + #[Group('domain')] public function comes_after_or_is_equal_works_with_inclusive_comparison(): void { $base = new DateTime(new CoreDateTime('@1000')); diff --git a/src/Surfnet/Stepup/Tests/Helper/JsonHelperTest.php b/src/Surfnet/Stepup/Tests/Helper/JsonHelperTest.php index 566ca49e5..d5b7f2969 100644 --- a/src/Surfnet/Stepup/Tests/Helper/JsonHelperTest.php +++ b/src/Surfnet/Stepup/Tests/Helper/JsonHelperTest.php @@ -19,9 +19,10 @@ namespace Surfnet\Stepup\Tests\Helper; use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration; -use PHPUnit\Framework\TestCase as TestCase; +use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Test; +use PHPUnit\Framework\TestCase; use StdClass; -use Surfnet\Stepup\Exception\InvalidArgumentException; use Surfnet\Stepup\Exception\JsonException; use Surfnet\Stepup\Helper\JsonHelper; @@ -29,8 +30,8 @@ class JsonHelperTest extends TestCase { use MockeryPHPUnitIntegration; - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('json')] + #[Test] + #[Group('json')] public function json_helper_decodes_strings_to_arrays(): void { $expectedDecodedResult = ['hello' => 'world']; @@ -41,8 +42,8 @@ public function json_helper_decodes_strings_to_arrays(): void $this->assertSame($expectedDecodedResult, $actualDecodedResult); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('json')] + #[Test] + #[Group('json')] public function json_helper_throws_an_exception_when_there_is_a_syntax_error(): void { $this->expectException(JsonException::class); diff --git a/src/Surfnet/Stepup/Tests/Helper/UserDataFilterTest.php b/src/Surfnet/Stepup/Tests/Helper/UserDataFilterTest.php index 483f82c46..92a1556f6 100644 --- a/src/Surfnet/Stepup/Tests/Helper/UserDataFilterTest.php +++ b/src/Surfnet/Stepup/Tests/Helper/UserDataFilterTest.php @@ -21,6 +21,7 @@ use DateTime as CoreDateTime; use Generator; use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration; +use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\TestCase; use Surfnet\Stepup\DateTime\DateTime; use Surfnet\Stepup\Helper\UserDataFilter; @@ -42,7 +43,7 @@ class UserDataFilterTest extends TestCase { use MockeryPHPUnitIntegration; - #[\PHPUnit\Framework\Attributes\DataProvider('provideEvents')] + #[DataProvider('provideEvents')] public function test_filtering_is_applied_with_expected_result( IdentityCreatedEvent|PhonePossessionProvenAndVerifiedEvent|AppointedAsRaaForInstitutionEvent|PhonePossessionProvenEvent $event, array $expectation, diff --git a/src/Surfnet/Stepup/Tests/Identity/Collection/InstitutionCollectionTest.php b/src/Surfnet/Stepup/Tests/Identity/Collection/InstitutionCollectionTest.php index 2127dde3e..aefdc2fc7 100644 --- a/src/Surfnet/Stepup/Tests/Identity/Collection/InstitutionCollectionTest.php +++ b/src/Surfnet/Stepup/Tests/Identity/Collection/InstitutionCollectionTest.php @@ -19,6 +19,8 @@ namespace Surfnet\Stepup\Tests\Identity\Collection; use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration; +use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\TestCase as UnitTest; use Surfnet\Stepup\Exception\RuntimeException; use Surfnet\Stepup\Identity\Collection\InstitutionCollection; @@ -28,9 +30,9 @@ class InstitutionCollectionTest extends UnitTest { use MockeryPHPUnitIntegration; - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('domain')] - #[\PHPUnit\Framework\Attributes\Group('whitelist')] + #[Test] + #[Group('domain')] + #[Group('whitelist')] public function it_can_be_constructed_with_or_without_institutions(): void { $collection1 = new InstitutionCollection($this->getInstitutions()); @@ -40,9 +42,9 @@ public function it_can_be_constructed_with_or_without_institutions(): void $this->assertInstanceOf(InstitutionCollection::class, $collection2); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('domain')] - #[\PHPUnit\Framework\Attributes\Group('whitelist')] + #[Test] + #[Group('domain')] + #[Group('whitelist')] public function it_correctly_asserts_whether_or_not_it_contains_an_institution(): void { $institutions = $this->getInstitutions(); @@ -56,9 +58,9 @@ public function it_correctly_asserts_whether_or_not_it_contains_an_institution() $this->assertFalse($institutionCollection->contains(new Institution('not listed'))); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('domain')] - #[\PHPUnit\Framework\Attributes\Group('whitelist')] + #[Test] + #[Group('domain')] + #[Group('whitelist')] public function it_allows_to_add_an_institution_that_it_does_not_already_contain(): void { $toAdd = new Institution('to be added'); @@ -69,9 +71,9 @@ public function it_allows_to_add_an_institution_that_it_does_not_already_contain $this->assertTrue($institutionCollection->contains($toAdd)); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('domain')] - #[\PHPUnit\Framework\Attributes\Group('whitelist')] + #[Test] + #[Group('domain')] + #[Group('whitelist')] public function an_institution_already_in_the_collection_cannot_be_added(): void { $this->expectException(RuntimeException::class); @@ -84,9 +86,9 @@ public function an_institution_already_in_the_collection_cannot_be_added(): void $institutionCollection->add($alreadyExists); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('domain')] - #[\PHPUnit\Framework\Attributes\Group('whitelist')] + #[Test] + #[Group('domain')] + #[Group('whitelist')] public function an_institution_in_the_collection_can_be_removed(): void { $institutions = $this->getInstitutions(); @@ -99,9 +101,9 @@ public function an_institution_in_the_collection_can_be_removed(): void $this->assertFalse($institutionCollection->contains($inCollection)); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('domain')] - #[\PHPUnit\Framework\Attributes\Group('whitelist')] + #[Test] + #[Group('domain')] + #[Group('whitelist')] public function an_institution_not_in_the_collection_cannot_be_removed(): void { $this->expectException(RuntimeException::class); @@ -115,9 +117,9 @@ public function an_institution_not_in_the_collection_cannot_be_removed(): void $institutionCollection->remove($notInCollection); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('domain')] - #[\PHPUnit\Framework\Attributes\Group('whitelist')] + #[Test] + #[Group('domain')] + #[Group('whitelist')] public function multiple_institutions_can_be_added_from_another_collection(): void { $institutions = $this->getInstitutions(); @@ -134,9 +136,9 @@ public function multiple_institutions_can_be_added_from_another_collection(): vo } } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('domain')] - #[\PHPUnit\Framework\Attributes\Group('whitelist')] + #[Test] + #[Group('domain')] + #[Group('whitelist')] public function multiple_institutions_can_be_removed(): void { $collectionOneElements = $this->getInstitutions(); diff --git a/src/Surfnet/Stepup/Tests/Identity/Entity/ConfigurableSettingsTest.php b/src/Surfnet/Stepup/Tests/Identity/Entity/ConfigurableSettingsTest.php index 219d343cd..91215be2d 100644 --- a/src/Surfnet/Stepup/Tests/Identity/Entity/ConfigurableSettingsTest.php +++ b/src/Surfnet/Stepup/Tests/Identity/Entity/ConfigurableSettingsTest.php @@ -20,6 +20,9 @@ use DateTime as CoreDateTime; use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\TestCase as UnitTest; use Surfnet\Stepup\DateTime\DateTime; use Surfnet\Stepup\Identity\Entity\ConfigurableSettings; @@ -30,8 +33,8 @@ class ConfigurableSettingsTest extends UnitTest { use MockeryPHPUnitIntegration; - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Test] + #[Group('domain')] public function a_new_email_verification_window_always_starts_now(): void { $settings = ConfigurableSettings::create(3, []); @@ -67,9 +70,9 @@ public static function localeVerifications(): array /** * @param string[] $validLocaleStrings */ - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\DataProvider('localeVerifications')] - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Test] + #[DataProvider('localeVerifications')] + #[Group('domain')] public function a_locale_can_be_verified_to_be_a_valid_locale( bool $isValid, string $localeString, diff --git a/src/Surfnet/Stepup/Tests/Identity/Entity/SecondFactorCollectionTest.php b/src/Surfnet/Stepup/Tests/Identity/Entity/SecondFactorCollectionTest.php index eb8d70e04..af3197be2 100644 --- a/src/Surfnet/Stepup/Tests/Identity/Entity/SecondFactorCollectionTest.php +++ b/src/Surfnet/Stepup/Tests/Identity/Entity/SecondFactorCollectionTest.php @@ -20,6 +20,8 @@ use Mockery as m; use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration; +use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\TestCase as UnitTest; use Surfnet\Stepup\Identity\Entity\SecondFactor; use Surfnet\Stepup\Identity\Entity\SecondFactorCollection; @@ -33,8 +35,8 @@ class SecondFactorCollectionTest extends UnitTest { use MockeryPHPUnitIntegration; - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Test] + #[Group('domain')] public function collection_can_return_second_factor_with_highest_loa(): void { $collection = new SecondFactorCollection([ diff --git a/src/Surfnet/Stepup/Tests/Identity/Event/EventSerializationAndDeserializationTest.php b/src/Surfnet/Stepup/Tests/Identity/Event/EventSerializationAndDeserializationTest.php index 93c2e103d..e339ea917 100644 --- a/src/Surfnet/Stepup/Tests/Identity/Event/EventSerializationAndDeserializationTest.php +++ b/src/Surfnet/Stepup/Tests/Identity/Event/EventSerializationAndDeserializationTest.php @@ -21,6 +21,9 @@ use Broadway\Serializer\Serializable as SerializableInterface; use DateTime as CoreDateTime; use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\TestCase as UnitTest; use Ramsey\Uuid\Uuid; use Surfnet\Stepup\DateTime\DateTime; @@ -79,9 +82,9 @@ class EventSerializationAndDeserializationTest extends UnitTest { use MockeryPHPUnitIntegration; - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\DataProvider('eventProvider')] - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Test] + #[DataProvider('eventProvider')] + #[Group('domain')] public function an_event_should_be_the_same_after_serialization_and_deserialization(SerializableInterface $event): void { $isForgettableEvent = $event instanceof Forgettable; @@ -111,9 +114,9 @@ public function an_event_should_be_the_same_after_serialization_and_deserializat $this->assertTrue($event == $deserializedEvent); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\DataProvider('serializedDataProvider')] - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Test] + #[DataProvider('serializedDataProvider')] + #[Group('domain')] public function an_serialized_event_should_be_the_same( string $serializedData, string $serializedSensitiveData, @@ -132,8 +135,8 @@ public function an_serialized_event_should_be_the_same( $this->assertEquals($event, $deserializedEvent); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Test] + #[Group('domain')] public function an_email_verification_window_should_be_the_same_after_serialization_and_deserialization(): void { // use a fixed datetime instance, to prevent microsecond precision issues in PHP 7.1+ diff --git a/src/Surfnet/Stepup/Tests/Identity/Event/ForgettableEventsTest.php b/src/Surfnet/Stepup/Tests/Identity/Event/ForgettableEventsTest.php index 01d04e5e5..cf1ecda7b 100644 --- a/src/Surfnet/Stepup/Tests/Identity/Event/ForgettableEventsTest.php +++ b/src/Surfnet/Stepup/Tests/Identity/Event/ForgettableEventsTest.php @@ -19,6 +19,8 @@ namespace Surfnet\Stepup\Tests\Identity\Event; use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration; +use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\TestCase; use ReflectionClass; use ReflectionException; @@ -58,8 +60,8 @@ final class ForgettableEventsTest extends TestCase { use MockeryPHPUnitIntegration; - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Test] + #[Group('domain')] public function certain_events_are_forgettable_events_and_others_are_not(): void { $forgettableEventFqcns = [ @@ -121,7 +123,7 @@ private function getConcreteIdentityEventFqcns(): array { $files = glob(__DIR__ . '/../../../Identity/Event/*Event.php'); - if($files === false){ + if ($files === false) { return []; } diff --git a/src/Surfnet/Stepup/Tests/Identity/Event/WhitelistEventSerializationAndDeserializationTest.php b/src/Surfnet/Stepup/Tests/Identity/Event/WhitelistEventSerializationAndDeserializationTest.php index 9da4901ea..af6f49552 100644 --- a/src/Surfnet/Stepup/Tests/Identity/Event/WhitelistEventSerializationAndDeserializationTest.php +++ b/src/Surfnet/Stepup/Tests/Identity/Event/WhitelistEventSerializationAndDeserializationTest.php @@ -20,6 +20,9 @@ use Broadway\Serializer\Serializable as SerializableInterface; use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\TestCase as UnitTest; use Surfnet\Stepup\Identity\Collection\InstitutionCollection; use Surfnet\Stepup\Identity\Event\InstitutionsAddedToWhitelistEvent; @@ -32,10 +35,10 @@ class WhitelistEventSerializationAndDeserializationTest extends UnitTest { use MockeryPHPUnitIntegration; - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\DataProvider('eventProvider')] - #[\PHPUnit\Framework\Attributes\Group('domain')] - #[\PHPUnit\Framework\Attributes\Group('whitelist')] + #[Test] + #[DataProvider('eventProvider')] + #[Group('domain')] + #[Group('whitelist')] public function an_event_should_be_the_same_after_serialization_and_deserialization(SerializableInterface $event,): void { $class = $event::class; diff --git a/src/Surfnet/Stepup/Tests/Identity/Value/CommonNameTest.php b/src/Surfnet/Stepup/Tests/Identity/Value/CommonNameTest.php index fd7496a2c..b3dee60c3 100644 --- a/src/Surfnet/Stepup/Tests/Identity/Value/CommonNameTest.php +++ b/src/Surfnet/Stepup/Tests/Identity/Value/CommonNameTest.php @@ -21,6 +21,9 @@ namespace Surfnet\Stepup\Tests\Identity\Value; use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\TestCase as UnitTest; use Surfnet\Stepup\Exception\InvalidArgumentException; use Surfnet\Stepup\Identity\Value\CommonName; @@ -29,9 +32,9 @@ class CommonNameTest extends UnitTest { use MockeryPHPUnitIntegration; - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\DataProvider('invalidArgumentProvider')] - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Test] + #[DataProvider('invalidArgumentProvider')] + #[Group('domain')] public function the_common_name_address_must_be_a_non_empty_string(string $invalidValue): void { $this->expectException(InvalidArgumentException::class); @@ -39,8 +42,8 @@ public function the_common_name_address_must_be_a_non_empty_string(string $inval new CommonName($invalidValue); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Test] + #[Group('domain')] public function two_common_names_with_the_same_value_are_equal(): void { $commonName = new CommonName('John Doe'); diff --git a/src/Surfnet/Stepup/Tests/Identity/Value/ContactInformationTest.php b/src/Surfnet/Stepup/Tests/Identity/Value/ContactInformationTest.php index 789bdc1c6..6c6f8aa76 100644 --- a/src/Surfnet/Stepup/Tests/Identity/Value/ContactInformationTest.php +++ b/src/Surfnet/Stepup/Tests/Identity/Value/ContactInformationTest.php @@ -21,6 +21,8 @@ namespace Surfnet\Stepup\Tests\Identity\Value; use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration; +use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\TestCase as UnitTest; use Surfnet\Stepup\Identity\Value\ContactInformation; @@ -28,8 +30,8 @@ class ContactInformationTest extends UnitTest { use MockeryPHPUnitIntegration; - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Test] + #[Group('domain')] public function two_instances_with_the_same_value_are_equal(): void { $contactInformation = new ContactInformation('a'); diff --git a/src/Surfnet/Stepup/Tests/Identity/Value/DocumentNumberTest.php b/src/Surfnet/Stepup/Tests/Identity/Value/DocumentNumberTest.php index 7b00dfa18..8ee1f404d 100644 --- a/src/Surfnet/Stepup/Tests/Identity/Value/DocumentNumberTest.php +++ b/src/Surfnet/Stepup/Tests/Identity/Value/DocumentNumberTest.php @@ -21,6 +21,9 @@ namespace Surfnet\Stepup\Tests\Identity\Value; use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\TestCase as UnitTest; use Surfnet\Stepup\Exception\InvalidArgumentException; use Surfnet\Stepup\Identity\Value\DocumentNumber; @@ -29,17 +32,17 @@ class DocumentNumberTest extends UnitTest { use MockeryPHPUnitIntegration; - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\DataProvider('invalidArgumentProvider')] - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Test] + #[DataProvider('invalidArgumentProvider')] + #[Group('domain')] public function the_document_number_must_be_a_non_empty_string(string $invalidValue): void { $this->expectException(InvalidArgumentException::class); new DocumentNumber($invalidValue); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Test] + #[Group('domain')] public function two_document_numbers_with_the_same_value_are_equal(): void { $commonName = new DocumentNumber('John Doe'); diff --git a/src/Surfnet/Stepup/Tests/Identity/Value/EmailTest.php b/src/Surfnet/Stepup/Tests/Identity/Value/EmailTest.php index 24e63f6af..2966a2721 100644 --- a/src/Surfnet/Stepup/Tests/Identity/Value/EmailTest.php +++ b/src/Surfnet/Stepup/Tests/Identity/Value/EmailTest.php @@ -21,6 +21,9 @@ namespace Surfnet\Stepup\Tests\Identity\Value; use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\TestCase as UnitTest; use Surfnet\Stepup\Exception\InvalidArgumentException; use Surfnet\Stepup\Identity\Value\Email; @@ -29,18 +32,18 @@ class EmailTest extends UnitTest { use MockeryPHPUnitIntegration; - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\DataProvider('invalidArgumentProvider')] - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Test] + #[DataProvider('invalidArgumentProvider')] + #[Group('domain')] public function the_email_address_must_be_a_non_empty_string(string $invalidValue): void { $this->expectException(InvalidArgumentException::class); new Email($invalidValue); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\DataProvider('invalidEmailProvider')] - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Test] + #[DataProvider('invalidEmailProvider')] + #[Group('domain')] public function the_email_address_given_must_be_rfc_822_compliant(string $invalidValue): void { $this->expectException(InvalidArgumentException::class); @@ -48,8 +51,8 @@ public function the_email_address_given_must_be_rfc_822_compliant(string $invali new Email($invalidValue); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Test] + #[Group('domain')] public function two_emails_with_the_same_value_are_equal(): void { $email = new Email('email@example.invalid'); diff --git a/src/Surfnet/Stepup/Tests/Identity/Value/EmailVerificationWindowTest.php b/src/Surfnet/Stepup/Tests/Identity/Value/EmailVerificationWindowTest.php index e32ebe3d0..3e1b31630 100644 --- a/src/Surfnet/Stepup/Tests/Identity/Value/EmailVerificationWindowTest.php +++ b/src/Surfnet/Stepup/Tests/Identity/Value/EmailVerificationWindowTest.php @@ -22,6 +22,9 @@ use DateTime as CoreDateTime; use Exception; use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration; +use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\RunInSeparateProcess; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\TestCase; use Surfnet\Stepup\DateTime\DateTime; use Surfnet\Stepup\Identity\Value\EmailVerificationWindow; @@ -32,9 +35,9 @@ class EmailVerificationWindowTest extends TestCase { use MockeryPHPUnitIntegration; - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\RunInSeparateProcess] - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Test] + #[RunInSeparateProcess] + #[Group('domain')] public function window_is_open_for_instructed_timeframe_after_given_time(): void { $startTime = new DateTime(new CoreDateTime('@1')); @@ -59,9 +62,9 @@ public function window_is_open_for_instructed_timeframe_after_given_time(): void $this->assertFalse($window->isOpen(), 'The window should be closed after the end time'); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\RunInSeparateProcess] - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Test] + #[RunInSeparateProcess] + #[Group('domain')] public function a_window_is_considered_equal_when_the_start_and_end_are_the_same(): void { // since we work with second precision, we might run issues trusting normal time, so we fixate the time @@ -85,9 +88,9 @@ public function a_window_is_considered_equal_when_the_start_and_end_are_the_same $this->assertFalse($base->equals($startsEarlierEndsAtSameTime)); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\RunInSeparateProcess] - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Test] + #[RunInSeparateProcess] + #[Group('domain')] public function the_window_correctly_calculates_the_end_datetime(): void { // since we work with second precision, we might run issues trusting normal time, so we fixate the time diff --git a/src/Surfnet/Stepup/Tests/Identity/Value/GssfIdTest.php b/src/Surfnet/Stepup/Tests/Identity/Value/GssfIdTest.php index e15a28987..386e0386d 100644 --- a/src/Surfnet/Stepup/Tests/Identity/Value/GssfIdTest.php +++ b/src/Surfnet/Stepup/Tests/Identity/Value/GssfIdTest.php @@ -19,8 +19,10 @@ namespace Surfnet\Stepup\Tests\Identity\Value; use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\TestCase as UnitTest; -use StdClass; use Surfnet\Stepup\Exception\InvalidArgumentException; use Surfnet\Stepup\Identity\Value\GssfId; @@ -28,9 +30,9 @@ class GssfIdTest extends UnitTest { use MockeryPHPUnitIntegration; - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\DataProvider('invalidValueProvider')] - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Test] + #[DataProvider('invalidValueProvider')] + #[Group('domain')] public function a_gssf_id_cannot_be_created_with_anything_but_a_nonempty_string( string $invalidValue, ): void { @@ -39,8 +41,8 @@ public function a_gssf_id_cannot_be_created_with_anything_but_a_nonempty_string( new GssfId($invalidValue); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Test] + #[Group('domain')] public function two_gssf_ids_with_the_same_value_are_equal(): void { $gssf = new GssfId('a'); diff --git a/src/Surfnet/Stepup/Tests/Identity/Value/InstitutionTest.php b/src/Surfnet/Stepup/Tests/Identity/Value/InstitutionTest.php index 089b5a861..6bd113873 100644 --- a/src/Surfnet/Stepup/Tests/Identity/Value/InstitutionTest.php +++ b/src/Surfnet/Stepup/Tests/Identity/Value/InstitutionTest.php @@ -21,6 +21,9 @@ namespace Surfnet\Stepup\Tests\Identity\Value; use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\TestCase as UnitTest; use Surfnet\Stepup\Exception\InvalidArgumentException; use Surfnet\Stepup\Identity\Value\Institution; @@ -29,16 +32,17 @@ class InstitutionTest extends UnitTest { use MockeryPHPUnitIntegration; - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\DataProvider('invalidValueProviderInvalidString')] - #[\PHPUnit\Framework\Attributes\Group('domain')] - public function an_institution_cannot_be_created_with_anything_but_a_nonempty_string_type_errors(string $invalidValue): void { + #[Test] + #[DataProvider('invalidValueProviderInvalidString')] + #[Group('domain')] + public function an_institution_cannot_be_created_with_anything_but_a_nonempty_string_type_errors(string $invalidValue): void + { $this->expectException(InvalidArgumentException::class); new Institution($invalidValue); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Test] + #[Group('domain')] public function two_institutions_with_the_same_value_are_equal(): void { $institution = new Institution('a'); diff --git a/src/Surfnet/Stepup/Tests/Identity/Value/LocationTest.php b/src/Surfnet/Stepup/Tests/Identity/Value/LocationTest.php index eb8a19644..61b7c1af1 100644 --- a/src/Surfnet/Stepup/Tests/Identity/Value/LocationTest.php +++ b/src/Surfnet/Stepup/Tests/Identity/Value/LocationTest.php @@ -21,6 +21,8 @@ namespace Surfnet\Stepup\Tests\Identity\Value; use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration; +use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\TestCase as UnitTest; use Surfnet\Stepup\Identity\Value\Location; @@ -28,8 +30,8 @@ class LocationTest extends UnitTest { use MockeryPHPUnitIntegration; - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Test] + #[Group('domain')] public function two_locations_with_the_same_value_are_equal(): void { $location = new Location('a'); diff --git a/src/Surfnet/Stepup/Tests/Identity/Value/PhoneNumberTest.php b/src/Surfnet/Stepup/Tests/Identity/Value/PhoneNumberTest.php index c93208471..4839c398c 100644 --- a/src/Surfnet/Stepup/Tests/Identity/Value/PhoneNumberTest.php +++ b/src/Surfnet/Stepup/Tests/Identity/Value/PhoneNumberTest.php @@ -19,8 +19,10 @@ namespace Surfnet\Stepup\Tests\Identity\Value; use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\TestCase as UnitTest; -use StdClass; use Surfnet\Stepup\Exception\InvalidArgumentException; use Surfnet\Stepup\Identity\Value\PhoneNumber; @@ -28,9 +30,9 @@ class PhoneNumberTest extends UnitTest { use MockeryPHPUnitIntegration; - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\DataProvider('invalidValueProvider')] - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Test] + #[DataProvider('invalidValueProvider')] + #[Group('domain')] public function a_phone_number_cannot_be_created_with_anything_but_a_nonempty_string( string $invalidValue, ): void { @@ -39,8 +41,8 @@ public function a_phone_number_cannot_be_created_with_anything_but_a_nonempty_st new PhoneNumber($invalidValue); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Test] + #[Group('domain')] public function two_phone_numbers_with_the_same_value_are_equal(): void { $one = new PhoneNumber('+31 (0) 12345678'); diff --git a/src/Surfnet/Stepup/Tests/Identity/Value/RecoveryTokenIdentifierFactoryTest.php b/src/Surfnet/Stepup/Tests/Identity/Value/RecoveryTokenIdentifierFactoryTest.php index 93fafbf67..acef7ebf5 100644 --- a/src/Surfnet/Stepup/Tests/Identity/Value/RecoveryTokenIdentifierFactoryTest.php +++ b/src/Surfnet/Stepup/Tests/Identity/Value/RecoveryTokenIdentifierFactoryTest.php @@ -19,6 +19,7 @@ namespace Surfnet\Stepup\Tests\Identity\Value; use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration; +use PHPUnit\Framework\Attributes\Group; use PHPUnit\Framework\TestCase; use Surfnet\Stepup\Identity\Value\HashedSecret; use Surfnet\Stepup\Identity\Value\PhoneNumber; @@ -30,7 +31,7 @@ final class RecoveryTokenIdentifierFactoryTest extends TestCase { use MockeryPHPUnitIntegration; - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Group('domain')] public function test_generates_identifiers_of_all_types(): void { $this->assertEquals( diff --git a/src/Surfnet/Stepup/Tests/Identity/Value/RegistrationAuthorityRoleTest.php b/src/Surfnet/Stepup/Tests/Identity/Value/RegistrationAuthorityRoleTest.php index 34846a41c..a1c355354 100644 --- a/src/Surfnet/Stepup/Tests/Identity/Value/RegistrationAuthorityRoleTest.php +++ b/src/Surfnet/Stepup/Tests/Identity/Value/RegistrationAuthorityRoleTest.php @@ -21,6 +21,8 @@ namespace Surfnet\Stepup\Tests\Identity\Value; use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration; +use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\TestCase as UnitTest; use Surfnet\Stepup\Identity\Value\RegistrationAuthorityRole; @@ -28,8 +30,8 @@ class RegistrationAuthorityRoleTest extends UnitTest { use MockeryPHPUnitIntegration; - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Test] + #[Group('domain')] public function two_roles_with_the_same_value_are_equal(): void { $role = new RegistrationAuthorityRole(RegistrationAuthorityRole::ROLE_RAA); diff --git a/src/Surfnet/Stepup/Tests/Identity/Value/SafeStoreTest.php b/src/Surfnet/Stepup/Tests/Identity/Value/SafeStoreTest.php index 246559379..b005b7dd3 100644 --- a/src/Surfnet/Stepup/Tests/Identity/Value/SafeStoreTest.php +++ b/src/Surfnet/Stepup/Tests/Identity/Value/SafeStoreTest.php @@ -19,6 +19,7 @@ namespace Surfnet\Stepup\Tests\Identity\Value; use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration; +use PHPUnit\Framework\Attributes\Group; use PHPUnit\Framework\TestCase as UnitTest; use Surfnet\Stepup\Identity\Value\HashedSecret; use Surfnet\Stepup\Identity\Value\PhoneNumber; @@ -31,7 +32,7 @@ class SafeStoreTest extends UnitTest { use MockeryPHPUnitIntegration; - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Group('domain')] public function test_creation_of_safe_store(): void { $unhashed = new UnhashedSecret('super-secret'); @@ -40,7 +41,7 @@ public function test_creation_of_safe_store(): void $this->assertTrue(password_verify('super-secret', $instance->getValue())); } - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Group('domain')] public function test_equals(): void { $safeStore = new SafeStore(new UnhashedSecret('a')); diff --git a/src/Surfnet/Stepup/Tests/Identity/Value/SecondFactorIdentifierFactoryTest.php b/src/Surfnet/Stepup/Tests/Identity/Value/SecondFactorIdentifierFactoryTest.php index 134b2a53f..dd434ae96 100644 --- a/src/Surfnet/Stepup/Tests/Identity/Value/SecondFactorIdentifierFactoryTest.php +++ b/src/Surfnet/Stepup/Tests/Identity/Value/SecondFactorIdentifierFactoryTest.php @@ -19,7 +19,9 @@ namespace Surfnet\Stepup\Tests\Identity\Value; use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration; -use PHPUnit\Framework\TestCase as TestCase; +use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Test; +use PHPUnit\Framework\TestCase; use Surfnet\Stepup\Identity\Value\GssfId; use Surfnet\Stepup\Identity\Value\PhoneNumber; use Surfnet\Stepup\Identity\Value\SecondFactorIdentifierFactory; @@ -30,8 +32,8 @@ final class SecondFactorIdentifierFactoryTest extends TestCase { use MockeryPHPUnitIntegration; - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Test] + #[Group('domain')] public function generates_identifiers_of_all_types(): void { $this->assertEquals( diff --git a/src/Surfnet/Stepup/Tests/Identity/Value/StepupProviderTest.php b/src/Surfnet/Stepup/Tests/Identity/Value/StepupProviderTest.php index 481b7bc1b..c94693f41 100644 --- a/src/Surfnet/Stepup/Tests/Identity/Value/StepupProviderTest.php +++ b/src/Surfnet/Stepup/Tests/Identity/Value/StepupProviderTest.php @@ -19,8 +19,10 @@ namespace Surfnet\Stepup\Tests\Identity\Value; use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\TestCase as UnitTest; -use StdClass; use Surfnet\Stepup\Exception\InvalidArgumentException; use Surfnet\Stepup\Identity\Value\StepupProvider; @@ -28,9 +30,9 @@ class StepupProviderTest extends UnitTest { use MockeryPHPUnitIntegration; - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\DataProvider('invalidValueProvider')] - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Test] + #[DataProvider('invalidValueProvider')] + #[Group('domain')] public function a_stepup_provider_cannot_be_created_with_anything_but_a_nonempty_string( string $invalidValue, ): void { @@ -39,8 +41,8 @@ public function a_stepup_provider_cannot_be_created_with_anything_but_a_nonempty new StepupProvider($invalidValue); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Test] + #[Group('domain')] public function two_stepup_providers_with_the_same_value_are_equal(): void { $institution = new StepupProvider('a'); diff --git a/src/Surfnet/Stepup/Tests/Identity/Value/TimeFrameTest.php b/src/Surfnet/Stepup/Tests/Identity/Value/TimeFrameTest.php index 3ad4f7657..9ad77e548 100644 --- a/src/Surfnet/Stepup/Tests/Identity/Value/TimeFrameTest.php +++ b/src/Surfnet/Stepup/Tests/Identity/Value/TimeFrameTest.php @@ -21,6 +21,9 @@ namespace Surfnet\Stepup\Tests\Identity\Value; use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\TestCase as UnitTest; use Surfnet\Stepup\Exception\InvalidArgumentException; use Surfnet\Stepup\Identity\Value\TimeFrame; @@ -29,9 +32,9 @@ class TimeFrameTest extends UnitTest { use MockeryPHPUnitIntegration; - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\DataProvider('invalidValueProviderInt')] - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Test] + #[DataProvider('invalidValueProviderInt')] + #[Group('domain')] public function it_cannot_be_given_an_non_positive_amount_of_seconds(int $invalidValue): void { $this->expectException(InvalidArgumentException::class); @@ -39,8 +42,8 @@ public function it_cannot_be_given_an_non_positive_amount_of_seconds(int $invali TimeFrame::ofSeconds($invalidValue); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Test] + #[Group('domain')] public function to_string_output_matches_amount_of_seconds_as_string(): void { $seconds = 1000; diff --git a/src/Surfnet/Stepup/Tests/Identity/Value/YubikeyPublicIdTest.php b/src/Surfnet/Stepup/Tests/Identity/Value/YubikeyPublicIdTest.php index 2978cb728..719f55740 100644 --- a/src/Surfnet/Stepup/Tests/Identity/Value/YubikeyPublicIdTest.php +++ b/src/Surfnet/Stepup/Tests/Identity/Value/YubikeyPublicIdTest.php @@ -19,6 +19,9 @@ namespace Surfnet\Stepup\Tests\Identity\Value; use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\TestCase as UnitTest; use Surfnet\Stepup\Exception\InvalidArgumentException; use Surfnet\Stepup\Identity\Value\YubikeyPublicId; @@ -27,8 +30,8 @@ class YubikeyPublicIdTest extends UnitTest { use MockeryPHPUnitIntegration; - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Test] + #[Group('domain')] public function two_yubikey_public_ids_with_the_same_value_are_equal(): void { $id = new YubikeyPublicId('00001234'); @@ -55,9 +58,9 @@ public static function invalidFormatProvider(): array ]; } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\DataProvider('invalidFormatProvider')] - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Test] + #[DataProvider('invalidFormatProvider')] + #[Group('domain')] public function it_cannot_be_constructed_with_an_invalid_format(string $invalidFormat): void { $this->expectException(InvalidArgumentException::class); @@ -76,9 +79,9 @@ public static function validFormatProvider(): array ]; } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\DataProvider('validFormatProvider')] - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Test] + #[DataProvider('validFormatProvider')] + #[Group('domain')] public function its_value_matches_its_input_value(string $validFormat): void { $id = new YubikeyPublicId($validFormat); diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Authorization/Filter/InstitutionAuthorizationRepositoryFilterTest.php b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Authorization/Filter/InstitutionAuthorizationRepositoryFilterTest.php index 22676cfb0..76d32974b 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Authorization/Filter/InstitutionAuthorizationRepositoryFilterTest.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Authorization/Filter/InstitutionAuthorizationRepositoryFilterTest.php @@ -21,6 +21,8 @@ use Doctrine\ORM\EntityManager; use Doctrine\ORM\QueryBuilder; use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration; +use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\MockObject\MockObject; use PHPUnit\Framework\TestCase; use Surfnet\Stepup\Identity\Collection\InstitutionCollection; @@ -50,8 +52,8 @@ public function setUp(): void $this->queryBuilder->from(InstitutionValue::class, 'i'); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Test] + #[Group('domain')] public function a_querybuilder_object_is_filtered_with_an_institution_authorization_context(): void { $this->mockedAuthorizationContext->method('getInstitutions') diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Authorization/Service/AuthorizationContextServiceTest.php b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Authorization/Service/AuthorizationContextServiceTest.php index 549ad2428..9c3a5271a 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Authorization/Service/AuthorizationContextServiceTest.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Authorization/Service/AuthorizationContextServiceTest.php @@ -21,6 +21,8 @@ use Mockery as m; use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration; use Mockery\MockInterface; +use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\TestCase; use Surfnet\Stepup\Configuration\Value\Institution as StepupConfigurationInstitution; use Surfnet\Stepup\Identity\Collection\InstitutionCollection; @@ -74,8 +76,8 @@ public function setUp(): void $this->authorizationRepository = $authorizationRepository; } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Test] + #[Group('domain')] public function it_can_build_a_context(): void { $actorInstitution = new Institution('institution-a'); @@ -125,8 +127,8 @@ public function it_can_build_a_context(): void $this->assertFalse($context->isActorSraa()); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Test] + #[Group('domain')] public function it_can_build_a_context_with_sraa_actor(): void { $actorInstitution = new Institution('institution-a'); @@ -232,8 +234,8 @@ public function test_it_can_retrieve_select_raa_institutions(): void $this->assertFalse($context->isActorSraa()); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Test] + #[Group('domain')] public function it_rejects_unknown_actor(): void { $this->expectExceptionMessage("The provided id is not associated with any known identity"); diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Authorization/Service/CommandAuthorizationServiceTest.php b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Authorization/Service/CommandAuthorizationServiceTest.php index 4922a71d1..451b44cb3 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Authorization/Service/CommandAuthorizationServiceTest.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Authorization/Service/CommandAuthorizationServiceTest.php @@ -21,6 +21,8 @@ use Mockery as m; use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration; use Mockery\MockInterface; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\TestCase; use Psr\Log\LoggerInterface; use Ramsey\Uuid\Uuid; @@ -138,8 +140,8 @@ public function test_shared_ra_and_ss_commands_are_correctly_authorized(): void $this->assertTrue($this->service->mayRaCommandBeExecutedOnBehalfOf($command, $actorId, $actorInstitution)); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\DataProvider('availableCommands')] + #[Test] + #[DataProvider('availableCommands')] public function a_sraa_should_be_able_to_execute_all_commands(string $file, Command $command): void { $this->assertInstanceOf(Command::class, $command); @@ -162,8 +164,8 @@ public function a_sraa_should_be_able_to_execute_all_commands(string $file, Comm } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\DataProvider('availableCommands')] + #[Test] + #[DataProvider('availableCommands')] public function an_identity_should_be_able_to_execute_own_selfservice_commands(string $file, mixed $command): void { $this->assertInstanceOf(Command::class, $command); @@ -193,8 +195,8 @@ public function an_identity_should_be_able_to_execute_own_selfservice_commands(s } } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\DataProvider('availableCommands')] + #[Test] + #[DataProvider('availableCommands')] public function an_identity_should_be_able_to_execute_configured_ra_commands(string $file, mixed $command): void { $this->assertInstanceOf(Command::class, $command); @@ -255,8 +257,8 @@ public function an_identity_should_be_able_to_execute_configured_ra_commands(str } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\DataProvider('availableCommands')] + #[Test] + #[DataProvider('availableCommands')] public function an_identity_should_be_able_to_execute_configured_ra_and_selfservice_commands(string $file, mixed $command): void { $this->assertInstanceOf(Command::class, $command); @@ -310,8 +312,8 @@ public function an_identity_should_be_able_to_execute_configured_ra_and_selfserv } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\DataProvider('availableCommands')] + #[Test] + #[DataProvider('availableCommands')] public function an_identity_should_not_be_able_to_execute_someone_elses_selfservice_commands(string $file, mixed $command): void { $this->assertInstanceOf(Command::class, $command); @@ -349,8 +351,8 @@ public function an_identity_should_not_be_able_to_execute_someone_elses_selfserv } } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\DataProvider('availableCommands')] + #[Test] + #[DataProvider('availableCommands')] public function an_identity_should_be_able_to_execute_unconfigured_ra_commands(string $file, mixed $command): void { $this->assertInstanceOf(Command::class, $command); @@ -410,7 +412,7 @@ public function an_identity_should_be_able_to_execute_unconfigured_ra_commands(s } - #[\PHPUnit\Framework\Attributes\Test] + #[Test] public function all_available_commands_should_be_tested(): void { $tested = [ diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Configuration/Entity/ConfiguredInstitutionTest.php b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Configuration/Entity/ConfiguredInstitutionTest.php index 95a7a84f1..60fbc3186 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Configuration/Entity/ConfiguredInstitutionTest.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Configuration/Entity/ConfiguredInstitutionTest.php @@ -19,15 +19,17 @@ namespace Surfnet\StepupMiddleware\ApiBundle\Tests\Configuration\Entity; use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration; -use PHPUnit\Framework\TestCase as TestCase; +use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Test; +use PHPUnit\Framework\TestCase; use Surfnet\Stepup\Configuration\Value\Institution; use Surfnet\StepupMiddleware\ApiBundle\Configuration\Entity\ConfiguredInstitution; class ConfiguredInstitutionTest extends TestCase { use MockeryPHPUnitIntegration; - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('entity')] + #[Test] + #[Group('entity')] public function a_configured_institution_is_correctly_serialized_to_json(): void { $deserializedConfiguredInstitution = ['institution' => 'surfnet.nl']; diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Configuration/Entity/RaLocationTest.php b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Configuration/Entity/RaLocationTest.php index 52a1986e3..6f180393a 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Configuration/Entity/RaLocationTest.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Configuration/Entity/RaLocationTest.php @@ -19,7 +19,9 @@ namespace Surfnet\StepupMiddleware\ApiBundle\Tests\Configuration\Entity; use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration; -use PHPUnit\Framework\TestCase as TestCase; +use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Test; +use PHPUnit\Framework\TestCase; use Surfnet\Stepup\Configuration\Value\ContactInformation; use Surfnet\Stepup\Configuration\Value\Institution; use Surfnet\Stepup\Configuration\Value\Location; @@ -29,8 +31,8 @@ class RaLocationTest extends TestCase { use MockeryPHPUnitIntegration; - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('entity')] + #[Test] + #[Group('entity')] public function an_ra_location_is_correctly_serialized_to_json(): void { $deserializedRaLocation = [ diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Configuration/Service/AllowedSecondFactorMapTest.php b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Configuration/Service/AllowedSecondFactorMapTest.php index 4a18efd13..d37d1fb20 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Configuration/Service/AllowedSecondFactorMapTest.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Configuration/Service/AllowedSecondFactorMapTest.php @@ -19,7 +19,9 @@ namespace Surfnet\StepupMiddleware\ApiBundle\Tests\Configuration\Service; use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration; -use PHPUnit\Framework\TestCase as TestCase; +use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Test; +use PHPUnit\Framework\TestCase; use Surfnet\Stepup\Configuration\Value\AllowedSecondFactorList; use Surfnet\Stepup\Configuration\Value\Institution; use Surfnet\StepupBundle\Value\SecondFactorType; @@ -29,8 +31,8 @@ class AllowedSecondFactorMapTest extends TestCase { use MockeryPHPUnitIntegration; - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Test] + #[Group('domain')] public function an_allowed_second_factor_that_contains_a_given_institution_will_result_in_a_filled_allowed_second_factor_list(): void { $institution = new Institution('institution-with-filled-list.test'); @@ -50,8 +52,8 @@ public function an_allowed_second_factor_that_contains_a_given_institution_will_ $this->assertTrue($expectedAllowedSecondFactorList->equals($actualAllowedSecondFactorList)); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Test] + #[Group('domain')] public function an_allowed_second_factor_map_that_does_not_contain_a_given_institution_will_result_in_a_blank_allowed_second_factor_list(): void { $institution = new Institution('institution-with-blank-list.test'); diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Configuration/Service/InstitutionAuthorizationOptionMapTest.php b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Configuration/Service/InstitutionAuthorizationOptionMapTest.php index 1036779a5..c858a12a5 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Configuration/Service/InstitutionAuthorizationOptionMapTest.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Configuration/Service/InstitutionAuthorizationOptionMapTest.php @@ -19,6 +19,8 @@ namespace Surfnet\StepupMiddleware\ApiBundle\Tests\Configuration\Service; use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration; +use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\TestCase; use Surfnet\Stepup\Configuration\Value\Institution; use Surfnet\Stepup\Configuration\Value\InstitutionRole; @@ -38,8 +40,8 @@ public function setUp(): void $this->institution = new Institution('inst'); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Test] + #[Group('domain')] public function an_array_initialized_with_authorizations_should_return_valid_institutions_per_role(): void { $testData = [ @@ -88,8 +90,8 @@ public function an_array_initialized_with_authorizations_should_return_valid_ins ); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('domain')] + #[Test] + #[Group('domain')] public function an_array_initialized_with_no_authorizations_should_return_valid_institutions_per_role(): void { $institutionAuthorizationMap = InstitutionAuthorizationOptionMap::fromInstitutionAuthorizations( diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/AuthorityRoleTypeTest.php b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/AuthorityRoleTypeTest.php index 704fb57a2..b232ed6b7 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/AuthorityRoleTypeTest.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/AuthorityRoleTypeTest.php @@ -22,6 +22,8 @@ use Doctrine\DBAL\Types\ConversionException; use Doctrine\DBAL\Types\Type; use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration; +use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\TestCase as UnitTest; use Surfnet\StepupMiddleware\ApiBundle\Doctrine\Type\AuthorityRoleType; use Surfnet\StepupMiddleware\ApiBundle\Identity\Value\AuthorityRole; @@ -44,8 +46,8 @@ public function setUp(): void $this->platform = new MariaDBPlatform(); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[Group('doctrine')] public function a_null_value_remains_null_in_to_sql_conversion(): void { $authorityRole = Type::getType(AuthorityRoleType::NAME); @@ -55,8 +57,8 @@ public function a_null_value_remains_null_in_to_sql_conversion(): void $this->assertNull($value); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[Group('doctrine')] public function a_non_null_value_is_converted_to_the_correct_format(): void { $authorityRole = Type::getType(AuthorityRoleType::NAME); @@ -68,8 +70,8 @@ public function a_non_null_value_is_converted_to_the_correct_format(): void $this->assertEquals(AuthorityRole::ROLE_RAA, $output); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[Group('doctrine')] public function a_null_value_remains_null_when_converting_from_db_to_php_value(): void { $authorityRole = Type::getType(AuthorityRoleType::NAME); @@ -79,8 +81,8 @@ public function a_null_value_remains_null_when_converting_from_db_to_php_value() $this->assertNull($value); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[Group('doctrine')] public function a_non_null_value_is_converted_to_an_authority_role_value_object(): void { $authorityRole = Type::getType(AuthorityRoleType::NAME); @@ -93,8 +95,8 @@ public function a_non_null_value_is_converted_to_an_authority_role_value_object( $this->assertEquals(new AuthorityRole($input), $output); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[Group('doctrine')] public function an_invalid_database_value_causes_an_exception_upon_conversion(): void { $this->expectException(ConversionException::class); diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/CommonNameTypeTest.php b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/CommonNameTypeTest.php index 2d2cee713..8c95bfc32 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/CommonNameTypeTest.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/CommonNameTypeTest.php @@ -22,6 +22,8 @@ use Doctrine\DBAL\Types\ConversionException; use Doctrine\DBAL\Types\Type; use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration; +use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\TestCase as UnitTest; use Surfnet\Stepup\Identity\Value\CommonName; use Surfnet\StepupMiddleware\ApiBundle\Doctrine\Type\CommonNameType; @@ -45,8 +47,8 @@ public function setUp(): void $this->platform = new MariaDBPlatform(); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[Group('doctrine')] public function a_null_value_remains_null_in_to_sql_conversion(): void { $commonName = Type::getType(CommonNameType::NAME); @@ -56,8 +58,8 @@ public function a_null_value_remains_null_in_to_sql_conversion(): void $this->assertNull($value); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[Group('doctrine')] public function a_non_null_value_is_converted_to_the_correct_format(): void { $commonName = Type::getType(CommonNameType::NAME); @@ -69,8 +71,8 @@ public function a_non_null_value_is_converted_to_the_correct_format(): void $this->assertEquals('Arthur Dent', $output); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[Group('doctrine')] public function a_null_value_remains_null_when_converting_from_db_to_php_value(): void { $commonName = Type::getType(CommonNameType::NAME); @@ -80,8 +82,8 @@ public function a_null_value_remains_null_when_converting_from_db_to_php_value() $this->assertNull($value); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[Group('doctrine')] public function a_non_null_value_is_converted_to_the_stepup_common_name_object(): void { $commonName = Type::getType(CommonNameType::NAME); @@ -94,8 +96,8 @@ public function a_non_null_value_is_converted_to_the_stepup_common_name_object() $this->assertEquals(new CommonName($input), $output); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[Group('doctrine')] public function an_invalid_database_value_causes_an_exception_upon_conversion(): void { $this->expectException(ConversionException::class); diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/ConfigurationContactInformationTypeTest.php b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/ConfigurationContactInformationTypeTest.php index e27634617..6528b6aca 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/ConfigurationContactInformationTypeTest.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/ConfigurationContactInformationTypeTest.php @@ -24,9 +24,13 @@ use Doctrine\DBAL\Types\ConversionException; use Doctrine\DBAL\Types\Type; use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration; +use PHPUnit\Framework\Attributes\DataProviderExternal; +use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\TestCase as UnitTest; use Surfnet\Stepup\Configuration\Value\ContactInformation; use Surfnet\StepupMiddleware\ApiBundle\Doctrine\Type\ConfigurationContactInformationType; +use Surfnet\StepupMiddleware\ApiBundle\Tests\TestDataProvider; class ConfigurationContactInformationTypeTest extends UnitTest { @@ -50,9 +54,9 @@ public function setUp(): void $this->platform = new MariaDBPlatform(); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\DataProviderExternal(\Surfnet\StepupMiddleware\ApiBundle\Tests\TestDataProvider::class, 'notNull')] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[DataProviderExternal(TestDataProvider::class, 'notNull')] + #[Group('doctrine')] public function a_value_can_only_be_converted_to_sql_if_it_is_contact_information_or_null(mixed $incorrectValue): void { $this->expectException(ConversionException::class); @@ -61,8 +65,8 @@ public function a_value_can_only_be_converted_to_sql_if_it_is_contact_informatio $configurationContactInformation->convertToDatabaseValue($incorrectValue, $this->platform); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[Group('doctrine')] public function a_null_value_remains_null_in_to_sql_conversion(): void { $configurationContactInformation = Type::getType(ConfigurationContactInformationType::NAME); @@ -72,8 +76,8 @@ public function a_null_value_remains_null_in_to_sql_conversion(): void $this->assertNull($value); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[Group('doctrine')] public function a_non_null_value_is_converted_to_the_correct_format(): void { $configurationContactInformation = Type::getType(ConfigurationContactInformationType::NAME); @@ -86,8 +90,8 @@ public function a_non_null_value_is_converted_to_the_correct_format(): void $this->assertEquals($expected, $output); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[Group('doctrine')] public function a_null_value_remains_null_when_converting_from_db_to_php_value(): void { $configurationContactInformation = Type::getType(ConfigurationContactInformationType::NAME); @@ -97,8 +101,8 @@ public function a_null_value_remains_null_when_converting_from_db_to_php_value() $this->assertNull($value); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[Group('doctrine')] public function a_non_null_value_is_converted_to_a_contact_information_value_object(): void { $configurationContactInformation = Type::getType(ConfigurationContactInformationType::NAME); @@ -111,8 +115,8 @@ public function a_non_null_value_is_converted_to_a_contact_information_value_obj $this->assertEquals(new ContactInformation($input), $output); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[Group('doctrine')] public function an_invalid_database_value_causes_an_exception_upon_conversion(): void { $this->expectException(ConversionException::class); diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/ConfigurationInstitutionTypeTest.php b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/ConfigurationInstitutionTypeTest.php index 3353aba0f..bbdd2e683 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/ConfigurationInstitutionTypeTest.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/ConfigurationInstitutionTypeTest.php @@ -22,9 +22,13 @@ use Doctrine\DBAL\Types\ConversionException; use Doctrine\DBAL\Types\Type; use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration; +use PHPUnit\Framework\Attributes\DataProviderExternal; +use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\TestCase as UnitTest; use Surfnet\Stepup\Configuration\Value\Institution; use Surfnet\StepupMiddleware\ApiBundle\Doctrine\Type\ConfigurationInstitutionType; +use Surfnet\StepupMiddleware\ApiBundle\Tests\TestDataProvider; class ConfigurationInstitutionTypeTest extends UnitTest { @@ -48,8 +52,8 @@ public function setUp(): void $this->platform = new MariaDBPlatform(); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[Group('doctrine')] public function a_null_value_remains_null_in_to_sql_conversion(): void { $configurationInstitution = Type::getType(ConfigurationInstitutionType::NAME); @@ -59,9 +63,9 @@ public function a_null_value_remains_null_in_to_sql_conversion(): void $this->assertNull($value); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\DataProviderExternal(\Surfnet\StepupMiddleware\ApiBundle\Tests\TestDataProvider::class, 'notNull')] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[DataProviderExternal(TestDataProvider::class, 'notNull')] + #[Group('doctrine')] public function a_value_can_only_be_converted_to_sql_if_it_is_an_institution_or_null(mixed $incorrectValue): void { $this->expectException(ConversionException::class); @@ -70,8 +74,8 @@ public function a_value_can_only_be_converted_to_sql_if_it_is_an_institution_or_ $configurationContactInformation->convertToDatabaseValue($incorrectValue, $this->platform); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[Group('doctrine')] public function a_non_null_value_is_converted_to_the_correct_format(): void { $configurationInstitution = Type::getType(ConfigurationInstitutionType::NAME); @@ -85,8 +89,8 @@ public function a_non_null_value_is_converted_to_the_correct_format(): void $this->assertEquals($expected, $output); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[Group('doctrine')] public function a_null_value_remains_null_when_converting_from_db_to_php_value(): void { $configurationInstitution = Type::getType(ConfigurationInstitutionType::NAME); @@ -96,8 +100,8 @@ public function a_null_value_remains_null_when_converting_from_db_to_php_value() $this->assertNull($value); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[Group('doctrine')] public function a_non_null_value_is_converted_to_a_configuration_institution_value_object(): void { $configurationInstitution = Type::getType(ConfigurationInstitutionType::NAME); @@ -110,8 +114,8 @@ public function a_non_null_value_is_converted_to_a_configuration_institution_val $this->assertEquals(new Institution($input), $output); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[Group('doctrine')] public function an_invalid_database_value_causes_an_exception_upon_conversion(): void { $this->expectException(ConversionException::class); diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/ConfigurationLocationTypeTest.php b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/ConfigurationLocationTypeTest.php index 09d2709f8..0117542df 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/ConfigurationLocationTypeTest.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/ConfigurationLocationTypeTest.php @@ -24,9 +24,13 @@ use Doctrine\DBAL\Types\ConversionException; use Doctrine\DBAL\Types\Type; use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration; +use PHPUnit\Framework\Attributes\DataProviderExternal; +use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\TestCase as UnitTest; use Surfnet\Stepup\Configuration\Value\Location; use Surfnet\StepupMiddleware\ApiBundle\Doctrine\Type\ConfigurationLocationType; +use Surfnet\StepupMiddleware\ApiBundle\Tests\TestDataProvider; class ConfigurationLocationTypeTest extends UnitTest { @@ -50,8 +54,8 @@ public function setUp(): void $this->platform = new MariaDBPlatform(); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[Group('doctrine')] public function a_null_value_remains_null_in_to_sql_conversion(): void { $configurationLocation = Type::getType(ConfigurationLocationType::NAME); @@ -61,9 +65,9 @@ public function a_null_value_remains_null_in_to_sql_conversion(): void $this->assertNull($value); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\DataProviderExternal(\Surfnet\StepupMiddleware\ApiBundle\Tests\TestDataProvider::class, 'notNull')] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[DataProviderExternal(TestDataProvider::class, 'notNull')] + #[Group('doctrine')] public function a_value_can_only_be_converted_to_sql_if_it_is_a_location_or_null(mixed $incorrectValue): void { $this->expectException(ConversionException::class); @@ -72,8 +76,8 @@ public function a_value_can_only_be_converted_to_sql_if_it_is_a_location_or_null $configurationContactInformation->convertToDatabaseValue($incorrectValue, $this->platform); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[Group('doctrine')] public function a_non_null_value_is_converted_to_the_correct_format(): void { $configurationLocation = Type::getType(ConfigurationLocationType::NAME); @@ -86,8 +90,8 @@ public function a_non_null_value_is_converted_to_the_correct_format(): void $this->assertEquals($expected, $output); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[Group('doctrine')] public function a_null_value_remains_null_when_converting_from_db_to_php_value(): void { $configurationLocation = Type::getType(ConfigurationLocationType::NAME); @@ -97,8 +101,8 @@ public function a_null_value_remains_null_when_converting_from_db_to_php_value() $this->assertNull($value); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[Group('doctrine')] public function a_non_null_value_is_converted_to_a_configuration_location_value_object(): void { $configurationLocation = Type::getType(ConfigurationLocationType::NAME); @@ -111,8 +115,8 @@ public function a_non_null_value_is_converted_to_a_configuration_location_value_ $this->assertEquals(new Location($input), $output); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[Group('doctrine')] public function an_invalid_database_value_causes_an_exception_upon_conversion(): void { $this->expectException(ConversionException::class); diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/ContactInformationTypeTest.php b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/ContactInformationTypeTest.php index afb374116..d4888e7a1 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/ContactInformationTypeTest.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/ContactInformationTypeTest.php @@ -24,6 +24,8 @@ use Doctrine\DBAL\Types\ConversionException; use Doctrine\DBAL\Types\Type; use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration; +use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\TestCase as UnitTest; use Surfnet\Stepup\Identity\Value\ContactInformation; use Surfnet\StepupMiddleware\ApiBundle\Doctrine\Type\ContactInformationType; @@ -51,8 +53,8 @@ public function setUp(): void $this->platform = new MariaDBPlatform(); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[Group('doctrine')] public function a_null_value_remains_null_in_to_sql_conversion(): void { $contactInformation = Type::getType(ContactInformationType::NAME); @@ -62,8 +64,8 @@ public function a_null_value_remains_null_in_to_sql_conversion(): void $this->assertNull($value); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[Group('doctrine')] public function a_non_null_value_is_converted_to_the_correct_format(): void { $contactInformation = Type::getType(ContactInformationType::NAME); @@ -76,8 +78,8 @@ public function a_non_null_value_is_converted_to_the_correct_format(): void $this->assertEquals($expected, $output); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[Group('doctrine')] public function a_null_value_remains_null_when_converting_from_db_to_php_value(): void { $contactInformation = Type::getType(ContactInformationType::NAME); @@ -87,8 +89,8 @@ public function a_null_value_remains_null_when_converting_from_db_to_php_value() $this->assertNull($value); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[Group('doctrine')] public function a_non_null_value_is_converted_to_a_contact_information_value_object(): void { $contactInformation = Type::getType(ContactInformationType::NAME); @@ -101,8 +103,8 @@ public function a_non_null_value_is_converted_to_a_contact_information_value_obj $this->assertEquals(new ContactInformation($input), $output); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[Group('doctrine')] public function an_invalid_database_value_causes_an_exception_upon_conversion(): void { $this->expectException(ConversionException::class); diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/DateTimeTypeTest.php b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/DateTimeTypeTest.php index 54477b4e4..30b42be5d 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/DateTimeTypeTest.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/DateTimeTypeTest.php @@ -24,6 +24,8 @@ use Doctrine\DBAL\Types\ConversionException; use Doctrine\DBAL\Types\Type; use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration; +use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\TestCase as UnitTest; use Surfnet\Stepup\DateTime\DateTime; use Surfnet\StepupMiddleware\ApiBundle\Doctrine\Type\DateTimeType; @@ -49,8 +51,8 @@ public function setUp(): void $this->platform = new MariaDBPlatform(); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[Group('doctrine')] public function a_null_value_remains_null_in_to_sql_conversion(): void { $dateTime = Type::getType(DateTimeType::NAME); @@ -60,8 +62,8 @@ public function a_null_value_remains_null_in_to_sql_conversion(): void $this->assertNull($value); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[Group('doctrine')] public function a_non_null_value_is_converted_to_the_correct_format(): void { $dateTime = Type::getType(DateTimeType::NAME); @@ -73,8 +75,8 @@ public function a_non_null_value_is_converted_to_the_correct_format(): void $this->assertEquals('1970-01-01 00:00:00', $output); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[Group('doctrine')] public function a_null_value_remains_null_when_converting_from_db_to_php_value(): void { $dateTime = Type::getType(DateTimeType::NAME); @@ -84,8 +86,8 @@ public function a_null_value_remains_null_when_converting_from_db_to_php_value() $this->assertNull($value); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[Group('doctrine')] public function a_string_is_converted_to_the_stepup_datetime_object(): void { $dateTime = Type::getType(DateTimeType::NAME); @@ -100,8 +102,8 @@ public function a_string_is_converted_to_the_stepup_datetime_object(): void $this->assertEquals($expectedDateTime, $actualDateTime); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[Group('doctrine')] public function an_invalid_database_value_causes_an_exception_upon_conversion(): void { $this->expectException(ConversionException::class); diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/DocumentNumberTypeTest.php b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/DocumentNumberTypeTest.php index 2a9955a59..ec775766c 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/DocumentNumberTypeTest.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/DocumentNumberTypeTest.php @@ -24,10 +24,13 @@ use Doctrine\DBAL\Types\ConversionException; use Doctrine\DBAL\Types\Type; use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration; +use PHPUnit\Framework\Attributes\DataProviderExternal; +use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\TestCase as UnitTest; -use Surfnet\Stepup\Exception\InvalidArgumentException; use Surfnet\Stepup\Identity\Value\DocumentNumber; use Surfnet\StepupMiddleware\ApiBundle\Doctrine\Type\DocumentNumberType; +use Surfnet\StepupMiddleware\ApiBundle\Tests\TestDataProvider; use TypeError; class DocumentNumberTypeTest extends UnitTest @@ -49,8 +52,8 @@ public function setUp(): void $this->platform = new MariaDBPlatform(); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[Group('doctrine')] public function a_null_value_remains_null_in_to_sql_conversion(): void { $type = Type::getType(DocumentNumberType::NAME); @@ -60,8 +63,8 @@ public function a_null_value_remains_null_in_to_sql_conversion(): void $this->assertNull($value); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[Group('doctrine')] public function a_normal_document_number_is_converted_to_a_database_value(): void { $type = Type::getType(DocumentNumberType::NAME); @@ -73,8 +76,8 @@ public function a_normal_document_number_is_converted_to_a_database_value(): voi $this->assertEquals('a', $output); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[Group('doctrine')] public function a_null_value_remains_null_when_converting_from_db_to_php_value(): void { $type = Type::getType(DocumentNumberType::NAME); @@ -84,9 +87,9 @@ public function a_null_value_remains_null_when_converting_from_db_to_php_value() $this->assertNull($value); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\DataProviderExternal(\Surfnet\StepupMiddleware\ApiBundle\Tests\TestDataProvider::class, 'notNull')] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[DataProviderExternal(TestDataProvider::class, 'notNull')] + #[Group('doctrine')] public function a_value_can_only_be_converted_to_sql_if_it_is_a_document_number_or_null(mixed $incorrectValue): void { $this->expectException(ConversionException::class); @@ -95,8 +98,8 @@ public function a_value_can_only_be_converted_to_sql_if_it_is_a_document_number_ $configurationContactInformation->convertToDatabaseValue($incorrectValue, $this->platform); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[Group('doctrine')] public function a_non_null_value_is_converted_to_the_stepup_document_number_object(): void { $type = Type::getType(DocumentNumberType::NAME); @@ -108,8 +111,8 @@ public function a_non_null_value_is_converted_to_the_stepup_document_number_obje $this->assertTrue((new DocumentNumber($input))->equals($output)); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[Group('doctrine')] public function an_invalid_database_value_causes_an_exception_upon_conversion(): void { $this->expectException(TypeError::class); diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/EmailTypeTest.php b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/EmailTypeTest.php index b20beefe4..9933be7ee 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/EmailTypeTest.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/EmailTypeTest.php @@ -22,6 +22,8 @@ use Doctrine\DBAL\Types\ConversionException; use Doctrine\DBAL\Types\Type; use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration; +use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\TestCase as UnitTest; use Surfnet\Stepup\Identity\Value\Email; use Surfnet\StepupMiddleware\ApiBundle\Doctrine\Type\EmailType; @@ -45,8 +47,8 @@ public function setUp(): void $this->platform = new MariaDBPlatform(); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[Group('doctrine')] public function a_null_value_remains_null_in_to_sql_conversion(): void { $email = Type::getType(EmailType::NAME); @@ -56,8 +58,8 @@ public function a_null_value_remains_null_in_to_sql_conversion(): void $this->assertNull($value); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[Group('doctrine')] public function a_non_null_value_is_converted_to_the_correct_format(): void { $email = Type::getType(EmailType::NAME); @@ -69,8 +71,8 @@ public function a_non_null_value_is_converted_to_the_correct_format(): void $this->assertEquals('arthur@babelfish.invalid', $output); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[Group('doctrine')] public function a_null_value_remains_null_when_converting_from_db_to_php_value(): void { $email = Type::getType(EmailType::NAME); @@ -80,8 +82,8 @@ public function a_null_value_remains_null_when_converting_from_db_to_php_value() $this->assertNull($value); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[Group('doctrine')] public function a_non_null_value_is_converted_to_the_stepup_email_object(): void { $email = Type::getType(EmailType::NAME); @@ -94,8 +96,8 @@ public function a_non_null_value_is_converted_to_the_stepup_email_object(): void $this->assertEquals(new Email($input), $output); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[Group('doctrine')] public function an_invalid_database_value_causes_an_exception_upon_conversion(): void { $this->expectException(ConversionException::class); diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/InstitutionRoleTypeTest.php b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/InstitutionRoleTypeTest.php index cc9721109..edc79c55c 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/InstitutionRoleTypeTest.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/InstitutionRoleTypeTest.php @@ -22,6 +22,8 @@ use Doctrine\DBAL\Types\ConversionException; use Doctrine\DBAL\Types\Type; use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration; +use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\TestCase as UnitTest; use Surfnet\Stepup\Configuration\Value\InstitutionRole; use Surfnet\StepupMiddleware\ApiBundle\Doctrine\Type\InstitutionRoleType; @@ -48,8 +50,8 @@ public function setUp(): void $this->platform = new MariaDBPlatform(); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[Group('doctrine')] public function a_null_value_remains_null_in_to_sql_conversion(): void { $configurationInstitution = Type::getType(InstitutionRoleType::NAME); @@ -59,8 +61,8 @@ public function a_null_value_remains_null_in_to_sql_conversion(): void $this->assertNull($value); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[Group('doctrine')] public function a_non_null_value_is_converted_to_the_correct_format(): void { $configurationInstitution = Type::getType(InstitutionRoleType::NAME); @@ -73,8 +75,8 @@ public function a_non_null_value_is_converted_to_the_correct_format(): void $this->assertEquals($expected, $output); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[Group('doctrine')] public function a_null_value_remains_null_when_converting_from_db_to_php_value(): void { $configurationInstitution = Type::getType(InstitutionRoleType::NAME); @@ -84,8 +86,8 @@ public function a_null_value_remains_null_when_converting_from_db_to_php_value() $this->assertNull($value); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[Group('doctrine')] public function a_non_null_value_is_converted_to_a_configuration_institution_value_object(): void { $configurationInstitution = Type::getType(InstitutionRoleType::NAME); @@ -98,8 +100,8 @@ public function a_non_null_value_is_converted_to_a_configuration_institution_val $this->assertEquals(new InstitutionRole($input), $output); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[Group('doctrine')] public function an_invalid_database_value_causes_an_exception_upon_conversion(): void { $this->expectException(ConversionException::class); diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/InstitutionTypeTest.php b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/InstitutionTypeTest.php index 54856a08c..b0b8858d6 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/InstitutionTypeTest.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/InstitutionTypeTest.php @@ -22,6 +22,8 @@ use Doctrine\DBAL\Types\ConversionException; use Doctrine\DBAL\Types\Type; use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration; +use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\TestCase as UnitTest; use Surfnet\Stepup\Identity\Value\Institution; use Surfnet\StepupMiddleware\ApiBundle\Doctrine\Type\InstitutionType; @@ -48,8 +50,8 @@ public function setUp(): void $this->platform = new MariaDBPlatform(); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[Group('doctrine')] public function a_null_value_remains_null_in_to_sql_conversion(): void { $configurationInstitution = Type::getType(InstitutionType::NAME); @@ -59,8 +61,8 @@ public function a_null_value_remains_null_in_to_sql_conversion(): void $this->assertNull($value); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[Group('doctrine')] public function a_non_null_value_is_converted_to_the_correct_format(): void { $configurationInstitution = Type::getType(InstitutionType::NAME); @@ -73,8 +75,8 @@ public function a_non_null_value_is_converted_to_the_correct_format(): void $this->assertEquals($expected, $output); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[Group('doctrine')] public function a_null_value_remains_null_when_converting_from_db_to_php_value(): void { $configurationInstitution = Type::getType(InstitutionType::NAME); @@ -84,8 +86,8 @@ public function a_null_value_remains_null_when_converting_from_db_to_php_value() $this->assertNull($value); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[Group('doctrine')] public function a_non_null_value_is_converted_to_a_configuration_institution_value_object(): void { $configurationInstitution = Type::getType(InstitutionType::NAME); @@ -98,8 +100,8 @@ public function a_non_null_value_is_converted_to_a_configuration_institution_val $this->assertEquals(new Institution($input), $output); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[Group('doctrine')] public function an_invalid_database_value_causes_an_exception_upon_conversion(): void { $this->expectException(ConversionException::class); diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/LocaleTypeTest.php b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/LocaleTypeTest.php index 7c41be054..98f3154ff 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/LocaleTypeTest.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/LocaleTypeTest.php @@ -24,6 +24,8 @@ use Doctrine\DBAL\Types\ConversionException; use Doctrine\DBAL\Types\Type; use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration; +use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\TestCase as UnitTest; use Surfnet\Stepup\Identity\Value\Locale; use Surfnet\StepupMiddleware\ApiBundle\Doctrine\Type\LocaleType; @@ -47,8 +49,8 @@ public function setUp(): void $this->platform = new MariaDBPlatform(); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[Group('doctrine')] public function a_null_value_remains_null_in_to_sql_conversion(): void { $locale = Type::getType(LocaleType::NAME); @@ -58,8 +60,8 @@ public function a_null_value_remains_null_in_to_sql_conversion(): void $this->assertNull($value); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[Group('doctrine')] public function a_non_null_value_is_converted_to_the_correct_format(): void { $locale = Type::getType(LocaleType::NAME); @@ -72,8 +74,8 @@ public function a_non_null_value_is_converted_to_the_correct_format(): void $this->assertEquals($expected, $output); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[Group('doctrine')] public function a_null_value_remains_null_when_converting_from_db_to_php_value(): void { $locale = Type::getType(LocaleType::NAME); @@ -83,8 +85,8 @@ public function a_null_value_remains_null_when_converting_from_db_to_php_value() $this->assertNull($value); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[Group('doctrine')] public function a_non_null_value_is_converted_to_a_locale_value_object(): void { $locale = Type::getType(LocaleType::NAME); @@ -97,8 +99,8 @@ public function a_non_null_value_is_converted_to_a_locale_value_object(): void $this->assertEquals(new Locale($input), $output); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[Group('doctrine')] public function an_invalid_database_value_causes_an_exception_upon_conversion(): void { $this->expectException(ConversionException::class); diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/LocationTypeTest.php b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/LocationTypeTest.php index bd50785d4..1cdac3a28 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/LocationTypeTest.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/LocationTypeTest.php @@ -24,6 +24,8 @@ use Doctrine\DBAL\Types\ConversionException; use Doctrine\DBAL\Types\Type; use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration; +use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\TestCase as UnitTest; use Surfnet\Stepup\Identity\Value\Location; use Surfnet\StepupMiddleware\ApiBundle\Doctrine\Type\LocationType; @@ -51,8 +53,8 @@ public function setUp(): void $this->platform = new MariaDBPlatform(); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[Group('doctrine')] public function a_null_value_remains_null_in_to_sql_conversion(): void { $location = Type::getType(LocationType::NAME); @@ -62,8 +64,8 @@ public function a_null_value_remains_null_in_to_sql_conversion(): void $this->assertNull($value); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[Group('doctrine')] public function a_non_null_value_is_converted_to_the_correct_format(): void { $location = Type::getType(LocationType::NAME); @@ -76,8 +78,8 @@ public function a_non_null_value_is_converted_to_the_correct_format(): void $this->assertEquals($expected, $output); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[Group('doctrine')] public function a_null_value_remains_null_when_converting_from_db_to_php_value(): void { $location = Type::getType(LocationType::NAME); @@ -87,8 +89,8 @@ public function a_null_value_remains_null_when_converting_from_db_to_php_value() $this->assertNull($value); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[Group('doctrine')] public function a_non_null_value_is_converted_to_a_location_value_object(): void { $location = Type::getType(LocationType::NAME); @@ -101,8 +103,8 @@ public function a_non_null_value_is_converted_to_a_location_value_object(): void $this->assertEquals(new Location($input), $output); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[Group('doctrine')] public function an_invalid_database_value_causes_an_exception_upon_conversion(): void { $this->expectException(ConversionException::class); diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/NameIdTypeTest.php b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/NameIdTypeTest.php index c801cb7a7..41498b51c 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/NameIdTypeTest.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/NameIdTypeTest.php @@ -22,6 +22,8 @@ use Doctrine\DBAL\Types\ConversionException; use Doctrine\DBAL\Types\Type; use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration; +use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\TestCase as UnitTest; use Surfnet\Stepup\Identity\Value\NameId; use Surfnet\StepupMiddleware\ApiBundle\Doctrine\Type\NameIdType; @@ -46,8 +48,8 @@ public function setUp(): void $this->platform = new MariaDBPlatform(); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[Group('doctrine')] public function a_null_value_remains_null_in_to_sql_conversion(): void { $nameId = Type::getType(NameIdType::NAME); @@ -57,8 +59,8 @@ public function a_null_value_remains_null_in_to_sql_conversion(): void $this->assertNull($value); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[Group('doctrine')] public function a_non_null_value_is_converted_to_the_correct_format(): void { $nameId = Type::getType(NameIdType::NAME); @@ -71,8 +73,8 @@ public function a_non_null_value_is_converted_to_the_correct_format(): void $this->assertEquals($expected, $output); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[Group('doctrine')] public function a_null_value_remains_null_when_converting_from_db_to_php_value(): void { $nameId = Type::getType(NameIdType::NAME); @@ -82,8 +84,8 @@ public function a_null_value_remains_null_when_converting_from_db_to_php_value() $this->assertNull($value); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[Group('doctrine')] public function a_non_null_value_is_converted_to_a_name_id_value_object(): void { $nameId = Type::getType(NameIdType::NAME); @@ -96,8 +98,8 @@ public function a_non_null_value_is_converted_to_a_name_id_value_object(): void $this->assertEquals(new NameId($input), $output); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[Group('doctrine')] public function an_invalid_database_value_causes_an_exception_upon_conversion(): void { $this->expectException(ConversionException::class); @@ -107,8 +109,8 @@ public function an_invalid_database_value_causes_an_exception_upon_conversion(): $nameId->convertToPHPValue(false, $this->platform); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[Group('doctrine')] public function a_excessive_long_database_value_causes_an_exception_upon_conversion(): void { $this->expectException(ConversionException::class); diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/NumberOfTokensPerIdentityTypeTest.php b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/NumberOfTokensPerIdentityTypeTest.php index 78657e3ae..662fca135 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/NumberOfTokensPerIdentityTypeTest.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/NumberOfTokensPerIdentityTypeTest.php @@ -22,9 +22,13 @@ use Doctrine\DBAL\Types\ConversionException; use Doctrine\DBAL\Types\Type; use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration; +use PHPUnit\Framework\Attributes\DataProviderExternal; +use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\TestCase as UnitTest; use Surfnet\Stepup\Configuration\Value\NumberOfTokensPerIdentityOption; use Surfnet\StepupMiddleware\ApiBundle\Doctrine\Type\NumberOfTokensPerIdentityType; +use Surfnet\StepupMiddleware\ApiBundle\Tests\TestDataProvider; class NumberOfTokensPerIdentityTypeTest extends UnitTest { @@ -49,8 +53,8 @@ public function setUp(): void $this->platform = new MariaDBPlatform(); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[Group('doctrine')] public function a_null_value_remains_null_in_to_sql_conversion(): void { $numberOfTokensPerIdentity = Type::getType(NumberOfTokensPerIdentityType::NAME); @@ -60,9 +64,9 @@ public function a_null_value_remains_null_in_to_sql_conversion(): void $this->assertNull($value); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\DataProviderExternal(\Surfnet\StepupMiddleware\ApiBundle\Tests\TestDataProvider::class, 'notNull')] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[DataProviderExternal(TestDataProvider::class, 'notNull')] + #[Group('doctrine')] public function a_value_can_only_be_converted_to_sql_if_it_is_an_option_type_or_null(mixed $incorrectValue): void { $this->expectException(ConversionException::class); @@ -71,8 +75,8 @@ public function a_value_can_only_be_converted_to_sql_if_it_is_an_option_type_or_ $numberOfTokensPerIdentity->convertToDatabaseValue($incorrectValue, $this->platform); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[Group('doctrine')] public function a_non_null_value_is_converted_to_the_correct_format(): void { $numberOfTokensPerIdentity = Type::getType(NumberOfTokensPerIdentityType::NAME); @@ -85,8 +89,8 @@ public function a_non_null_value_is_converted_to_the_correct_format(): void $this->assertEquals($expected, $output); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[Group('doctrine')] public function a_null_value_remains_null_when_converting_from_db_to_php_value(): void { $numberOfTokensPerIdentity = Type::getType(NumberOfTokensPerIdentityType::NAME); @@ -96,8 +100,8 @@ public function a_null_value_remains_null_when_converting_from_db_to_php_value() $this->assertNull($value); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[Group('doctrine')] public function a_non_null_value_is_converted_to_an_option_value_object(): void { $numberOfTokensPerIdentity = Type::getType(NumberOfTokensPerIdentityType::NAME); diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/RaLocationNameTypeTest.php b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/RaLocationNameTypeTest.php index 0e50fe150..d06246360 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/RaLocationNameTypeTest.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/RaLocationNameTypeTest.php @@ -22,9 +22,13 @@ use Doctrine\DBAL\Types\ConversionException; use Doctrine\DBAL\Types\Type; use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration; +use PHPUnit\Framework\Attributes\DataProviderExternal; +use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\TestCase as UnitTest; use Surfnet\Stepup\Configuration\Value\RaLocationName; use Surfnet\StepupMiddleware\ApiBundle\Doctrine\Type\RaLocationNameType; +use Surfnet\StepupMiddleware\ApiBundle\Tests\TestDataProvider; class RaLocationNameTypeTest extends UnitTest { @@ -48,8 +52,8 @@ public function setUp(): void $this->platform = new MariaDBPlatform(); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[Group('doctrine')] public function a_null_value_remains_null_in_to_sql_conversion(): void { $raLocationName = Type::getType(RaLocationNameType::NAME); @@ -59,8 +63,8 @@ public function a_null_value_remains_null_in_to_sql_conversion(): void $this->assertNull($value); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[Group('doctrine')] public function a_non_null_value_is_converted_to_the_correct_format(): void { $raLocationName = Type::getType(RaLocationNameType::NAME); @@ -73,9 +77,9 @@ public function a_non_null_value_is_converted_to_the_correct_format(): void $this->assertEquals($expected, $output); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\DataProviderExternal(\Surfnet\StepupMiddleware\ApiBundle\Tests\TestDataProvider::class, 'notNull')] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[DataProviderExternal(TestDataProvider::class, 'notNull')] + #[Group('doctrine')] public function a_value_can_only_be_converted_to_sql_if_it_is_an_ra_location_or_null(mixed $incorrectValue): void { $this->expectException(ConversionException::class); @@ -84,8 +88,8 @@ public function a_value_can_only_be_converted_to_sql_if_it_is_an_ra_location_or_ $configurationContactInformation->convertToDatabaseValue($incorrectValue, $this->platform); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[Group('doctrine')] public function a_null_value_remains_null_when_converting_from_db_to_php_value(): void { $raLocationName = Type::getType(RaLocationNameType::NAME); @@ -95,8 +99,8 @@ public function a_null_value_remains_null_when_converting_from_db_to_php_value() $this->assertNull($value); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[Group('doctrine')] public function a_non_null_value_is_converted_to_a_ra_location_name_value_object(): void { $raLocationName = Type::getType(RaLocationNameType::NAME); @@ -109,8 +113,8 @@ public function a_non_null_value_is_converted_to_a_ra_location_name_value_object $this->assertEquals(new RaLocationName($input), $output); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[Group('doctrine')] public function an_invalid_database_value_causes_an_exception_upon_conversion(): void { $this->expectException(ConversionException::class); diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/RecoveryTokenStatusTypeTest.php b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/RecoveryTokenStatusTypeTest.php index d7dae8754..b277057ef 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/RecoveryTokenStatusTypeTest.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/RecoveryTokenStatusTypeTest.php @@ -22,6 +22,9 @@ use Doctrine\DBAL\Types\ConversionException; use Doctrine\DBAL\Types\Type; use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\TestCase as UnitTest; use stdClass; use Surfnet\StepupMiddleware\ApiBundle\Doctrine\Type\RecoveryTokenStatusType; @@ -59,9 +62,9 @@ public static function invalidPhpValues(): array ]; } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\DataProvider('invalidPhpValues')] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[DataProvider('invalidPhpValues')] + #[Group('doctrine')] public function an_invalid_php_value_is_not_accepted_in_to_sql_conversion(mixed $value): void { $this->expectException(ConversionException::class); @@ -79,9 +82,9 @@ public static function validPhpValues(): array ]; } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\DataProvider('validPhpValues')] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[DataProvider('validPhpValues')] + #[Group('doctrine')] public function a_valid_php_value_is_converted_to_a_sql_value( RecoveryTokenStatus $phpValue, int $databaseValue, @@ -103,9 +106,9 @@ public static function invalidDatabaseValues(): array ]; } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\DataProvider('invalidDatabaseValues')] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[DataProvider('invalidDatabaseValues')] + #[Group('doctrine')] public function an_invalid_database_value_causes_an_exception_upon_conversion(mixed $input): void { $this->expectException(ConversionException::class); @@ -123,9 +126,9 @@ public static function validDatabaseValues(): array ]; } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\DataProvider('validDatabaseValues')] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[DataProvider('validDatabaseValues')] + #[Group('doctrine')] public function a_valid_database_value_is_converted_to_a_sql_value( string $databaseValue, RecoveryTokenStatus $phpValue, diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/SecondFactorStatusTypeTest.php b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/SecondFactorStatusTypeTest.php index 88bb9c890..185cfe273 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/SecondFactorStatusTypeTest.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/SecondFactorStatusTypeTest.php @@ -22,6 +22,9 @@ use Doctrine\DBAL\Types\ConversionException; use Doctrine\DBAL\Types\Type; use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\TestCase as UnitTest; use stdClass; use Surfnet\StepupMiddleware\ApiBundle\Doctrine\Type\SecondFactorStatusType; @@ -60,9 +63,9 @@ public static function invalidPhpValues(): array ]; } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\DataProvider('invalidPhpValues')] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[DataProvider('invalidPhpValues')] + #[Group('doctrine')] public function an_invalid_php_value_is_not_accepted_in_to_sql_conversion(mixed $value): void { $this->expectException(ConversionException::class); @@ -82,9 +85,9 @@ public static function validPhpValues(): array ]; } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\DataProvider('validPhpValues')] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[DataProvider('validPhpValues')] + #[Group('doctrine')] public function a_valid_php_value_is_converted_to_a_sql_value(mixed $phpValue, int $databaseValue): void { $type = Type::getType(SecondFactorStatusType::NAME); @@ -104,9 +107,9 @@ public static function invalidDatabaseValues(): array ]; } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\DataProvider('invalidDatabaseValues')] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[DataProvider('invalidDatabaseValues')] + #[Group('doctrine')] public function an_invalid_database_value_causes_an_exception_upon_conversion(mixed $input): void { $this->expectException(ConversionException::class); @@ -126,9 +129,9 @@ public static function validDatabaseValues(): array ]; } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\DataProvider('validDatabaseValues')] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[DataProvider('validDatabaseValues')] + #[Group('doctrine')] public function a_valid_database_value_is_converted_to_a_sql_value(string $databaseValue, mixed $phpValue): void { $type = Type::getType(SecondFactorStatusType::NAME); diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/SelfVetOptionTypeTest.php b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/SelfVetOptionTypeTest.php index 6b79cce93..d39c34ba3 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/SelfVetOptionTypeTest.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/SelfVetOptionTypeTest.php @@ -22,9 +22,13 @@ use Doctrine\DBAL\Types\ConversionException; use Doctrine\DBAL\Types\Type; use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration; +use PHPUnit\Framework\Attributes\DataProviderExternal; +use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\TestCase as UnitTest; use Surfnet\Stepup\Configuration\Value\SelfVetOption; use Surfnet\StepupMiddleware\ApiBundle\Doctrine\Type\SelfVetOptionType; +use Surfnet\StepupMiddleware\ApiBundle\Tests\TestDataProvider; class SelfVetOptionTypeTest extends UnitTest { @@ -49,8 +53,8 @@ public function setUp(): void $this->platform = new MariaDBPlatform(); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[Group('doctrine')] public function a_null_value_remains_null_in_to_sql_conversion(): void { $configurationInstitution = Type::getType(SelfVetOptionType::NAME); @@ -60,9 +64,9 @@ public function a_null_value_remains_null_in_to_sql_conversion(): void $this->assertNull($value); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\DataProviderExternal(\Surfnet\StepupMiddleware\ApiBundle\Tests\TestDataProvider::class, 'notNull')] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[DataProviderExternal(TestDataProvider::class, 'notNull')] + #[Group('doctrine')] public function a_value_can_only_be_converted_to_sql_if_it_is_an_option_type_or_null(mixed $incorrectValue): void { $this->expectException(ConversionException::class); @@ -71,8 +75,8 @@ public function a_value_can_only_be_converted_to_sql_if_it_is_an_option_type_or_ $configurationContactInformation->convertToDatabaseValue($incorrectValue, $this->platform); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[Group('doctrine')] public function a_non_null_value_is_converted_to_the_correct_format(): void { $configurationInstitution = Type::getType(SelfVetOptionType::NAME); @@ -85,8 +89,8 @@ public function a_non_null_value_is_converted_to_the_correct_format(): void $this->assertEquals($expected, $output); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[Group('doctrine')] public function a_null_value_remains_null_when_converting_from_db_to_php_value(): void { $configurationInstitution = Type::getType(SelfVetOptionType::NAME); @@ -96,8 +100,8 @@ public function a_null_value_remains_null_when_converting_from_db_to_php_value() $this->assertNull($value); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[Group('doctrine')] public function a_non_null_value_is_converted_to_an_option_valu_object(): void { $configurationInstitution = Type::getType(SelfVetOptionType::NAME); @@ -106,7 +110,7 @@ public function a_non_null_value_is_converted_to_an_option_valu_object(): void $output = $configurationInstitution->convertToPHPValue($input, $this->platform); - $this->assertInstanceOf(\Surfnet\Stepup\Configuration\Value\SelfVetOption::class, $output); + $this->assertInstanceOf(SelfVetOption::class, $output); $this->assertEquals(new SelfVetOption($input), $output); } } diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/ShowRaaContactInformationOptionTypeTest.php b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/ShowRaaContactInformationOptionTypeTest.php index 1a05f8e52..66d7b4e9f 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/ShowRaaContactInformationOptionTypeTest.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/ShowRaaContactInformationOptionTypeTest.php @@ -22,9 +22,13 @@ use Doctrine\DBAL\Types\ConversionException; use Doctrine\DBAL\Types\Type; use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration; +use PHPUnit\Framework\Attributes\DataProviderExternal; +use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\TestCase as UnitTest; use Surfnet\Stepup\Configuration\Value\ShowRaaContactInformationOption; use Surfnet\StepupMiddleware\ApiBundle\Doctrine\Type\ShowRaaContactInformationOptionType; +use Surfnet\StepupMiddleware\ApiBundle\Tests\TestDataProvider; use function is_numeric; class ShowRaaContactInformationOptionTypeTest extends UnitTest @@ -50,8 +54,8 @@ public function setUp(): void $this->platform = new MariaDBPlatform(); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[Group('doctrine')] public function a_null_value_remains_null_in_to_sql_conversion(): void { $configurationInstitution = Type::getType(ShowRaaContactInformationOptionType::NAME); @@ -61,9 +65,9 @@ public function a_null_value_remains_null_in_to_sql_conversion(): void $this->assertNull($value); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\DataProviderExternal(\Surfnet\StepupMiddleware\ApiBundle\Tests\TestDataProvider::class, 'notNull')] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[DataProviderExternal(TestDataProvider::class, 'notNull')] + #[Group('doctrine')] public function a_value_can_only_be_converted_to_sql_if_it_is_a_show_raa_contact_information_option_or_null( mixed $incorrectValue, ): void { @@ -73,8 +77,8 @@ public function a_value_can_only_be_converted_to_sql_if_it_is_a_show_raa_contact $configurationContactInformation->convertToDatabaseValue($incorrectValue, $this->platform); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[Group('doctrine')] public function a_non_null_value_is_converted_to_the_correct_format(): void { $configurationInstitution = Type::getType(ShowRaaContactInformationOptionType::NAME); @@ -87,8 +91,8 @@ public function a_non_null_value_is_converted_to_the_correct_format(): void $this->assertEquals($expected, $output); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[Group('doctrine')] public function a_null_value_remains_null_when_converting_from_db_to_php_value(): void { $configurationInstitution = Type::getType(ShowRaaContactInformationOptionType::NAME); @@ -98,8 +102,8 @@ public function a_null_value_remains_null_when_converting_from_db_to_php_value() $this->assertNull($value); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[Group('doctrine')] public function a_non_null_value_is_converted_to_a_show_raa_contact_information_option_value_object(): void { $configurationInstitution = Type::getType(ShowRaaContactInformationOptionType::NAME); diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/UseRaLocationsOptionTypeTest.php b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/UseRaLocationsOptionTypeTest.php index 1ba9a58d4..9ebac944a 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/UseRaLocationsOptionTypeTest.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/UseRaLocationsOptionTypeTest.php @@ -22,9 +22,13 @@ use Doctrine\DBAL\Types\ConversionException; use Doctrine\DBAL\Types\Type; use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration; +use PHPUnit\Framework\Attributes\DataProviderExternal; +use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\TestCase as UnitTest; use Surfnet\Stepup\Configuration\Value\UseRaLocationsOption; use Surfnet\StepupMiddleware\ApiBundle\Doctrine\Type\UseRaLocationsOptionType; +use Surfnet\StepupMiddleware\ApiBundle\Tests\TestDataProvider; class UseRaLocationsOptionTypeTest extends UnitTest { @@ -49,8 +53,8 @@ public function setUp(): void $this->platform = new MariaDBPlatform(); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[Group('doctrine')] public function a_null_value_remains_null_in_to_sql_conversion(): void { $configurationInstitution = Type::getType(UseRaLocationsOptionType::NAME); @@ -60,9 +64,9 @@ public function a_null_value_remains_null_in_to_sql_conversion(): void $this->assertNull($value); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\DataProviderExternal(\Surfnet\StepupMiddleware\ApiBundle\Tests\TestDataProvider::class, 'notNull')] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[DataProviderExternal(TestDataProvider::class, 'notNull')] + #[Group('doctrine')] public function a_value_can_only_be_converted_to_sql_if_it_is_a_use_ra_locations_option_or_null(mixed $incorrectValue,): void { $this->expectException(ConversionException::class); @@ -71,8 +75,8 @@ public function a_value_can_only_be_converted_to_sql_if_it_is_a_use_ra_locations $configurationContactInformation->convertToDatabaseValue($incorrectValue, $this->platform); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[Group('doctrine')] public function a_non_null_value_is_converted_to_the_correct_format(): void { $configurationInstitution = Type::getType(UseRaLocationsOptionType::NAME); @@ -85,8 +89,8 @@ public function a_non_null_value_is_converted_to_the_correct_format(): void $this->assertEquals($expected, $output); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[Group('doctrine')] public function a_null_value_remains_null_when_converting_from_db_to_php_value(): void { $configurationInstitution = Type::getType(UseRaLocationsOptionType::NAME); @@ -96,8 +100,8 @@ public function a_null_value_remains_null_when_converting_from_db_to_php_value() $this->assertNull($value); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[Group('doctrine')] public function a_non_null_value_is_converted_to_a_use_ra_locations_option_value_object(): void { $configurationInstitution = Type::getType(UseRaLocationsOptionType::NAME); diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/VerifyEmailOptionTypeTest.php b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/VerifyEmailOptionTypeTest.php index 818746bb0..433f166d8 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/VerifyEmailOptionTypeTest.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Doctrine/Type/VerifyEmailOptionTypeTest.php @@ -22,9 +22,13 @@ use Doctrine\DBAL\Types\ConversionException; use Doctrine\DBAL\Types\Type; use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration; +use PHPUnit\Framework\Attributes\DataProviderExternal; +use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\TestCase as UnitTest; use Surfnet\Stepup\Configuration\Value\VerifyEmailOption; use Surfnet\StepupMiddleware\ApiBundle\Doctrine\Type\VerifyEmailOptionType; +use Surfnet\StepupMiddleware\ApiBundle\Tests\TestDataProvider; class VerifyEmailOptionTypeTest extends UnitTest { @@ -48,8 +52,8 @@ public function setUp(): void $this->platform = new MariaDBPlatform(); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[Group('doctrine')] public function a_null_value_remains_null_in_to_sql_conversion(): void { $configurationInstitution = Type::getType(VerifyEmailOptionType::NAME); @@ -59,9 +63,9 @@ public function a_null_value_remains_null_in_to_sql_conversion(): void $this->assertNull($value); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\DataProviderExternal(\Surfnet\StepupMiddleware\ApiBundle\Tests\TestDataProvider::class, 'notNull')] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[DataProviderExternal(TestDataProvider::class, 'notNull')] + #[Group('doctrine')] public function a_value_can_only_be_converted_to_sql_if_it_is_an_option_type_or_null(mixed $incorrectValue): void { $this->expectException(ConversionException::class); @@ -70,8 +74,8 @@ public function a_value_can_only_be_converted_to_sql_if_it_is_an_option_type_or_ $configurationContactInformation->convertToDatabaseValue($incorrectValue, $this->platform); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[Group('doctrine')] public function a_non_null_value_is_converted_to_the_correct_format(): void { $configurationInstitution = Type::getType(VerifyEmailOptionType::NAME); @@ -84,8 +88,8 @@ public function a_non_null_value_is_converted_to_the_correct_format(): void $this->assertEquals($expected, $output); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[Group('doctrine')] public function a_null_value_remains_null_when_converting_from_db_to_php_value(): void { $configurationInstitution = Type::getType(VerifyEmailOptionType::NAME); @@ -95,8 +99,8 @@ public function a_null_value_remains_null_when_converting_from_db_to_php_value() $this->assertNull($value); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('doctrine')] + #[Test] + #[Group('doctrine')] public function a_non_null_value_is_converted_to_an_option_valu_object(): void { $configurationInstitution = Type::getType(VerifyEmailOptionType::NAME); diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Endpoint/ConfiguredInstitutionControllerTest.php b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Endpoint/ConfiguredInstitutionControllerTest.php index 19f605252..06a12aecc 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Endpoint/ConfiguredInstitutionControllerTest.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Endpoint/ConfiguredInstitutionControllerTest.php @@ -22,8 +22,10 @@ use Generator; use Liip\TestFixturesBundle\Services\DatabaseToolCollection; use Liip\TestFixturesBundle\Services\DatabaseTools\AbstractDatabaseTool; -use Liip\TestFixturesBundle\Services\DatabaseTools\ORMSqliteDatabaseTool; use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Test; use Symfony\Bundle\FrameworkBundle\KernelBrowser; use Symfony\Bundle\FrameworkBundle\Test\WebTestCase; use Symfony\Component\HttpFoundation\Response; @@ -87,9 +89,9 @@ public function tearDown(): void static::ensureKernelShutdown(); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\DataProvider('invalidHttpMethodProvider')] - #[\PHPUnit\Framework\Attributes\Group('api')] + #[Test] + #[DataProvider('invalidHttpMethodProvider')] + #[Group('api')] public function only_get_requests_are_accepted(string $invalidHttpMethod): void { $this->client->request( @@ -107,9 +109,9 @@ public function only_get_requests_are_accepted(string $invalidHttpMethod): void $this->assertEquals(Response::HTTP_METHOD_NOT_ALLOWED, $this->client->getResponse()->getStatusCode()); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\DataProvider('notAllowedAccountsProvider')] - #[\PHPUnit\Framework\Attributes\Group('api')] + #[Test] + #[DataProvider('notAllowedAccountsProvider')] + #[Group('api')] public function no_access_for_not_allowed_account(string $account): void { $this->client->request( @@ -129,8 +131,8 @@ public function no_access_for_not_allowed_account(string $account): void $this->assertEquals(Response::HTTP_FORBIDDEN, $this->client->getResponse()->getStatusCode()); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('api')] + #[Test] + #[Group('api')] public function json_is_returned_from_the_api(): void { $this->client->request( @@ -155,9 +157,9 @@ public function json_is_returned_from_the_api(): void ); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\DataProvider('allowedAccountsProvider')] - #[\PHPUnit\Framework\Attributes\Group('api')] + #[Test] + #[DataProvider('allowedAccountsProvider')] + #[Group('api')] public function correct_institutions_are_returned(string $account): void { $this->client->request( diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Endpoint/SraaControllerTest.php b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Endpoint/SraaControllerTest.php index 935e13260..57970a224 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Endpoint/SraaControllerTest.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Endpoint/SraaControllerTest.php @@ -21,8 +21,10 @@ use Generator; use Liip\TestFixturesBundle\Services\DatabaseToolCollection; use Liip\TestFixturesBundle\Services\DatabaseTools\AbstractDatabaseTool; -use Liip\TestFixturesBundle\Services\DatabaseTools\ORMSqliteDatabaseTool; use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Test; use Symfony\Bundle\FrameworkBundle\KernelBrowser; use Symfony\Bundle\FrameworkBundle\Test\WebTestCase; use Symfony\Component\HttpFoundation\Response; @@ -75,9 +77,9 @@ public function tearDown(): void static::ensureKernelShutdown(); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\DataProvider('invalidHttpMethodProvider')] - #[\PHPUnit\Framework\Attributes\Group('api')] + #[Test] + #[DataProvider('invalidHttpMethodProvider')] + #[Group('api')] public function only_get_requests_are_accepted(string $invalidHttpMethod): void { $this->client->request( @@ -95,9 +97,9 @@ public function only_get_requests_are_accepted(string $invalidHttpMethod): void $this->assertEquals(Response::HTTP_METHOD_NOT_ALLOWED, $this->client->getResponse()->getStatusCode()); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\DataProvider('notAllowedAccountsProvider')] - #[\PHPUnit\Framework\Attributes\Group('api')] + #[Test] + #[DataProvider('notAllowedAccountsProvider')] + #[Group('api')] public function no_access_for_not_allowed_account(string $account): void { $this->client->request( @@ -117,8 +119,8 @@ public function no_access_for_not_allowed_account(string $account): void $this->assertEquals(Response::HTTP_FORBIDDEN, $this->client->getResponse()->getStatusCode()); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('api')] + #[Test] + #[Group('api')] public function json_is_returned_from_the_api(): void { $this->client->request( @@ -143,9 +145,9 @@ public function json_is_returned_from_the_api(): void ); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\DataProvider('allowedAccountsProvider')] - #[\PHPUnit\Framework\Attributes\Group('api')] + #[Test] + #[DataProvider('allowedAccountsProvider')] + #[Group('api')] public function correct_institutions_are_returned(string $account): void { $this->client->request( diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Identity/Projector/AuditLogProjectorTest.php b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Identity/Projector/AuditLogProjectorTest.php index a854df85a..f82c14e97 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Identity/Projector/AuditLogProjectorTest.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Identity/Projector/AuditLogProjectorTest.php @@ -25,6 +25,9 @@ use Mockery as m; use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration; use Mockery\Matcher\MatcherAbstract; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\TestCase; use Surfnet\Stepup\DateTime\DateTime as StepupDateTime; use Surfnet\Stepup\Identity\AuditLog\Metadata; @@ -134,9 +137,9 @@ public function auditable_events(): array ]; } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\DataProvider('auditable_events')] - #[\PHPUnit\Framework\Attributes\Group('api-projector')] + #[Test] + #[DataProvider('auditable_events')] + #[Group('api-projector')] public function it_creates_entries_for_auditable_events(DomainMessage $message, AuditLogEntry $expectedEntry): void { $repository = m::mock(AuditLogRepository::class); @@ -154,9 +157,9 @@ public function it_creates_entries_for_auditable_events(DomainMessage $message, $projector->handle($message); // we are not concerned about matching the UUID generated by the auditlogprojector - if($actualEntry !== null) { + if ($actualEntry !== null) { $expectedEntry->id = $actualEntry->id; - }else{ + } else { $expectedEntry->id = ''; } diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Identity/Value/AuthorizedInstitutionCollectionTest.php b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Identity/Value/AuthorizedInstitutionCollectionTest.php index 550a987c4..9c573b8a3 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Identity/Value/AuthorizedInstitutionCollectionTest.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Identity/Value/AuthorizedInstitutionCollectionTest.php @@ -18,21 +18,22 @@ namespace Surfnet\StepupMiddleware\ApiBundle\Tests\Identity\Value; -use PHPUnit\Framework\TestCase as TestCase; +use PHPUnit\Framework\Attributes\Test; +use PHPUnit\Framework\TestCase; use Surfnet\Stepup\Identity\Collection\InstitutionCollection; use Surfnet\Stepup\Identity\Value\Institution; use Surfnet\StepupMiddleware\ApiBundle\Identity\Value\AuthorizedInstitutionCollection; final class AuthorizedInstitutionCollectionTest extends TestCase { - #[\PHPUnit\Framework\Attributes\Test] + #[Test] public function empty_collection(): void { $collection = AuthorizedInstitutionCollection::from($this->buildInstitutionCollection([]), null); $this->assertEmpty($collection->getAuthorizations()); } - #[\PHPUnit\Framework\Attributes\Test] + #[Test] public function retrieve_institutions(): void { $collection = AuthorizedInstitutionCollection::from( @@ -47,7 +48,7 @@ public function retrieve_institutions(): void $this->assertEquals('raa', $collection->getAuthorizations()['b'][0]); } - #[\PHPUnit\Framework\Attributes\Test] + #[Test] public function retrieve_institutions_only_raa(): void { $collection = AuthorizedInstitutionCollection::from( diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Request/CommandValueResolverTest.php b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Request/CommandValueResolverTest.php index ba5ba088a..13f5181ad 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Request/CommandValueResolverTest.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Request/CommandValueResolverTest.php @@ -20,13 +20,15 @@ use Mockery as m; use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration; -use Mockery\Matcher\MatcherAbstract; use Mockery\MockInterface; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\TestCase; use stdClass; use Surfnet\StepupMiddleware\ApiBundle\Exception\BadCommandRequestException; -use Surfnet\StepupMiddleware\CommandHandlingBundle\Command\Command; use Surfnet\StepupMiddleware\ApiBundle\Request\CommandValueResolver; +use Surfnet\StepupMiddleware\CommandHandlingBundle\Command\Command; use Surfnet\StepupMiddleware\CommandHandlingBundle\Root\Command\FooBarCommand; use Surfnet\StepupMiddleware\CommandHandlingBundle\Root\Command\Ns\QuuxCommand; use Symfony\Component\HttpFoundation\Request; @@ -36,9 +38,9 @@ class CommandValueResolverTest extends TestCase { use MockeryPHPUnitIntegration; - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\DataProvider('invalidCommandJsonStructures')] - #[\PHPUnit\Framework\Attributes\Group('api-bundle')] + #[Test] + #[DataProvider('invalidCommandJsonStructures')] + #[Group('api-bundle')] public function it_validates_the_command_structure(string $commandJson): void { $this->expectException(BadCommandRequestException::class); @@ -61,9 +63,9 @@ public function it_validates_the_command_structure(string $commandJson): void $this->assertInstanceOf(Command::class, $result[0]); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\DataProvider('convertibleCommandNames')] - #[\PHPUnit\Framework\Attributes\Group('api-bundle')] + #[Test] + #[DataProvider('convertibleCommandNames')] + #[Group('api-bundle')] public function it_can_convert_command_name_notation(string $expectedCommandClass, string $commandName): void { $command = ['command' => ['name' => $commandName, 'uuid' => 'abcdef', 'payload' => new stdClass]]; @@ -86,9 +88,9 @@ public function it_can_convert_command_name_notation(string $expectedCommandClas $this->assertInstanceOf($expectedCommandClass, $result[0]); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\DataProvider('invalidCommandNames')] - #[\PHPUnit\Framework\Attributes\Group('api-bundle')] + #[Test] + #[DataProvider('invalidCommandNames')] + #[Group('api-bundle')] public function it_fails_converting_invalid_command_name_notation(string $expectedCommandClass, string $commandName): void { $this->expectException(BadCommandRequestException::class); @@ -111,8 +113,8 @@ public function it_fails_converting_invalid_command_name_notation(string $expect $converter->resolve($request, $argument); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('api-bundle')] + #[Test] + #[Group('api-bundle')] public function it_sets_uuid(): void { $command = ['command' => ['name' => 'Root:FooBar', 'uuid' => 'abcdef', 'payload' => new stdClass]]; @@ -135,8 +137,8 @@ public function it_sets_uuid(): void $this->assertEquals('abcdef', $result[0]->UUID, 'UUID mismatch'); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('api-bundle')] + #[Test] + #[Group('api-bundle')] public function it_sets_payload(): void { $command = ['command' => ['name' => 'Root:FooBar', 'uuid' => 'abcdef', 'payload' => ['snake_case' => true]]]; diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Request/InstitutionValueResolverTest.php b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Request/InstitutionValueResolverTest.php index dd5632993..57b669e8f 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Request/InstitutionValueResolverTest.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Request/InstitutionValueResolverTest.php @@ -21,6 +21,8 @@ use Mockery as m; use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration; use Mockery\MockInterface; +use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\TestCase as UnitTest; use Surfnet\Stepup\Identity\Value\Institution; use Surfnet\StepupMiddleware\ApiBundle\Exception\BadApiRequestException; @@ -46,8 +48,8 @@ public function setUp(): void ->andReturn(Institution::class); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('api-bundle')] + #[Test] + #[Group('api-bundle')] public function an_exception_is_thrown_when_the_parameter_is_missing(): void { $this->expectException(BadApiRequestException::class); @@ -58,8 +60,8 @@ public function an_exception_is_thrown_when_the_parameter_is_missing(): void $converter->resolve($this->request, $this->argument); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('api-bundle')] + #[Test] + #[Group('api-bundle')] public function an_institution_is_resolved(): void { $query = $this->mockQuery('ABC'); diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Request/commands.php b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Request/commands.php index b0db13ddc..5e7be9420 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Request/commands.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Request/commands.php @@ -18,9 +18,10 @@ namespace Surfnet\StepupMiddleware\CommandHandlingBundle\Root\Command { + use AllowDynamicProperties; use Surfnet\StepupMiddleware\CommandHandlingBundle\Command\AbstractCommand; - #[\AllowDynamicProperties] + #[AllowDynamicProperties] class FooBarCommand extends AbstractCommand { } @@ -30,6 +31,7 @@ class FooBarCommand extends AbstractCommand use Surfnet\StepupMiddleware\CommandHandlingBundle\Command\AbstractCommand; + // phpcs:ignore PSR1.Classes.ClassDeclaration.MultipleClasses class QuuxCommand extends AbstractCommand { } diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Service/DeprovisionServiceTest.php b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Service/DeprovisionServiceTest.php index f01340b00..eef88a2b8 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Service/DeprovisionServiceTest.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Service/DeprovisionServiceTest.php @@ -21,6 +21,7 @@ use Mockery as m; use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration; use Mockery\MockInterface; +use PHPUnit\Framework\Attributes\Group; use PHPUnit\Framework\TestCase; use Psr\Log\LoggerInterface; use Surfnet\Stepup\Identity\EventSourcing\IdentityRepository; @@ -69,7 +70,7 @@ public function test_it_can_be_created(): void $this->assertInstanceOf(DeprovisionService::class, $this->deprovisionService); } - #[\PHPUnit\Framework\Attributes\Group('api-bundle')] + #[Group('api-bundle')] public function test_it_deals_with_non_exisiting_collab_user_id(): void { $this->apiRepo @@ -81,7 +82,7 @@ public function test_it_deals_with_non_exisiting_collab_user_id(): void $this->assertEmpty($data); } - #[\PHPUnit\Framework\Attributes\Group('api-bundle')] + #[Group('api-bundle')] public function test_it_can_return_data(): void { $identity = m::mock(Identity::class); diff --git a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Command/AbstractCommandTest.php b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Command/AbstractCommandTest.php index e34bc630d..82732277b 100644 --- a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Command/AbstractCommandTest.php +++ b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Command/AbstractCommandTest.php @@ -19,14 +19,16 @@ namespace Surfnet\StepupMiddleware\CommandHandlingBundle\Tests\Command; use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration; +use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\TestCase as UnitTest; class AbstractCommandTest extends UnitTest { use MockeryPHPUnitIntegration; - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('command')] + #[Test] + #[Group('command')] public function to_string_generates_command_identifiable_information(): void { $command = new FixedUuidStubCommand(); diff --git a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Configuration/CommandHandler/ConfigurationCommandHandlerTest.php b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Configuration/CommandHandler/ConfigurationCommandHandlerTest.php index 3bed5e51c..e1fb150fb 100644 --- a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Configuration/CommandHandler/ConfigurationCommandHandlerTest.php +++ b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Configuration/CommandHandler/ConfigurationCommandHandlerTest.php @@ -22,7 +22,8 @@ use Broadway\EventHandling\EventBus as EventBusInterface; use Broadway\EventSourcing\AggregateFactory\PublicConstructorAggregateFactory; use Broadway\EventStore\EventStore as EventStoreInterface; -use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration; +use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Test; use RuntimeException; use Surfnet\Stepup\Configuration\Configuration; use Surfnet\Stepup\Configuration\Event\ConfigurationUpdatedEvent; @@ -45,8 +46,8 @@ final class ConfigurationCommandHandlerTest extends CommandHandlerTest */ public const CID = Configuration::CONFIGURATION_ID; - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[Test] + #[Group('command-handler')] public function configuration_can_be_initialised(): void { $configuration = [ @@ -68,8 +69,8 @@ public function configuration_can_be_initialised(): void ->then($this->createConfigurationUpdatedEvents($configuration, null)); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[Test] + #[Group('command-handler')] public function configuration_can_be_updated(): void { $configuration1 = [ diff --git a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Configuration/CommandHandler/InstitutionConfigurationCommandHandlerTest.php b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Configuration/CommandHandler/InstitutionConfigurationCommandHandlerTest.php index 1b34c8e36..730304f0c 100644 --- a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Configuration/CommandHandler/InstitutionConfigurationCommandHandlerTest.php +++ b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Configuration/CommandHandler/InstitutionConfigurationCommandHandlerTest.php @@ -23,7 +23,8 @@ use Broadway\EventSourcing\AggregateFactory\PublicConstructorAggregateFactory; use Broadway\EventStore\EventStore as EventStoreInterface; use Broadway\Repository\AggregateNotFoundException; -use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration; +use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Test; use Surfnet\Stepup\Configuration\Event\AllowedSecondFactorListUpdatedEvent; use Surfnet\Stepup\Configuration\Event\InstitutionConfigurationRemovedEvent; use Surfnet\Stepup\Configuration\Event\NewInstitutionConfigurationCreatedEvent; @@ -70,8 +71,8 @@ class InstitutionConfigurationCommandHandlerTest extends CommandHandlerTest { - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[Test] + #[Group('command-handler')] public function an_institution_configuration_is_created_when_there_is_none_for_a_given_institution(): void { $command = new CreateInstitutionConfigurationCommand(); @@ -131,8 +132,8 @@ public function an_institution_configuration_is_created_when_there_is_none_for_a ]); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[Test] + #[Group('command-handler')] public function an_institution_configuration_cannot_be_created_when_there_already_is_one_for_a_given_institution(): void { $this->expectException(DomainException::class); @@ -189,8 +190,8 @@ public function an_institution_configuration_cannot_be_created_when_there_alread ->when($command); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[Test] + #[Group('command-handler')] public function institution_configuration_options_are_not_changed_if_their_given_value_is_not_different_from_their_current_value(): void { $institution = new Institution('Institution'); @@ -261,8 +262,8 @@ public function institution_configuration_options_are_not_changed_if_their_given ->then([]); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[Test] + #[Group('command-handler')] public function use_ra_locations_option_is_changed_if_its_given_value_is_different_from_the_current_value(): void { $institution = new Institution('Institution'); @@ -343,8 +344,8 @@ public function use_ra_locations_option_is_changed_if_its_given_value_is_differe ]); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[Test] + #[Group('command-handler')] public function show_raa_contact_information_option_is_changed_if_its_given_value_is_different_from_the_current_value(): void { $institution = new Institution('Institution'); @@ -421,8 +422,8 @@ public function show_raa_contact_information_option_is_changed_if_its_given_valu ]); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[Test] + #[Group('command-handler')] public function allowed_second_factor_list_is_changed_if_its_values_are_different_than_the_current_list(): void { $institution = new Institution('Institution'); @@ -504,8 +505,8 @@ public function allowed_second_factor_list_is_changed_if_its_values_are_differen ]); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[Test] + #[Group('command-handler')] public function allowed_second_factor_list_is_not_changed_if_its_values_are_the_same_as_the_current_list(): void { $secondFactorsToAllow = ['sms', 'yubikey']; @@ -580,8 +581,8 @@ public function allowed_second_factor_list_is_not_changed_if_its_values_are_the_ ->then([]); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[Test] + #[Group('command-handler')] public function an_ra_location_can_be_added_to_an_existing_institution_configuration(): void { $command = new AddRaLocationCommand(); @@ -631,8 +632,8 @@ public function an_ra_location_can_be_added_to_an_existing_institution_configura ]); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[Test] + #[Group('command-handler')] public function the_same_ra_location_cannot_be_added_twice(): void { $this->expectException(DomainException::class); @@ -683,8 +684,8 @@ public function the_same_ra_location_cannot_be_added_twice(): void ->when($command); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[Test] + #[Group('command-handler')] public function an_ra_location_can_be_renamed(): void { $originalRaLocationName = new RaLocationName('An old RA location name'); @@ -741,8 +742,8 @@ public function an_ra_location_can_be_renamed(): void ]); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[Test] + #[Group('command-handler')] public function an_ra_location_cannot_be_changed_if_it_is_not_present_within_an_institution_configuration(): void { $this->expectException(DomainException::class); @@ -785,8 +786,8 @@ public function an_ra_location_cannot_be_changed_if_it_is_not_present_within_an_ ->when($command); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[Test] + #[Group('command-handler')] public function an_ra_location_cannot_be_changed_if_its_institution_configuration_cannot_be_found(): void { $this->expectException(AggregateNotFoundException::class); @@ -829,9 +830,9 @@ public function an_ra_location_cannot_be_changed_if_its_institution_configuratio ->when($command); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('command-handler')] - #[\PHPUnit\Framework\Attributes\Group('institution-configuration')] + #[Test] + #[Group('command-handler')] + #[Group('institution-configuration')] public function an_ra_location_can_be_relocated(): void { $originalLocation = new Location('An old location'); @@ -888,9 +889,9 @@ public function an_ra_location_can_be_relocated(): void ]); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('command-handler')] - #[\PHPUnit\Framework\Attributes\Group('institution-configuration')] + #[Test] + #[Group('command-handler')] + #[Group('institution-configuration')] public function an_ra_locations_contact_information_can_be_changed(): void { $originalContactInformation = new ContactInformation('Old contact information'); @@ -947,9 +948,9 @@ public function an_ra_locations_contact_information_can_be_changed(): void ]); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('command-handler')] - #[\PHPUnit\Framework\Attributes\Group('institution-configuration')] + #[Test] + #[Group('command-handler')] + #[Group('institution-configuration')] public function the_self_vet_option_can_be_changed(): void { $institution = new Institution('Institution'); @@ -1025,9 +1026,9 @@ public function the_self_vet_option_can_be_changed(): void ]); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('command-handler')] - #[\PHPUnit\Framework\Attributes\Group('institution-configuration')] + #[Test] + #[Group('command-handler')] + #[Group('institution-configuration')] public function an_ra_location_cannot_be_removed_if_its_institution_configuration_cannot_be_found(): void { $this->expectException(AggregateNotFoundException::class); @@ -1067,9 +1068,9 @@ public function an_ra_location_cannot_be_removed_if_its_institution_configuratio ->when($command); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('command-handler')] - #[\PHPUnit\Framework\Attributes\Group('institution-configuration')] + #[Test] + #[Group('command-handler')] + #[Group('institution-configuration')] public function an_ra_location_cannot_be_removed_if_it_is_not_present_within_an_institution_configuration(): void { $this->expectException(DomainException::class); @@ -1109,9 +1110,9 @@ public function an_ra_location_cannot_be_removed_if_it_is_not_present_within_an_ ->when($command); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('command-handler')] - #[\PHPUnit\Framework\Attributes\Group('institution-configuration')] + #[Test] + #[Group('command-handler')] + #[Group('institution-configuration')] public function an_ra_location_can_be_removed(): void { $command = new RemoveRaLocationCommand(); @@ -1162,9 +1163,9 @@ public function an_ra_location_can_be_removed(): void ]); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('command-handler')] - #[\PHPUnit\Framework\Attributes\Group('institution-configuration')] + #[Test] + #[Group('command-handler')] + #[Group('institution-configuration')] public function an_institution_configuration_with_unnormalized_institution_configuration_id_can_be_removed(): void { $command = new RemoveInstitutionConfigurationByUnnormalizedIdCommand(); diff --git a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Configuration/Processor/InstitutionConfigurationProcessorTest.php b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Configuration/Processor/InstitutionConfigurationProcessorTest.php index dd6cdb5eb..11a1d1edd 100644 --- a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Configuration/Processor/InstitutionConfigurationProcessorTest.php +++ b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Configuration/Processor/InstitutionConfigurationProcessorTest.php @@ -21,7 +21,9 @@ use Mockery; use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration; use Mockery\MockInterface; -use PHPUnit\Framework\TestCase as TestCase; +use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Test; +use PHPUnit\Framework\TestCase; use Surfnet\Stepup\Identity\Collection\InstitutionCollection; use Surfnet\Stepup\Identity\Event\IdentityCreatedEvent; use Surfnet\Stepup\Identity\Event\InstitutionsAddedToWhitelistEvent; @@ -37,7 +39,6 @@ use Surfnet\StepupMiddleware\CommandHandlingBundle\Configuration\Processor\InstitutionConfigurationProcessor; use Surfnet\StepupMiddleware\CommandHandlingBundle\Pipeline\Pipeline; use Surfnet\StepupMiddleware\CommandHandlingBundle\Tests\Mockery\HasInstitutionMatcher; -use Symfony\Component\DependencyInjection\ContainerInterface; class InstitutionConfigurationProcessorTest extends TestCase { @@ -50,9 +51,9 @@ public function setUp(): void $this->pipelineMock = Mockery::mock(Pipeline::class); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('processor')] - #[\PHPUnit\Framework\Attributes\Group('institution-configuration')] + #[Test] + #[Group('processor')] + #[Group('institution-configuration')] public function a_create_institution_configuration_command_is_processed_when_an_identity_was_created_with_a_non_configured_institution(): void { $expectedInstitution = 'institution'; @@ -84,9 +85,9 @@ public function a_create_institution_configuration_command_is_processed_when_an_ $this->assertInstanceOf(InstitutionConfigurationProcessor::class, $institutionConfigurationProcessor); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('processor')] - #[\PHPUnit\Framework\Attributes\Group('institution-configuration')] + #[Test] + #[Group('processor')] + #[Group('institution-configuration')] public function no_create_institution_configuration_command_is_processed_when_an_identity_was_created_with_an_already_configured_institution(): void { $identityCreatedEvent = new IdentityCreatedEvent( @@ -115,9 +116,9 @@ public function no_create_institution_configuration_command_is_processed_when_an $this->assertInstanceOf(InstitutionConfigurationProcessor::class, $institutionConfigurationProcessor); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('processor')] - #[\PHPUnit\Framework\Attributes\Group('institution-configuration')] + #[Test] + #[Group('processor')] + #[Group('institution-configuration')] public function create_institution_configuration_commands_are_processed_when_a_whitelist_was_created_containing_non_configured_institutions(): void { $firstInstitution = 'first institution'; @@ -154,9 +155,9 @@ public function create_institution_configuration_commands_are_processed_when_a_w $this->assertInstanceOf(InstitutionConfigurationProcessor::class, $institutionConfigurationProcessor); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('processor')] - #[\PHPUnit\Framework\Attributes\Group('institution-configuration')] + #[Test] + #[Group('processor')] + #[Group('institution-configuration')] public function no_create_institution_configuration_command_is_processed_for_an_already_configured_institution_when_a_whitelist_was_created(): void { $alreadyPresentInstitution = 'already present'; @@ -197,9 +198,9 @@ public function no_create_institution_configuration_command_is_processed_for_an_ $this->assertInstanceOf(InstitutionConfigurationProcessor::class, $institutionConfigurationProcessor); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('processor')] - #[\PHPUnit\Framework\Attributes\Group('institution-configuration')] + #[Test] + #[Group('processor')] + #[Group('institution-configuration')] public function create_institution_configuration_commands_are_created_when_a_whitelist_was_replaced_containing_non_configured_institutions(): void { $firstInstitution = 'first institution'; @@ -238,9 +239,9 @@ public function create_institution_configuration_commands_are_created_when_a_whi $this->assertInstanceOf(InstitutionConfigurationProcessor::class, $institutionConfigurationProcessor); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('processor')] - #[\PHPUnit\Framework\Attributes\Group('institution-configuration')] + #[Test] + #[Group('processor')] + #[Group('institution-configuration')] public function no_create_institution_configuration_command_is_processed_for_an_already_configured_institution_when_a_whitelist_was_replaced(): void { $alreadyPresentInstitution = 'already present'; @@ -281,9 +282,9 @@ public function no_create_institution_configuration_command_is_processed_for_an_ $this->assertInstanceOf(InstitutionConfigurationProcessor::class, $institutionConfigurationProcessor); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('processor')] - #[\PHPUnit\Framework\Attributes\Group('institution-configuration')] + #[Test] + #[Group('processor')] + #[Group('institution-configuration')] public function create_institution_configuration_commands_are_created_when_non_configured_institutions_are_added_to_the_whitelist(): void { $firstInstitution = 'first institution'; @@ -322,9 +323,9 @@ public function create_institution_configuration_commands_are_created_when_non_c $this->assertInstanceOf(InstitutionConfigurationProcessor::class, $institutionConfigurationProcessor); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('processor')] - #[\PHPUnit\Framework\Attributes\Group('institution-configuration')] + #[Test] + #[Group('processor')] + #[Group('institution-configuration')] public function no_create_institution_configuration_command_is_created_for_an_already_configured_institution_when_institutions_are_added_to_a_whitelist(): void { $alreadyPresentInstitution = 'already present'; diff --git a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/DateTimeHelperTest.php b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/DateTimeHelperTest.php index ff7bfce61..6f8052190 100644 --- a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/DateTimeHelperTest.php +++ b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/DateTimeHelperTest.php @@ -20,16 +20,19 @@ use DateTime as CoreDateTime; use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration; +use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\RunTestsInSeparateProcesses; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\TestCase; use Surfnet\Stepup\DateTime\DateTime; -#[\PHPUnit\Framework\Attributes\RunTestsInSeparateProcesses] +#[RunTestsInSeparateProcesses] class DateTimeHelperTest extends TestCase { use MockeryPHPUnitIntegration; - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('testing')] + #[Test] + #[Group('testing')] public function it_mocks_now(): void { DateTimeHelper::setCurrentTime(new DateTime(new CoreDateTime('@12345'))); @@ -37,8 +40,8 @@ public function it_mocks_now(): void $this->assertEquals(new DateTime(new CoreDateTime('@12345')), DateTime::now()); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('testing')] + #[Test] + #[Group('testing')] public function it_can_be_disabled_in_the_same_process(): void { DateTimeHelper::setCurrentTime(new DateTime(new CoreDateTime('@12345'))); @@ -50,8 +53,8 @@ public function it_can_be_disabled_in_the_same_process(): void $this->assertTrue((new DateTime())->comesAfterOrIsEqual($now)); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('testing')] + #[Test] + #[Group('testing')] public function it_works_with_separate_processes(): void { // The stub value has been removed. diff --git a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/EventHandling/BufferedEventBusTest.php b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/EventHandling/BufferedEventBusTest.php index fbbc99946..3adb91aaa 100644 --- a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/EventHandling/BufferedEventBusTest.php +++ b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/EventHandling/BufferedEventBusTest.php @@ -27,6 +27,8 @@ use Mockery as m; use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration; use Mockery\MockInterface; +use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\TestCase; use Surfnet\StepupMiddleware\CommandHandlingBundle\EventHandling\BufferedEventBus; @@ -34,8 +36,8 @@ class BufferedEventBusTest extends TestCase { use MockeryPHPUnitIntegration; - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('event-handling')] + #[Test] + #[Group('event-handling')] public function it_buffers_events(): void { $event = $this->createDummyDomainMessage(null); @@ -52,8 +54,8 @@ public function it_buffers_events(): void $this->assertInstanceOf(BufferedEventBus::class, $bus); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('event-handling')] + #[Test] + #[Group('event-handling')] public function it_flushes_events(): void { $event = $this->createDummyDomainMessage(null); @@ -74,8 +76,8 @@ public function it_flushes_events(): void /** * This is tested by checking that the mock event listener is invoked once, while flushing twice. */ - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('event-handling')] + #[Test] + #[Group('event-handling')] public function flushing_succesfully_empties_the_buffer_to_prevent_flushing_the_same_event_twice(): void { $event = $this->createDummyDomainMessage(null); @@ -93,8 +95,8 @@ public function flushing_succesfully_empties_the_buffer_to_prevent_flushing_the_ $this->assertInstanceOf(BufferedEventBus::class, $bus); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('event-handling')] + #[Test] + #[Group('event-handling')] public function an_event_caused_by_an_event_in_the_current_buffer_being_flushed_is_buffered_and_flushed_after_events_in_the_current_buffer(): void { $bus = new BufferedEventBus($this->getDummyEntityManager()); diff --git a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/IdentityCommandHandlerMoveTokenTest.php b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/IdentityCommandHandlerMoveTokenTest.php index c2fa77e73..26d2820bf 100644 --- a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/IdentityCommandHandlerMoveTokenTest.php +++ b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/IdentityCommandHandlerMoveTokenTest.php @@ -24,6 +24,9 @@ use Broadway\EventStore\EventStore as EventStoreInterface; use Mockery as m; use Mockery\MockInterface; +use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\RunInSeparateProcess; +use PHPUnit\Framework\Attributes\RunTestsInSeparateProcesses; use Psr\Log\LoggerInterface; use Surfnet\Stepup\Configuration\Value\AllowedSecondFactorList; use Surfnet\Stepup\DateTime\DateTime; @@ -65,7 +68,7 @@ use Surfnet\StepupMiddleware\CommandHandlingBundle\Identity\Service\RegistrationMailService; use Surfnet\StepupMiddleware\CommandHandlingBundle\Tests\CommandHandlerTest; -#[\PHPUnit\Framework\Attributes\RunTestsInSeparateProcesses] +#[RunTestsInSeparateProcesses] class IdentityCommandHandlerMoveTokenTest extends CommandHandlerTest { private static int $window = 3600; @@ -121,8 +124,8 @@ protected function createCommandHandler( ); } - #[\PHPUnit\Framework\Attributes\RunInSeparateProcess] - #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[RunInSeparateProcess] + #[Group('command-handler')] public function test_a_second_factor_can_be_moved(): void { $this->setUpInstitutionConfiguration(2, ['yubikey']); diff --git a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/IdentityCommandHandlerSelfAssertedTokensTest.php b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/IdentityCommandHandlerSelfAssertedTokensTest.php index a6ae860d2..69e4d2b5d 100644 --- a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/IdentityCommandHandlerSelfAssertedTokensTest.php +++ b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/IdentityCommandHandlerSelfAssertedTokensTest.php @@ -24,6 +24,9 @@ use Broadway\EventStore\EventStore as EventStoreInterface; use Mockery as m; use Mockery\MockInterface; +use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\RunInSeparateProcess; +use PHPUnit\Framework\Attributes\RunTestsInSeparateProcesses; use Psr\Log\LoggerInterface; use Surfnet\Stepup\Configuration\Value\AllowedSecondFactorList; use Surfnet\Stepup\Configuration\Value\SelfAssertedTokensOption; @@ -86,7 +89,7 @@ use Surfnet\StepupMiddleware\CommandHandlingBundle\Identity\Service\RegistrationMailService; use Surfnet\StepupMiddleware\CommandHandlingBundle\Tests\CommandHandlerTest; -#[\PHPUnit\Framework\Attributes\RunTestsInSeparateProcesses] +#[RunTestsInSeparateProcesses] class IdentityCommandHandlerSelfAssertedTokensTest extends CommandHandlerTest { private static int $window = 3600; @@ -131,8 +134,8 @@ public function setUp(): void parent::setUp(); } - #[\PHPUnit\Framework\Attributes\RunInSeparateProcess] - #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[RunInSeparateProcess] + #[Group('command-handler')] public function test_a_sms_recovery_code_possession_can_be_proven(): void { $recoveryTokenId = new RecoveryTokenId(self::uuid()); @@ -164,8 +167,8 @@ public function test_a_sms_recovery_code_possession_can_be_proven(): void ]); } - #[\PHPUnit\Framework\Attributes\RunInSeparateProcess] - #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[RunInSeparateProcess] + #[Group('command-handler')] public function test_a_safe_store_secret_recovery_code_possession_can_be_proven(): void { $recoveryTokenId = new RecoveryTokenId(self::uuid()); @@ -208,8 +211,8 @@ public function test_a_safe_store_secret_recovery_code_possession_can_be_proven( ]); } - #[\PHPUnit\Framework\Attributes\RunInSeparateProcess] - #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[RunInSeparateProcess] + #[Group('command-handler')] public function test_a_safe_store_secret_and_phone_recovery_code_possession_can_be_proven(): void { $recoveryTokenId = new RecoveryTokenId(self::uuid()); @@ -271,8 +274,8 @@ public function test_a_safe_store_secret_and_phone_recovery_code_possession_can_ ]); } - #[\PHPUnit\Framework\Attributes\RunInSeparateProcess] - #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[RunInSeparateProcess] + #[Group('command-handler')] public function test_a_sms_recovery_code_possession_can_not_be_proven_twice(): void { $recoveryTokenId = new RecoveryTokenId(self::uuid()); @@ -307,8 +310,8 @@ public function test_a_sms_recovery_code_possession_can_not_be_proven_twice(): v ->when($command); } - #[\PHPUnit\Framework\Attributes\RunInSeparateProcess] - #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[RunInSeparateProcess] + #[Group('command-handler')] public function test_only_one_safe_store_secret_allowed(): void { $recoveryTokenId = new RecoveryTokenId(self::uuid()); @@ -355,8 +358,8 @@ public function test_only_one_safe_store_secret_allowed(): void ->when($command); } - #[\PHPUnit\Framework\Attributes\RunInSeparateProcess] - #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[RunInSeparateProcess] + #[Group('command-handler')] public function test_a_sms_recovery_token_possession_requires_institution_configuration_feature_enabled(): void { $identityCreatedEvent = $this->buildIdentityCreatedEvent(); @@ -393,8 +396,8 @@ public function test_a_sms_recovery_token_possession_requires_institution_config ->when($command); } - #[\PHPUnit\Framework\Attributes\RunInSeparateProcess] - #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[RunInSeparateProcess] + #[Group('command-handler')] public function test_a_safe_store_secret_recovery_code_possession_can_be_revoked_by_ra(): void { $recoveryTokenId = new RecoveryTokenId(self::uuid()); @@ -462,8 +465,8 @@ public function test_a_safe_store_secret_recovery_code_possession_can_be_revoked ]); } - #[\PHPUnit\Framework\Attributes\RunInSeparateProcess] - #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[RunInSeparateProcess] + #[Group('command-handler')] public function test_a_token_can_be_registered_self_asserted(): void { $recoveryTokenId = new RecoveryTokenId(self::uuid()); @@ -543,8 +546,8 @@ public function test_a_token_can_be_registered_self_asserted(): void ]); } - #[\PHPUnit\Framework\Attributes\RunInSeparateProcess] - #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[RunInSeparateProcess] + #[Group('command-handler')] public function test_self_asserted_token_registration_requires_possession_of_recovery_token(): void { $madeUpRecoveryTokenId = new RecoveryTokenId(self::uuid()); @@ -600,8 +603,8 @@ public function test_self_asserted_token_registration_requires_possession_of_rec ->when($command); } - #[\PHPUnit\Framework\Attributes\RunInSeparateProcess] - #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[RunInSeparateProcess] + #[Group('command-handler')] public function test_a_safe_store_secret_recovery_code_possession_can_be_revoked(): void { $recoveryTokenId = new RecoveryTokenId(self::uuid()); @@ -640,8 +643,8 @@ public function test_a_safe_store_secret_recovery_code_possession_can_be_revoked ]); } - #[\PHPUnit\Framework\Attributes\RunInSeparateProcess] - #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[RunInSeparateProcess] + #[Group('command-handler')] public function test_a_sat_token_can_be_used_to_self_vet_a_token(): void { $recoveryTokenId = new RecoveryTokenId(self::uuid()); @@ -769,8 +772,8 @@ public function test_a_sat_token_can_be_used_to_self_vet_a_token(): void ]); } - #[\PHPUnit\Framework\Attributes\RunInSeparateProcess] - #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[RunInSeparateProcess] + #[Group('command-handler')] public function test_sat_not_allowed_when_one_vetted_token_is_identity_vetted(): void { $recoveryTokenId = new RecoveryTokenId(self::uuid()); diff --git a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/IdentityCommandHandlerTest.php b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/IdentityCommandHandlerTest.php index d36ab037a..2bfc70fad 100644 --- a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/IdentityCommandHandlerTest.php +++ b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/IdentityCommandHandlerTest.php @@ -23,9 +23,13 @@ use Broadway\EventSourcing\AggregateFactory\PublicConstructorAggregateFactory; use Broadway\EventStore\EventStore as EventStoreInterface; use DateTime as CoreDateTime; -use Mockery\Matcher\IsEqual; use Mockery as m; +use Mockery\Matcher\IsEqual; use Mockery\MockInterface; +use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\RunInSeparateProcess; +use PHPUnit\Framework\Attributes\RunTestsInSeparateProcesses; +use PHPUnit\Framework\Attributes\Test; use Psr\Log\LoggerInterface; use Surfnet\Stepup\Configuration\Value\AllowedSecondFactorList; use Surfnet\Stepup\DateTime\DateTime; @@ -67,7 +71,6 @@ use Surfnet\Stepup\Identity\Value\U2fKeyHandle; use Surfnet\Stepup\Identity\Value\YubikeyPublicId; use Surfnet\Stepup\Token\TokenGenerator; -use Surfnet\StepupBundle\Security\OtpGenerator; use Surfnet\StepupBundle\Service\LoaResolutionService; use Surfnet\StepupBundle\Service\SecondFactorTypeService; use Surfnet\StepupBundle\Value\Loa; @@ -96,7 +99,7 @@ use Surfnet\StepupMiddleware\CommandHandlingBundle\Tests\DateTimeHelper; use function md5; -#[\PHPUnit\Framework\Attributes\RunTestsInSeparateProcesses] +#[RunTestsInSeparateProcesses] class IdentityCommandHandlerTest extends CommandHandlerTest { private static int $window = 3600; @@ -158,9 +161,9 @@ protected function createCommandHandler( ); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\RunInSeparateProcess] - #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[Test] + #[RunInSeparateProcess] + #[Group('command-handler')] public function an_identity_can_be_bootstrapped_with_a_yubikey_second_factor(): void { $command = new BootstrapIdentityWithYubikeySecondFactorCommand(); @@ -206,9 +209,9 @@ public function an_identity_can_be_bootstrapped_with_a_yubikey_second_factor(): ]); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\RunInSeparateProcess] - #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[Test] + #[RunInSeparateProcess] + #[Group('command-handler')] public function an_identity_cannot_be_bootstrapped_twice(): void { $command = new BootstrapIdentityWithYubikeySecondFactorCommand(); @@ -232,9 +235,9 @@ public function an_identity_cannot_be_bootstrapped_twice(): void ->then([]); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\RunInSeparateProcess] - #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[Test] + #[RunInSeparateProcess] + #[Group('command-handler')] public function a_yubikey_possession_can_be_proven(): void { DateTimeHelper::setCurrentTime(new DateTime(new CoreDateTime('@12345'))); @@ -294,9 +297,9 @@ public function a_yubikey_possession_can_be_proven(): void ]); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\RunInSeparateProcess] - #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[Test] + #[RunInSeparateProcess] + #[Group('command-handler')] public function a_yubikey_possession_cannot_be_proven_if_the_second_factor_is_not_allowed_by_the_institution(): void { DateTimeHelper::setCurrentTime(new DateTime(new CoreDateTime('@12345'))); @@ -339,8 +342,8 @@ public function a_yubikey_possession_cannot_be_proven_if_the_second_factor_is_no ->when($command); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[Test] + #[Group('command-handler')] public function yubikey_possession_cannot_be_proven_twice(): void { $this->expectException(DomainException::class); @@ -396,9 +399,9 @@ public function yubikey_possession_cannot_be_proven_twice(): void ->when($command); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\RunInSeparateProcess] - #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[Test] + #[RunInSeparateProcess] + #[Group('command-handler')] public function a_phone_possession_can_be_proven(): void { DateTimeHelper::setCurrentTime(new DateTime(new CoreDateTime('@12345'))); @@ -458,9 +461,9 @@ public function a_phone_possession_can_be_proven(): void ]); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\RunInSeparateProcess] - #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[Test] + #[RunInSeparateProcess] + #[Group('command-handler')] public function a_phone_possession_cannot_be_proven_if_the_second_factor_is_not_allowed_by_the_institution(): void { DateTimeHelper::setCurrentTime(new DateTime(new CoreDateTime('@12345'))); @@ -502,9 +505,9 @@ public function a_phone_possession_cannot_be_proven_if_the_second_factor_is_not_ ->then([]); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\RunInSeparateProcess] - #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[Test] + #[RunInSeparateProcess] + #[Group('command-handler')] public function a_gssf_possession_can_be_proven(): void { DateTimeHelper::setCurrentTime(new DateTime(new CoreDateTime('@12345'))); @@ -577,9 +580,9 @@ public function a_gssf_possession_can_be_proven(): void } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\RunInSeparateProcess] - #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[Test] + #[RunInSeparateProcess] + #[Group('command-handler')] public function a_gssf_possession_can_not_be_proven_if_the_second_factor_is_not_allowed_by_the_institution(): void { DateTimeHelper::setCurrentTime(new DateTime(new CoreDateTime('@12345'))); @@ -623,9 +626,9 @@ public function a_gssf_possession_can_not_be_proven_if_the_second_factor_is_not_ ->then([]); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\RunInSeparateProcess] - #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[Test] + #[RunInSeparateProcess] + #[Group('command-handler')] public function a_u2f_device_possession_can_be_proven(): void { DateTimeHelper::setCurrentTime(new DateTime(new CoreDateTime('@12345'))); @@ -685,9 +688,9 @@ public function a_u2f_device_possession_can_be_proven(): void ]); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\RunInSeparateProcess] - #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[Test] + #[RunInSeparateProcess] + #[Group('command-handler')] public function a_u2f_device_possession_cannot_be_proven_if_the_second_factor_is_not_allowed_by_the_institution(): void { DateTimeHelper::setCurrentTime(new DateTime(new CoreDateTime('@12345'))); @@ -729,8 +732,8 @@ public function a_u2f_device_possession_cannot_be_proven_if_the_second_factor_is ->then([]); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[Test] + #[Group('command-handler')] public function phone_possession_cannot_be_proven_twice(): void { $this->expectException(DomainException::class); @@ -786,8 +789,8 @@ public function phone_possession_cannot_be_proven_twice(): void ->when($command); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[Test] + #[Group('command-handler')] public function cannot_prove_possession_of_arbitrary_second_factor_type_twice(): void { $this->expectException(DomainException::class); @@ -844,9 +847,9 @@ public function cannot_prove_possession_of_arbitrary_second_factor_type_twice(): ->when($command); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\RunInSeparateProcess] - #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[Test] + #[RunInSeparateProcess] + #[Group('command-handler')] public function an_unverified_second_factors_email_can_be_verified(): void { DateTimeHelper::setCurrentTime(new DateTime(new CoreDateTime('@12345'))); @@ -911,8 +914,8 @@ public function an_unverified_second_factors_email_can_be_verified(): void ]); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[Test] + #[Group('command-handler')] public function a_verified_second_factors_email_cannot_be_verified(): void { $this->expectException(DomainException::class); @@ -975,8 +978,8 @@ public function a_verified_second_factors_email_cannot_be_verified(): void ->when($command); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[Test] + #[Group('command-handler')] public function cannot_verify_an_email_after_the_verification_window_has_closed(): void { $this->expectException(DomainException::class); @@ -1025,8 +1028,8 @@ public function cannot_verify_an_email_after_the_verification_window_has_closed( ->when($command); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[Test] + #[Group('command-handler')] public function it_can_create_a_new_identity(): void { $createCommand = new CreateIdentityCommand(); @@ -1062,8 +1065,8 @@ public function it_can_create_a_new_identity(): void ]); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[Test] + #[Group('command-handler')] public function an_identity_can_be_updated(): void { $id = new IdentityId('42'); @@ -1095,8 +1098,8 @@ public function an_identity_can_be_updated(): void ]); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[Test] + #[Group('command-handler')] public function an_identity_can_be_updated_twice_only_emitting_events_when_changed(): void { $id = new IdentityId('42'); @@ -1130,8 +1133,8 @@ public function an_identity_can_be_updated_twice_only_emitting_events_when_chang } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[Test] + #[Group('command-handler')] public function a_deprovisioned_identity_is_restored_when_updated(): void { $id = new IdentityId('42'); @@ -1163,13 +1166,13 @@ public function a_deprovisioned_identity_is_restored_when_updated(): void ->given([$createdEvent, $forgottenEvent]) ->when($updateCommand) ->then([ - new IdentityRestoredEvent($id, $institution, new CommonName($updateCommand->commonName), new Email($updateCommand->email)), + new IdentityRestoredEvent($id, $institution, new CommonName($updateCommand->commonName), new Email($updateCommand->email)), ]); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[Test] + #[Group('command-handler')] public function a_second_factor_can_be_vetted(): void { $command = new VetSecondFactorCommand(); @@ -1281,8 +1284,8 @@ public function a_second_factor_can_be_vetted(): void ]); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[Test] + #[Group('command-handler')] public function a_second_factor_cannot_be_vetted_without_a_secure_enough_vetted_second_factor(): void { $this->expectExceptionMessage("Authority does not have the required LoA"); @@ -1424,8 +1427,8 @@ public function a_second_factor_cannot_be_vetted_without_a_secure_enough_vetted_ } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[Test] + #[Group('command-handler')] public function a_second_factor_can_be_vetted_without_a_physical_proven_possession(): void { $command = new VetSecondFactorCommand(); @@ -1537,8 +1540,8 @@ public function a_second_factor_can_be_vetted_without_a_physical_proven_possessi ]); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[Test] + #[Group('command-handler')] public function a_second_factor_cannot_be_vetted_without_physical_prove_of_possession_when_not_configured(): void { $this->expectExceptionMessage( @@ -1686,9 +1689,9 @@ public function a_second_factor_cannot_be_vetted_without_physical_prove_of_posse ]); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\RunInSeparateProcess] - #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[Test] + #[RunInSeparateProcess] + #[Group('command-handler')] public function an_identity_can_express_its_locale_preference(): void { $command = new ExpressLocalePreferenceCommand(); @@ -1716,9 +1719,9 @@ public function an_identity_can_express_its_locale_preference(): void ]); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\RunInSeparateProcess] - #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[Test] + #[RunInSeparateProcess] + #[Group('command-handler')] public function an_identity_can_send_registration_mail(): void { $command = new SendSecondFactorRegistrationEmailCommand(); @@ -1748,9 +1751,9 @@ public function an_identity_can_send_registration_mail(): void ->then([]); // No event is emanated from this command } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\RunInSeparateProcess] - #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[Test] + #[RunInSeparateProcess] + #[Group('command-handler')] public function an_identity_cannot_express_a_preference_for_an_unsupported_locale(): void { $this->expectExceptionMessage("Given locale \"fi_FI\" is not a supported locale"); @@ -1778,9 +1781,9 @@ public function an_identity_cannot_express_a_preference_for_an_unsupported_local ->when($command); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\RunInSeparateProcess] - #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[Test] + #[RunInSeparateProcess] + #[Group('command-handler')] public function an_identity_can_express_its_locale_preference_more_than_one_time(): void { $command = new ExpressLocalePreferenceCommand(); @@ -1810,9 +1813,9 @@ public function an_identity_can_express_its_locale_preference_more_than_one_time ]); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\RunInSeparateProcess] - #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[Test] + #[RunInSeparateProcess] + #[Group('command-handler')] public function a_second_factor_can_be_self_vetted(): void { $command = new SelfVetSecondFactorCommand(); @@ -1939,9 +1942,9 @@ public function a_second_factor_can_be_self_vetted(): void * * @todo remove this test once we drop BC support for SelfService 3.5 */ - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\RunInSeparateProcess] - #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[Test] + #[RunInSeparateProcess] + #[Group('command-handler')] public function a_second_factor_can_be_self_vetted_using_old_authoringSecondFactorIdentifier_command_property(): void { $command = new SelfVetSecondFactorCommand(); diff --git a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/IdentityCommandHandlerUniqueTypeRegistrationTest.php b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/IdentityCommandHandlerUniqueTypeRegistrationTest.php index d280ee7bb..5e6df4644 100644 --- a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/IdentityCommandHandlerUniqueTypeRegistrationTest.php +++ b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/IdentityCommandHandlerUniqueTypeRegistrationTest.php @@ -25,6 +25,9 @@ use DateTime as CoreDateTime; use Mockery as m; use Mockery\MockInterface; +use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\RunTestsInSeparateProcesses; +use PHPUnit\Framework\Attributes\Test; use Psr\Log\LoggerInterface; use Surfnet\Stepup\Configuration\Value\AllowedSecondFactorList; use Surfnet\Stepup\DateTime\DateTime; @@ -70,7 +73,7 @@ use Surfnet\StepupMiddleware\CommandHandlingBundle\Tests\DateTimeHelper; use function md5; -#[\PHPUnit\Framework\Attributes\RunTestsInSeparateProcesses] +#[RunTestsInSeparateProcesses] class IdentityCommandHandlerUniqueTypeRegistrationTest extends CommandHandlerTest { private static int $window = 3600; @@ -132,7 +135,7 @@ protected function createCommandHandler( ); } - #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[Group('command-handler')] public function test_yubikey_type_cannot_be_proven_if_type_already_exists(): void { $this->expectException(DomainException::class); @@ -190,7 +193,7 @@ public function test_yubikey_type_cannot_be_proven_if_type_already_exists(): voi ->when($command); } - #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[Group('command-handler')] public function test_phone_type_cannot_be_proven_if_type_already_exists(): void { $this->expectException(DomainException::class); @@ -249,7 +252,7 @@ public function test_phone_type_cannot_be_proven_if_type_already_exists(): void } - #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[Group('command-handler')] public function test_gssf_type_cannot_be_proven_if_type_already_exists(): void { $this->expectException(DomainException::class); @@ -314,8 +317,8 @@ public function test_gssf_type_cannot_be_proven_if_type_already_exists(): void } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[Test] + #[Group('command-handler')] public function test_u2f_type_cannot_be_proven_if_type_already_exists(): void { $this->expectException(DomainException::class); @@ -392,7 +395,7 @@ public function test_token_can_not_be_moved_if_type_already_exists(): void $command->sourceSecondFactorId = $this->uuid(); $command->targetSecondFactorId = $this->uuid(); - $secFacId = new SecondFactorId( $this->uuid()); + $secFacId = new SecondFactorId($this->uuid()); $yubikeySecFacId = new YubikeyPublicId('00000011'); $sourceRegistrantId = new IdentityId($command->sourceIdentityId); @@ -460,5 +463,4 @@ public function test_token_can_not_be_moved_if_type_already_exists(): void ->when($command) ->then([]); } - } diff --git a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/RegistrationAuthorityCommandHandlerTest.php b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/RegistrationAuthorityCommandHandlerTest.php index 1f62fcf25..b2ee424eb 100644 --- a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/RegistrationAuthorityCommandHandlerTest.php +++ b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/RegistrationAuthorityCommandHandlerTest.php @@ -19,12 +19,13 @@ namespace Surfnet\StepupMiddleware\CommandHandlingBundle\Tests\Identity\CommandHandler; use Broadway\CommandHandling\CommandHandler; -use Broadway\CommandHandling\CommandHandlerInterface; use Broadway\EventHandling\EventBus as EventBusInterface; use Broadway\EventSourcing\AggregateFactory\PublicConstructorAggregateFactory; use Broadway\EventStore\EventStore as EventStoreInterface; use Mockery as m; use Mockery\MockInterface; +use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Test; use Psr\Log\LoggerInterface; use Surfnet\Stepup\Configuration\EventSourcing\InstitutionConfigurationRepository; use Surfnet\Stepup\Configuration\InstitutionConfiguration; @@ -104,9 +105,9 @@ protected function createCommandHandler( ); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('command-handler')] - #[\PHPUnit\Framework\Attributes\Group('ra-command-handler')] + #[Test] + #[Group('command-handler')] + #[Group('ra-command-handler')] public function an_identity_cannot_be_accredited_for_another_institution_than_configured(): void { $this->expectExceptionMessage("An Identity may only be accredited by configured institutions"); @@ -157,9 +158,9 @@ public function an_identity_cannot_be_accredited_for_another_institution_than_co ->when($command); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('command-handler')] - #[\PHPUnit\Framework\Attributes\Group('ra-command-handler')] + #[Test] + #[Group('command-handler')] + #[Group('ra-command-handler')] public function an_identity_cannot_be_accredited_when_it_does_not_have_a_vetted_second_factor(): void { $this->expectExceptionMessage( @@ -200,9 +201,9 @@ public function an_identity_cannot_be_accredited_when_it_does_not_have_a_vetted_ } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('command-handler')] - #[\PHPUnit\Framework\Attributes\Group('ra-command-handler')] + #[Test] + #[Group('command-handler')] + #[Group('ra-command-handler')] public function an_identity_cannot_be_accredited_when_it_already_has_been_accredited(): void { $this->expectExceptionMessage("Cannot accredit Identity as it has already been accredited for institution"); @@ -262,9 +263,9 @@ public function an_identity_cannot_be_accredited_when_it_already_has_been_accred ->when($command); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('command-handler')] - #[\PHPUnit\Framework\Attributes\Group('ra-command-handler')] + #[Test] + #[Group('command-handler')] + #[Group('ra-command-handler')] public function an_identity_cannot_be_accredited_with_an_invalid_role(): void { $this->expectException(RuntimeException::class); @@ -312,9 +313,9 @@ public function an_identity_cannot_be_accredited_with_an_invalid_role(): void ->when($command); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('command-handler')] - #[\PHPUnit\Framework\Attributes\Group('ra-command-handler')] + #[Test] + #[Group('command-handler')] + #[Group('ra-command-handler')] public function an_identity_can_be_accredited_with_ra_role(): void { $command = new AccreditIdentityCommand(); @@ -376,9 +377,9 @@ public function an_identity_can_be_accredited_with_ra_role(): void ]); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('command-handler')] - #[\PHPUnit\Framework\Attributes\Group('ra-command-handler')] + #[Test] + #[Group('command-handler')] + #[Group('ra-command-handler')] public function an_identity_can_be_accredited_with_raa_role(): void { $command = new AccreditIdentityCommand(); @@ -442,9 +443,9 @@ public function an_identity_can_be_accredited_with_raa_role(): void ); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('command-handler')] - #[\PHPUnit\Framework\Attributes\Group('ra-command-handler')] + #[Test] + #[Group('command-handler')] + #[Group('ra-command-handler')] public function a_registration_authoritys_information_can_be_amended(): void { $command = new AmendRegistrationAuthorityInformationCommand(); @@ -509,9 +510,9 @@ public function a_registration_authoritys_information_can_be_amended(): void ); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('command-handler')] - #[\PHPUnit\Framework\Attributes\Group('ra-command-handler')] + #[Test] + #[Group('command-handler')] + #[Group('ra-command-handler')] public function an_identitys_registration_authority_information_cannot_be_amended(): void { $this->expectExceptionMessage( @@ -560,9 +561,9 @@ public function an_identitys_registration_authority_information_cannot_be_amende ->when($command); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('command-handler')] - #[\PHPUnit\Framework\Attributes\Group('ra-command-handler')] + #[Test] + #[Group('command-handler')] + #[Group('ra-command-handler')] public function an_identity_without_vetted_second_factor_may_not_be_accredited_as_ra(): void { $this->expectExceptionMessage( @@ -603,9 +604,9 @@ public function an_identity_without_vetted_second_factor_may_not_be_accredited_a ->when($command); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('command-handler')] - #[\PHPUnit\Framework\Attributes\Group('ra-command-handler')] + #[Test] + #[Group('command-handler')] + #[Group('ra-command-handler')] public function an_identity_with_a_vetted_second_factor_can_be_accredited_as_ra(): void { $command = new AccreditIdentityCommand(); @@ -667,9 +668,9 @@ public function an_identity_with_a_vetted_second_factor_can_be_accredited_as_ra( ]); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('command-handler')] - #[\PHPUnit\Framework\Attributes\Group('ra-command-handler')] + #[Test] + #[Group('command-handler')] + #[Group('ra-command-handler')] public function an_identity_cannot_be_accredited_twice(): void { $this->expectExceptionMessage("Cannot accredit Identity as it has already been accredited for institution"); @@ -729,9 +730,9 @@ public function an_identity_cannot_be_accredited_twice(): void ->when($command); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('command-handler')] - #[\PHPUnit\Framework\Attributes\Group('ra-command-handler')] + #[Test] + #[Group('command-handler')] + #[Group('ra-command-handler')] public function an_identity_cannot_be_accredited_as_sraa(): void { $this->expectException(RuntimeException::class); @@ -778,9 +779,9 @@ public function an_identity_cannot_be_accredited_as_sraa(): void ->when($command); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('command-handler')] - #[\PHPUnit\Framework\Attributes\Group('ra-command-handler')] + #[Test] + #[Group('command-handler')] + #[Group('ra-command-handler')] public function an_identity_that_is_accredited_as_raa_can_be_appointed_as_ra(): void { $command = new AppointRoleCommand(); @@ -842,9 +843,9 @@ public function an_identity_that_is_accredited_as_raa_can_be_appointed_as_ra(): ]); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('command-handler')] - #[\PHPUnit\Framework\Attributes\Group('ra-command-handler')] + #[Test] + #[Group('command-handler')] + #[Group('ra-command-handler')] public function an_identity_that_is_accredited_as_ra_can_be_appointed_as_raa(): void { $command = new AppointRoleCommand(); @@ -907,9 +908,9 @@ public function an_identity_that_is_accredited_as_ra_can_be_appointed_as_raa(): ]); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('command-handler')] - #[\PHPUnit\Framework\Attributes\Group('ra-command-handler')] + #[Test] + #[Group('command-handler')] + #[Group('ra-command-handler')] public function an_unaccredited_identity_cannot_be_appointed_a_registration_authority_role(): void { $this->expectExceptionMessage( @@ -959,9 +960,9 @@ public function an_unaccredited_identity_cannot_be_appointed_a_registration_auth ->when($command); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('command-handler')] - #[\PHPUnit\Framework\Attributes\Group('ra-command-handler')] + #[Test] + #[Group('command-handler')] + #[Group('ra-command-handler')] public function an_unaccredited_identity_cannot_have_its_registration_authority_retracted(): void { $this->expectExceptionMessage( diff --git a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/RightToBeForgottenCommandHandlerTest.php b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/RightToBeForgottenCommandHandlerTest.php index b79ccc9dd..dc3fd43aa 100644 --- a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/RightToBeForgottenCommandHandlerTest.php +++ b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/RightToBeForgottenCommandHandlerTest.php @@ -22,9 +22,12 @@ use Broadway\EventHandling\EventBus as EventBusInterface; use Broadway\EventSourcing\AggregateFactory\PublicConstructorAggregateFactory; use Broadway\EventStore\EventStore as EventStoreInterface; -use Mockery\Matcher\IsEqual; use Mockery as m; +use Mockery\Matcher\IsEqual; use Mockery\MockInterface; +use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\RunTestsInSeparateProcesses; +use PHPUnit\Framework\Attributes\Test; use Psr\Log\LoggerInterface; use Surfnet\Stepup\Exception\DomainException; use Surfnet\Stepup\Helper\UserDataFilterInterface; @@ -46,6 +49,7 @@ use Surfnet\Stepup\Identity\Value\SecondFactorId; use Surfnet\Stepup\Identity\Value\YubikeyPublicId; use Surfnet\StepupMiddleware\ApiBundle\Identity\Entity\Identity; +use Surfnet\StepupMiddleware\ApiBundle\Identity\Repository\IdentityRepository as ConcreteIdentityRepository; use Surfnet\StepupMiddleware\ApiBundle\Identity\Repository\SraaRepository; use Surfnet\StepupMiddleware\CommandHandlingBundle\Exception\RuntimeException; use Surfnet\StepupMiddleware\CommandHandlingBundle\Identity\Command\ForgetIdentityCommand; @@ -53,7 +57,7 @@ use Surfnet\StepupMiddleware\CommandHandlingBundle\SensitiveData\Service\SensitiveDataService; use Surfnet\StepupMiddleware\CommandHandlingBundle\Tests\CommandHandlerTest; -#[\PHPUnit\Framework\Attributes\RunTestsInSeparateProcesses] +#[RunTestsInSeparateProcesses] class RightToBeForgottenCommandHandlerTest extends CommandHandlerTest { /** @var MockInterface */ @@ -72,7 +76,7 @@ protected function createCommandHandler( $aggregateFactory = new PublicConstructorAggregateFactory(); $this->apiIdentityRepository = m::mock( - \Surfnet\StepupMiddleware\ApiBundle\Identity\Repository\IdentityRepository::class, + ConcreteIdentityRepository::class, ); $this->sensitiveDataService = m::mock(SensitiveDataService::class); $this->sraaRepository = m::mock(SraaRepository::class); @@ -94,9 +98,9 @@ protected function createCommandHandler( ); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('command-handler')] - #[\PHPUnit\Framework\Attributes\Group('sensitive-data')] + #[Test] + #[Group('command-handler')] + #[Group('sensitive-data')] public function an_identity_can_be_forgotten(): void { $identityId = new IdentityId('A'); @@ -151,9 +155,9 @@ public function an_identity_can_be_forgotten(): void ]); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('command-handler')] - #[\PHPUnit\Framework\Attributes\Group('sensitive-data')] + #[Test] + #[Group('command-handler')] + #[Group('sensitive-data')] public function an_identity_may_be_forgotten_twice(): void { $identityId = new IdentityId('A'); @@ -209,9 +213,9 @@ public function an_identity_may_be_forgotten_twice(): void ]); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('command-handler')] - #[\PHPUnit\Framework\Attributes\Group('sensitive-data')] + #[Test] + #[Group('command-handler')] + #[Group('sensitive-data')] public function an_ra_cannot_be_forgotten(): void { $this->expectExceptionMessage("Cannot forget an identity that is currently accredited as an RA(A)"); @@ -269,9 +273,9 @@ public function an_ra_cannot_be_forgotten(): void ->when($command); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('command-handler')] - #[\PHPUnit\Framework\Attributes\Group('sensitive-data')] + #[Test] + #[Group('command-handler')] + #[Group('sensitive-data')] public function an_raa_cannot_be_forgotten(): void { $this->expectExceptionMessage("Cannot forget an identity that is currently accredited as an RA(A)"); @@ -330,9 +334,9 @@ public function an_raa_cannot_be_forgotten(): void ->when($command); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('command-handler')] - #[\PHPUnit\Framework\Attributes\Group('sensitive-data')] + #[Test] + #[Group('command-handler')] + #[Group('sensitive-data')] public function an_sraa_cannot_be_forgotten(): void { $this->expectExceptionMessage("Cannot forget an identity that is currently accredited as an SRAA"); diff --git a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/SecondFactorRevocationTest.php b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/SecondFactorRevocationTest.php index 8d2f1473c..91c0a0386 100644 --- a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/SecondFactorRevocationTest.php +++ b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/SecondFactorRevocationTest.php @@ -23,6 +23,9 @@ use Broadway\EventSourcing\AggregateFactory\PublicConstructorAggregateFactory; use Broadway\EventStore\EventStore as EventStoreInterface; use Mockery as m; +use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\RunTestsInSeparateProcesses; +use PHPUnit\Framework\Attributes\Test; use Psr\Log\LoggerInterface; use Surfnet\Stepup\DateTime\DateTime; use Surfnet\Stepup\Helper\RecoveryTokenSecretHelper; @@ -69,7 +72,7 @@ use Surfnet\StepupMiddleware\CommandHandlingBundle\Identity\Service\RegistrationMailService; use Surfnet\StepupMiddleware\CommandHandlingBundle\Tests\CommandHandlerTest; -#[\PHPUnit\Framework\Attributes\RunTestsInSeparateProcesses] +#[RunTestsInSeparateProcesses] class SecondFactorRevocationTest extends CommandHandlerTest { private static int $window = 3600; @@ -102,8 +105,8 @@ protected function createCommandHandler( ); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[Test] + #[Group('command-handler')] public function an_identity_can_revoke_its_own_unverified_second_factor(): void { $command = new RevokeOwnSecondFactorCommand(); @@ -156,8 +159,8 @@ public function an_identity_can_revoke_its_own_unverified_second_factor(): void ]); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[Test] + #[Group('command-handler')] public function an_identity_can_revoke_its_own_verified_second_factor(): void { $command = new RevokeOwnSecondFactorCommand(); @@ -222,8 +225,8 @@ public function an_identity_can_revoke_its_own_verified_second_factor(): void ]); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[Test] + #[Group('command-handler')] public function an_identity_can_revoke_its_own_vetted_second_factor(): void { $command = new RevokeOwnSecondFactorCommand(); @@ -306,8 +309,8 @@ public function an_identity_can_revoke_its_own_vetted_second_factor(): void ]); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[Test] + #[Group('command-handler')] public function a_registration_authority_can_revoke_an_unverified_second_factor(): void { $command = new RevokeRegistrantsSecondFactorCommand(); @@ -390,8 +393,8 @@ public function a_registration_authority_can_revoke_an_unverified_second_factor( ]); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[Test] + #[Group('command-handler')] public function a_registration_authority_can_revoke_a_verified_second_factor(): void { $command = new RevokeRegistrantsSecondFactorCommand(); @@ -487,8 +490,8 @@ public function a_registration_authority_can_revoke_a_verified_second_factor(): ]); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[Test] + #[Group('command-handler')] public function a_registration_authority_can_revoke_a_vetted_second_factor(): void { $command = new RevokeRegistrantsSecondFactorCommand(); @@ -601,8 +604,8 @@ public function a_registration_authority_can_revoke_a_vetted_second_factor(): vo } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[Test] + #[Group('command-handler')] public function a_registration_authority_can_revoke_a_possession_proved_skipped_vetted_second_factor(): void { $command = new RevokeRegistrantsSecondFactorCommand(); @@ -717,8 +720,8 @@ public function a_registration_authority_can_revoke_a_possession_proved_skipped_ /** * Test if the VettedSecondFactorsAllRevokedEvent is not triggered with multiple 2fa's */ - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[Test] + #[Group('command-handler')] public function a_registration_authority_can_revoke_one_of_multiple_vetted_second_factors(): void { $command = new RevokeRegistrantsSecondFactorCommand(); diff --git a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/WhitelistCommandHandlerTest.php b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/WhitelistCommandHandlerTest.php index 8ab1527be..c33ea8504 100644 --- a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/WhitelistCommandHandlerTest.php +++ b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/WhitelistCommandHandlerTest.php @@ -22,6 +22,8 @@ use Broadway\EventHandling\EventBus as EventBusInterface; use Broadway\EventSourcing\AggregateFactory\PublicConstructorAggregateFactory; use Broadway\EventStore\EventStore as EventStoreInterface; +use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Test; use Surfnet\Stepup\Exception\DomainException; use Surfnet\Stepup\Identity\Collection\InstitutionCollection; use Surfnet\Stepup\Identity\Event\InstitutionsAddedToWhitelistEvent; @@ -53,9 +55,9 @@ protected function createCommandHandler( return new WhitelistCommandHandler(new WhitelistRepository($eventStore, $eventBus, $aggregateFactory)); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('command-handler')] - #[\PHPUnit\Framework\Attributes\Group('whitelist')] + #[Test] + #[Group('command-handler')] + #[Group('whitelist')] public function when_the_whitelist_does_not_exist_yet_it_is_created(): void { $command = new ReplaceWhitelistCommand(); @@ -70,9 +72,9 @@ public function when_the_whitelist_does_not_exist_yet_it_is_created(): void ]); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('command-handler')] - #[\PHPUnit\Framework\Attributes\Group('whitelist')] + #[Test] + #[Group('command-handler')] + #[Group('whitelist')] public function the_whitelist_can_be_fully_replaced(): void { $initialInstitutions = $this->mapStringValuesToInstitutions(['Initial One', 'Initial Two']); @@ -92,9 +94,9 @@ public function the_whitelist_can_be_fully_replaced(): void } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('command-handler')] - #[\PHPUnit\Framework\Attributes\Group('whitelist')] + #[Test] + #[Group('command-handler')] + #[Group('whitelist')] public function an_institution_not_yet_on_the_whitelist_can_be_added_to_the_whitelist(): void { $initialInstitutions = $this->mapStringValuesToInstitutions(['Initial One', 'Initial Two']); @@ -113,9 +115,9 @@ public function an_institution_not_yet_on_the_whitelist_can_be_added_to_the_whit ]); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('command-handler')] - #[\PHPUnit\Framework\Attributes\Group('whitelist')] + #[Test] + #[Group('command-handler')] + #[Group('whitelist')] public function an_institution_on_the_whitelist_may_not_be_added_again(): void { $this->expectExceptionMessage("Cannot add institution \"already exists\" as it is already whitelisted"); @@ -132,9 +134,9 @@ public function an_institution_on_the_whitelist_may_not_be_added_again(): void ->when($command); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('command-handler')] - #[\PHPUnit\Framework\Attributes\Group('whitelist')] + #[Test] + #[Group('command-handler')] + #[Group('whitelist')] public function an_institution_on_the_whitelist_can_be_removed_from_the_whitelist(): void { $initialInstitutions = $this->mapStringValuesToInstitutions(['Initial One', 'On the whitelist']); @@ -153,9 +155,9 @@ public function an_institution_on_the_whitelist_can_be_removed_from_the_whitelis ]); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('command-handler')] - #[\PHPUnit\Framework\Attributes\Group('whitelist')] + #[Test] + #[Group('command-handler')] + #[Group('whitelist')] public function an_institution_that_is_not_on_the_whitelist_cannot_be_removed(): void { $this->expectExceptionMessage("Cannot remove institution \"not on the whitelist\" as it is not whitelisted"); diff --git a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Mockery/HasInstitutionMatcher.php b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Mockery/HasInstitutionMatcher.php index 7e4d28679..826385168 100644 --- a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Mockery/HasInstitutionMatcher.php +++ b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Mockery/HasInstitutionMatcher.php @@ -18,7 +18,6 @@ namespace Surfnet\StepupMiddleware\CommandHandlingBundle\Tests\Mockery; -use Mockery\Exception\RuntimeException; use Mockery\Matcher\MatcherAbstract; final class HasInstitutionMatcher extends MatcherAbstract diff --git a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Mockery/HasInstitutionMatcherTest.php b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Mockery/HasInstitutionMatcherTest.php index cbfecd559..546df3c79 100644 --- a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Mockery/HasInstitutionMatcherTest.php +++ b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Mockery/HasInstitutionMatcherTest.php @@ -19,22 +19,23 @@ namespace Surfnet\StepupMiddleware\CommandHandlingBundle\Tests\Mockery; use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration; -use Mockery\Exception\RuntimeException; -use PHPUnit\Framework\TestCase as TestCase; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Test; +use PHPUnit\Framework\TestCase; use stdClass; use Surfnet\StepupMiddleware\CommandHandlingBundle\Tests\Mockery\TestObjects\ObjectWithInstitutionAccessor; use Surfnet\StepupMiddleware\CommandHandlingBundle\Tests\Mockery\TestObjects\ObjectWithInstitutionProperty; use Surfnet\StepupMiddleware\CommandHandlingBundle\Tests\Mockery\TestObjects\ObjectWithoutInstitutionPropertyAndAccessor; -use TypeError; class HasInstitutionMatcherTest extends TestCase { use MockeryPHPUnitIntegration; - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\DataProvider('nonObjectProvider')] - #[\PHPUnit\Framework\Attributes\Group('mockery')] - #[\PHPUnit\Framework\Attributes\Group('institution')] + #[Test] + #[DataProvider('nonObjectProvider')] + #[Group('mockery')] + #[Group('institution')] public function has_institution_matcher_only_matches_objects_against_a_given_institution( bool|int|float|string|array|null $nonObject, ): void { @@ -46,9 +47,9 @@ public function has_institution_matcher_only_matches_objects_against_a_given_ins $this->assertFalse($match); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('mockery')] - #[\PHPUnit\Framework\Attributes\Group('institution')] + #[Test] + #[Group('mockery')] + #[Group('institution')] public function has_institution_matcher_does_not_match_when_object_has_no_institution_property_and_no_institution_accessor(): void { $institution = 'surfnet.nl'; @@ -61,9 +62,9 @@ public function has_institution_matcher_does_not_match_when_object_has_no_instit $this->assertFalse($match); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('mockery')] - #[\PHPUnit\Framework\Attributes\Group('institution')] + #[Test] + #[Group('mockery')] + #[Group('institution')] public function has_institution_matcher_does_not_match_when_objects_accessed_institution_differs_from_given_institution(): void { $institution = 'surfnet.nl'; @@ -77,9 +78,9 @@ public function has_institution_matcher_does_not_match_when_objects_accessed_ins $this->assertFalse($match); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('mockery')] - #[\PHPUnit\Framework\Attributes\Group('institution')] + #[Test] + #[Group('mockery')] + #[Group('institution')] public function has_institution_matcher_matches_when_objects_accessed_institution_is_the_same_as_given_institution(): void { $institution = 'surfnet.nl'; @@ -92,9 +93,9 @@ public function has_institution_matcher_matches_when_objects_accessed_institutio $this->assertTrue($match); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('mockery')] - #[\PHPUnit\Framework\Attributes\Group('institution')] + #[Test] + #[Group('mockery')] + #[Group('institution')] public function has_institution_matcher_does_not_match_when_objects_institution_property_differs_from_given_institution(): void { $institution = 'surfnet.nl'; @@ -108,9 +109,9 @@ public function has_institution_matcher_does_not_match_when_objects_institution_ $this->assertFalse($match); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('mockery')] - #[\PHPUnit\Framework\Attributes\Group('institution')] + #[Test] + #[Group('mockery')] + #[Group('institution')] public function has_institution_matcher_matches_when_objects_institution_property_is_the_same_as_given_institution(): void { $institution = 'surfnet.nl'; diff --git a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Pipeline/AuthorizingStageTest.php b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Pipeline/AuthorizingStageTest.php index ac3d1427c..654b6623b 100644 --- a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Pipeline/AuthorizingStageTest.php +++ b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Pipeline/AuthorizingStageTest.php @@ -21,6 +21,9 @@ use Mockery as m; use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration; use Mockery\MockInterface; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\TestCase as UnitTest; use Psr\Log\NullLogger; use Surfnet\StepupMiddleware\CommandHandlingBundle\Command\AbstractCommand; @@ -47,8 +50,8 @@ public function setUp(): void ); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('pipeline')] + #[Test] + #[Group('pipeline')] public function when_a_command_has_no_marker_interface_authorization_is_granted_by_default(): void { $command = m::mock(AbstractCommand::class); @@ -61,9 +64,9 @@ public function when_a_command_has_no_marker_interface_authorization_is_granted_ $this->assertInstanceOf(AuthorizingStage::class, $authorizingStage); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\DataProvider('interfaceToRoleMappingProvider')] - #[\PHPUnit\Framework\Attributes\Group('pipeline')] + #[Test] + #[DataProvider('interfaceToRoleMappingProvider')] + #[Group('pipeline')] public function a_command_with_a_marker_interface_triggers_a_check_for_the_correct_role( string $interface, string $role, @@ -83,8 +86,8 @@ public function a_command_with_a_marker_interface_triggers_a_check_for_the_corre $this->assertInstanceOf(AuthorizingStage::class, $authorizingStage); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('pipeline')] + #[Test] + #[Group('pipeline')] public function when_a_command_implements_multiple_marker_interfaces_at_least_one_corresponding_role_is_required(): void { /** @var AbstractCommand&SelfServiceExecutable&RaExecutable&ManagementExecutable&MockInterface $command */ @@ -120,8 +123,8 @@ public function when_a_command_implements_multiple_marker_interfaces_at_least_on $this->assertInstanceOf(AuthorizingStage::class, $authorizingStage); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('pipeline')] + #[Test] + #[Group('pipeline')] public function when_the_client_does_not_have_the_required_role_an_forbidden_exception_is_thrown(): void { $this->expectException(ForbiddenException::class); diff --git a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Pipeline/DispatchStageTest.php b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Pipeline/DispatchStageTest.php index da52dbcbe..6b177f64f 100644 --- a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Pipeline/DispatchStageTest.php +++ b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Pipeline/DispatchStageTest.php @@ -22,18 +22,19 @@ use Mockery as m; use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration; use Mockery\MockInterface; +use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\TestCase; use Psr\Log\NullLogger; use Surfnet\StepupMiddleware\CommandHandlingBundle\Command\AbstractCommand; -use Surfnet\StepupMiddleware\CommandHandlingBundle\EventHandling\BufferedEventBus; use Surfnet\StepupMiddleware\CommandHandlingBundle\Pipeline\DispatchStage; class DispatchStageTest extends TestCase { use MockeryPHPUnitIntegration; - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('pipeline')] + #[Test] + #[Group('pipeline')] public function it_dispatches_commands(): void { $command = m::mock(AbstractCommand::class); diff --git a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Pipeline/EventDispatchingStageTest.php b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Pipeline/EventDispatchingStageTest.php index e68bf5306..cac0b37f8 100644 --- a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Pipeline/EventDispatchingStageTest.php +++ b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Pipeline/EventDispatchingStageTest.php @@ -21,6 +21,8 @@ use Mockery as m; use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration; use Mockery\MockInterface; +use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\TestCase as UnitTest; use Psr\Log\NullLogger; use Surfnet\StepupMiddleware\CommandHandlingBundle\Command\AbstractCommand; @@ -32,8 +34,8 @@ class EventDispatchingStageTest extends UnitTest { use MockeryPHPUnitIntegration; - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('pipeline')] + #[Test] + #[Group('pipeline')] public function buffered_event_bus_flush_is_called_during_process(): void { $command = m::mock(AbstractCommand::class); @@ -48,8 +50,8 @@ public function buffered_event_bus_flush_is_called_during_process(): void $this->assertInstanceOf(EventDispatchingStage::class, $stage); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('pipeline')] + #[Test] + #[Group('pipeline')] public function it_returns_the_same_command_as_it_processes_unmodified(): void { $command = new FixedUuidStubCommand(); diff --git a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Pipeline/StagedPipelineTest.php b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Pipeline/StagedPipelineTest.php index 4f1fb60de..4cad91869 100644 --- a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Pipeline/StagedPipelineTest.php +++ b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Pipeline/StagedPipelineTest.php @@ -21,6 +21,8 @@ use Mockery as m; use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration; use Mockery\MockInterface; +use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\TestCase; use Psr\Log\NullLogger; use Surfnet\StepupMiddleware\CommandHandlingBundle\Command\AbstractCommand; @@ -31,8 +33,8 @@ class StagedPipelineTest extends TestCase { use MockeryPHPUnitIntegration; - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('pipeline')] + #[Test] + #[Group('pipeline')] public function it_passes_a_command_through_a_single_stage(): void { $command = m::mock(AbstractCommand::class); @@ -47,8 +49,8 @@ public function it_passes_a_command_through_a_single_stage(): void $this->assertSame($command, $pipeline->process($command)); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('pipeline')] + #[Test] + #[Group('pipeline')] public function it_passes_a_command_through_multiple_stages(): void { $command = m::mock(AbstractCommand::class); @@ -68,8 +70,8 @@ public function it_passes_a_command_through_multiple_stages(): void $this->assertSame($command, $pipeline->process($command)); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('pipeline')] + #[Test] + #[Group('pipeline')] public function it_passes_the_command_returned_from_an_earlier_stage_on_to_the_next(): void { $command1 = m::mock(AbstractCommand::class); diff --git a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Pipeline/ValidationStageTest.php b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Pipeline/ValidationStageTest.php index e03b11eec..3fc5b972a 100644 --- a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Pipeline/ValidationStageTest.php +++ b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Pipeline/ValidationStageTest.php @@ -22,6 +22,8 @@ use Mockery as m; use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration; use Mockery\MockInterface; +use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\TestCase; use Psr\Log\NullLogger; use Surfnet\StepupMiddleware\CommandHandlingBundle\Command\AbstractCommand; @@ -34,8 +36,8 @@ class ValidationStageTest extends TestCase { use MockeryPHPUnitIntegration; - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('pipeline')] + #[Test] + #[Group('pipeline')] public function it_validates_commands(): void { $command = m::mock(AbstractCommand::class); @@ -52,8 +54,8 @@ public function it_validates_commands(): void $this->assertSame($command, $stage->process($command)); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('pipeline')] + #[Test] + #[Group('pipeline')] public function it_throws_an_exception_when_validation_fails(): void { $this->expectException(InvalidCommandException::class); diff --git a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Processor/RecoveryTokenEmailProcessorTest.php b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Processor/RecoveryTokenEmailProcessorTest.php index 77f189f50..1a00de3ca 100644 --- a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Processor/RecoveryTokenEmailProcessorTest.php +++ b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Processor/RecoveryTokenEmailProcessorTest.php @@ -20,6 +20,7 @@ use Mockery; use Mockery\MockInterface; +use PHPUnit\Framework\Attributes\Group; use PHPUnit\Framework\TestCase; use Surfnet\Stepup\Identity\Event\CompliedWithRecoveryCodeRevocationEvent; use Surfnet\Stepup\Identity\Event\PhoneRecoveryTokenPossessionProvenEvent; @@ -60,7 +61,7 @@ public function setUp(): void ); } - #[\PHPUnit\Framework\Attributes\Group('processor')] + #[Group('processor')] public function test_mails_when_complied_with_recovery_token_revocation(): void { $identity = $this->returnABogusIdentity(); @@ -90,7 +91,7 @@ public function test_mails_when_complied_with_recovery_token_revocation(): void $this->processor->handleCompliedWithRecoveryCodeRevocationEvent($event); } - #[\PHPUnit\Framework\Attributes\Group('processor')] + #[Group('processor')] public function test_does_not_mail_when_identity_not_found_complied_with_recovery_token_revocation(): void { $this->identityService @@ -110,7 +111,7 @@ public function test_does_not_mail_when_identity_not_found_complied_with_recover $this->processor->handleCompliedWithRecoveryCodeRevocationEvent($event); } - #[\PHPUnit\Framework\Attributes\Group('processor')] + #[Group('processor')] public function test_it_mails_when_recovery_token_revoked_by_identity(): void { $identity = $this->returnABogusIdentity(); @@ -139,7 +140,7 @@ public function test_it_mails_when_recovery_token_revoked_by_identity(): void $this->processor->handleRecoveryTokenRevokedEvent($event); } - #[\PHPUnit\Framework\Attributes\Group('processor')] + #[Group('processor')] public function test_does_not_mail_when_identity_not_found_recovery_token_revocation(): void { $this->identityService @@ -158,7 +159,7 @@ public function test_does_not_mail_when_identity_not_found_recovery_token_revoca $this->processor->handleRecoveryTokenRevokedEvent($event); } - #[\PHPUnit\Framework\Attributes\Group('processor')] + #[Group('processor')] public function test_it_mails_when_sms_token_created(): void { $identity = $this->returnABogusIdentity(); @@ -187,7 +188,7 @@ public function test_it_mails_when_sms_token_created(): void $this->processor->handlePhoneRecoveryTokenPossessionProvenEvent($event); } - #[\PHPUnit\Framework\Attributes\Group('processor')] + #[Group('processor')] public function test_does_not_mail_when_identity_not_found_sms_creation(): void { $this->identityService @@ -209,7 +210,7 @@ public function test_does_not_mail_when_identity_not_found_sms_creation(): void $this->processor->handlePhoneRecoveryTokenPossessionProvenEvent($event); } - #[\PHPUnit\Framework\Attributes\Group('processor')] + #[Group('processor')] public function test_it_mails_when_safe_store_token_created(): void { $identity = $this->returnABogusIdentity(); @@ -238,7 +239,7 @@ public function test_it_mails_when_safe_store_token_created(): void $this->processor->handleSafeStoreSecretRecoveryTokenPossessionPromisedEvent($event); } - #[\PHPUnit\Framework\Attributes\Group('processor')] + #[Group('processor')] public function test_does_not_mail_when_identity_not_found_safe_store_creation(): void { $this->identityService diff --git a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/SensitiveData/EventSourcing/SensitiveDataMessageStreamTest.php b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/SensitiveData/EventSourcing/SensitiveDataMessageStreamTest.php index 36a77f5eb..7fa9d25bf 100644 --- a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/SensitiveData/EventSourcing/SensitiveDataMessageStreamTest.php +++ b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/SensitiveData/EventSourcing/SensitiveDataMessageStreamTest.php @@ -25,7 +25,10 @@ use Mockery as m; use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration; use Mockery\MockInterface; -use PHPUnit\Framework\TestCase as TestCase; +use PHPUnit\Framework\Attributes\DoesNotPerformAssertions; +use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Test; +use PHPUnit\Framework\TestCase; use Surfnet\Stepup\Identity\Value\CommonName; use Surfnet\Stepup\Identity\Value\Email; use Surfnet\Stepup\Identity\Value\IdentityId; @@ -41,16 +44,16 @@ final class SensitiveDataMessageStreamTest extends TestCase public const EVENT_STREAM_A = 'A'; public const EVENT_STREAM_B = 'B'; - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\DoesNotPerformAssertions] - #[\PHPUnit\Framework\Attributes\Group('sensitive-data')] + #[Test] + #[DoesNotPerformAssertions] + #[Group('sensitive-data')] public function it_can_work_with_zero_sensitive_data_messages_and_zero_events(): void { $this->apply([], []); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('sensitive-data')] + #[Test] + #[Group('sensitive-data')] public function it_can_apply_one_sensitive_data_message_to_one_matching_event(): void { $sensitiveDataMessages = [ @@ -74,8 +77,8 @@ public function it_can_apply_one_sensitive_data_message_to_one_matching_event(): $this->assertSensitiveDataEquals($sensitiveDataMessages[0], $domainMessages[0]); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('sensitive-data')] + #[Test] + #[Group('sensitive-data')] public function it_can_apply_two_sensitive_data_message_to_two_matching_events(): void { $sensitiveDataMessages = [ @@ -112,8 +115,8 @@ public function it_can_apply_two_sensitive_data_message_to_two_matching_events() $this->assertSensitiveDataEquals($sensitiveDataMessages[1], $domainMessages[1]); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('sensitive-data')] + #[Test] + #[Group('sensitive-data')] public function it_can_apply_one_sensitive_data_message_to_one_regular_event_and_one_matching_forgettable_event(): void { $sensitiveDataMessages = [ @@ -144,8 +147,8 @@ public function it_can_apply_one_sensitive_data_message_to_one_regular_event_and $this->assertSensitiveDataEquals($sensitiveDataMessages[0], $domainMessages[1]); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('sensitive-data')] + #[Test] + #[Group('sensitive-data')] public function it_fails_when_sensitive_data_is_missing_for_an_event(): void { $this->expectExceptionMessage("Sensitive data is missing for event with UUID A, playhead 0"); @@ -165,8 +168,8 @@ public function it_fails_when_sensitive_data_is_missing_for_an_event(): void $this->apply($sensitiveDataMessages, $domainMessages); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('sensitive-data')] + #[Test] + #[Group('sensitive-data')] public function it_fails_when_not_all_sensitive_data_could_be_matched_to_an_event(): void { $this->expectExceptionMessage("1 sensitive data messages are still to be matched to events"); @@ -191,8 +194,8 @@ public function it_fails_when_not_all_sensitive_data_could_be_matched_to_an_even $this->apply($sensitiveDataMessages, $domainMessages); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('sensitive-data')] + #[Test] + #[Group('sensitive-data')] public function it_fails_when_sensitive_data_matches_a_regular_event(): void { $this->expectExceptionMessage( @@ -220,8 +223,8 @@ public function it_fails_when_sensitive_data_matches_a_regular_event(): void $this->apply($sensitiveDataMessages, $domainMessages); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('sensitive-data')] + #[Test] + #[Group('sensitive-data')] public function it_fails_when_stream_ids_dont_match(): void { $this->expectExceptionMessage("Encountered sensitive data from stream A for event from stream B"); @@ -247,8 +250,8 @@ public function it_fails_when_stream_ids_dont_match(): void $this->apply($sensitiveDataMessages, $domainMessages); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('sensitive-data')] + #[Test] + #[Group('sensitive-data')] public function it_can_forget_all_sensitive_data(): void { /** @var MockInterface&SensitiveDataMessage $command */ diff --git a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/SensitiveData/SensitiveDataTest.php b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/SensitiveData/SensitiveDataTest.php index d10302478..702730580 100644 --- a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/SensitiveData/SensitiveDataTest.php +++ b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/SensitiveData/SensitiveDataTest.php @@ -19,7 +19,10 @@ namespace Surfnet\StepupMiddleware\CommandHandlingBundle\Tests\SensitiveData; use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration; -use PHPUnit\Framework\TestCase as TestCase; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Test; +use PHPUnit\Framework\TestCase; use Surfnet\Stepup\Identity\Value\CommonName; use Surfnet\Stepup\Identity\Value\DocumentNumber; use Surfnet\Stepup\Identity\Value\Email; @@ -103,9 +106,9 @@ public static function sensitiveDataToSerialise(): array ]; } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\DataProvider('sensitiveDataToSerialise')] - #[\PHPUnit\Framework\Attributes\Group('sensitive-data')] + #[Test] + #[DataProvider('sensitiveDataToSerialise')] + #[Group('sensitive-data')] public function it_serialises_and_deserialises( SensitiveData $sensitiveData, array $getterExpectations, diff --git a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/SensitiveData/Service/SensitiveDataServiceTest.php b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/SensitiveData/Service/SensitiveDataServiceTest.php index 4c5512458..5e335441e 100644 --- a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/SensitiveData/Service/SensitiveDataServiceTest.php +++ b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/SensitiveData/Service/SensitiveDataServiceTest.php @@ -20,7 +20,9 @@ use Mockery as m; use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration; -use PHPUnit\Framework\TestCase as TestCase; +use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Test; +use PHPUnit\Framework\TestCase; use Surfnet\Stepup\Identity\Value\IdentityId; use Surfnet\StepupMiddleware\CommandHandlingBundle\SensitiveData\EventSourcing\SensitiveDataMessageStream; use Surfnet\StepupMiddleware\CommandHandlingBundle\SensitiveData\Repository\SensitiveDataMessageRepository; @@ -30,8 +32,8 @@ final class SensitiveDataServiceTest extends TestCase { use MockeryPHPUnitIntegration; - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('sensitive-data')] + #[Test] + #[Group('sensitive-data')] public function it_can_forget_sensitive_data_in_a_stream(): void { $identityId = new IdentityId('A'); diff --git a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Twig/BackwardsCompatibleExtensionTest.php b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Twig/BackwardsCompatibleExtensionTest.php index 96a2ce8ca..bb1918d06 100644 --- a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Twig/BackwardsCompatibleExtensionTest.php +++ b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Twig/BackwardsCompatibleExtensionTest.php @@ -19,22 +19,24 @@ namespace Surfnet\StepupMiddleware\CommandHandlingBundle\Tests\Twig; use DateTime; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\RequiresPhpExtension; use PHPUnit\Framework\TestCase; use Surfnet\StepupMiddleware\CommandHandlingBundle\Twig\BackwardsCompatibleExtension; use Twig\Environment; use Twig\Extra\Intl\IntlExtension; use Twig\Loader\ArrayLoader; -#[\PHPUnit\Framework\Attributes\RequiresPhpExtension('intl')] +#[RequiresPhpExtension('intl')] class BackwardsCompatibleExtensionTest extends TestCase { - #[\PHPUnit\Framework\Attributes\DataProvider('templateProvider')] + #[DataProvider('templateProvider')] public function testLocalizedData(string $template, string $expected, string $locale): void { $dateString = "2024-12-05 13:12:10"; $date = new DateTime($dateString); $twig = new Environment(new ArrayLoader(['template' => $template]), ['debug' => true, 'cache' => false, 'autoescape' => 'html', 'optimizations' => 0]); - $twig->addExtension( new BackwardsCompatibleExtension(new IntlExtension())); + $twig->addExtension(new BackwardsCompatibleExtension(new IntlExtension())); $output = $twig->render('template', ['date' => $date, 'locale' => $locale]); $this->assertEquals($expected, $output); @@ -54,4 +56,4 @@ public static function templateProvider(): array 'time en' => ["{{ date | localizeddate('none', 'medium', locale) }}", '13:12:10', 'nl_NL'], ]; } -} \ No newline at end of file +} diff --git a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Value/InstitutionTest.php b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Value/InstitutionTest.php index 920656479..041ad5741 100644 --- a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Value/InstitutionTest.php +++ b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Value/InstitutionTest.php @@ -19,6 +19,8 @@ namespace Surfnet\StepupMiddleware\CommandHandlingBundle\Tests\Value; use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\TestCase as UnitTest; use Surfnet\StepupMiddleware\CommandHandlingBundle\Exception\InvalidArgumentException; use Surfnet\StepupMiddleware\CommandHandlingBundle\Value\Institution; @@ -27,8 +29,8 @@ class InstitutionTest extends UnitTest { use MockeryPHPUnitIntegration; - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\DataProvider('nonStringOrNonEmptyStringProvider')] + #[Test] + #[DataProvider('nonStringOrNonEmptyStringProvider')] public function an_institution_cannot_be_created_with_anything_but_a_nonempty_string( string $invalidValue, ): void { @@ -37,7 +39,7 @@ public function an_institution_cannot_be_created_with_anything_but_a_nonempty_st new Institution($invalidValue); } - #[\PHPUnit\Framework\Attributes\Test] + #[Test] public function two_institutions_with_the_same_value_are_equal(): void { $institution = new Institution('a'); diff --git a/src/Surfnet/StepupMiddleware/GatewayBundle/Tests/Projector/InstitutionConfigurationProjectorTest.php b/src/Surfnet/StepupMiddleware/GatewayBundle/Tests/Projector/InstitutionConfigurationProjectorTest.php index 93b0e5eb7..efacc391d 100644 --- a/src/Surfnet/StepupMiddleware/GatewayBundle/Tests/Projector/InstitutionConfigurationProjectorTest.php +++ b/src/Surfnet/StepupMiddleware/GatewayBundle/Tests/Projector/InstitutionConfigurationProjectorTest.php @@ -74,7 +74,7 @@ public function test_updates_existing_row_sso_on_2fa(): void new Institution('institution-a.nl'), new SsoOn2faOption(true), ); - $configuration = new InstitutionConfiguration('institution-a.nl', false,false); + $configuration = new InstitutionConfiguration('institution-a.nl', false, false); $this->repository->shouldReceive('findByInstitution')->once()->with('institution-a.nl')->andReturn($configuration); $this->repository->shouldReceive('save')->once()->withArgs( @@ -108,7 +108,7 @@ public function test_updates_existing_row_registration_bypass(): void new Institution('institution-a.nl'), new SsoRegistrationBypassOption(true), ); - $configuration = new InstitutionConfiguration('institution-a.nl', false,false); + $configuration = new InstitutionConfiguration('institution-a.nl', false, false); $this->repository->shouldReceive('findByInstitution')->once()->with('institution-a.nl')->andReturn($configuration); $this->repository->shouldReceive('save')->once()->withArgs( diff --git a/src/Surfnet/StepupMiddleware/ManagementBundle/Tests/Controller/ConfigurationControllerTest.php b/src/Surfnet/StepupMiddleware/ManagementBundle/Tests/Controller/ConfigurationControllerTest.php index 572d8610d..ccaf45985 100644 --- a/src/Surfnet/StepupMiddleware/ManagementBundle/Tests/Controller/ConfigurationControllerTest.php +++ b/src/Surfnet/StepupMiddleware/ManagementBundle/Tests/Controller/ConfigurationControllerTest.php @@ -20,8 +20,10 @@ use Liip\TestFixturesBundle\Services\DatabaseToolCollection; use Liip\TestFixturesBundle\Services\DatabaseTools\AbstractDatabaseTool; -use Liip\TestFixturesBundle\Services\DatabaseTools\ORMSqliteDatabaseTool; use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Test; use Symfony\Bundle\FrameworkBundle\KernelBrowser; use Symfony\Bundle\FrameworkBundle\Test\WebTestCase; use Symfony\Component\HttpFoundation\Response; @@ -61,7 +63,6 @@ public function setUp(): void $this->fail('Unable to grab the readonly_api_password parameter from the container'); } $this->passwordRo = $readOnlyPassword; - } public function tearDown(): void @@ -69,8 +70,8 @@ public function tearDown(): void static::ensureKernelShutdown(); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('management')] + #[Test] + #[Group('management')] public function requests_with_invalid_content_are_bad_requests(): void { $this->client->request( @@ -94,8 +95,8 @@ public function requests_with_invalid_content_are_bad_requests(): void ); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('management')] + #[Test] + #[Group('management')] public function authorization_is_required(): void { $this->client->request( @@ -113,8 +114,8 @@ public function authorization_is_required(): void $this->assertEquals(Response::HTTP_UNAUTHORIZED, $this->client->getResponse()->getStatusCode()); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('management')] + #[Test] + #[Group('management')] public function readonly_user_cannot_modify_configuration(): void { $this->client->request( @@ -134,9 +135,9 @@ public function readonly_user_cannot_modify_configuration(): void $this->assertEquals(Response::HTTP_FORBIDDEN, $this->client->getResponse()->getStatusCode()); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\DataProvider('invalidHttpMethodProvider')] - #[\PHPUnit\Framework\Attributes\Group('management')] + #[Test] + #[DataProvider('invalidHttpMethodProvider')] + #[Group('management')] public function only_post_requests_are_accepted(string $invalidHttpMethod): void { $this->client->request( @@ -154,8 +155,8 @@ public function only_post_requests_are_accepted(string $invalidHttpMethod): void $this->assertEquals(Response::HTTP_METHOD_NOT_ALLOWED, $this->client->getResponse()->getStatusCode()); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('management')] + #[Test] + #[Group('management')] public function json_is_returned_from_the_configuration_api(): void { $this->client->request( diff --git a/src/Surfnet/StepupMiddleware/ManagementBundle/Tests/Controller/InstitutionConfigurationControllerTest.php b/src/Surfnet/StepupMiddleware/ManagementBundle/Tests/Controller/InstitutionConfigurationControllerTest.php index 228e231b4..721109976 100644 --- a/src/Surfnet/StepupMiddleware/ManagementBundle/Tests/Controller/InstitutionConfigurationControllerTest.php +++ b/src/Surfnet/StepupMiddleware/ManagementBundle/Tests/Controller/InstitutionConfigurationControllerTest.php @@ -20,8 +20,10 @@ use Liip\TestFixturesBundle\Services\DatabaseToolCollection; use Liip\TestFixturesBundle\Services\DatabaseTools\AbstractDatabaseTool; -use Liip\TestFixturesBundle\Services\DatabaseTools\ORMSqliteDatabaseTool; use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Test; use Symfony\Bundle\FrameworkBundle\KernelBrowser; use Symfony\Bundle\FrameworkBundle\Test\WebTestCase; use Symfony\Component\HttpFoundation\Response; @@ -69,8 +71,8 @@ public function tearDown(): void static::ensureKernelShutdown(); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('management')] + #[Test] + #[Group('management')] public function authorization_is_required_for_reconfiguring_institution_configuration_options(): void { $this->client->request( @@ -88,8 +90,8 @@ public function authorization_is_required_for_reconfiguring_institution_configur $this->assertEquals(Response::HTTP_UNAUTHORIZED, $this->client->getResponse()->getStatusCode()); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('management')] + #[Test] + #[Group('management')] public function readonly_user_cannot_reconfigure_institution_configuration_options(): void { $this->client->request( @@ -109,8 +111,8 @@ public function readonly_user_cannot_reconfigure_institution_configuration_optio $this->assertEquals(Response::HTTP_FORBIDDEN, $this->client->getResponse()->getStatusCode()); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('management')] + #[Test] + #[Group('management')] public function authorization_is_required_for_querying_institution_configuration_options(): void { $this->client->request( @@ -128,8 +130,8 @@ public function authorization_is_required_for_querying_institution_configuration $this->assertEquals(Response::HTTP_UNAUTHORIZED, $this->client->getResponse()->getStatusCode()); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('management')] + #[Test] + #[Group('management')] public function requests_with_invalid_content_are_bad_requests(): void { $content = json_encode(['non-existing.organisation.test' => []]); @@ -153,9 +155,9 @@ public function requests_with_invalid_content_are_bad_requests(): void $this->assertEquals(Response::HTTP_BAD_REQUEST, $this->client->getResponse()->getStatusCode()); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\DataProvider('invalidHttpMethodProvider')] - #[\PHPUnit\Framework\Attributes\Group('management')] + #[Test] + #[DataProvider('invalidHttpMethodProvider')] + #[Group('management')] public function only_post_and_get_requests_are_accepted(string $invalidHttpMethod): void { $this->client->request( @@ -173,8 +175,8 @@ public function only_post_and_get_requests_are_accepted(string $invalidHttpMetho $this->assertEquals(Response::HTTP_METHOD_NOT_ALLOWED, $this->client->getResponse()->getStatusCode()); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('management')] + #[Test] + #[Group('management')] public function a_get_request_without_content_is_valid(): void { $this->client->request( @@ -194,8 +196,8 @@ public function a_get_request_without_content_is_valid(): void $this->assertEquals(Response::HTTP_OK, $this->client->getResponse()->getStatusCode()); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('management')] + #[Test] + #[Group('management')] public function json_is_returned_from_the_institution_configuration_api(): void { $this->client->request( diff --git a/src/Surfnet/StepupMiddleware/ManagementBundle/Tests/Validator/ConfigurationValidationTest.php b/src/Surfnet/StepupMiddleware/ManagementBundle/Tests/Validator/ConfigurationValidationTest.php index 98b97401f..c80db1905 100644 --- a/src/Surfnet/StepupMiddleware/ManagementBundle/Tests/Validator/ConfigurationValidationTest.php +++ b/src/Surfnet/StepupMiddleware/ManagementBundle/Tests/Validator/ConfigurationValidationTest.php @@ -21,7 +21,10 @@ use Mockery as m; use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration; use Mockery\Matcher\MatcherAbstract; -use PHPUnit\Framework\TestCase as TestCase; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Test; +use PHPUnit\Framework\TestCase; use RuntimeException; use Surfnet\StepupMiddleware\ManagementBundle\Validator\ConfigurationStructureValidator; use Surfnet\StepupMiddleware\ManagementBundle\Validator\Constraints\HasValidConfigurationStructure; @@ -58,9 +61,9 @@ public static function invalidConfigurations(): array return $dataSet; } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\DataProvider('invalidConfigurations')] - #[\PHPUnit\Framework\Attributes\Group('command-handler')] + #[Test] + #[DataProvider('invalidConfigurations')] + #[Group('command-handler')] public function it_rejects_invalid_configuration(array $configuration, string $expectedPropertyPath): void { $builder = m::mock(ConstraintViolationBuilderInterface::class); diff --git a/src/Surfnet/StepupMiddleware/ManagementBundle/Tests/Validator/ReconfigureInstitutionRequestValidatorTest.php b/src/Surfnet/StepupMiddleware/ManagementBundle/Tests/Validator/ReconfigureInstitutionRequestValidatorTest.php index 60d86046a..0d28771e2 100644 --- a/src/Surfnet/StepupMiddleware/ManagementBundle/Tests/Validator/ReconfigureInstitutionRequestValidatorTest.php +++ b/src/Surfnet/StepupMiddleware/ManagementBundle/Tests/Validator/ReconfigureInstitutionRequestValidatorTest.php @@ -22,6 +22,9 @@ use Mockery; use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration; use Mockery\Matcher\MatcherAbstract; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\TestCase; use RuntimeException; use Surfnet\Stepup\Configuration\Value\Institution; @@ -63,9 +66,9 @@ public static function invalidReconfigureInstitutionRequests(): array return $dataSet; } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\DataProvider('invalidReconfigureInstitutionRequests')] - #[\PHPUnit\Framework\Attributes\Group('validator')] + #[Test] + #[DataProvider('invalidReconfigureInstitutionRequests')] + #[Group('validator')] public function it_rejects_invalid_configuration( array $reconfigureRequest, string $expectedPropertyPath, @@ -123,8 +126,8 @@ public function it_rejects_invalid_configuration( ); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('validator')] + #[Test] + #[Group('validator')] public function reconfigure_institution_request_cannot_contain_institutions_that_do_not_exist(): void { $existingInstitutions = []; @@ -163,8 +166,8 @@ public function reconfigure_institution_request_cannot_contain_institutions_that $this->assertStringContainsString($expectedErrorMessage, $errorMessage); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('validator')] + #[Test] + #[Group('validator')] public function validation_for_existing_institutions_is_done_case_insensitively(): void { $existingInstitutions = [ConfiguredInstitution::createFrom(new Institution('surfnet.nl'))]; @@ -210,8 +213,8 @@ public function validation_for_existing_institutions_is_done_case_insensitively( $this->assertInstanceOf(ConfiguredInstitution::class, $existingInstitutions[0]); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('validator')] + #[Test] + #[Group('validator')] public function valid_reconfigure_institution_requests_do_not_cause_any_violations(): void { $institution = 'surfnet.nl'; diff --git a/src/Surfnet/StepupMiddleware/MiddlewareBundle/Tests/EventSourcing/EventCollectionTest.php b/src/Surfnet/StepupMiddleware/MiddlewareBundle/Tests/EventSourcing/EventCollectionTest.php index 733ab965c..60640e745 100644 --- a/src/Surfnet/StepupMiddleware/MiddlewareBundle/Tests/EventSourcing/EventCollectionTest.php +++ b/src/Surfnet/StepupMiddleware/MiddlewareBundle/Tests/EventSourcing/EventCollectionTest.php @@ -19,7 +19,10 @@ namespace Surfnet\StepupMiddleware\MiddlewareBundle\Tests\EventSourcing; use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration; -use PHPUnit\Framework\TestCase as TestCase; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Test; +use PHPUnit\Framework\TestCase; use stdClass; use Surfnet\Stepup\Configuration\Event\NewConfigurationCreatedEvent; use Surfnet\Stepup\Identity\Event\SecondFactorVettedEvent; @@ -30,9 +33,9 @@ class EventCollectionTest extends TestCase { use MockeryPHPUnitIntegration; - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\DataProvider('emptyOrNonStringProvider')] - #[\PHPUnit\Framework\Attributes\Group('event-replay')] + #[Test] + #[DataProvider('emptyOrNonStringProvider')] + #[Group('event-replay')] public function an_event_collection_must_be_created_from_an_array_of_non_empty_strings( bool|int|string|stdClass|array|null $emptyOrNonString, ): void { @@ -42,8 +45,8 @@ public function an_event_collection_must_be_created_from_an_array_of_non_empty_s new EventCollection([$emptyOrNonString]); // @phpstan-ignore-line argument.type: Warning about a faulty constructor argument is exactly what we are testing here } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('event-replay')] + #[Test] + #[Group('event-replay')] public function an_event_collection_must_contain_event_names_that_are_existing_class_names(): void { $this->expectException(InvalidArgumentException::class); @@ -54,8 +57,8 @@ public function an_event_collection_must_contain_event_names_that_are_existing_c new EventCollection([$nonExistantClass]); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('event-replay')] + #[Test] + #[Group('event-replay')] public function an_event_collection_contains_given_event_names(): void { $eventCollection = new EventCollection([NewConfigurationCreatedEvent::class]); @@ -66,8 +69,8 @@ public function an_event_collection_contains_given_event_names(): void ); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('event-replay')] + #[Test] + #[Group('event-replay')] public function event_names_can_be_retrieved_from_an_event_collection(): void { $eventNames = [NewConfigurationCreatedEvent::class]; @@ -82,8 +85,8 @@ public function event_names_can_be_retrieved_from_an_event_collection(): void ); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('event-replay')] + #[Test] + #[Group('event-replay')] public function an_event_collection_does_not_contain_given_event_names(): void { $eventCollection = new EventCollection([SecondFactorVettedEvent::class]); @@ -94,8 +97,8 @@ public function an_event_collection_does_not_contain_given_event_names(): void ); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('event-replay')] + #[Test] + #[Group('event-replay')] public function a_subset_of_events_can_be_selected_from_an_event_collection(): void { $eventCollection = new EventCollection([NewConfigurationCreatedEvent::class, SecondFactorVettedEvent::class]); @@ -108,8 +111,8 @@ public function a_subset_of_events_can_be_selected_from_an_event_collection(): v ); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('event-replay')] + #[Test] + #[Group('event-replay')] public function a_subset_containing_events_not_present_in_the_event_collection_cannot_be_selected(): void { $this->expectException(InvalidArgumentException::class); @@ -119,8 +122,8 @@ public function a_subset_containing_events_not_present_in_the_event_collection_c $eventCollection->select([SecondFactorVettedEvent::class]); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('event-replay')] + #[Test] + #[Group('event-replay')] public function events_in_an_event_collection_can_be_formatted_as_event_stream_compatible_event_types(): void { $eventCollection = new EventCollection([NewConfigurationCreatedEvent::class, SecondFactorVettedEvent::class]); diff --git a/src/Surfnet/StepupMiddleware/MiddlewareBundle/Tests/EventSourcing/ProjectorCollectionTest.php b/src/Surfnet/StepupMiddleware/MiddlewareBundle/Tests/EventSourcing/ProjectorCollectionTest.php index afa178f7a..8670d9eb5 100644 --- a/src/Surfnet/StepupMiddleware/MiddlewareBundle/Tests/EventSourcing/ProjectorCollectionTest.php +++ b/src/Surfnet/StepupMiddleware/MiddlewareBundle/Tests/EventSourcing/ProjectorCollectionTest.php @@ -19,7 +19,9 @@ namespace Surfnet\StepupMiddleware\MiddlewareBundle\Tests\EventSourcing; use Mockery as m; -use PHPUnit\Framework\TestCase as TestCase; +use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Test; +use PHPUnit\Framework\TestCase; use Surfnet\StepupMiddleware\ApiBundle\Identity\Projector\SraaProjector; use Surfnet\StepupMiddleware\ApiBundle\Identity\Projector\WhitelistProjector; use Surfnet\StepupMiddleware\ApiBundle\Identity\Repository\SraaRepository; @@ -30,8 +32,8 @@ class ProjectorCollectionTest extends TestCase { use m\Adapter\Phpunit\MockeryPHPUnitIntegration; - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('event-replay')] + #[Test] + #[Group('event-replay')] public function projectors_can_be_added_to_a_projector_collection_during_runtime(): void { $sraaProjector = new SraaProjector(m::mock(SraaRepository::class)); @@ -51,8 +53,8 @@ public function projectors_can_be_added_to_a_projector_collection_during_runtime ); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('event-replay')] + #[Test] + #[Group('event-replay')] public function projector_names_can_be_retrieved_from_a_projector_collection(): void { $sraaProjector = new SraaProjector(m::mock(SraaRepository::class)); @@ -72,8 +74,8 @@ public function projector_names_can_be_retrieved_from_a_projector_collection(): ); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('event-replay')] + #[Test] + #[Group('event-replay')] public function a_subset_of_projectors_can_be_selected_from_a_projector_collection(): void { $sraaProjector = new SraaProjector(m::mock(SraaRepository::class)); @@ -95,8 +97,8 @@ public function a_subset_of_projectors_can_be_selected_from_a_projector_collecti ); } - #[\PHPUnit\Framework\Attributes\Test] - #[\PHPUnit\Framework\Attributes\Group('event-replay')] + #[Test] + #[Group('event-replay')] public function a_subset_containing_projectors_not_present_in_a_projector_collection_cannot_be_selected(): void { $this->expectException(InvalidArgumentException::class); diff --git a/src/Surfnet/StepupMiddleware/MiddlewareBundle/Tests/Service/SecondFactorDisplayNameResolverServiceTest.php b/src/Surfnet/StepupMiddleware/MiddlewareBundle/Tests/Service/SecondFactorDisplayNameResolverServiceTest.php index d17e0ba41..c904f1b6e 100644 --- a/src/Surfnet/StepupMiddleware/MiddlewareBundle/Tests/Service/SecondFactorDisplayNameResolverServiceTest.php +++ b/src/Surfnet/StepupMiddleware/MiddlewareBundle/Tests/Service/SecondFactorDisplayNameResolverServiceTest.php @@ -19,6 +19,7 @@ namespace Surfnet\StepupMiddleware\MiddlewareBundle\Tests\Service; use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\TestCase; use Surfnet\StepupBundle\Value\SecondFactorType; use Surfnet\StepupMiddleware\MiddlewareBundle\Service\SecondFactorDisplayNameResolverService; @@ -27,7 +28,7 @@ class SecondFactorDisplayNameResolverServiceTest extends TestCase { use MockeryPHPUnitIntegration; - #[\PHPUnit\Framework\Attributes\Test] + #[Test] public function verify_resolve_displayname(): void { $factors = ['azuremfa' => 'Azure MFA']; @@ -37,7 +38,7 @@ public function verify_resolve_displayname(): void self::assertEquals('Azure MFA', $resolver->resolveByType($type)); } - #[\PHPUnit\Framework\Attributes\Test] + #[Test] public function verify_resolve_displayname_fallback(): void { $factors = ['azuremfa' => 'Azure MFA']; From e2558f9829189ef829d6c50770fef59a6fb4fb20 Mon Sep 17 00:00:00 2001 From: Johan Kromhout Date: Mon, 24 Nov 2025 16:22:53 +0100 Subject: [PATCH 10/32] Don't recast variables that are already in the correc type. RecastingRemovalRector --- ci/qa/rector.php | 6 +++--- .../Tests/Configuration/InstitutionConfigurationTest.php | 8 ++++---- .../Authorization/Service/CommandAuthorizationService.php | 2 +- .../ApiBundle/Doctrine/Type/RecoveryTokenStatusType.php | 2 +- .../ApiBundle/Doctrine/Type/SecondFactorStatusType.php | 2 +- .../ApiBundle/Identity/Entity/AuditLogEntry.php | 2 +- .../Identity/Entity/IdentitySelfAssertedTokenOptions.php | 2 +- .../ApiBundle/Identity/Repository/RaListingRepository.php | 4 ++-- .../Validator/ReconfigureInstitutionRequestValidator.php | 2 +- 9 files changed, 15 insertions(+), 15 deletions(-) diff --git a/ci/qa/rector.php b/ci/qa/rector.php index 2fc961178..597148ec8 100644 --- a/ci/qa/rector.php +++ b/ci/qa/rector.php @@ -15,7 +15,7 @@ // ->withPhpSets() ->withAttributesSets(all: true) ->withComposerBased(symfony: true, twig: true, doctrine: true, phpunit: true) -// ->withTypeCoverageLevel(0) -// ->withDeadCodeLevel(0) -// ->withCodeQualityLevel(0) + ->withTypeCoverageLevel(10) + ->withDeadCodeLevel(10) + ->withCodeQualityLevel(0) ; diff --git a/src/Surfnet/Stepup/Tests/Configuration/InstitutionConfigurationTest.php b/src/Surfnet/Stepup/Tests/Configuration/InstitutionConfigurationTest.php index b07930706..357168671 100644 --- a/src/Surfnet/Stepup/Tests/Configuration/InstitutionConfigurationTest.php +++ b/src/Surfnet/Stepup/Tests/Configuration/InstitutionConfigurationTest.php @@ -182,7 +182,7 @@ public function use_ra_locations_option_is_not_changed_if_its_given_value_is_not $theSameUseRaLocationsOption = $originalUseRaLocationsOption; $this->scenario - ->withAggregateId((string)$institutionConfigurationId->getInstitutionConfigurationId()) + ->withAggregateId($institutionConfigurationId->getInstitutionConfigurationId()) ->given([ new NewInstitutionConfigurationCreatedEvent( $institutionConfigurationId, @@ -222,7 +222,7 @@ public function show_raa_contact_information_option_is_not_changed_if_its_given_ $sameShowRaaContactInformationOption = $originalShowRaaContactInformationOption; $this->scenario - ->withAggregateId((string)$institutionConfigurationId->getInstitutionConfigurationId()) + ->withAggregateId($institutionConfigurationId->getInstitutionConfigurationId()) ->given([ new NewInstitutionConfigurationCreatedEvent( $institutionConfigurationId, @@ -265,7 +265,7 @@ public function use_ra_locations_option_is_changed_if_its_given_value_is_differe $expectedUseRaLocationsOption = new UseRaLocationsOption(false); $this->scenario - ->withAggregateId((string)$institutionConfigurationId->getInstitutionConfigurationId()) + ->withAggregateId($institutionConfigurationId->getInstitutionConfigurationId()) ->given([ new NewInstitutionConfigurationCreatedEvent( $institutionConfigurationId, @@ -312,7 +312,7 @@ public function show_raa_contact_information_option_is_changed_if_its_given_valu $expectedShowRaaContactInformationOption = new ShowRaaContactInformationOption(false); $this->scenario - ->withAggregateId((string)$institutionConfigurationId->getInstitutionConfigurationId()) + ->withAggregateId($institutionConfigurationId->getInstitutionConfigurationId()) ->given([ new NewInstitutionConfigurationCreatedEvent( $institutionConfigurationId, diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Authorization/Service/CommandAuthorizationService.php b/src/Surfnet/StepupMiddleware/ApiBundle/Authorization/Service/CommandAuthorizationService.php index 0b7097959..38a21bcd5 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Authorization/Service/CommandAuthorizationService.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Authorization/Service/CommandAuthorizationService.php @@ -75,7 +75,7 @@ public function isInstitutionWhitelisted(Institution $institution, IdentityId $a if (!is_null($actorId) && $this->isSraa($actorId)) { return true; } - return (bool)$this->whitelistService->isWhitelisted($institution->getInstitution()); + return $this->whitelistService->isWhitelisted($institution->getInstitution()); } public function maySelfServiceCommandBeExecutedOnBehalfOf(Command $command, IdentityId $actorId = null): bool diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/RecoveryTokenStatusType.php b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/RecoveryTokenStatusType.php index a98d54d55..fc249ae31 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/RecoveryTokenStatusType.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/RecoveryTokenStatusType.php @@ -82,7 +82,7 @@ public function convertToPHPValue(mixed $value, AbstractPlatform $platform): Rec sprintf( "Encountered illegal recovery token status of type %s '%s', expected it to be one of [0,10,20]", get_debug_type($value), - is_scalar($value) ? (string)$value : '', + is_scalar($value) ? $value : '', ), ); } diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/SecondFactorStatusType.php b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/SecondFactorStatusType.php index e85378df4..40d56d731 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/SecondFactorStatusType.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/SecondFactorStatusType.php @@ -95,7 +95,7 @@ public function convertToPHPValue(mixed $value, AbstractPlatform $platform): Sec sprintf( "Encountered illegal second factor status of type %s '%s', expected it to be one of [0,10,20,30,40]", get_debug_type($value), - is_scalar($value) ? (string)$value : '', + is_scalar($value) ? $value : '', ), ); } diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Entity/AuditLogEntry.php b/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Entity/AuditLogEntry.php index 9cc04a070..2edfa0e0f 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Entity/AuditLogEntry.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Entity/AuditLogEntry.php @@ -174,7 +174,7 @@ public function jsonSerialize(): array 'identity_institution' => (string)$this->identityInstitution, 'ra_institution' => (string)$this->raInstitution, 'second_factor_id' => $this->secondFactorId, - 'second_factor_type' => $this->secondFactorType ? (string)$this->secondFactorType : null, + 'second_factor_type' => $this->secondFactorType ?: null, 'second_factor_identifier' => $this->secondFactorIdentifier, 'recovery_token_type' => $this->recoveryTokenType, 'recovery_token_identifier' => $this->recoveryTokenIdentifier, diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Entity/IdentitySelfAssertedTokenOptions.php b/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Entity/IdentitySelfAssertedTokenOptions.php index 683b775a1..ec406e5dc 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Entity/IdentitySelfAssertedTokenOptions.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Entity/IdentitySelfAssertedTokenOptions.php @@ -72,7 +72,7 @@ public static function create( public function jsonSerialize(): array { return [ - 'identity_id' => (string)$this->identityId, + 'identity_id' => $this->identityId, 'possessed_self_asserted_token' => $this->possessedSelfAssertedToken, 'possessed_token' => $this->possessedToken, ]; diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Repository/RaListingRepository.php b/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Repository/RaListingRepository.php index b5947fe09..834db1866 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Repository/RaListingRepository.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Identity/Repository/RaListingRepository.php @@ -134,13 +134,13 @@ public function createSearchQuery(RaListingQuery $query): Query if ($query->role) { $queryBuilder ->andWhere('r.role = :role') - ->setParameter('role', (string)$query->role); + ->setParameter('role', $query->role); } if ($query->raInstitution) { $queryBuilder ->andWhere('r.raInstitution = :raInstitution') - ->setParameter('raInstitution', (string)$query->raInstitution); + ->setParameter('raInstitution', $query->raInstitution); } // Modify query to filter on authorization: diff --git a/src/Surfnet/StepupMiddleware/ManagementBundle/Validator/ReconfigureInstitutionRequestValidator.php b/src/Surfnet/StepupMiddleware/ManagementBundle/Validator/ReconfigureInstitutionRequestValidator.php index 59d4e1453..d316759a8 100644 --- a/src/Surfnet/StepupMiddleware/ManagementBundle/Validator/ReconfigureInstitutionRequestValidator.php +++ b/src/Surfnet/StepupMiddleware/ManagementBundle/Validator/ReconfigureInstitutionRequestValidator.php @@ -250,7 +250,7 @@ private function getWhitelistedInstitutions(): array public function determineNonExistentInstitutions(array $institutions, array $configuredInstitutions): array { $normalizedConfiguredInstitutions = array_map( - fn($institution): string => strtolower((string)$institution), + fn($institution): string => strtolower($institution), $configuredInstitutions, ); From 7ca65c0510f80f3192a18c8546146ac26f28111c Mon Sep 17 00:00:00 2001 From: Johan Kromhout Date: Mon, 24 Nov 2025 16:25:48 +0100 Subject: [PATCH 11/32] Remove deprecated setAccessible. This is no longer needed, everything is accessible by default now. RemoveReflectionSetAccessibleCallsRector --- .../CommandHandlingBundle/Tests/DateTimeHelper.php | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/DateTimeHelper.php b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/DateTimeHelper.php index 42f43d134..c25036e59 100644 --- a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/DateTimeHelper.php +++ b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/DateTimeHelper.php @@ -31,7 +31,6 @@ class DateTimeHelper public static function setCurrentTime(DateTime $now = null): void { $nowProperty = new ReflectionProperty(DateTime::class, 'now'); - $nowProperty->setAccessible(true); $nowProperty->setValue($now); } } From 7756b822f5a207a4b1a0d2635cadae4105c77085 Mon Sep 17 00:00:00 2001 From: Johan Kromhout Date: Mon, 24 Nov 2025 16:34:07 +0100 Subject: [PATCH 12/32] Rector: FunctionLikeToFirstClassCallableRector, ClosureToArrowFunctionRector, NullToStrictStringFuncCallArgRector, FunctionFirstClassCallableRector --- ci/qa/rector.php | 24 ++++++++++++------- .../Configuration/Value/InstitutionSet.php | 2 +- .../Stepup/Helper/UserDataFormatter.php | 2 +- .../Tests/Service/DeprovisionServiceTest.php | 4 +--- ...ReconfigureInstitutionRequestValidator.php | 2 +- 5 files changed, 20 insertions(+), 14 deletions(-) diff --git a/ci/qa/rector.php b/ci/qa/rector.php index 597148ec8..2dcd41602 100644 --- a/ci/qa/rector.php +++ b/ci/qa/rector.php @@ -3,19 +3,27 @@ declare(strict_types=1); use Rector\Config\RectorConfig; +use Rector\Php74\Rector\Property\RestoreDefaultNullToNullableTypePropertyRector; +use Rector\Php80\Rector\Class_\ClassPropertyAssignToConstructorPromotionRector; +use Rector\Php81\Rector\Property\ReadOnlyPropertyRector; +use Rector\Php82\Rector\Class_\ReadOnlyClassRector; return RectorConfig::configure() ->withPaths([ - __DIR__ . '/../../config', - __DIR__ . '/../../src', - __DIR__ . '/../../tests', - __DIR__ . '/../../templates', + __DIR__ . '/../../config', + __DIR__ . '/../../src', + __DIR__ . '/../../tests', + __DIR__ . '/../../templates', ]) - // uncomment to reach your current PHP version -// ->withPhpSets() + ->withPhpSets() ->withAttributesSets(all: true) ->withComposerBased(symfony: true, twig: true, doctrine: true, phpunit: true) ->withTypeCoverageLevel(10) ->withDeadCodeLevel(10) - ->withCodeQualityLevel(0) -; + ->withCodeQualityLevel(10) + ->withSkip([ + ReadOnlyClassRector::class, + ReadOnlyPropertyRector::class, + ClassPropertyAssignToConstructorPromotionRector::class, + RestoreDefaultNullToNullableTypePropertyRector::class, + ]); diff --git a/src/Surfnet/Stepup/Configuration/Value/InstitutionSet.php b/src/Surfnet/Stepup/Configuration/Value/InstitutionSet.php index ac697de4a..8f5e96a6f 100644 --- a/src/Surfnet/Stepup/Configuration/Value/InstitutionSet.php +++ b/src/Surfnet/Stepup/Configuration/Value/InstitutionSet.php @@ -83,7 +83,7 @@ public function getInstitutions(): array public function toScalarArray(): array { - return array_map('strval', $this->institutions); + return array_map(strval(...), $this->institutions); } /** diff --git a/src/Surfnet/Stepup/Helper/UserDataFormatter.php b/src/Surfnet/Stepup/Helper/UserDataFormatter.php index dc8b32bee..11c8c5ec2 100644 --- a/src/Surfnet/Stepup/Helper/UserDataFormatter.php +++ b/src/Surfnet/Stepup/Helper/UserDataFormatter.php @@ -27,7 +27,7 @@ public function format(array $userData, array $errors): array { $data = []; foreach ($userData as $name => $event) { - $name = explode('-', $name)[1]; + $name = explode('-', (string) $name)[1]; $data[] = [ 'name' => $name, 'value' => $event, diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Service/DeprovisionServiceTest.php b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Service/DeprovisionServiceTest.php index eef88a2b8..7d218cf2a 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Service/DeprovisionServiceTest.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Service/DeprovisionServiceTest.php @@ -156,9 +156,7 @@ public function test_is_allowed_to_deprovision_user(): void $this->raListingRepo ->shouldReceive('contains') - ->with(m::on(function (IdentityId $identityId) use ($identity): bool { - return $identityId->getIdentityId() === $identity->id; - })) + ->with(m::on(fn(IdentityId $identityId): bool => $identityId->getIdentityId() === $identity->id)) ->once() ->andReturn(false); diff --git a/src/Surfnet/StepupMiddleware/ManagementBundle/Validator/ReconfigureInstitutionRequestValidator.php b/src/Surfnet/StepupMiddleware/ManagementBundle/Validator/ReconfigureInstitutionRequestValidator.php index d316759a8..f6b2ee2ea 100644 --- a/src/Surfnet/StepupMiddleware/ManagementBundle/Validator/ReconfigureInstitutionRequestValidator.php +++ b/src/Surfnet/StepupMiddleware/ManagementBundle/Validator/ReconfigureInstitutionRequestValidator.php @@ -250,7 +250,7 @@ private function getWhitelistedInstitutions(): array public function determineNonExistentInstitutions(array $institutions, array $configuredInstitutions): array { $normalizedConfiguredInstitutions = array_map( - fn($institution): string => strtolower($institution), + strtolower(...), $configuredInstitutions, ); From 29230b615a89b541733ae6109985212af91088c4 Mon Sep 17 00:00:00 2001 From: Johan Kromhout Date: Tue, 25 Nov 2025 09:43:57 +0100 Subject: [PATCH 13/32] Remove doctrine/annotations --- composer.json | 1 - composer.lock | 79 +-------------------------------------------------- symfony.lock | 12 -------- 3 files changed, 1 insertion(+), 91 deletions(-) diff --git a/composer.json b/composer.json index b31e9497c..414f57c7e 100644 --- a/composer.json +++ b/composer.json @@ -25,7 +25,6 @@ "ext-pdo": "*", "broadway/broadway": "^2.5", "broadway/event-store-dbal": "^0.6", - "doctrine/annotations": "^2.0.2", "doctrine/doctrine-bundle": "^2.13.2", "doctrine/doctrine-migrations-bundle": "^3.4.1", "doctrine/orm": "^3.3.2", diff --git a/composer.lock b/composer.lock index fae09bac2..7a16ba9b6 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "51c85a7cb6dab026497edffa7aac650d", + "content-hash": "9fb5f5fa256ef2100369aef0c719000d", "packages": [ { "name": "beberlei/assert", @@ -416,83 +416,6 @@ ], "time": "2025-11-06T11:46:17+00:00" }, - { - "name": "doctrine/annotations", - "version": "2.0.2", - "source": { - "type": "git", - "url": "https://github.com/doctrine/annotations.git", - "reference": "901c2ee5d26eb64ff43c47976e114bf00843acf7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/annotations/zipball/901c2ee5d26eb64ff43c47976e114bf00843acf7", - "reference": "901c2ee5d26eb64ff43c47976e114bf00843acf7", - "shasum": "" - }, - "require": { - "doctrine/lexer": "^2 || ^3", - "ext-tokenizer": "*", - "php": "^7.2 || ^8.0", - "psr/cache": "^1 || ^2 || ^3" - }, - "require-dev": { - "doctrine/cache": "^2.0", - "doctrine/coding-standard": "^10", - "phpstan/phpstan": "^1.10.28", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "symfony/cache": "^5.4 || ^6.4 || ^7", - "vimeo/psalm": "^4.30 || ^5.14" - }, - "suggest": { - "php": "PHP 8.0 or higher comes with attributes, a native replacement for annotations" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "Docblock Annotations Parser", - "homepage": "https://www.doctrine-project.org/projects/annotations.html", - "keywords": [ - "annotations", - "docblock", - "parser" - ], - "support": { - "issues": "https://github.com/doctrine/annotations/issues", - "source": "https://github.com/doctrine/annotations/tree/2.0.2" - }, - "abandoned": true, - "time": "2024-09-05T10:17:24+00:00" - }, { "name": "doctrine/collections", "version": "2.4.0", diff --git a/symfony.lock b/symfony.lock index c8cc8ed83..e0a78d90c 100644 --- a/symfony.lock +++ b/symfony.lock @@ -35,18 +35,6 @@ "composer/xdebug-handler": { "version": "1.4.2" }, - "doctrine/annotations": { - "version": "1.0", - "recipe": { - "repo": "github.com/symfony/recipes", - "branch": "master", - "version": "1.0", - "ref": "a2759dd6123694c8d901d0ec80006e044c2e6457" - }, - "files": [ - "config/routes/annotations.yaml" - ] - }, "doctrine/collections": { "version": "1.6.5" }, From 80fdf1747fd99db22a3b84d40a6d5d232210594e Mon Sep 17 00:00:00 2001 From: Johan Kromhout Date: Tue, 25 Nov 2025 11:06:38 +0100 Subject: [PATCH 14/32] Fix Abstract test Tests cannot be abstract. So PHPunit does not allow it to end on 'Test' anymore. --- .../{CommandHandlerTest.php => CommandHandlerTestBase.php} | 2 +- .../CommandHandler/ConfigurationCommandHandlerTest.php | 4 ++-- .../InstitutionConfigurationCommandHandlerTest.php | 4 ++-- .../CommandHandler/IdentityCommandHandlerMoveTokenTest.php | 4 ++-- .../IdentityCommandHandlerSelfAssertedTokensTest.php | 4 ++-- .../Identity/CommandHandler/IdentityCommandHandlerTest.php | 4 ++-- .../IdentityCommandHandlerUniqueTypeRegistrationTest.php | 4 ++-- .../RegistrationAuthorityCommandHandlerTest.php | 4 ++-- .../CommandHandler/RightToBeForgottenCommandHandlerTest.php | 4 ++-- .../Identity/CommandHandler/SecondFactorRevocationTest.php | 4 ++-- .../Identity/CommandHandler/WhitelistCommandHandlerTest.php | 4 ++-- 11 files changed, 21 insertions(+), 21 deletions(-) rename src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/{CommandHandlerTest.php => CommandHandlerTestBase.php} (92%) diff --git a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/CommandHandlerTest.php b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/CommandHandlerTestBase.php similarity index 92% rename from src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/CommandHandlerTest.php rename to src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/CommandHandlerTestBase.php index 84a8125d3..c5ad3eadf 100644 --- a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/CommandHandlerTest.php +++ b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/CommandHandlerTestBase.php @@ -22,7 +22,7 @@ use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration; use Ramsey\Uuid\Uuid; -abstract class CommandHandlerTest extends CommandHandlerScenarioTestCase +abstract class CommandHandlerTestBase extends CommandHandlerScenarioTestCase { use MockeryPHPUnitIntegration; diff --git a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Configuration/CommandHandler/ConfigurationCommandHandlerTest.php b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Configuration/CommandHandler/ConfigurationCommandHandlerTest.php index e1fb150fb..3ffa73cad 100644 --- a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Configuration/CommandHandler/ConfigurationCommandHandlerTest.php +++ b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Configuration/CommandHandler/ConfigurationCommandHandlerTest.php @@ -35,10 +35,10 @@ use Surfnet\Stepup\Configuration\EventSourcing\ConfigurationRepository; use Surfnet\StepupMiddleware\CommandHandlingBundle\Configuration\Command\UpdateConfigurationCommand; use Surfnet\StepupMiddleware\CommandHandlingBundle\Configuration\CommandHandler\ConfigurationCommandHandler; -use Surfnet\StepupMiddleware\CommandHandlingBundle\Tests\CommandHandlerTest; +use Surfnet\StepupMiddleware\CommandHandlingBundle\Tests\CommandHandlerTestBase; use function is_string; -final class ConfigurationCommandHandlerTest extends CommandHandlerTest +final class ConfigurationCommandHandlerTest extends CommandHandlerTestBase { /** diff --git a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Configuration/CommandHandler/InstitutionConfigurationCommandHandlerTest.php b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Configuration/CommandHandler/InstitutionConfigurationCommandHandlerTest.php index 730304f0c..18824c63d 100644 --- a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Configuration/CommandHandler/InstitutionConfigurationCommandHandlerTest.php +++ b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Configuration/CommandHandler/InstitutionConfigurationCommandHandlerTest.php @@ -66,9 +66,9 @@ use Surfnet\StepupMiddleware\CommandHandlingBundle\Configuration\Command\RemoveInstitutionConfigurationByUnnormalizedIdCommand; use Surfnet\StepupMiddleware\CommandHandlingBundle\Configuration\Command\RemoveRaLocationCommand; use Surfnet\StepupMiddleware\CommandHandlingBundle\Configuration\CommandHandler\InstitutionConfigurationCommandHandler; -use Surfnet\StepupMiddleware\CommandHandlingBundle\Tests\CommandHandlerTest; +use Surfnet\StepupMiddleware\CommandHandlingBundle\Tests\CommandHandlerTestBase; -class InstitutionConfigurationCommandHandlerTest extends CommandHandlerTest +class InstitutionConfigurationCommandHandlerTest extends CommandHandlerTestBase { #[Test] diff --git a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/IdentityCommandHandlerMoveTokenTest.php b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/IdentityCommandHandlerMoveTokenTest.php index 26d2820bf..62d1fa924 100644 --- a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/IdentityCommandHandlerMoveTokenTest.php +++ b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/IdentityCommandHandlerMoveTokenTest.php @@ -66,10 +66,10 @@ use Surfnet\StepupMiddleware\CommandHandlingBundle\Identity\Command\MigrateVettedSecondFactorCommand; use Surfnet\StepupMiddleware\CommandHandlingBundle\Identity\CommandHandler\IdentityCommandHandler; use Surfnet\StepupMiddleware\CommandHandlingBundle\Identity\Service\RegistrationMailService; -use Surfnet\StepupMiddleware\CommandHandlingBundle\Tests\CommandHandlerTest; +use Surfnet\StepupMiddleware\CommandHandlingBundle\Tests\CommandHandlerTestBase; #[RunTestsInSeparateProcesses] -class IdentityCommandHandlerMoveTokenTest extends CommandHandlerTest +class IdentityCommandHandlerMoveTokenTest extends CommandHandlerTestBase { private static int $window = 3600; diff --git a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/IdentityCommandHandlerSelfAssertedTokensTest.php b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/IdentityCommandHandlerSelfAssertedTokensTest.php index 69e4d2b5d..58a187c08 100644 --- a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/IdentityCommandHandlerSelfAssertedTokensTest.php +++ b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/IdentityCommandHandlerSelfAssertedTokensTest.php @@ -87,10 +87,10 @@ use Surfnet\StepupMiddleware\CommandHandlingBundle\Identity\Command\SelfVetSecondFactorCommand; use Surfnet\StepupMiddleware\CommandHandlingBundle\Identity\CommandHandler\IdentityCommandHandler; use Surfnet\StepupMiddleware\CommandHandlingBundle\Identity\Service\RegistrationMailService; -use Surfnet\StepupMiddleware\CommandHandlingBundle\Tests\CommandHandlerTest; +use Surfnet\StepupMiddleware\CommandHandlingBundle\Tests\CommandHandlerTestBase; #[RunTestsInSeparateProcesses] -class IdentityCommandHandlerSelfAssertedTokensTest extends CommandHandlerTest +class IdentityCommandHandlerSelfAssertedTokensTest extends CommandHandlerTestBase { private static int $window = 3600; diff --git a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/IdentityCommandHandlerTest.php b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/IdentityCommandHandlerTest.php index 2bfc70fad..7323fb9c3 100644 --- a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/IdentityCommandHandlerTest.php +++ b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/IdentityCommandHandlerTest.php @@ -95,12 +95,12 @@ use Surfnet\StepupMiddleware\CommandHandlingBundle\Identity\CommandHandler\Exception\DuplicateIdentityException; use Surfnet\StepupMiddleware\CommandHandlingBundle\Identity\CommandHandler\IdentityCommandHandler; use Surfnet\StepupMiddleware\CommandHandlingBundle\Identity\Service\RegistrationMailService; -use Surfnet\StepupMiddleware\CommandHandlingBundle\Tests\CommandHandlerTest; +use Surfnet\StepupMiddleware\CommandHandlingBundle\Tests\CommandHandlerTestBase; use Surfnet\StepupMiddleware\CommandHandlingBundle\Tests\DateTimeHelper; use function md5; #[RunTestsInSeparateProcesses] -class IdentityCommandHandlerTest extends CommandHandlerTest +class IdentityCommandHandlerTest extends CommandHandlerTestBase { private static int $window = 3600; diff --git a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/IdentityCommandHandlerUniqueTypeRegistrationTest.php b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/IdentityCommandHandlerUniqueTypeRegistrationTest.php index 5e6df4644..07669aadf 100644 --- a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/IdentityCommandHandlerUniqueTypeRegistrationTest.php +++ b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/IdentityCommandHandlerUniqueTypeRegistrationTest.php @@ -69,12 +69,12 @@ use Surfnet\StepupMiddleware\CommandHandlingBundle\Identity\Command\ProveYubikeyPossessionCommand; use Surfnet\StepupMiddleware\CommandHandlingBundle\Identity\CommandHandler\IdentityCommandHandler; use Surfnet\StepupMiddleware\CommandHandlingBundle\Identity\Service\RegistrationMailService; -use Surfnet\StepupMiddleware\CommandHandlingBundle\Tests\CommandHandlerTest; +use Surfnet\StepupMiddleware\CommandHandlingBundle\Tests\CommandHandlerTestBase; use Surfnet\StepupMiddleware\CommandHandlingBundle\Tests\DateTimeHelper; use function md5; #[RunTestsInSeparateProcesses] -class IdentityCommandHandlerUniqueTypeRegistrationTest extends CommandHandlerTest +class IdentityCommandHandlerUniqueTypeRegistrationTest extends CommandHandlerTestBase { private static int $window = 3600; diff --git a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/RegistrationAuthorityCommandHandlerTest.php b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/RegistrationAuthorityCommandHandlerTest.php index b2ee424eb..ffaed7823 100644 --- a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/RegistrationAuthorityCommandHandlerTest.php +++ b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/RegistrationAuthorityCommandHandlerTest.php @@ -59,9 +59,9 @@ use Surfnet\StepupMiddleware\CommandHandlingBundle\Identity\Command\RetractRegistrationAuthorityCommand; use Surfnet\StepupMiddleware\CommandHandlingBundle\Identity\CommandHandler\RegistrationAuthorityCommandHandler; use Surfnet\StepupMiddleware\CommandHandlingBundle\Identity\Service\VettingTypeHintService; -use Surfnet\StepupMiddleware\CommandHandlingBundle\Tests\CommandHandlerTest; +use Surfnet\StepupMiddleware\CommandHandlingBundle\Tests\CommandHandlerTestBase; -class RegistrationAuthorityCommandHandlerTest extends CommandHandlerTest +class RegistrationAuthorityCommandHandlerTest extends CommandHandlerTestBase { private MockInterface&InstitutionConfigurationRepository $institutionConfigurationRepositoryMock; diff --git a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/RightToBeForgottenCommandHandlerTest.php b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/RightToBeForgottenCommandHandlerTest.php index dc3fd43aa..1c7dc34fc 100644 --- a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/RightToBeForgottenCommandHandlerTest.php +++ b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/RightToBeForgottenCommandHandlerTest.php @@ -55,10 +55,10 @@ use Surfnet\StepupMiddleware\CommandHandlingBundle\Identity\Command\ForgetIdentityCommand; use Surfnet\StepupMiddleware\CommandHandlingBundle\Identity\CommandHandler\RightToBeForgottenCommandHandler; use Surfnet\StepupMiddleware\CommandHandlingBundle\SensitiveData\Service\SensitiveDataService; -use Surfnet\StepupMiddleware\CommandHandlingBundle\Tests\CommandHandlerTest; +use Surfnet\StepupMiddleware\CommandHandlingBundle\Tests\CommandHandlerTestBase; #[RunTestsInSeparateProcesses] -class RightToBeForgottenCommandHandlerTest extends CommandHandlerTest +class RightToBeForgottenCommandHandlerTest extends CommandHandlerTestBase { /** @var MockInterface */ private MockInterface $apiIdentityRepository; diff --git a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/SecondFactorRevocationTest.php b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/SecondFactorRevocationTest.php index 91c0a0386..0c1a65f88 100644 --- a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/SecondFactorRevocationTest.php +++ b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/SecondFactorRevocationTest.php @@ -70,10 +70,10 @@ use Surfnet\StepupMiddleware\CommandHandlingBundle\Identity\Command\RevokeRegistrantsSecondFactorCommand; use Surfnet\StepupMiddleware\CommandHandlingBundle\Identity\CommandHandler\IdentityCommandHandler; use Surfnet\StepupMiddleware\CommandHandlingBundle\Identity\Service\RegistrationMailService; -use Surfnet\StepupMiddleware\CommandHandlingBundle\Tests\CommandHandlerTest; +use Surfnet\StepupMiddleware\CommandHandlingBundle\Tests\CommandHandlerTestBase; #[RunTestsInSeparateProcesses] -class SecondFactorRevocationTest extends CommandHandlerTest +class SecondFactorRevocationTest extends CommandHandlerTestBase { private static int $window = 3600; diff --git a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/WhitelistCommandHandlerTest.php b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/WhitelistCommandHandlerTest.php index c33ea8504..cded32d36 100644 --- a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/WhitelistCommandHandlerTest.php +++ b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/WhitelistCommandHandlerTest.php @@ -37,9 +37,9 @@ use Surfnet\StepupMiddleware\CommandHandlingBundle\Identity\Command\RemoveFromWhitelistCommand; use Surfnet\StepupMiddleware\CommandHandlingBundle\Identity\Command\ReplaceWhitelistCommand; use Surfnet\StepupMiddleware\CommandHandlingBundle\Identity\CommandHandler\WhitelistCommandHandler; -use Surfnet\StepupMiddleware\CommandHandlingBundle\Tests\CommandHandlerTest; +use Surfnet\StepupMiddleware\CommandHandlingBundle\Tests\CommandHandlerTestBase; -class WhitelistCommandHandlerTest extends CommandHandlerTest +class WhitelistCommandHandlerTest extends CommandHandlerTestBase { /** * Shorthand for fixed Whitelist ID. From 91037ce73ab8bed558b5953989447e78257dc743 Mon Sep 17 00:00:00 2001 From: Johan Kromhout Date: Tue, 25 Nov 2025 11:39:28 +0100 Subject: [PATCH 15/32] Update dev packages Math is no longer needed as an explicit dependency. --- composer.json | 7 +- composer.lock | 668 +++++--------------------------------------------- symfony.lock | 6 - 3 files changed, 71 insertions(+), 610 deletions(-) diff --git a/composer.json b/composer.json index 414f57c7e..2cfb69d85 100644 --- a/composer.json +++ b/composer.json @@ -54,13 +54,12 @@ "twig/twig": "^3.20" }, "require-dev": { - "doctrine/data-fixtures": "^1.8.1", - "doctrine/doctrine-fixtures-bundle": "^3.7.1", + "doctrine/data-fixtures": "^2.2", + "doctrine/doctrine-fixtures-bundle": "^4.3", "irstea/phpcpd-shim": "^6.0", - "liip/test-fixtures-bundle": "^2.9.2", + "liip/test-fixtures-bundle": "^3.6", "malukenho/docheader": "^1.1", "mockery/mockery": "1.7.x-dev", - "moontoast/math": "^1.2.1", "overtrue/phplint": ">=9.5.6", "phpmd/phpmd": "^2.15", "phpstan/phpstan": "^2.0", diff --git a/composer.lock b/composer.lock index 7a16ba9b6..6d8ac1eb1 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "9fb5f5fa256ef2100369aef0c719000d", + "content-hash": "ebafaf3d5b0bc2794aae08529f4be6cb", "packages": [ { "name": "beberlei/assert", @@ -75,16 +75,16 @@ }, { "name": "brick/math", - "version": "0.14.0", + "version": "0.14.1", "source": { "type": "git", "url": "https://github.com/brick/math.git", - "reference": "113a8ee2656b882d4c3164fa31aa6e12cbb7aaa2" + "reference": "f05858549e5f9d7bb45875a75583240a38a281d0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/brick/math/zipball/113a8ee2656b882d4c3164fa31aa6e12cbb7aaa2", - "reference": "113a8ee2656b882d4c3164fa31aa6e12cbb7aaa2", + "url": "https://api.github.com/repos/brick/math/zipball/f05858549e5f9d7bb45875a75583240a38a281d0", + "reference": "f05858549e5f9d7bb45875a75583240a38a281d0", "shasum": "" }, "require": { @@ -123,7 +123,7 @@ ], "support": { "issues": "https://github.com/brick/math/issues", - "source": "https://github.com/brick/math/tree/0.14.0" + "source": "https://github.com/brick/math/tree/0.14.1" }, "funding": [ { @@ -131,7 +131,7 @@ "type": "github" } ], - "time": "2025-08-29T12:40:03+00:00" + "time": "2025-11-24T14:40:29+00:00" }, { "name": "broadway/broadway", @@ -1200,16 +1200,16 @@ }, { "name": "doctrine/migrations", - "version": "3.9.4", + "version": "3.9.5", "source": { "type": "git", "url": "https://github.com/doctrine/migrations.git", - "reference": "1b88fcb812f2cd6e77c83d16db60e3cf1e35c66c" + "reference": "1b823afbc40f932dae8272574faee53f2755eac5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/migrations/zipball/1b88fcb812f2cd6e77c83d16db60e3cf1e35c66c", - "reference": "1b88fcb812f2cd6e77c83d16db60e3cf1e35c66c", + "url": "https://api.github.com/repos/doctrine/migrations/zipball/1b823afbc40f932dae8272574faee53f2755eac5", + "reference": "1b823afbc40f932dae8272574faee53f2755eac5", "shasum": "" }, "require": { @@ -1219,15 +1219,15 @@ "doctrine/event-manager": "^1.2 || ^2.0", "php": "^8.1", "psr/log": "^1.1.3 || ^2 || ^3", - "symfony/console": "^5.4 || ^6.0 || ^7.0", - "symfony/stopwatch": "^5.4 || ^6.0 || ^7.0", - "symfony/var-exporter": "^6.2 || ^7.0" + "symfony/console": "^5.4 || ^6.0 || ^7.0 || ^8.0", + "symfony/stopwatch": "^5.4 || ^6.0 || ^7.0 || ^8.0", + "symfony/var-exporter": "^6.2 || ^7.0 || ^8.0" }, "conflict": { "doctrine/orm": "<2.12 || >=4" }, "require-dev": { - "doctrine/coding-standard": "^13", + "doctrine/coding-standard": "^14", "doctrine/orm": "^2.13 || ^3", "doctrine/persistence": "^2 || ^3 || ^4", "doctrine/sql-formatter": "^1.0", @@ -1239,9 +1239,9 @@ "phpstan/phpstan-strict-rules": "^2", "phpstan/phpstan-symfony": "^2", "phpunit/phpunit": "^10.3 || ^11.0 || ^12.0", - "symfony/cache": "^5.4 || ^6.0 || ^7.0", - "symfony/process": "^5.4 || ^6.0 || ^7.0", - "symfony/yaml": "^5.4 || ^6.0 || ^7.0" + "symfony/cache": "^5.4 || ^6.0 || ^7.0 || ^8.0", + "symfony/process": "^5.4 || ^6.0 || ^7.0 || ^8.0", + "symfony/yaml": "^5.4 || ^6.0 || ^7.0 || ^8.0" }, "suggest": { "doctrine/sql-formatter": "Allows to generate formatted SQL with the diff command.", @@ -1283,7 +1283,7 @@ ], "support": { "issues": "https://github.com/doctrine/migrations/issues", - "source": "https://github.com/doctrine/migrations/tree/3.9.4" + "source": "https://github.com/doctrine/migrations/tree/3.9.5" }, "funding": [ { @@ -1299,7 +1299,7 @@ "type": "tidelift" } ], - "time": "2025-08-19T06:41:07+00:00" + "time": "2025-11-20T11:15:36+00:00" }, { "name": "doctrine/orm", @@ -8692,116 +8692,24 @@ ], "time": "2025-11-11T04:32:07+00:00" }, - { - "name": "doctrine/common", - "version": "3.5.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/common.git", - "reference": "d9ea4a54ca2586db781f0265d36bea731ac66ec5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/common/zipball/d9ea4a54ca2586db781f0265d36bea731ac66ec5", - "reference": "d9ea4a54ca2586db781f0265d36bea731ac66ec5", - "shasum": "" - }, - "require": { - "doctrine/persistence": "^2.0 || ^3.0 || ^4.0", - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^9.0 || ^10.0", - "doctrine/collections": "^1", - "phpstan/phpstan": "^1.4.1", - "phpstan/phpstan-phpunit": "^1", - "phpunit/phpunit": "^7.5.20 || ^8.5 || ^9.0", - "squizlabs/php_codesniffer": "^3.0", - "symfony/phpunit-bridge": "^6.1", - "vimeo/psalm": "^4.4" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - }, - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com" - } - ], - "description": "PHP Doctrine Common project is a library that provides additional functionality that other Doctrine projects depend on such as better reflection support, proxies and much more.", - "homepage": "https://www.doctrine-project.org/projects/common.html", - "keywords": [ - "common", - "doctrine", - "php" - ], - "support": { - "issues": "https://github.com/doctrine/common/issues", - "source": "https://github.com/doctrine/common/tree/3.5.0" - }, - "funding": [ - { - "url": "https://www.doctrine-project.org/sponsorship.html", - "type": "custom" - }, - { - "url": "https://www.patreon.com/phpdoctrine", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fcommon", - "type": "tidelift" - } - ], - "time": "2025-01-01T22:12:03+00:00" - }, { "name": "doctrine/data-fixtures", - "version": "1.8.2", + "version": "2.2.0", "source": { "type": "git", "url": "https://github.com/doctrine/data-fixtures.git", - "reference": "6fb221da56dae2011b33d47508e3b8aeb1d91db5" + "reference": "7a615ba135e45d67674bb623d90f34f6c7b6bd97" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/data-fixtures/zipball/6fb221da56dae2011b33d47508e3b8aeb1d91db5", - "reference": "6fb221da56dae2011b33d47508e3b8aeb1d91db5", + "url": "https://api.github.com/repos/doctrine/data-fixtures/zipball/7a615ba135e45d67674bb623d90f34f6c7b6bd97", + "reference": "7a615ba135e45d67674bb623d90f34f6c7b6bd97", "shasum": "" }, "require": { - "doctrine/deprecations": "^0.5.3 || ^1.0", - "doctrine/persistence": "^2.0 || ^3.0", - "php": "^7.4 || ^8.0", - "symfony/polyfill-php80": "^1" + "doctrine/persistence": "^3.1 || ^4.0", + "php": "^8.1", + "psr/log": "^1.1 || ^2 || ^3" }, "conflict": { "doctrine/dbal": "<3.5 || >=5", @@ -8809,18 +8717,16 @@ "doctrine/phpcr-odm": "<1.3.0" }, "require-dev": { - "doctrine/annotations": "^1.12 || ^2", - "doctrine/coding-standard": "^13", + "doctrine/coding-standard": "^14", "doctrine/dbal": "^3.5 || ^4", "doctrine/mongodb-odm": "^1.3.0 || ^2.0.0", "doctrine/orm": "^2.14 || ^3", "ext-sqlite3": "*", "fig/log-test": "^1", - "phpstan/phpstan": "2.1.17", - "phpunit/phpunit": "^9.6.13 || 10.5.45", - "psr/log": "^1.1 || ^2 || ^3", - "symfony/cache": "^5.4 || ^6.3 || ^7", - "symfony/var-exporter": "^5.4 || ^6.3 || ^7" + "phpstan/phpstan": "2.1.31", + "phpunit/phpunit": "10.5.45 || 12.4.0", + "symfony/cache": "^6.4 || ^7", + "symfony/var-exporter": "^6.4 || ^7" }, "suggest": { "alcaeus/mongo-php-adapter": "For using MongoDB ODM 1.3 with PHP 7 (deprecated)", @@ -8851,7 +8757,7 @@ ], "support": { "issues": "https://github.com/doctrine/data-fixtures/issues", - "source": "https://github.com/doctrine/data-fixtures/tree/1.8.2" + "source": "https://github.com/doctrine/data-fixtures/tree/2.2.0" }, "funding": [ { @@ -8867,35 +8773,35 @@ "type": "tidelift" } ], - "time": "2025-06-10T07:00:05+00:00" + "time": "2025-10-17T20:06:20+00:00" }, { "name": "doctrine/doctrine-fixtures-bundle", - "version": "3.7.2", + "version": "4.3.0", "source": { "type": "git", "url": "https://github.com/doctrine/DoctrineFixturesBundle.git", - "reference": "0afaecd65e5791e855edddf125b77576e7bcbbfb" + "reference": "11941deb6f2899b91e8b8680b07ffe63899d864b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineFixturesBundle/zipball/0afaecd65e5791e855edddf125b77576e7bcbbfb", - "reference": "0afaecd65e5791e855edddf125b77576e7bcbbfb", + "url": "https://api.github.com/repos/doctrine/DoctrineFixturesBundle/zipball/11941deb6f2899b91e8b8680b07ffe63899d864b", + "reference": "11941deb6f2899b91e8b8680b07ffe63899d864b", "shasum": "" }, "require": { - "doctrine/data-fixtures": "^1.5 || ^2.0", - "doctrine/doctrine-bundle": "^2.2", + "doctrine/data-fixtures": "^2.2", + "doctrine/doctrine-bundle": "^2.2 || ^3.0", "doctrine/orm": "^2.14.0 || ^3.0", - "doctrine/persistence": "^2.4 || ^3.0", - "php": "^7.4 || ^8.0", - "psr/log": "^1 || ^2 || ^3", - "symfony/config": "^5.4 || ^6.0 || ^7.0", - "symfony/console": "^5.4 || ^6.0 || ^7.0", - "symfony/dependency-injection": "^5.4 || ^6.0 || ^7.0", + "doctrine/persistence": "^2.4 || ^3.0 || ^4.0", + "php": "^8.1", + "psr/log": "^2 || ^3", + "symfony/config": "^6.4 || ^7.0", + "symfony/console": "^6.4 || ^7.0", + "symfony/dependency-injection": "^6.4 || ^7.0", "symfony/deprecation-contracts": "^2.1 || ^3", - "symfony/doctrine-bridge": "^5.4.48 || ^6.4.16 || ^7.1.9", - "symfony/http-kernel": "^5.4 || ^6.0 || ^7.0" + "symfony/doctrine-bridge": "^6.4.16 || ^7.1.9", + "symfony/http-kernel": "^6.4 || ^7.0" }, "conflict": { "doctrine/dbal": "< 3" @@ -8903,8 +8809,7 @@ "require-dev": { "doctrine/coding-standard": "14.0.0", "phpstan/phpstan": "2.1.11", - "phpunit/phpunit": "^9.6.13 || 11.4.14", - "symfony/phpunit-bridge": "7.2.0" + "phpunit/phpunit": "^10.5.38 || 11.4.14" }, "type": "symfony-bundle", "autoload": { @@ -8938,7 +8843,7 @@ ], "support": { "issues": "https://github.com/doctrine/DoctrineFixturesBundle/issues", - "source": "https://github.com/doctrine/DoctrineFixturesBundle/tree/3.7.2" + "source": "https://github.com/doctrine/DoctrineFixturesBundle/tree/4.3.0" }, "funding": [ { @@ -8954,7 +8859,7 @@ "type": "tidelift" } ], - "time": "2025-10-11T16:14:44+00:00" + "time": "2025-10-20T06:18:40+00:00" }, { "name": "hamcrest/hamcrest-php", @@ -9051,22 +8956,21 @@ }, { "name": "liip/test-fixtures-bundle", - "version": "2.10.0", + "version": "3.6.0", "source": { "type": "git", "url": "https://github.com/liip/LiipTestFixturesBundle.git", - "reference": "45b1961d2a19d4cbb61d45bb756e9a152d43624b" + "reference": "29942037076433f0189f33ccd7d53198dd818fe7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/liip/LiipTestFixturesBundle/zipball/45b1961d2a19d4cbb61d45bb756e9a152d43624b", - "reference": "45b1961d2a19d4cbb61d45bb756e9a152d43624b", + "url": "https://api.github.com/repos/liip/LiipTestFixturesBundle/zipball/29942037076433f0189f33ccd7d53198dd818fe7", + "reference": "29942037076433f0189f33ccd7d53198dd818fe7", "shasum": "" }, "require": { - "doctrine/common": "^2.13 || ^3.0", - "doctrine/persistence": "^1.3.3 || ^2.0 || ^3.0", - "php": "^7.4 || ^8.0", + "doctrine/persistence": "^1.3.3 || ^2.0 || ^3.0 || ^4.0", + "php": "^8.1", "symfony/deprecation-contracts": "^2.1 || ^3.0", "symfony/event-dispatcher": "^5.4 || ^6.3 || ^7.0", "symfony/event-dispatcher-contracts": "^1 || ^2 || ^3", @@ -9075,28 +8979,22 @@ }, "conflict": { "doctrine/annotations": "<1.13.1 || >=3.0", - "doctrine/dbal": "<2.13.1 || ~3.0.0 || >=4.0", + "doctrine/dbal": "<2.13.1 || ~3.0.0 || >=5.0", "doctrine/mongodb-odm": "<2.2 || >=3.0", "doctrine/orm": "<2.14 || >=4.0" }, "require-dev": { - "doctrine/annotations": "^1.13.1 || ^2.0", - "doctrine/data-fixtures": "^1.4.4", - "doctrine/dbal": "^2.13.1 || ^3.1", - "doctrine/doctrine-bundle": "^2.2", - "doctrine/doctrine-fixtures-bundle": "^3.4.4 || ^4.0", - "doctrine/mongodb-odm": "^2.2", - "doctrine/mongodb-odm-bundle": "^4.2.1 || ^5.0", - "doctrine/orm": "^2.14 || ^3.0", - "doctrine/phpcr-bundle": "^2.4.3 || ^3.0", - "doctrine/phpcr-odm": "^1.7.2 || ^2.0", - "jackalope/jackalope-doctrine-dbal": "^1.10.1 || ^2.0", + "doctrine/data-fixtures": "^1.7 || ^2.0.1", + "doctrine/doctrine-bundle": "^2.11", + "doctrine/doctrine-fixtures-bundle": "^3.5.1 || ^4.0", + "doctrine/mongodb-odm": "^2.5", + "doctrine/mongodb-odm-bundle": "^4.4 || ^5.0", + "doctrine/orm": "^2.14 || ^3.1.0", "monolog/monolog": "^1.25.1 || ^2.0 || ^3.0", - "phpunit/phpunit": "^9.6.17 || ^10.5.11 || ^11.0.4", + "phpunit/phpunit": "^10.5.11 || ^11.0.4 || ^12.0.0", "symfony/doctrine-bridge": "^5.4 || ^6.3 || ^7.0", "symfony/monolog-bridge": "^5.4 || ^6.3 || ^7.0", "symfony/monolog-bundle": "^3.2", - "symfony/phpunit-bridge": "^7.0", "theofidry/alice-data-fixtures": "^1.5.2" }, "suggest": { @@ -9109,7 +9007,7 @@ "type": "symfony-bundle", "extra": { "branch-alias": { - "dev-master": "2.x-dev" + "dev-master": "3.x-dev" } }, "autoload": { @@ -9139,9 +9037,9 @@ ], "support": { "issues": "https://github.com/liip/LiipTestFixturesBundle/issues", - "source": "https://github.com/liip/LiipTestFixturesBundle/tree/2.10.0" + "source": "https://github.com/liip/LiipTestFixturesBundle/tree/3.6.0" }, - "time": "2025-06-05T19:13:23+00:00" + "time": "2025-10-06T18:40:34+00:00" }, { "name": "malukenho/docheader", @@ -9350,61 +9248,6 @@ }, "time": "2023-10-01T17:31:30+00:00" }, - { - "name": "moontoast/math", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/ramsey/moontoast-math.git", - "reference": "5f47d34c87767dbcc08b30377a9827df71de91fa" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/moontoast-math/zipball/5f47d34c87767dbcc08b30377a9827df71de91fa", - "reference": "5f47d34c87767dbcc08b30377a9827df71de91fa", - "shasum": "" - }, - "require": { - "php": ">=5.3.3", - "phpseclib/bcmath_compat": ">=1.0.3" - }, - "require-dev": { - "jakub-onderka/php-parallel-lint": "^0.9.0", - "phpunit/phpunit": "^4.8 || ^5.5 || ^6.5 || ^7.0", - "satooshi/php-coveralls": "^0.6.1", - "squizlabs/php_codesniffer": "^2.3" - }, - "type": "library", - "autoload": { - "psr-4": { - "Moontoast\\Math\\": "src/Moontoast/Math", - "Moontoast\\Math\\Exception\\": "src/Moontoast/Math/Exception" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "Apache-2.0" - ], - "authors": [ - { - "name": "Ben Ramsey", - "email": "ben@benramsey.com", - "homepage": "https://benramsey.com" - } - ], - "description": "A mathematics library, providing functionality for large numbers", - "homepage": "https://github.com/ramsey/moontoast-math", - "keywords": [ - "bcmath", - "math" - ], - "support": { - "issues": "https://github.com/ramsey/moontoast-math/issues", - "source": "https://github.com/ramsey/moontoast-math" - }, - "abandoned": "brick/math", - "time": "2020-01-05T04:49:34+00:00" - }, { "name": "myclabs/deep-copy", "version": "1.13.4", @@ -9558,125 +9401,6 @@ ], "time": "2025-04-10T13:12:51+00:00" }, - { - "name": "paragonie/constant_time_encoding", - "version": "v3.1.3", - "source": { - "type": "git", - "url": "https://github.com/paragonie/constant_time_encoding.git", - "reference": "d5b01a39b3415c2cd581d3bd3a3575c1ebbd8e77" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/paragonie/constant_time_encoding/zipball/d5b01a39b3415c2cd581d3bd3a3575c1ebbd8e77", - "reference": "d5b01a39b3415c2cd581d3bd3a3575c1ebbd8e77", - "shasum": "" - }, - "require": { - "php": "^8" - }, - "require-dev": { - "infection/infection": "^0", - "nikic/php-fuzzer": "^0", - "phpunit/phpunit": "^9|^10|^11", - "vimeo/psalm": "^4|^5|^6" - }, - "type": "library", - "autoload": { - "psr-4": { - "ParagonIE\\ConstantTime\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Paragon Initiative Enterprises", - "email": "security@paragonie.com", - "homepage": "https://paragonie.com", - "role": "Maintainer" - }, - { - "name": "Steve 'Sc00bz' Thomas", - "email": "steve@tobtu.com", - "homepage": "https://www.tobtu.com", - "role": "Original Developer" - } - ], - "description": "Constant-time Implementations of RFC 4648 Encoding (Base-64, Base-32, Base-16)", - "keywords": [ - "base16", - "base32", - "base32_decode", - "base32_encode", - "base64", - "base64_decode", - "base64_encode", - "bin2hex", - "encoding", - "hex", - "hex2bin", - "rfc4648" - ], - "support": { - "email": "info@paragonie.com", - "issues": "https://github.com/paragonie/constant_time_encoding/issues", - "source": "https://github.com/paragonie/constant_time_encoding" - }, - "time": "2025-09-24T15:06:41+00:00" - }, - { - "name": "paragonie/random_compat", - "version": "v9.99.100", - "source": { - "type": "git", - "url": "https://github.com/paragonie/random_compat.git", - "reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/paragonie/random_compat/zipball/996434e5492cb4c3edcb9168db6fbb1359ef965a", - "reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a", - "shasum": "" - }, - "require": { - "php": ">= 7" - }, - "require-dev": { - "phpunit/phpunit": "4.*|5.*", - "vimeo/psalm": "^1" - }, - "suggest": { - "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." - }, - "type": "library", - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Paragon Initiative Enterprises", - "email": "security@paragonie.com", - "homepage": "https://paragonie.com" - } - ], - "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", - "keywords": [ - "csprng", - "polyfill", - "pseudorandom", - "random" - ], - "support": { - "email": "info@paragonie.com", - "issues": "https://github.com/paragonie/random_compat/issues", - "source": "https://github.com/paragonie/random_compat" - }, - "time": "2020-10-15T08:29:30+00:00" - }, { "name": "pdepend/pdepend", "version": "2.16.2", @@ -9941,178 +9665,6 @@ ], "time": "2023-12-11T08:22:20+00:00" }, - { - "name": "phpseclib/bcmath_compat", - "version": "2.0.3", - "source": { - "type": "git", - "url": "https://github.com/phpseclib/bcmath_compat.git", - "reference": "ae8f87ea0c96b2ef08ecf0d291d45372d0f7bc5a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpseclib/bcmath_compat/zipball/ae8f87ea0c96b2ef08ecf0d291d45372d0f7bc5a", - "reference": "ae8f87ea0c96b2ef08ecf0d291d45372d0f7bc5a", - "shasum": "" - }, - "require": { - "phpseclib/phpseclib": "^3.0" - }, - "provide": { - "ext-bcmath": "8.1.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35|^5.7|^6.0|^9.4", - "squizlabs/php_codesniffer": "^3.0" - }, - "suggest": { - "ext-gmp": "Will enable faster math operations" - }, - "type": "library", - "autoload": { - "files": [ - "lib/bcmath.php" - ], - "psr-4": { - "bcmath_compat\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jim Wigginton", - "email": "terrafrost@php.net", - "homepage": "http://phpseclib.sourceforge.net" - } - ], - "description": "PHP 5.x-8.x polyfill for bcmath extension", - "keywords": [ - "BigInteger", - "bcmath", - "bigdecimal", - "math", - "polyfill" - ], - "support": { - "email": "terrafrost@php.net", - "issues": "https://github.com/phpseclib/bcmath_compat/issues", - "source": "https://github.com/phpseclib/bcmath_compat" - }, - "time": "2024-06-06T14:17:54+00:00" - }, - { - "name": "phpseclib/phpseclib", - "version": "3.0.47", - "source": { - "type": "git", - "url": "https://github.com/phpseclib/phpseclib.git", - "reference": "9d6ca36a6c2dd434765b1071b2644a1c683b385d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/9d6ca36a6c2dd434765b1071b2644a1c683b385d", - "reference": "9d6ca36a6c2dd434765b1071b2644a1c683b385d", - "shasum": "" - }, - "require": { - "paragonie/constant_time_encoding": "^1|^2|^3", - "paragonie/random_compat": "^1.4|^2.0|^9.99.99", - "php": ">=5.6.1" - }, - "require-dev": { - "phpunit/phpunit": "*" - }, - "suggest": { - "ext-dom": "Install the DOM extension to load XML formatted public keys.", - "ext-gmp": "Install the GMP (GNU Multiple Precision) extension in order to speed up arbitrary precision integer arithmetic operations.", - "ext-libsodium": "SSH2/SFTP can make use of some algorithms provided by the libsodium-php extension.", - "ext-mcrypt": "Install the Mcrypt extension in order to speed up a few other cryptographic operations.", - "ext-openssl": "Install the OpenSSL extension in order to speed up a wide variety of cryptographic operations." - }, - "type": "library", - "autoload": { - "files": [ - "phpseclib/bootstrap.php" - ], - "psr-4": { - "phpseclib3\\": "phpseclib/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jim Wigginton", - "email": "terrafrost@php.net", - "role": "Lead Developer" - }, - { - "name": "Patrick Monnerat", - "email": "pm@datasphere.ch", - "role": "Developer" - }, - { - "name": "Andreas Fischer", - "email": "bantu@phpbb.com", - "role": "Developer" - }, - { - "name": "Hans-Jürgen Petrich", - "email": "petrich@tronic-media.com", - "role": "Developer" - }, - { - "name": "Graham Campbell", - "email": "graham@alt-three.com", - "role": "Developer" - } - ], - "description": "PHP Secure Communications Library - Pure-PHP implementations of RSA, AES, SSH2, SFTP, X.509 etc.", - "homepage": "http://phpseclib.sourceforge.net", - "keywords": [ - "BigInteger", - "aes", - "asn.1", - "asn1", - "blowfish", - "crypto", - "cryptography", - "encryption", - "rsa", - "security", - "sftp", - "signature", - "signing", - "ssh", - "twofish", - "x.509", - "x509" - ], - "support": { - "issues": "https://github.com/phpseclib/phpseclib/issues", - "source": "https://github.com/phpseclib/phpseclib/tree/3.0.47" - }, - "funding": [ - { - "url": "https://github.com/terrafrost", - "type": "github" - }, - { - "url": "https://www.patreon.com/phpseclib", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpseclib/phpseclib", - "type": "tidelift" - } - ], - "time": "2025-10-06T01:07:24+00:00" - }, { "name": "phpstan/phpdoc-parser", "version": "2.3.0", @@ -12225,90 +11777,6 @@ ], "time": "2025-09-12T08:37:02+00:00" }, - { - "name": "symfony/polyfill-php80", - "version": "v1.33.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "0cc9dd0f17f61d8131e7df6b84bd344899fe2608" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/0cc9dd0f17f61d8131e7df6b84bd344899fe2608", - "reference": "0cc9dd0f17f61d8131e7df6b84bd344899fe2608", - "shasum": "" - }, - "require": { - "php": ">=7.2" - }, - "type": "library", - "extra": { - "thanks": { - "url": "https://github.com/symfony/polyfill", - "name": "symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Php80\\": "" - }, - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Ion Bazan", - "email": "ion.bazan@gmail.com" - }, - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.33.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://github.com/nicolas-grekas", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2025-01-02T08:10:11+00:00" - }, { "name": "symfony/process", "version": "v6.4.26", diff --git a/symfony.lock b/symfony.lock index e0a78d90c..6fc4671ae 100644 --- a/symfony.lock +++ b/symfony.lock @@ -38,9 +38,6 @@ "doctrine/collections": { "version": "1.6.5" }, - "doctrine/common": { - "version": "2.13.3" - }, "doctrine/data-fixtures": { "version": "1.4.3" }, @@ -506,9 +503,6 @@ "symfony/polyfill-php73": { "version": "v1.17.0" }, - "symfony/polyfill-php80": { - "version": "v1.17.0" - }, "symfony/process": { "version": "v4.4.37" }, From 2762ec91c0daed16c21344c39948f13c32f7225c Mon Sep 17 00:00:00 2001 From: Johan Kromhout Date: Tue, 25 Nov 2025 11:40:07 +0100 Subject: [PATCH 16/32] Handle framework deprecations. xss_protection is deprecated. The recommended unsafe-inline al not allowed. --- config/packages/doctrine.yaml | 3 +++ config/packages/framework.yaml | 2 ++ config/packages/nelmio_security.yaml | 3 --- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/config/packages/doctrine.yaml b/config/packages/doctrine.yaml index 8ade4d971..9011a1c8e 100644 --- a/config/packages/doctrine.yaml +++ b/config/packages/doctrine.yaml @@ -117,6 +117,7 @@ doctrine: auto_generate_proxy_classes: "%kernel.debug%" entity_managers: middleware: + report_fields_where_declared: true connection: middleware naming_strategy: doctrine.orm.naming_strategy.underscore_number_aware mappings: @@ -141,6 +142,7 @@ doctrine: schema_ignore_classes: - Surfnet\StepupMiddleware\ApiBundle\Identity\Entity\RaCandidate gateway: + report_fields_where_declared: true connection: gateway naming_strategy: doctrine.orm.naming_strategy.underscore_number_aware mappings: @@ -149,6 +151,7 @@ doctrine: type: attribute is_bundle: true deploy: + report_fields_where_declared: true connection: deploy when@dev: diff --git a/config/packages/framework.yaml b/config/packages/framework.yaml index 2627cc5e7..d7ba5f7d8 100644 --- a/config/packages/framework.yaml +++ b/config/packages/framework.yaml @@ -14,6 +14,8 @@ framework: fragments: false php_errors: log: true + http_method_override: true + handle_all_throwables: true when@dev: framework: diff --git a/config/packages/nelmio_security.yaml b/config/packages/nelmio_security.yaml index 89ce0d2b6..8932ab883 100644 --- a/config/packages/nelmio_security.yaml +++ b/config/packages/nelmio_security.yaml @@ -23,9 +23,6 @@ nelmio_security: content_type: nosniff: true - xss_protection: - enabled: true - mode_block: true when@dev: &devOverride nelmio_security: From a55f9124e349f975b5988f9a04d9dfc2f0efaf68 Mon Sep 17 00:00:00 2001 From: Johan Kromhout Date: Tue, 25 Nov 2025 11:54:32 +0100 Subject: [PATCH 17/32] Handle twig sandbox deprecation https://github.com/twigphp/Twig/commit/7c38fc23096e7817c185c8773b4997a1361c2262 Disable doctrine automapping deprecation warning. --- config/packages/doctrine.yaml | 2 ++ .../Resources/views/RecoveryTokenMailService/email.html.twig | 4 +--- .../Resources/views/SecondFactorMailService/email.html.twig | 5 +---- 3 files changed, 4 insertions(+), 7 deletions(-) diff --git a/config/packages/doctrine.yaml b/config/packages/doctrine.yaml index 9011a1c8e..a4059ac3b 100644 --- a/config/packages/doctrine.yaml +++ b/config/packages/doctrine.yaml @@ -115,6 +115,8 @@ doctrine: orm: default_entity_manager: middleware auto_generate_proxy_classes: "%kernel.debug%" + controller_resolver: + auto_mapping: false entity_managers: middleware: report_fields_where_declared: true diff --git a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Resources/views/RecoveryTokenMailService/email.html.twig b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Resources/views/RecoveryTokenMailService/email.html.twig index 4aced049a..62b59dc39 100644 --- a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Resources/views/RecoveryTokenMailService/email.html.twig +++ b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Resources/views/RecoveryTokenMailService/email.html.twig @@ -7,9 +7,7 @@ {% set template = template_from_string(templateString) %} -{% sandbox %} - {% include template %} -{% endsandbox %} +{{ include(template, sandboxed: true) }} diff --git a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Resources/views/SecondFactorMailService/email.html.twig b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Resources/views/SecondFactorMailService/email.html.twig index 4aced049a..599e64661 100644 --- a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Resources/views/SecondFactorMailService/email.html.twig +++ b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Resources/views/SecondFactorMailService/email.html.twig @@ -6,10 +6,7 @@ {% set template = template_from_string(templateString) %} - -{% sandbox %} - {% include template %} -{% endsandbox %} +{{ include(template, sandboxed: true) }} From 94cd3817c46627c0e23dcf3365dcae79469f86c0 Mon Sep 17 00:00:00 2001 From: Johan Kromhout Date: Tue, 25 Nov 2025 12:03:38 +0100 Subject: [PATCH 18/32] Disable code coverage to prevent warnings. --- ci/qa/phpunit | 2 +- composer.json | 1 - composer.lock | 2 +- 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/ci/qa/phpunit b/ci/qa/phpunit index c0b6ce970..a6390e7e5 100755 --- a/ci/qa/phpunit +++ b/ci/qa/phpunit @@ -7,5 +7,5 @@ cd $(dirname $0)/../../ # PHPUnit Bridge should always be used in Symfony applications. (https://symfony.com/doc/current/components/phpunit_bridge.html) # This will create a phpunit executable in /bin/ instead of /vendor/bin/ -./vendor/bin/phpunit --configuration=ci/qa/phpunit.xml --coverage-text --stop-on-error $@ +./vendor/bin/phpunit --configuration=ci/qa/phpunit.xml --stop-on-error $@ ./vendor/bin/phpunit --configuration=ci/qa/phpunit.xml --testsuite=database diff --git a/composer.json b/composer.json index 2cfb69d85..367522d5a 100644 --- a/composer.json +++ b/composer.json @@ -66,7 +66,6 @@ "phpstan/phpstan-doctrine": "^2.0", "phpstan/phpstan-mockery": "^2.0", "phpstan/phpstan-symfony": "^2.0", - "phpunit/php-code-coverage": "^10.1", "phpunit/phpunit": "^10", "rector/rector": "^2.2", "slevomat/coding-standard": "^8.25", diff --git a/composer.lock b/composer.lock index 6d8ac1eb1..9ae8ad7a9 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "ebafaf3d5b0bc2794aae08529f4be6cb", + "content-hash": "449bd5423f5b424eea23dbf625340d58", "packages": [ { "name": "beberlei/assert", From c9e0563db731b63a9bc2813d3dc2a3ef67ab5a60 Mon Sep 17 00:00:00 2001 From: Johan Kromhout Date: Wed, 26 Nov 2025 09:43:51 +0100 Subject: [PATCH 19/32] Upgrade Symfony 6.4 > 7.3 --- ci/qa/phpstan-baseline.neon | 6 +- composer.json | 36 +- composer.lock | 1788 +++++++++-------- .../Request/InstitutionValueResolverTest.php | 17 +- symfony.lock | 12 + 5 files changed, 972 insertions(+), 887 deletions(-) diff --git a/ci/qa/phpstan-baseline.neon b/ci/qa/phpstan-baseline.neon index 2bde35127..c98a19828 100644 --- a/ci/qa/phpstan-baseline.neon +++ b/ci/qa/phpstan-baseline.neon @@ -3793,9 +3793,9 @@ parameters: path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Tests/Request/InstitutionValueResolverTest.php - - message: '#^Property Symfony\\Component\\HttpFoundation\\Request\:\:\$query \(Symfony\\Component\\HttpFoundation\\InputBag\\) does not accept Mockery\\MockInterface&Symfony\\Component\\HttpFoundation\\ParameterBag\.$#' - identifier: assign.propertyType - count: 2 + message: '#^Method Surfnet\\StepupMiddleware\\ApiBundle\\Tests\\Request\\InstitutionValueResolverTest\:\:mockQuery\(\) return type with generic class Symfony\\Component\\HttpFoundation\\InputBag does not specify its types\: TValue$#' + identifier: missingType.generics + count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Tests/Request/InstitutionValueResolverTest.php - diff --git a/composer.json b/composer.json index 367522d5a..75407ee66 100644 --- a/composer.json +++ b/composer.json @@ -34,21 +34,21 @@ "openconext/monitor-bundle": "^4.3.1", "pagerfanta/pagerfanta": "^4.7.1", "ramsey/uuid": "^4.7.6", - "surfnet/stepup-bundle": "^6.0.17", - "symfony/asset": "6.4.*", - "symfony/expression-language": "6.4.*", + "surfnet/stepup-bundle": "^7.0", + "symfony/asset": "7.3.*", + "symfony/expression-language": "7.3.*", "symfony/flex": "^2.4.7", - "symfony/form": "6.4.*", - "symfony/framework-bundle": "6.4.*", - "symfony/intl": "6.4.*", - "symfony/mailer": "6.4.*", + "symfony/form": "7.3.*", + "symfony/framework-bundle": "7.3.*", + "symfony/intl": "7.3.*", + "symfony/mailer": "7.3.*", "symfony/monolog-bundle": "^3.10", - "symfony/password-hasher": "6.4.*", - "symfony/runtime": "6.4.*", - "symfony/security-bundle": "6.4.*", - "symfony/translation": "6.4.*", - "symfony/twig-bundle": "6.4.*", - "symfony/validator": "6.4.*", + "symfony/password-hasher": "7.3.*", + "symfony/runtime": "7.3.*", + "symfony/security-bundle": "7.3.*", + "symfony/translation": "7.3.*", + "symfony/twig-bundle": "7.3.*", + "symfony/validator": "7.3.*", "twig/extra-bundle": "^3.20", "twig/intl-extra": "^3.20", "twig/twig": "^3.20" @@ -70,10 +70,10 @@ "rector/rector": "^2.2", "slevomat/coding-standard": "^8.25", "squizlabs/php_codesniffer": "^4", - "symfony/browser-kit": "6.4.*", - "symfony/phpunit-bridge": "^6.4.16", - "symfony/stopwatch": "6.4.*", - "symfony/web-profiler-bundle": "6.4.*" + "symfony/browser-kit": "7.3.*", + "symfony/phpunit-bridge": "7.3.*", + "symfony/stopwatch": "7.3.*", + "symfony/web-profiler-bundle": "7.3.*" }, "scripts": { "auto-scripts": { @@ -151,7 +151,7 @@ }, "symfony": { "allow-contrib": false, - "require": "6.4.*" + "require": "7.3.*" }, "runtime": { "disable_dotenv": true diff --git a/composer.lock b/composer.lock index 9ae8ad7a9..a4c3b9fbc 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "449bd5423f5b424eea23dbf625340d58", + "content-hash": "78df28480994140b376e2bb8d4c3104c", "packages": [ { "name": "beberlei/assert", @@ -1392,34 +1392,31 @@ }, { "name": "doctrine/persistence", - "version": "3.4.3", + "version": "4.1.1", "source": { "type": "git", "url": "https://github.com/doctrine/persistence.git", - "reference": "d59e6ef7caffe6a30f4b6f9e9079a75f52c64ae0" + "reference": "b9c49ad3558bb77ef973f4e173f2e9c2eca9be09" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/persistence/zipball/d59e6ef7caffe6a30f4b6f9e9079a75f52c64ae0", - "reference": "d59e6ef7caffe6a30f4b6f9e9079a75f52c64ae0", + "url": "https://api.github.com/repos/doctrine/persistence/zipball/b9c49ad3558bb77ef973f4e173f2e9c2eca9be09", + "reference": "b9c49ad3558bb77ef973f4e173f2e9c2eca9be09", "shasum": "" }, "require": { "doctrine/event-manager": "^1 || ^2", - "php": "^7.2 || ^8.0", + "php": "^8.1", "psr/cache": "^1.0 || ^2.0 || ^3.0" }, - "conflict": { - "doctrine/common": "<2.10" - }, "require-dev": { - "doctrine/coding-standard": "^12 || ^14", - "doctrine/common": "^3.0", - "phpstan/phpstan": "^1 || 2.1.30", - "phpstan/phpstan-phpunit": "^1 || ^2", - "phpstan/phpstan-strict-rules": "^1 || ^2", - "phpunit/phpunit": "^8.5.38 || ^9.5", - "symfony/cache": "^4.4 || ^5.4 || ^6.0 || ^7.0" + "doctrine/coding-standard": "^14", + "phpstan/phpstan": "2.1.30", + "phpstan/phpstan-phpunit": "^2", + "phpstan/phpstan-strict-rules": "^2", + "phpunit/phpunit": "^10.5.58 || ^12", + "symfony/cache": "^4.4 || ^5.4 || ^6.0 || ^7.0", + "symfony/finder": "^4.4 || ^5.4 || ^6.0 || ^7.0" }, "type": "library", "autoload": { @@ -1468,7 +1465,7 @@ ], "support": { "issues": "https://github.com/doctrine/persistence/issues", - "source": "https://github.com/doctrine/persistence/tree/3.4.3" + "source": "https://github.com/doctrine/persistence/tree/4.1.1" }, "funding": [ { @@ -1484,7 +1481,7 @@ "type": "tidelift" } ], - "time": "2025-10-21T15:21:39+00:00" + "time": "2025-10-16T20:13:18+00:00" }, { "name": "doctrine/sql-formatter", @@ -3239,16 +3236,16 @@ }, { "name": "surfnet/stepup-bundle", - "version": "6.0.17", + "version": "7.0.0", "source": { "type": "git", "url": "https://github.com/OpenConext/Stepup-bundle.git", - "reference": "0565138f262cc8c33864d1635ee90386f389cdc0" + "reference": "aa3203a0f39a55a71941682b34b5ae3b1defdbc6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/OpenConext/Stepup-bundle/zipball/0565138f262cc8c33864d1635ee90386f389cdc0", - "reference": "0565138f262cc8c33864d1635ee90386f389cdc0", + "url": "https://api.github.com/repos/OpenConext/Stepup-bundle/zipball/aa3203a0f39a55a71941682b34b5ae3b1defdbc6", + "reference": "aa3203a0f39a55a71941682b34b5ae3b1defdbc6", "shasum": "" }, "require": { @@ -3258,26 +3255,28 @@ "guzzlehttp/guzzle": "^7.8", "monolog/monolog": "^3", "php": "^8.2", - "surfnet/stepup-saml-bundle": "^6.0", - "symfony/config": "^5.4|^6.3", - "symfony/dependency-injection": "^5.4|^6.3", - "symfony/form": "^5.4|^6.3", - "symfony/framework-bundle": "^5.4|^6.3", - "symfony/http-kernel": "^5.4|^6.3", - "symfony/twig-bridge": "^5.4|^6.3", - "symfony/validator": "^5.4|^6.3" + "surfnet/stepup-saml-bundle": "^7.0", + "symfony/config": "^6.3|^7.0", + "symfony/dependency-injection": "^6.3|^7.0", + "symfony/form": "^6.3|^7.0", + "symfony/framework-bundle": "^6.3|^7.0", + "symfony/http-kernel": "^6.3|^7.0", + "symfony/twig-bridge": "^6.3|^7.0", + "symfony/validator": "^6.3|^7.0" }, "require-dev": { + "irstea/phpcpd-shim": "^6.0", + "malukenho/docheader": "^1.1", "mockery/mockery": "^1.5", "overtrue/phplint": "*", "phpmd/phpmd": "^2.13", - "phpstan/phpstan": "^1.10", - "phpstan/phpstan-symfony": "^1.3", - "phpunit/phpunit": "^9.6", - "sebastian/phpcpd": "^6.0", - "slevomat/coding-standard": "^8.13", - "squizlabs/php_codesniffer": "^3.7.1", - "symfony/phpunit-bridge": "^5.4|^6.3" + "phpstan/phpstan": "^2.1", + "phpstan/phpstan-symfony": "^2.0", + "phpunit/phpunit": "^11.0.0", + "rector/rector": "^2.2", + "slevomat/coding-standard": "^8.24", + "squizlabs/php_codesniffer": "^4.0", + "symfony/phpunit-bridge": "^7.3" }, "type": "library", "extra": { @@ -3285,6 +3284,10 @@ "includes": [ "./ci/qa/extension.neon" ] + }, + "symfony": { + "require": "7.0.*", + "allow-contrib": false } }, "autoload": { @@ -3304,50 +3307,53 @@ ], "support": { "issues": "https://github.com/OpenConext/Stepup-bundle/issues", - "source": "https://github.com/OpenConext/Stepup-bundle/tree/6.0.17" + "source": "https://github.com/OpenConext/Stepup-bundle/tree/7.0.0" }, - "time": "2024-05-24T13:37:46+00:00" + "time": "2025-11-17T12:11:21+00:00" }, { "name": "surfnet/stepup-saml-bundle", - "version": "6.2.0", + "version": "7.0.0", "source": { "type": "git", "url": "https://github.com/OpenConext/Stepup-saml-bundle.git", - "reference": "3ee8ae9e45dd45104945d8766a1d8e5a022701df" + "reference": "175cd2bb64c6235285f5b5fcb561389e66d4264e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/OpenConext/Stepup-saml-bundle/zipball/3ee8ae9e45dd45104945d8766a1d8e5a022701df", - "reference": "3ee8ae9e45dd45104945d8766a1d8e5a022701df", + "url": "https://api.github.com/repos/OpenConext/Stepup-saml-bundle/zipball/175cd2bb64c6235285f5b5fcb561389e66d4264e", + "reference": "175cd2bb64c6235285f5b5fcb561389e66d4264e", "shasum": "" }, "require": { "ext-dom": "*", "ext-openssl": "*", "php": "^8.1", + "psr/log": "^3.0", "robrichards/xmlseclibs": "^3.1.1", "simplesamlphp/saml2": "^4.6", - "symfony/dependency-injection": "^6.3", - "symfony/framework-bundle": "^6.3", - "symfony/security-bundle": "^6.3", - "symfony/templating": "^6.3", + "symfony/dependency-injection": "^6.3|^7.0", + "symfony/framework-bundle": "^6.3|^7.0", + "symfony/security-bundle": "^6.3|^7.0", + "symfony/templating": "^6.3|7.0", "twig/twig": "^3" }, "require-dev": { + "ext-libxml": "*", "ext-zlib": "*", - "mbhsoft/phpunit-xsdvalidation": "^3.0", + "irstea/phpcpd-shim": "^6.0", + "malukenho/docheader": "^1.1", "mockery/mockery": "^1.5", "overtrue/phplint": "*", "phpmd/phpmd": "^2.6", - "phpstan/extension-installer": "^1.3", - "phpstan/phpstan": "^1.10", - "phpunit/phpunit": "^9.5", - "psr/log": "~1.0", - "sebastian/exporter": "^4.0.5", - "sebastian/phpcpd": "^6.0", - "squizlabs/php_codesniffer": "^3.7.1", - "symfony/phpunit-bridge": "^6.3" + "phpstan/extension-installer": "^1.4", + "phpstan/phpstan": "^2.1", + "phpunit/phpunit": "^11.0.0", + "rector/rector": "^2.2", + "sebastian/exporter": "^6.3", + "slevomat/coding-standard": "^8.24", + "squizlabs/php_codesniffer": "^4.0", + "symfony/phpunit-bridge": "^7.3.4" }, "type": "symfony-bundle", "extra": { @@ -3366,7 +3372,7 @@ "license": [ "Apache-2.0" ], - "description": "A Symfony 6 bundle that integrates the simplesamlphp\\saml2 library with Symfony.", + "description": "A Symfony 7 bundle that integrates the simplesamlphp\\saml2 library with Symfony.", "keywords": [ "SAML2", "saml", @@ -3376,34 +3382,34 @@ ], "support": { "issues": "https://github.com/OpenConext/Stepup-saml-bundle/issues", - "source": "https://github.com/OpenConext/Stepup-saml-bundle/tree/6.2.0" + "source": "https://github.com/OpenConext/Stepup-saml-bundle/tree/7.0.0" }, - "time": "2025-05-26T09:04:11+00:00" + "time": "2025-11-17T11:27:41+00:00" }, { "name": "symfony/asset", - "version": "v6.4.24", + "version": "v7.3.0", "source": { "type": "git", "url": "https://github.com/symfony/asset.git", - "reference": "cfee7c0d64be113383db74a2fdd65d426b7f3aab" + "reference": "56c4d9f759247c4e07d8549e3baf7493cb9c3e4b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/asset/zipball/cfee7c0d64be113383db74a2fdd65d426b7f3aab", - "reference": "cfee7c0d64be113383db74a2fdd65d426b7f3aab", + "url": "https://api.github.com/repos/symfony/asset/zipball/56c4d9f759247c4e07d8549e3baf7493cb9c3e4b", + "reference": "56c4d9f759247c4e07d8549e3baf7493cb9c3e4b", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.2" }, "conflict": { - "symfony/http-foundation": "<5.4" + "symfony/http-foundation": "<6.4" }, "require-dev": { - "symfony/http-client": "^5.4|^6.0|^7.0", - "symfony/http-foundation": "^5.4|^6.0|^7.0", - "symfony/http-kernel": "^5.4|^6.0|^7.0" + "symfony/http-client": "^6.4|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -3431,7 +3437,7 @@ "description": "Manages URL generation and versioning of web assets such as CSS stylesheets, JavaScript files and image files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/asset/tree/v6.4.24" + "source": "https://github.com/symfony/asset/tree/v7.3.0" }, "funding": [ { @@ -3442,44 +3448,41 @@ "url": "https://github.com/fabpot", "type": "github" }, - { - "url": "https://github.com/nicolas-grekas", - "type": "github" - }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-07-10T08:14:14+00:00" + "time": "2025-03-05T10:15:41+00:00" }, { "name": "symfony/cache", - "version": "v6.4.28", + "version": "v7.3.6", "source": { "type": "git", "url": "https://github.com/symfony/cache.git", - "reference": "31628f36fc97c5714d181b3a8d29efb85c6a7677" + "reference": "1277a1ec61c8d93ea61b2a59738f1deb9bfb6701" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/31628f36fc97c5714d181b3a8d29efb85c6a7677", - "reference": "31628f36fc97c5714d181b3a8d29efb85c6a7677", + "url": "https://api.github.com/repos/symfony/cache/zipball/1277a1ec61c8d93ea61b2a59738f1deb9bfb6701", + "reference": "1277a1ec61c8d93ea61b2a59738f1deb9bfb6701", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "psr/cache": "^2.0|^3.0", "psr/log": "^1.1|^2|^3", - "symfony/cache-contracts": "^2.5|^3", + "symfony/cache-contracts": "^3.6", + "symfony/deprecation-contracts": "^2.5|^3.0", "symfony/service-contracts": "^2.5|^3", - "symfony/var-exporter": "^6.3.6|^7.0" + "symfony/var-exporter": "^6.4|^7.0" }, "conflict": { - "doctrine/dbal": "<2.13.1", - "symfony/dependency-injection": "<5.4", - "symfony/http-kernel": "<5.4", - "symfony/var-dumper": "<5.4" + "doctrine/dbal": "<3.6", + "symfony/dependency-injection": "<6.4", + "symfony/http-kernel": "<6.4", + "symfony/var-dumper": "<6.4" }, "provide": { "psr/cache-implementation": "2.0|3.0", @@ -3488,15 +3491,16 @@ }, "require-dev": { "cache/integration-tests": "dev-master", - "doctrine/dbal": "^2.13.1|^3|^4", + "doctrine/dbal": "^3.6|^4", "predis/predis": "^1.1|^2.0", "psr/simple-cache": "^1.0|^2.0|^3.0", - "symfony/config": "^5.4|^6.0|^7.0", - "symfony/dependency-injection": "^5.4|^6.0|^7.0", - "symfony/filesystem": "^5.4|^6.0|^7.0", - "symfony/http-kernel": "^5.4|^6.0|^7.0", - "symfony/messenger": "^5.4|^6.0|^7.0", - "symfony/var-dumper": "^5.4|^6.0|^7.0" + "symfony/clock": "^6.4|^7.0", + "symfony/config": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/filesystem": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/messenger": "^6.4|^7.0", + "symfony/var-dumper": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -3531,7 +3535,7 @@ "psr6" ], "support": { - "source": "https://github.com/symfony/cache/tree/v6.4.28" + "source": "https://github.com/symfony/cache/tree/v7.3.6" }, "funding": [ { @@ -3551,7 +3555,7 @@ "type": "tidelift" } ], - "time": "2025-10-30T08:37:02+00:00" + "time": "2025-10-30T13:22:58+00:00" }, { "name": "symfony/cache-contracts", @@ -3631,20 +3635,20 @@ }, { "name": "symfony/clock", - "version": "v6.4.24", + "version": "v7.3.0", "source": { "type": "git", "url": "https://github.com/symfony/clock.git", - "reference": "5e15a9c9aeeb44a99f7cf24aa75aa9607795f6f8" + "reference": "b81435fbd6648ea425d1ee96a2d8e68f4ceacd24" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/clock/zipball/5e15a9c9aeeb44a99f7cf24aa75aa9607795f6f8", - "reference": "5e15a9c9aeeb44a99f7cf24aa75aa9607795f6f8", + "url": "https://api.github.com/repos/symfony/clock/zipball/b81435fbd6648ea425d1ee96a2d8e68f4ceacd24", + "reference": "b81435fbd6648ea425d1ee96a2d8e68f4ceacd24", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "psr/clock": "^1.0", "symfony/polyfill-php83": "^1.28" }, @@ -3685,7 +3689,7 @@ "time" ], "support": { - "source": "https://github.com/symfony/clock/tree/v6.4.24" + "source": "https://github.com/symfony/clock/tree/v7.3.0" }, "funding": [ { @@ -3696,47 +3700,43 @@ "url": "https://github.com/fabpot", "type": "github" }, - { - "url": "https://github.com/nicolas-grekas", - "type": "github" - }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-07-10T08:14:14+00:00" + "time": "2024-09-25T14:21:43+00:00" }, { "name": "symfony/config", - "version": "v6.4.28", + "version": "v7.3.6", "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "15947c18ef3ddb0b2f4ec936b9e90e2520979f62" + "reference": "9d18eba95655a3152ae4c1d53c6cc34eb4d4a0b7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/15947c18ef3ddb0b2f4ec936b9e90e2520979f62", - "reference": "15947c18ef3ddb0b2f4ec936b9e90e2520979f62", + "url": "https://api.github.com/repos/symfony/config/zipball/9d18eba95655a3152ae4c1d53c6cc34eb4d4a0b7", + "reference": "9d18eba95655a3152ae4c1d53c6cc34eb4d4a0b7", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "symfony/deprecation-contracts": "^2.5|^3", - "symfony/filesystem": "^5.4|^6.0|^7.0", + "symfony/filesystem": "^7.1", "symfony/polyfill-ctype": "~1.8" }, "conflict": { - "symfony/finder": "<5.4", + "symfony/finder": "<6.4", "symfony/service-contracts": "<2.5" }, "require-dev": { - "symfony/event-dispatcher": "^5.4|^6.0|^7.0", - "symfony/finder": "^5.4|^6.0|^7.0", - "symfony/messenger": "^5.4|^6.0|^7.0", + "symfony/event-dispatcher": "^6.4|^7.0", + "symfony/finder": "^6.4|^7.0", + "symfony/messenger": "^6.4|^7.0", "symfony/service-contracts": "^2.5|^3", - "symfony/yaml": "^5.4|^6.0|^7.0" + "symfony/yaml": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -3764,7 +3764,7 @@ "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/v6.4.28" + "source": "https://github.com/symfony/config/tree/v7.3.6" }, "funding": [ { @@ -3784,51 +3784,51 @@ "type": "tidelift" } ], - "time": "2025-11-01T19:52:02+00:00" + "time": "2025-11-02T08:04:43+00:00" }, { "name": "symfony/console", - "version": "v6.4.27", + "version": "v7.3.6", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "13d3176cf8ad8ced24202844e9f95af11e2959fc" + "reference": "c28ad91448f86c5f6d9d2c70f0cf68bf135f252a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/13d3176cf8ad8ced24202844e9f95af11e2959fc", - "reference": "13d3176cf8ad8ced24202844e9f95af11e2959fc", + "url": "https://api.github.com/repos/symfony/console/zipball/c28ad91448f86c5f6d9d2c70f0cf68bf135f252a", + "reference": "c28ad91448f86c5f6d9d2c70f0cf68bf135f252a", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-mbstring": "~1.0", "symfony/service-contracts": "^2.5|^3", - "symfony/string": "^5.4|^6.0|^7.0" + "symfony/string": "^7.2" }, "conflict": { - "symfony/dependency-injection": "<5.4", - "symfony/dotenv": "<5.4", - "symfony/event-dispatcher": "<5.4", - "symfony/lock": "<5.4", - "symfony/process": "<5.4" + "symfony/dependency-injection": "<6.4", + "symfony/dotenv": "<6.4", + "symfony/event-dispatcher": "<6.4", + "symfony/lock": "<6.4", + "symfony/process": "<6.4" }, "provide": { "psr/log-implementation": "1.0|2.0|3.0" }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0|^7.0", - "symfony/dependency-injection": "^5.4|^6.0|^7.0", - "symfony/event-dispatcher": "^5.4|^6.0|^7.0", + "symfony/config": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/event-dispatcher": "^6.4|^7.0", "symfony/http-foundation": "^6.4|^7.0", "symfony/http-kernel": "^6.4|^7.0", - "symfony/lock": "^5.4|^6.0|^7.0", - "symfony/messenger": "^5.4|^6.0|^7.0", - "symfony/process": "^5.4|^6.0|^7.0", - "symfony/stopwatch": "^5.4|^6.0|^7.0", - "symfony/var-dumper": "^5.4|^6.0|^7.0" + "symfony/lock": "^6.4|^7.0", + "symfony/messenger": "^6.4|^7.0", + "symfony/process": "^6.4|^7.0", + "symfony/stopwatch": "^6.4|^7.0", + "symfony/var-dumper": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -3862,7 +3862,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v6.4.27" + "source": "https://github.com/symfony/console/tree/v7.3.6" }, "funding": [ { @@ -3882,44 +3882,43 @@ "type": "tidelift" } ], - "time": "2025-10-06T10:25:16+00:00" + "time": "2025-11-04T01:21:42+00:00" }, { "name": "symfony/dependency-injection", - "version": "v6.4.26", + "version": "v7.3.6", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "5f311eaf0b321f8ec640f6bae12da43a14026898" + "reference": "98af8bb46c56aedd9dd5a7f0414fc72bf2dcfe69" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/5f311eaf0b321f8ec640f6bae12da43a14026898", - "reference": "5f311eaf0b321f8ec640f6bae12da43a14026898", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/98af8bb46c56aedd9dd5a7f0414fc72bf2dcfe69", + "reference": "98af8bb46c56aedd9dd5a7f0414fc72bf2dcfe69", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "psr/container": "^1.1|^2.0", "symfony/deprecation-contracts": "^2.5|^3", - "symfony/service-contracts": "^2.5|^3.0", + "symfony/service-contracts": "^3.5", "symfony/var-exporter": "^6.4.20|^7.2.5" }, "conflict": { "ext-psr": "<1.1|>=2", - "symfony/config": "<6.1", - "symfony/finder": "<5.4", - "symfony/proxy-manager-bridge": "<6.3", - "symfony/yaml": "<5.4" + "symfony/config": "<6.4", + "symfony/finder": "<6.4", + "symfony/yaml": "<6.4" }, "provide": { "psr/container-implementation": "1.1|2.0", "symfony/service-implementation": "1.1|2.0|3.0" }, "require-dev": { - "symfony/config": "^6.1|^7.0", - "symfony/expression-language": "^5.4|^6.0|^7.0", - "symfony/yaml": "^5.4|^6.0|^7.0" + "symfony/config": "^6.4|^7.0", + "symfony/expression-language": "^6.4|^7.0", + "symfony/yaml": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -3947,7 +3946,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/v6.4.26" + "source": "https://github.com/symfony/dependency-injection/tree/v7.3.6" }, "funding": [ { @@ -3967,7 +3966,7 @@ "type": "tidelift" } ], - "time": "2025-09-11T09:57:09+00:00" + "time": "2025-10-31T10:11:11+00:00" }, { "name": "symfony/deprecation-contracts", @@ -4038,67 +4037,68 @@ }, { "name": "symfony/doctrine-bridge", - "version": "v6.4.26", + "version": "v7.3.5", "source": { "type": "git", "url": "https://github.com/symfony/doctrine-bridge.git", - "reference": "c14bb5a9125c411e73354954940e06b6e7fcc344" + "reference": "e7d308bd44ff8673a259e2727d13af6a93a5d83e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/c14bb5a9125c411e73354954940e06b6e7fcc344", - "reference": "c14bb5a9125c411e73354954940e06b6e7fcc344", + "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/e7d308bd44ff8673a259e2727d13af6a93a5d83e", + "reference": "e7d308bd44ff8673a259e2727d13af6a93a5d83e", "shasum": "" }, "require": { - "doctrine/event-manager": "^1.2|^2", - "doctrine/persistence": "^2.5|^3.1|^4", - "php": ">=8.1", + "doctrine/event-manager": "^2", + "doctrine/persistence": "^3.1|^4", + "php": ">=8.2", "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-mbstring": "~1.0", "symfony/service-contracts": "^2.5|^3" }, "conflict": { - "doctrine/dbal": "<2.13.1", + "doctrine/collections": "<1.8", + "doctrine/dbal": "<3.6", "doctrine/lexer": "<1.1", "doctrine/orm": "<2.15", - "symfony/cache": "<5.4", - "symfony/dependency-injection": "<6.2", - "symfony/form": "<5.4.38|>=6,<6.4.6|>=7,<7.0.6", - "symfony/http-foundation": "<6.3", - "symfony/http-kernel": "<6.2", - "symfony/lock": "<6.3", - "symfony/messenger": "<5.4", - "symfony/property-info": "<5.4", - "symfony/security-bundle": "<5.4", + "symfony/cache": "<6.4", + "symfony/dependency-injection": "<6.4", + "symfony/form": "<6.4.6|>=7,<7.0.6", + "symfony/http-foundation": "<6.4", + "symfony/http-kernel": "<6.4", + "symfony/lock": "<6.4", + "symfony/messenger": "<6.4", + "symfony/property-info": "<6.4", + "symfony/security-bundle": "<6.4", "symfony/security-core": "<6.4", "symfony/validator": "<6.4" }, "require-dev": { - "doctrine/collections": "^1.0|^2.0", + "doctrine/collections": "^1.8|^2.0", "doctrine/data-fixtures": "^1.1|^2", - "doctrine/dbal": "^2.13.1|^3|^4", + "doctrine/dbal": "^3.6|^4", "doctrine/orm": "^2.15|^3", "psr/log": "^1|^2|^3", - "symfony/cache": "^5.4|^6.0|^7.0", - "symfony/config": "^5.4|^6.0|^7.0", - "symfony/dependency-injection": "^6.2|^7.0", - "symfony/doctrine-messenger": "^5.4|^6.0|^7.0", - "symfony/expression-language": "^5.4|^6.0|^7.0", - "symfony/form": "^5.4.38|^6.4.6|^7.0.6", - "symfony/http-kernel": "^6.3|^7.0", - "symfony/lock": "^6.3|^7.0", - "symfony/messenger": "^5.4|^6.0|^7.0", - "symfony/property-access": "^5.4|^6.0|^7.0", - "symfony/property-info": "^5.4|^6.0|^7.0", - "symfony/proxy-manager-bridge": "^6.4", + "symfony/cache": "^6.4|^7.0", + "symfony/config": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/doctrine-messenger": "^6.4|^7.0", + "symfony/expression-language": "^6.4|^7.0", + "symfony/form": "^6.4.6|^7.0.6", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/lock": "^6.4|^7.0", + "symfony/messenger": "^6.4|^7.0", + "symfony/property-access": "^6.4|^7.0", + "symfony/property-info": "^6.4|^7.0", "symfony/security-core": "^6.4|^7.0", - "symfony/stopwatch": "^5.4|^6.0|^7.0", - "symfony/translation": "^5.4|^6.0|^7.0", - "symfony/uid": "^5.4|^6.0|^7.0", + "symfony/stopwatch": "^6.4|^7.0", + "symfony/translation": "^6.4|^7.0", + "symfony/type-info": "^7.1.8", + "symfony/uid": "^6.4|^7.0", "symfony/validator": "^6.4|^7.0", - "symfony/var-dumper": "^5.4|^6.0|^7.0" + "symfony/var-dumper": "^6.4|^7.0" }, "type": "symfony-bridge", "autoload": { @@ -4126,7 +4126,7 @@ "description": "Provides integration for Doctrine with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/doctrine-bridge/tree/v6.4.26" + "source": "https://github.com/symfony/doctrine-bridge/tree/v7.3.5" }, "funding": [ { @@ -4146,35 +4146,37 @@ "type": "tidelift" } ], - "time": "2025-09-26T15:07:38+00:00" + "time": "2025-09-27T09:00:46+00:00" }, { "name": "symfony/error-handler", - "version": "v6.4.26", + "version": "v7.3.6", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "41bedcaec5b72640b0ec2096547b75fda72ead6c" + "reference": "bbe40bfab84323d99dab491b716ff142410a92a8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/41bedcaec5b72640b0ec2096547b75fda72ead6c", - "reference": "41bedcaec5b72640b0ec2096547b75fda72ead6c", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/bbe40bfab84323d99dab491b716ff142410a92a8", + "reference": "bbe40bfab84323d99dab491b716ff142410a92a8", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "psr/log": "^1|^2|^3", - "symfony/var-dumper": "^5.4|^6.0|^7.0" + "symfony/var-dumper": "^6.4|^7.0" }, "conflict": { "symfony/deprecation-contracts": "<2.5", "symfony/http-kernel": "<6.4" }, "require-dev": { + "symfony/console": "^6.4|^7.0", "symfony/deprecation-contracts": "^2.5|^3", "symfony/http-kernel": "^6.4|^7.0", - "symfony/serializer": "^5.4|^6.0|^7.0" + "symfony/serializer": "^6.4|^7.0", + "symfony/webpack-encore-bundle": "^1.0|^2.0" }, "bin": [ "Resources/bin/patch-type-declarations" @@ -4205,7 +4207,7 @@ "description": "Provides tools to manage errors and ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/error-handler/tree/v6.4.26" + "source": "https://github.com/symfony/error-handler/tree/v7.3.6" }, "funding": [ { @@ -4225,28 +4227,28 @@ "type": "tidelift" } ], - "time": "2025-09-11T09:57:09+00:00" + "time": "2025-10-31T19:12:50+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v6.4.25", + "version": "v7.3.3", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "b0cf3162020603587363f0551cd3be43958611ff" + "reference": "b7dc69e71de420ac04bc9ab830cf3ffebba48191" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/b0cf3162020603587363f0551cd3be43958611ff", - "reference": "b0cf3162020603587363f0551cd3be43958611ff", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/b7dc69e71de420ac04bc9ab830cf3ffebba48191", + "reference": "b7dc69e71de420ac04bc9ab830cf3ffebba48191", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "symfony/event-dispatcher-contracts": "^2.5|^3" }, "conflict": { - "symfony/dependency-injection": "<5.4", + "symfony/dependency-injection": "<6.4", "symfony/service-contracts": "<2.5" }, "provide": { @@ -4255,13 +4257,13 @@ }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0|^7.0", - "symfony/dependency-injection": "^5.4|^6.0|^7.0", - "symfony/error-handler": "^5.4|^6.0|^7.0", - "symfony/expression-language": "^5.4|^6.0|^7.0", - "symfony/http-foundation": "^5.4|^6.0|^7.0", + "symfony/config": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/error-handler": "^6.4|^7.0", + "symfony/expression-language": "^6.4|^7.0", + "symfony/http-foundation": "^6.4|^7.0", "symfony/service-contracts": "^2.5|^3", - "symfony/stopwatch": "^5.4|^6.0|^7.0" + "symfony/stopwatch": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -4289,7 +4291,7 @@ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v6.4.25" + "source": "https://github.com/symfony/event-dispatcher/tree/v7.3.3" }, "funding": [ { @@ -4309,7 +4311,7 @@ "type": "tidelift" } ], - "time": "2025-08-13T09:41:44+00:00" + "time": "2025-08-13T11:49:31+00:00" }, { "name": "symfony/event-dispatcher-contracts", @@ -4389,21 +4391,21 @@ }, { "name": "symfony/expression-language", - "version": "v6.4.24", + "version": "v7.3.2", "source": { "type": "git", "url": "https://github.com/symfony/expression-language.git", - "reference": "1ea0adaa53539ea7e70821ae9de49ebe03ae7091" + "reference": "32d2d19c62e58767e6552166c32fb259975d2b23" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/expression-language/zipball/1ea0adaa53539ea7e70821ae9de49ebe03ae7091", - "reference": "1ea0adaa53539ea7e70821ae9de49ebe03ae7091", + "url": "https://api.github.com/repos/symfony/expression-language/zipball/32d2d19c62e58767e6552166c32fb259975d2b23", + "reference": "32d2d19c62e58767e6552166c32fb259975d2b23", "shasum": "" }, "require": { - "php": ">=8.1", - "symfony/cache": "^5.4|^6.0|^7.0", + "php": ">=8.2", + "symfony/cache": "^6.4|^7.0", "symfony/deprecation-contracts": "^2.5|^3", "symfony/service-contracts": "^2.5|^3" }, @@ -4433,7 +4435,7 @@ "description": "Provides an engine that can compile and evaluate expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/expression-language/tree/v6.4.24" + "source": "https://github.com/symfony/expression-language/tree/v7.3.2" }, "funding": [ { @@ -4453,29 +4455,29 @@ "type": "tidelift" } ], - "time": "2025-07-10T08:14:14+00:00" + "time": "2025-07-10T08:29:33+00:00" }, { "name": "symfony/filesystem", - "version": "v6.4.24", + "version": "v7.3.6", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "75ae2edb7cdcc0c53766c30b0a2512b8df574bd8" + "reference": "e9bcfd7837928ab656276fe00464092cc9e1826a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/75ae2edb7cdcc0c53766c30b0a2512b8df574bd8", - "reference": "75ae2edb7cdcc0c53766c30b0a2512b8df574bd8", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/e9bcfd7837928ab656276fe00464092cc9e1826a", + "reference": "e9bcfd7837928ab656276fe00464092cc9e1826a", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-mbstring": "~1.8" }, "require-dev": { - "symfony/process": "^5.4|^6.4|^7.0" + "symfony/process": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -4503,7 +4505,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v6.4.24" + "source": "https://github.com/symfony/filesystem/tree/v7.3.6" }, "funding": [ { @@ -4523,27 +4525,27 @@ "type": "tidelift" } ], - "time": "2025-07-10T08:14:14+00:00" + "time": "2025-11-05T09:52:27+00:00" }, { "name": "symfony/finder", - "version": "v6.4.27", + "version": "v7.3.5", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "a1b6aa435d2fba50793b994a839c32b6064f063b" + "reference": "9f696d2f1e340484b4683f7853b273abff94421f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/a1b6aa435d2fba50793b994a839c32b6064f063b", - "reference": "a1b6aa435d2fba50793b994a839c32b6064f063b", + "url": "https://api.github.com/repos/symfony/finder/zipball/9f696d2f1e340484b4683f7853b273abff94421f", + "reference": "9f696d2f1e340484b4683f7853b273abff94421f", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.2" }, "require-dev": { - "symfony/filesystem": "^6.0|^7.0" + "symfony/filesystem": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -4571,7 +4573,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v6.4.27" + "source": "https://github.com/symfony/finder/tree/v7.3.5" }, "funding": [ { @@ -4591,7 +4593,7 @@ "type": "tidelift" } ], - "time": "2025-10-15T18:32:00+00:00" + "time": "2025-10-15T18:45:57+00:00" }, { "name": "symfony/flex", @@ -4668,56 +4670,56 @@ }, { "name": "symfony/form", - "version": "v6.4.27", + "version": "v7.3.6", "source": { "type": "git", "url": "https://github.com/symfony/form.git", - "reference": "5d922aea68ffe1637535713b35b29f6f34b7d81c" + "reference": "a8f32aa19b322bf46cbaaafa89c132eb662ecfe5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/form/zipball/5d922aea68ffe1637535713b35b29f6f34b7d81c", - "reference": "5d922aea68ffe1637535713b35b29f6f34b7d81c", + "url": "https://api.github.com/repos/symfony/form/zipball/a8f32aa19b322bf46cbaaafa89c132eb662ecfe5", + "reference": "a8f32aa19b322bf46cbaaafa89c132eb662ecfe5", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "symfony/deprecation-contracts": "^2.5|^3", - "symfony/event-dispatcher": "^5.4|^6.0|^7.0", - "symfony/options-resolver": "^5.4|^6.0|^7.0", + "symfony/event-dispatcher": "^6.4|^7.0", + "symfony/options-resolver": "^7.3", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-intl-icu": "^1.21", "symfony/polyfill-mbstring": "~1.0", - "symfony/property-access": "^5.4|^6.0|^7.0", + "symfony/property-access": "^6.4|^7.0", "symfony/service-contracts": "^2.5|^3" }, "conflict": { - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/doctrine-bridge": "<5.4.21|>=6,<6.2.7", - "symfony/error-handler": "<5.4", - "symfony/framework-bundle": "<5.4", - "symfony/http-kernel": "<5.4", - "symfony/translation": "<5.4.35|>=6.0,<6.3.12|>=6.4,<6.4.3|>=7.0,<7.0.3", + "symfony/console": "<6.4", + "symfony/dependency-injection": "<6.4", + "symfony/doctrine-bridge": "<6.4", + "symfony/error-handler": "<6.4", + "symfony/framework-bundle": "<6.4", + "symfony/http-kernel": "<6.4", + "symfony/translation": "<6.4.3|>=7.0,<7.0.3", "symfony/translation-contracts": "<2.5", - "symfony/twig-bridge": "<6.3" + "symfony/twig-bridge": "<6.4" }, "require-dev": { "doctrine/collections": "^1.0|^2.0", - "symfony/config": "^5.4|^6.0|^7.0", - "symfony/console": "^5.4|^6.0|^7.0", - "symfony/dependency-injection": "^5.4|^6.0|^7.0", - "symfony/expression-language": "^5.4|^6.0|^7.0", - "symfony/html-sanitizer": "^6.1|^7.0", - "symfony/http-foundation": "^5.4|^6.0|^7.0", - "symfony/http-kernel": "^5.4|^6.0|^7.0", - "symfony/intl": "^5.4|^6.0|^7.0", - "symfony/security-core": "^6.2|^7.0", - "symfony/security-csrf": "^5.4|^6.0|^7.0", - "symfony/translation": "^5.4.35|~6.3.12|^6.4.3|^7.0.3", - "symfony/uid": "^5.4|^6.0|^7.0", - "symfony/validator": "^5.4|^6.0|^7.0", - "symfony/var-dumper": "^5.4|^6.0|^7.0" + "symfony/config": "^6.4|^7.0", + "symfony/console": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/expression-language": "^6.4|^7.0", + "symfony/html-sanitizer": "^6.4|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/intl": "^6.4|^7.0", + "symfony/security-core": "^6.4|^7.0", + "symfony/security-csrf": "^6.4|^7.0", + "symfony/translation": "^6.4.3|^7.0.3", + "symfony/uid": "^6.4|^7.0", + "symfony/validator": "^6.4|^7.0", + "symfony/var-dumper": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -4745,7 +4747,7 @@ "description": "Allows to easily create, process and reuse HTML forms", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/form/tree/v6.4.27" + "source": "https://github.com/symfony/form/tree/v7.3.6" }, "funding": [ { @@ -4765,112 +4767,117 @@ "type": "tidelift" } ], - "time": "2025-10-10T09:11:15+00:00" + "time": "2025-10-31T09:25:04+00:00" }, { "name": "symfony/framework-bundle", - "version": "v6.4.27", + "version": "v7.3.6", "source": { "type": "git", "url": "https://github.com/symfony/framework-bundle.git", - "reference": "ee58c2a73218d8f4763824e1414c5f9b4519c91f" + "reference": "cabfdfa82bc4f75d693a329fe263d96937636b77" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/ee58c2a73218d8f4763824e1414c5f9b4519c91f", - "reference": "ee58c2a73218d8f4763824e1414c5f9b4519c91f", + "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/cabfdfa82bc4f75d693a329fe263d96937636b77", + "reference": "cabfdfa82bc4f75d693a329fe263d96937636b77", "shasum": "" }, "require": { "composer-runtime-api": ">=2.1", "ext-xml": "*", - "php": ">=8.1", - "symfony/cache": "^5.4|^6.0|^7.0", - "symfony/config": "^6.1|^7.0", - "symfony/dependency-injection": "^6.4.12|^7.0", + "php": ">=8.2", + "symfony/cache": "^6.4|^7.0", + "symfony/config": "^7.3", + "symfony/dependency-injection": "^7.2", "symfony/deprecation-contracts": "^2.5|^3", - "symfony/error-handler": "^6.1|^7.0", - "symfony/event-dispatcher": "^5.4|^6.0|^7.0", - "symfony/filesystem": "^5.4|^6.0|^7.0", - "symfony/finder": "^5.4|^6.0|^7.0", - "symfony/http-foundation": "^6.4|^7.0", - "symfony/http-kernel": "^6.4", + "symfony/error-handler": "^7.3", + "symfony/event-dispatcher": "^6.4|^7.0", + "symfony/filesystem": "^7.1", + "symfony/finder": "^6.4|^7.0", + "symfony/http-foundation": "^7.3", + "symfony/http-kernel": "^7.2", "symfony/polyfill-mbstring": "~1.0", "symfony/routing": "^6.4|^7.0" }, "conflict": { - "doctrine/annotations": "<1.13.1", "doctrine/persistence": "<1.3", "phpdocumentor/reflection-docblock": "<3.2.2", "phpdocumentor/type-resolver": "<1.4.0", - "symfony/asset": "<5.4", + "symfony/asset": "<6.4", "symfony/asset-mapper": "<6.4", - "symfony/clock": "<6.3", - "symfony/console": "<5.4|>=7.0", + "symfony/clock": "<6.4", + "symfony/console": "<6.4", "symfony/dom-crawler": "<6.4", - "symfony/dotenv": "<5.4", - "symfony/form": "<5.4", - "symfony/http-client": "<6.3", - "symfony/lock": "<5.4", - "symfony/mailer": "<5.4", - "symfony/messenger": "<6.3", + "symfony/dotenv": "<6.4", + "symfony/form": "<6.4", + "symfony/http-client": "<6.4", + "symfony/json-streamer": ">=7.4", + "symfony/lock": "<6.4", + "symfony/mailer": "<6.4", + "symfony/messenger": "<6.4", "symfony/mime": "<6.4", - "symfony/property-access": "<5.4", - "symfony/property-info": "<5.4", - "symfony/runtime": "<5.4.45|>=6.0,<6.4.13|>=7.0,<7.1.6", + "symfony/object-mapper": ">=7.4", + "symfony/property-access": "<6.4", + "symfony/property-info": "<6.4", + "symfony/runtime": "<6.4.13|>=7.0,<7.1.6", "symfony/scheduler": "<6.4.4|>=7.0.0,<7.0.4", - "symfony/security-core": "<5.4", - "symfony/security-csrf": "<5.4", - "symfony/serializer": "<6.4", - "symfony/stopwatch": "<5.4", - "symfony/translation": "<6.4", - "symfony/twig-bridge": "<5.4", - "symfony/twig-bundle": "<5.4", + "symfony/security-core": "<6.4", + "symfony/security-csrf": "<7.2", + "symfony/serializer": "<7.2.5", + "symfony/stopwatch": "<6.4", + "symfony/translation": "<7.3", + "symfony/twig-bridge": "<6.4", + "symfony/twig-bundle": "<6.4", "symfony/validator": "<6.4", "symfony/web-profiler-bundle": "<6.4", - "symfony/workflow": "<6.4" + "symfony/webhook": "<7.2", + "symfony/workflow": "<7.3.0-beta2" }, "require-dev": { - "doctrine/annotations": "^1.13.1|^2", "doctrine/persistence": "^1.3|^2|^3", "dragonmantank/cron-expression": "^3.1", "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", "seld/jsonlint": "^1.10", - "symfony/asset": "^5.4|^6.0|^7.0", + "symfony/asset": "^6.4|^7.0", "symfony/asset-mapper": "^6.4|^7.0", - "symfony/browser-kit": "^5.4|^6.0|^7.0", - "symfony/clock": "^6.2|^7.0", - "symfony/console": "^5.4.9|^6.0.9|^7.0", - "symfony/css-selector": "^5.4|^6.0|^7.0", + "symfony/browser-kit": "^6.4|^7.0", + "symfony/clock": "^6.4|^7.0", + "symfony/console": "^6.4|^7.0", + "symfony/css-selector": "^6.4|^7.0", "symfony/dom-crawler": "^6.4|^7.0", - "symfony/dotenv": "^5.4|^6.0|^7.0", - "symfony/expression-language": "^5.4|^6.0|^7.0", - "symfony/form": "^5.4|^6.0|^7.0", - "symfony/html-sanitizer": "^6.1|^7.0", - "symfony/http-client": "^6.3|^7.0", - "symfony/lock": "^5.4|^6.0|^7.0", - "symfony/mailer": "^5.4|^6.0|^7.0", - "symfony/messenger": "^6.3|^7.0", + "symfony/dotenv": "^6.4|^7.0", + "symfony/expression-language": "^6.4|^7.0", + "symfony/form": "^6.4|^7.0", + "symfony/html-sanitizer": "^6.4|^7.0", + "symfony/http-client": "^6.4|^7.0", + "symfony/json-streamer": "7.3.*", + "symfony/lock": "^6.4|^7.0", + "symfony/mailer": "^6.4|^7.0", + "symfony/messenger": "^6.4|^7.0", "symfony/mime": "^6.4|^7.0", - "symfony/notifier": "^5.4|^6.0|^7.0", + "symfony/notifier": "^6.4|^7.0", + "symfony/object-mapper": "^v7.3.0-beta2", "symfony/polyfill-intl-icu": "~1.0", - "symfony/process": "^5.4|^6.0|^7.0", - "symfony/property-info": "^5.4|^6.0|^7.0", - "symfony/rate-limiter": "^5.4|^6.0|^7.0", + "symfony/process": "^6.4|^7.0", + "symfony/property-info": "^6.4|^7.0", + "symfony/rate-limiter": "^6.4|^7.0", "symfony/scheduler": "^6.4.4|^7.0.4", - "symfony/security-bundle": "^5.4|^6.0|^7.0", - "symfony/semaphore": "^5.4|^6.0|^7.0", - "symfony/serializer": "^6.4|^7.0", - "symfony/stopwatch": "^5.4|^6.0|^7.0", - "symfony/string": "^5.4|^6.0|^7.0", - "symfony/translation": "^6.4|^7.0", - "symfony/twig-bundle": "^5.4|^6.0|^7.0", - "symfony/uid": "^5.4|^6.0|^7.0", + "symfony/security-bundle": "^6.4|^7.0", + "symfony/semaphore": "^6.4|^7.0", + "symfony/serializer": "^7.2.5", + "symfony/stopwatch": "^6.4|^7.0", + "symfony/string": "^6.4|^7.0", + "symfony/translation": "^7.3", + "symfony/twig-bundle": "^6.4|^7.0", + "symfony/type-info": "^7.1.8", + "symfony/uid": "^6.4|^7.0", "symfony/validator": "^6.4|^7.0", - "symfony/web-link": "^5.4|^6.0|^7.0", - "symfony/workflow": "^6.4|^7.0", - "symfony/yaml": "^5.4|^6.0|^7.0", - "twig/twig": "^2.10|^3.0.4" + "symfony/web-link": "^6.4|^7.0", + "symfony/webhook": "^7.2", + "symfony/workflow": "^7.3", + "symfony/yaml": "^6.4|^7.0", + "twig/twig": "^3.12" }, "type": "symfony-bundle", "autoload": { @@ -4898,7 +4905,7 @@ "description": "Provides a tight integration between Symfony components and the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/framework-bundle/tree/v6.4.27" + "source": "https://github.com/symfony/framework-bundle/tree/v7.3.6" }, "funding": [ { @@ -4918,40 +4925,42 @@ "type": "tidelift" } ], - "time": "2025-10-15T17:35:09+00:00" + "time": "2025-10-30T09:42:24+00:00" }, { "name": "symfony/http-foundation", - "version": "v6.4.29", + "version": "v7.3.7", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "b03d11e015552a315714c127d8d1e0f9e970ec88" + "reference": "db488a62f98f7a81d5746f05eea63a74e55bb7c4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/b03d11e015552a315714c127d8d1e0f9e970ec88", - "reference": "b03d11e015552a315714c127d8d1e0f9e970ec88", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/db488a62f98f7a81d5746f05eea63a74e55bb7c4", + "reference": "db488a62f98f7a81d5746f05eea63a74e55bb7c4", "shasum": "" }, "require": { - "php": ">=8.1", - "symfony/deprecation-contracts": "^2.5|^3", + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3.0", "symfony/polyfill-mbstring": "~1.1", "symfony/polyfill-php83": "^1.27" }, "conflict": { + "doctrine/dbal": "<3.6", "symfony/cache": "<6.4.12|>=7.0,<7.1.5" }, "require-dev": { - "doctrine/dbal": "^2.13.1|^3|^4", + "doctrine/dbal": "^3.6|^4", "predis/predis": "^1.1|^2.0", "symfony/cache": "^6.4.12|^7.1.5", - "symfony/dependency-injection": "^5.4|^6.0|^7.0", - "symfony/expression-language": "^5.4|^6.0|^7.0", - "symfony/http-kernel": "^5.4.12|^6.0.12|^6.1.4|^7.0", - "symfony/mime": "^5.4|^6.0|^7.0", - "symfony/rate-limiter": "^5.4|^6.0|^7.0" + "symfony/clock": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/expression-language": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/mime": "^6.4|^7.0", + "symfony/rate-limiter": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -4979,7 +4988,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v6.4.29" + "source": "https://github.com/symfony/http-foundation/tree/v7.3.7" }, "funding": [ { @@ -4999,77 +5008,77 @@ "type": "tidelift" } ], - "time": "2025-11-08T16:40:12+00:00" + "time": "2025-11-08T16:41:12+00:00" }, { "name": "symfony/http-kernel", - "version": "v6.4.29", + "version": "v7.3.7", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "18818b48f54c1d2bd92b41d82d8345af50b15658" + "reference": "10b8e9b748ea95fa4539c208e2487c435d3c87ce" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/18818b48f54c1d2bd92b41d82d8345af50b15658", - "reference": "18818b48f54c1d2bd92b41d82d8345af50b15658", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/10b8e9b748ea95fa4539c208e2487c435d3c87ce", + "reference": "10b8e9b748ea95fa4539c208e2487c435d3c87ce", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "psr/log": "^1|^2|^3", "symfony/deprecation-contracts": "^2.5|^3", "symfony/error-handler": "^6.4|^7.0", - "symfony/event-dispatcher": "^5.4|^6.0|^7.0", - "symfony/http-foundation": "^6.4|^7.0", + "symfony/event-dispatcher": "^7.3", + "symfony/http-foundation": "^7.3", "symfony/polyfill-ctype": "^1.8" }, "conflict": { - "symfony/browser-kit": "<5.4", - "symfony/cache": "<5.4", - "symfony/config": "<6.1", - "symfony/console": "<5.4", + "symfony/browser-kit": "<6.4", + "symfony/cache": "<6.4", + "symfony/config": "<6.4", + "symfony/console": "<6.4", "symfony/dependency-injection": "<6.4", - "symfony/doctrine-bridge": "<5.4", - "symfony/form": "<5.4", - "symfony/http-client": "<5.4", + "symfony/doctrine-bridge": "<6.4", + "symfony/form": "<6.4", + "symfony/http-client": "<6.4", "symfony/http-client-contracts": "<2.5", - "symfony/mailer": "<5.4", - "symfony/messenger": "<5.4", - "symfony/translation": "<5.4", + "symfony/mailer": "<6.4", + "symfony/messenger": "<6.4", + "symfony/translation": "<6.4", "symfony/translation-contracts": "<2.5", - "symfony/twig-bridge": "<5.4", + "symfony/twig-bridge": "<6.4", "symfony/validator": "<6.4", - "symfony/var-dumper": "<6.3", - "twig/twig": "<2.13" + "symfony/var-dumper": "<6.4", + "twig/twig": "<3.12" }, "provide": { "psr/log-implementation": "1.0|2.0|3.0" }, "require-dev": { "psr/cache": "^1.0|^2.0|^3.0", - "symfony/browser-kit": "^5.4|^6.0|^7.0", - "symfony/clock": "^6.2|^7.0", - "symfony/config": "^6.1|^7.0", - "symfony/console": "^5.4|^6.0|^7.0", - "symfony/css-selector": "^5.4|^6.0|^7.0", + "symfony/browser-kit": "^6.4|^7.0", + "symfony/clock": "^6.4|^7.0", + "symfony/config": "^6.4|^7.0", + "symfony/console": "^6.4|^7.0", + "symfony/css-selector": "^6.4|^7.0", "symfony/dependency-injection": "^6.4|^7.0", - "symfony/dom-crawler": "^5.4|^6.0|^7.0", - "symfony/expression-language": "^5.4|^6.0|^7.0", - "symfony/finder": "^5.4|^6.0|^7.0", + "symfony/dom-crawler": "^6.4|^7.0", + "symfony/expression-language": "^6.4|^7.0", + "symfony/finder": "^6.4|^7.0", "symfony/http-client-contracts": "^2.5|^3", - "symfony/process": "^5.4|^6.0|^7.0", - "symfony/property-access": "^5.4.5|^6.0.5|^7.0", - "symfony/routing": "^5.4|^6.0|^7.0", - "symfony/serializer": "^6.4.4|^7.0.4", - "symfony/stopwatch": "^5.4|^6.0|^7.0", - "symfony/translation": "^5.4|^6.0|^7.0", + "symfony/process": "^6.4|^7.0", + "symfony/property-access": "^7.1", + "symfony/routing": "^6.4|^7.0", + "symfony/serializer": "^7.1", + "symfony/stopwatch": "^6.4|^7.0", + "symfony/translation": "^6.4|^7.0", "symfony/translation-contracts": "^2.5|^3", - "symfony/uid": "^5.4|^6.0|^7.0", + "symfony/uid": "^6.4|^7.0", "symfony/validator": "^6.4|^7.0", - "symfony/var-dumper": "^5.4|^6.4|^7.0", - "symfony/var-exporter": "^6.2|^7.0", - "twig/twig": "^2.13|^3.0.4" + "symfony/var-dumper": "^6.4|^7.0", + "symfony/var-exporter": "^6.4|^7.0", + "twig/twig": "^3.12" }, "type": "library", "autoload": { @@ -5097,7 +5106,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v6.4.29" + "source": "https://github.com/symfony/http-kernel/tree/v7.3.7" }, "funding": [ { @@ -5117,29 +5126,32 @@ "type": "tidelift" } ], - "time": "2025-11-12T11:22:59+00:00" + "time": "2025-11-12T11:38:40+00:00" }, { "name": "symfony/intl", - "version": "v6.4.27", + "version": "v7.3.5", "source": { "type": "git", "url": "https://github.com/symfony/intl.git", - "reference": "ccc52824610e7de72424cf516e52d4fb39e3bfa5" + "reference": "9eccaaa94ac6f9deb3620c9d47a057d965baeabf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/intl/zipball/ccc52824610e7de72424cf516e52d4fb39e3bfa5", - "reference": "ccc52824610e7de72424cf516e52d4fb39e3bfa5", + "url": "https://api.github.com/repos/symfony/intl/zipball/9eccaaa94ac6f9deb3620c9d47a057d965baeabf", + "reference": "9eccaaa94ac6f9deb3620c9d47a057d965baeabf", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3" + }, + "conflict": { + "symfony/string": "<7.1" }, "require-dev": { - "symfony/filesystem": "^5.4|^6.0|^7.0", - "symfony/finder": "^5.4|^6.0|^7.0", - "symfony/var-exporter": "^5.4|^6.0|^7.0" + "symfony/filesystem": "^6.4|^7.0", + "symfony/var-exporter": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -5184,7 +5196,7 @@ "localization" ], "support": { - "source": "https://github.com/symfony/intl/tree/v6.4.27" + "source": "https://github.com/symfony/intl/tree/v7.3.5" }, "funding": [ { @@ -5204,43 +5216,43 @@ "type": "tidelift" } ], - "time": "2025-10-01T06:01:44+00:00" + "time": "2025-10-01T06:11:17+00:00" }, { "name": "symfony/mailer", - "version": "v6.4.27", + "version": "v7.3.5", "source": { "type": "git", "url": "https://github.com/symfony/mailer.git", - "reference": "2f096718ed718996551f66e3a24e12b2ed027f95" + "reference": "fd497c45ba9c10c37864e19466b090dcb60a50ba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/2f096718ed718996551f66e3a24e12b2ed027f95", - "reference": "2f096718ed718996551f66e3a24e12b2ed027f95", + "url": "https://api.github.com/repos/symfony/mailer/zipball/fd497c45ba9c10c37864e19466b090dcb60a50ba", + "reference": "fd497c45ba9c10c37864e19466b090dcb60a50ba", "shasum": "" }, "require": { "egulias/email-validator": "^2.1.10|^3|^4", - "php": ">=8.1", + "php": ">=8.2", "psr/event-dispatcher": "^1", "psr/log": "^1|^2|^3", - "symfony/event-dispatcher": "^5.4|^6.0|^7.0", - "symfony/mime": "^6.2|^7.0", + "symfony/event-dispatcher": "^6.4|^7.0", + "symfony/mime": "^7.2", "symfony/service-contracts": "^2.5|^3" }, "conflict": { "symfony/http-client-contracts": "<2.5", - "symfony/http-kernel": "<5.4", - "symfony/messenger": "<6.2", - "symfony/mime": "<6.2", - "symfony/twig-bridge": "<6.2.1" + "symfony/http-kernel": "<6.4", + "symfony/messenger": "<6.4", + "symfony/mime": "<6.4", + "symfony/twig-bridge": "<6.4" }, "require-dev": { - "symfony/console": "^5.4|^6.0|^7.0", - "symfony/http-client": "^5.4|^6.0|^7.0", - "symfony/messenger": "^6.2|^7.0", - "symfony/twig-bridge": "^6.2|^7.0" + "symfony/console": "^6.4|^7.0", + "symfony/http-client": "^6.4|^7.0", + "symfony/messenger": "^6.4|^7.0", + "symfony/twig-bridge": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -5268,7 +5280,7 @@ "description": "Helps sending emails", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailer/tree/v6.4.27" + "source": "https://github.com/symfony/mailer/tree/v7.3.5" }, "funding": [ { @@ -5288,25 +5300,24 @@ "type": "tidelift" } ], - "time": "2025-10-24T13:29:09+00:00" + "time": "2025-10-24T14:27:20+00:00" }, { "name": "symfony/mime", - "version": "v6.4.26", + "version": "v7.3.4", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "61ab9681cdfe315071eb4fa79b6ad6ab030a9235" + "reference": "b1b828f69cbaf887fa835a091869e55df91d0e35" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/61ab9681cdfe315071eb4fa79b6ad6ab030a9235", - "reference": "61ab9681cdfe315071eb4fa79b6ad6ab030a9235", + "url": "https://api.github.com/repos/symfony/mime/zipball/b1b828f69cbaf887fa835a091869e55df91d0e35", + "reference": "b1b828f69cbaf887fa835a091869e55df91d0e35", "shasum": "" }, "require": { - "php": ">=8.1", - "symfony/deprecation-contracts": "^2.5|^3", + "php": ">=8.2", "symfony/polyfill-intl-idn": "^1.10", "symfony/polyfill-mbstring": "^1.0" }, @@ -5314,17 +5325,17 @@ "egulias/email-validator": "~3.0.0", "phpdocumentor/reflection-docblock": "<3.2.2", "phpdocumentor/type-resolver": "<1.4.0", - "symfony/mailer": "<5.4", + "symfony/mailer": "<6.4", "symfony/serializer": "<6.4.3|>7.0,<7.0.3" }, "require-dev": { "egulias/email-validator": "^2.1.10|^3.1|^4", "league/html-to-markdown": "^5.0", "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/dependency-injection": "^5.4|^6.0|^7.0", - "symfony/process": "^5.4|^6.4|^7.0", - "symfony/property-access": "^5.4|^6.0|^7.0", - "symfony/property-info": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/process": "^6.4|^7.0", + "symfony/property-access": "^6.4|^7.0", + "symfony/property-info": "^6.4|^7.0", "symfony/serializer": "^6.4.3|^7.0.3" }, "type": "library", @@ -5357,7 +5368,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v6.4.26" + "source": "https://github.com/symfony/mime/tree/v7.3.4" }, "funding": [ { @@ -5377,42 +5388,41 @@ "type": "tidelift" } ], - "time": "2025-09-16T08:22:30+00:00" + "time": "2025-09-16T08:38:17+00:00" }, { "name": "symfony/monolog-bridge", - "version": "v6.4.28", + "version": "v7.3.6", "source": { "type": "git", "url": "https://github.com/symfony/monolog-bridge.git", - "reference": "d2f4b68e3247cf44d93f48545c8c072a75c17e5b" + "reference": "48e8542ba35afd2293a8c8fd4bcf8abe46357ddf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/d2f4b68e3247cf44d93f48545c8c072a75c17e5b", - "reference": "d2f4b68e3247cf44d93f48545c8c072a75c17e5b", + "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/48e8542ba35afd2293a8c8fd4bcf8abe46357ddf", + "reference": "48e8542ba35afd2293a8c8fd4bcf8abe46357ddf", "shasum": "" }, "require": { - "monolog/monolog": "^1.25.1|^2|^3", - "php": ">=8.1", - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/http-kernel": "^5.4|^6.0|^7.0", + "monolog/monolog": "^3", + "php": ">=8.2", + "symfony/http-kernel": "^6.4|^7.0", "symfony/service-contracts": "^2.5|^3" }, "conflict": { - "symfony/console": "<5.4", - "symfony/http-foundation": "<5.4", - "symfony/security-core": "<5.4" + "symfony/console": "<6.4", + "symfony/http-foundation": "<6.4", + "symfony/security-core": "<6.4" }, "require-dev": { - "symfony/console": "^5.4|^6.0|^7.0", - "symfony/http-client": "^5.4|^6.0|^7.0", - "symfony/mailer": "^5.4|^6.0|^7.0", - "symfony/messenger": "^5.4|^6.0|^7.0", - "symfony/mime": "^5.4|^6.0|^7.0", - "symfony/security-core": "^5.4|^6.0|^7.0", - "symfony/var-dumper": "^5.4|^6.0|^7.0" + "symfony/console": "^6.4|^7.0", + "symfony/http-client": "^6.4|^7.0", + "symfony/mailer": "^6.4|^7.0", + "symfony/messenger": "^6.4|^7.0", + "symfony/mime": "^6.4|^7.0", + "symfony/security-core": "^6.4|^7.0", + "symfony/var-dumper": "^6.4|^7.0" }, "type": "symfony-bridge", "autoload": { @@ -5440,7 +5450,7 @@ "description": "Provides integration for Monolog with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/monolog-bridge/tree/v6.4.28" + "source": "https://github.com/symfony/monolog-bridge/tree/v7.3.6" }, "funding": [ { @@ -5460,7 +5470,7 @@ "type": "tidelift" } ], - "time": "2025-10-30T19:57:08+00:00" + "time": "2025-11-01T09:17:24+00:00" }, { "name": "symfony/monolog-bundle", @@ -5545,20 +5555,20 @@ }, { "name": "symfony/options-resolver", - "version": "v6.4.25", + "version": "v7.3.3", "source": { "type": "git", "url": "https://github.com/symfony/options-resolver.git", - "reference": "d28e7e2db8a73e9511df892d36445f61314bbebe" + "reference": "0ff2f5c3df08a395232bbc3c2eb7e84912df911d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/d28e7e2db8a73e9511df892d36445f61314bbebe", - "reference": "d28e7e2db8a73e9511df892d36445f61314bbebe", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/0ff2f5c3df08a395232bbc3c2eb7e84912df911d", + "reference": "0ff2f5c3df08a395232bbc3c2eb7e84912df911d", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "symfony/deprecation-contracts": "^2.5|^3" }, "type": "library", @@ -5592,7 +5602,7 @@ "options" ], "support": { - "source": "https://github.com/symfony/options-resolver/tree/v6.4.25" + "source": "https://github.com/symfony/options-resolver/tree/v7.3.3" }, "funding": [ { @@ -5612,31 +5622,31 @@ "type": "tidelift" } ], - "time": "2025-08-04T17:06:28+00:00" + "time": "2025-08-05T10:16:07+00:00" }, { "name": "symfony/password-hasher", - "version": "v6.4.24", + "version": "v7.3.0", "source": { "type": "git", "url": "https://github.com/symfony/password-hasher.git", - "reference": "dcab5ac87450aaed26483ba49c2ce86808da7557" + "reference": "31fbe66af859582a20b803f38be96be8accdf2c3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/password-hasher/zipball/dcab5ac87450aaed26483ba49c2ce86808da7557", - "reference": "dcab5ac87450aaed26483ba49c2ce86808da7557", + "url": "https://api.github.com/repos/symfony/password-hasher/zipball/31fbe66af859582a20b803f38be96be8accdf2c3", + "reference": "31fbe66af859582a20b803f38be96be8accdf2c3", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.2" }, "conflict": { - "symfony/security-core": "<5.4" + "symfony/security-core": "<6.4" }, "require-dev": { - "symfony/console": "^5.4|^6.0|^7.0", - "symfony/security-core": "^5.4|^6.0|^7.0" + "symfony/console": "^6.4|^7.0", + "symfony/security-core": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -5668,7 +5678,7 @@ "password" ], "support": { - "source": "https://github.com/symfony/password-hasher/tree/v6.4.24" + "source": "https://github.com/symfony/password-hasher/tree/v7.3.0" }, "funding": [ { @@ -5679,16 +5689,12 @@ "url": "https://github.com/fabpot", "type": "github" }, - { - "url": "https://github.com/nicolas-grekas", - "type": "github" - }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-07-10T08:14:14+00:00" + "time": "2025-02-04T08:22:58+00:00" }, { "name": "symfony/polyfill-ctype", @@ -6362,25 +6368,24 @@ }, { "name": "symfony/property-access", - "version": "v6.4.25", + "version": "v7.3.3", "source": { "type": "git", "url": "https://github.com/symfony/property-access.git", - "reference": "fedc771326d4978a7d3167fa009a509b06a2e168" + "reference": "4a4389e5c8bd1d0320d80a23caa6a1ac71cb81a7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-access/zipball/fedc771326d4978a7d3167fa009a509b06a2e168", - "reference": "fedc771326d4978a7d3167fa009a509b06a2e168", + "url": "https://api.github.com/repos/symfony/property-access/zipball/4a4389e5c8bd1d0320d80a23caa6a1ac71cb81a7", + "reference": "4a4389e5c8bd1d0320d80a23caa6a1ac71cb81a7", "shasum": "" }, "require": { - "php": ">=8.1", - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/property-info": "^5.4|^6.0|^7.0" + "php": ">=8.2", + "symfony/property-info": "^6.4|^7.0" }, "require-dev": { - "symfony/cache": "^5.4|^6.0|^7.0" + "symfony/cache": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -6419,7 +6424,7 @@ "reflection" ], "support": { - "source": "https://github.com/symfony/property-access/tree/v6.4.25" + "source": "https://github.com/symfony/property-access/tree/v7.3.3" }, "funding": [ { @@ -6439,41 +6444,41 @@ "type": "tidelift" } ], - "time": "2025-08-12T15:42:57+00:00" + "time": "2025-08-04T15:15:28+00:00" }, { "name": "symfony/property-info", - "version": "v6.4.24", + "version": "v7.3.5", "source": { "type": "git", "url": "https://github.com/symfony/property-info.git", - "reference": "1056ae3621eeddd78d7c5ec074f1c1784324eec6" + "reference": "0b346ed259dc5da43535caf243005fe7d4b0f051" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-info/zipball/1056ae3621eeddd78d7c5ec074f1c1784324eec6", - "reference": "1056ae3621eeddd78d7c5ec074f1c1784324eec6", + "url": "https://api.github.com/repos/symfony/property-info/zipball/0b346ed259dc5da43535caf243005fe7d4b0f051", + "reference": "0b346ed259dc5da43535caf243005fe7d4b0f051", "shasum": "" }, "require": { - "php": ">=8.1", - "symfony/string": "^5.4|^6.0|^7.0" + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/string": "^6.4|^7.0", + "symfony/type-info": "^7.3.5" }, "conflict": { - "doctrine/annotations": "<1.12", "phpdocumentor/reflection-docblock": "<5.2", "phpdocumentor/type-resolver": "<1.5.1", - "symfony/cache": "<5.4", - "symfony/dependency-injection": "<5.4|>=6.0,<6.4", - "symfony/serializer": "<5.4" + "symfony/cache": "<6.4", + "symfony/dependency-injection": "<6.4", + "symfony/serializer": "<6.4" }, "require-dev": { - "doctrine/annotations": "^1.12|^2", "phpdocumentor/reflection-docblock": "^5.2", "phpstan/phpdoc-parser": "^1.0|^2.0", - "symfony/cache": "^5.4|^6.0|^7.0", - "symfony/dependency-injection": "^5.4|^6.0|^7.0", - "symfony/serializer": "^5.4|^6.4|^7.0" + "symfony/cache": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/serializer": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -6509,7 +6514,7 @@ "validator" ], "support": { - "source": "https://github.com/symfony/property-info/tree/v6.4.24" + "source": "https://github.com/symfony/property-info/tree/v7.3.5" }, "funding": [ { @@ -6529,40 +6534,38 @@ "type": "tidelift" } ], - "time": "2025-07-14T16:38:25+00:00" + "time": "2025-10-05T22:12:41+00:00" }, { "name": "symfony/routing", - "version": "v6.4.28", + "version": "v7.3.6", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "ae064a6d9cf39507f9797658465a2ca702965fa8" + "reference": "c97abe725f2a1a858deca629a6488c8fc20c3091" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/ae064a6d9cf39507f9797658465a2ca702965fa8", - "reference": "ae064a6d9cf39507f9797658465a2ca702965fa8", + "url": "https://api.github.com/repos/symfony/routing/zipball/c97abe725f2a1a858deca629a6488c8fc20c3091", + "reference": "c97abe725f2a1a858deca629a6488c8fc20c3091", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "symfony/deprecation-contracts": "^2.5|^3" }, "conflict": { - "doctrine/annotations": "<1.12", - "symfony/config": "<6.2", - "symfony/dependency-injection": "<5.4", - "symfony/yaml": "<5.4" + "symfony/config": "<6.4", + "symfony/dependency-injection": "<6.4", + "symfony/yaml": "<6.4" }, "require-dev": { - "doctrine/annotations": "^1.12|^2", "psr/log": "^1|^2|^3", - "symfony/config": "^6.2|^7.0", - "symfony/dependency-injection": "^5.4|^6.0|^7.0", - "symfony/expression-language": "^5.4|^6.0|^7.0", - "symfony/http-foundation": "^5.4|^6.0|^7.0", - "symfony/yaml": "^5.4|^6.0|^7.0" + "symfony/config": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/expression-language": "^6.4|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/yaml": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -6596,7 +6599,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v6.4.28" + "source": "https://github.com/symfony/routing/tree/v7.3.6" }, "funding": [ { @@ -6616,35 +6619,35 @@ "type": "tidelift" } ], - "time": "2025-10-31T16:43:05+00:00" + "time": "2025-11-05T07:57:47+00:00" }, { "name": "symfony/runtime", - "version": "v6.4.26", + "version": "v7.3.4", "source": { "type": "git", "url": "https://github.com/symfony/runtime.git", - "reference": "59933ca737fd60fad548241b6d879cd0e4be31ab" + "reference": "3550e2711e30bfa5d808514781cd52d1cc1d9e9f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/runtime/zipball/59933ca737fd60fad548241b6d879cd0e4be31ab", - "reference": "59933ca737fd60fad548241b6d879cd0e4be31ab", + "url": "https://api.github.com/repos/symfony/runtime/zipball/3550e2711e30bfa5d808514781cd52d1cc1d9e9f", + "reference": "3550e2711e30bfa5d808514781cd52d1cc1d9e9f", "shasum": "" }, "require": { "composer-plugin-api": "^1.0|^2.0", - "php": ">=8.1" + "php": ">=8.2" }, "conflict": { - "symfony/dotenv": "<5.4" + "symfony/dotenv": "<6.4" }, "require-dev": { - "composer/composer": "^1.0.2|^2.0", - "symfony/console": "^5.4.9|^6.0.9|^7.0", - "symfony/dotenv": "^5.4|^6.0|^7.0", - "symfony/http-foundation": "^5.4|^6.0|^7.0", - "symfony/http-kernel": "^5.4|^6.0|^7.0" + "composer/composer": "^2.6", + "symfony/console": "^6.4|^7.0", + "symfony/dotenv": "^6.4|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0" }, "type": "composer-plugin", "extra": { @@ -6679,7 +6682,7 @@ "runtime" ], "support": { - "source": "https://github.com/symfony/runtime/tree/v6.4.26" + "source": "https://github.com/symfony/runtime/tree/v7.3.4" }, "funding": [ { @@ -6699,75 +6702,69 @@ "type": "tidelift" } ], - "time": "2025-09-11T15:30:54+00:00" + "time": "2025-09-11T15:31:28+00:00" }, { "name": "symfony/security-bundle", - "version": "v6.4.26", + "version": "v7.3.4", "source": { "type": "git", "url": "https://github.com/symfony/security-bundle.git", - "reference": "b83773107a5b83a5507df9e88bd50d495f6e8b72" + "reference": "f750d9abccbeaa433c56f6a4eb2073166476a75a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-bundle/zipball/b83773107a5b83a5507df9e88bd50d495f6e8b72", - "reference": "b83773107a5b83a5507df9e88bd50d495f6e8b72", + "url": "https://api.github.com/repos/symfony/security-bundle/zipball/f750d9abccbeaa433c56f6a4eb2073166476a75a", + "reference": "f750d9abccbeaa433c56f6a4eb2073166476a75a", "shasum": "" }, "require": { "composer-runtime-api": ">=2.1", "ext-xml": "*", - "php": ">=8.1", - "symfony/clock": "^6.3|^7.0", - "symfony/config": "^6.1|^7.0", + "php": ">=8.2", + "symfony/clock": "^6.4|^7.0", + "symfony/config": "^7.3", "symfony/dependency-injection": "^6.4.11|^7.1.4", - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/event-dispatcher": "^5.4|^6.0|^7.0", - "symfony/http-foundation": "^6.2|^7.0", - "symfony/http-kernel": "^6.2", - "symfony/password-hasher": "^5.4|^6.0|^7.0", - "symfony/security-core": "^6.2|^7.0", - "symfony/security-csrf": "^5.4|^6.0|^7.0", - "symfony/security-http": "^6.3.6|^7.0", + "symfony/event-dispatcher": "^6.4|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/password-hasher": "^6.4|^7.0", + "symfony/security-core": "^7.3", + "symfony/security-csrf": "^6.4|^7.0", + "symfony/security-http": "^7.3", "symfony/service-contracts": "^2.5|^3" }, "conflict": { - "symfony/browser-kit": "<5.4", - "symfony/console": "<5.4", + "symfony/browser-kit": "<6.4", + "symfony/console": "<6.4", "symfony/framework-bundle": "<6.4", - "symfony/http-client": "<5.4", - "symfony/ldap": "<5.4", + "symfony/http-client": "<6.4", + "symfony/ldap": "<6.4", "symfony/serializer": "<6.4", - "symfony/twig-bundle": "<5.4", + "symfony/twig-bundle": "<6.4", "symfony/validator": "<6.4" }, "require-dev": { - "symfony/asset": "^5.4|^6.0|^7.0", - "symfony/browser-kit": "^5.4|^6.0|^7.0", - "symfony/console": "^5.4|^6.0|^7.0", - "symfony/css-selector": "^5.4|^6.0|^7.0", - "symfony/dom-crawler": "^5.4|^6.0|^7.0", - "symfony/expression-language": "^5.4|^6.0|^7.0", - "symfony/form": "^5.4|^6.0|^7.0", + "symfony/asset": "^6.4|^7.0", + "symfony/browser-kit": "^6.4|^7.0", + "symfony/console": "^6.4|^7.0", + "symfony/css-selector": "^6.4|^7.0", + "symfony/dom-crawler": "^6.4|^7.0", + "symfony/expression-language": "^6.4|^7.0", + "symfony/form": "^6.4|^7.0", "symfony/framework-bundle": "^6.4|^7.0", - "symfony/http-client": "^5.4|^6.0|^7.0", - "symfony/ldap": "^5.4|^6.0|^7.0", - "symfony/process": "^5.4|^6.0|^7.0", - "symfony/rate-limiter": "^5.4|^6.0|^7.0", + "symfony/http-client": "^6.4|^7.0", + "symfony/ldap": "^6.4|^7.0", + "symfony/process": "^6.4|^7.0", + "symfony/rate-limiter": "^6.4|^7.0", "symfony/serializer": "^6.4|^7.0", - "symfony/translation": "^5.4|^6.0|^7.0", - "symfony/twig-bridge": "^5.4|^6.0|^7.0", - "symfony/twig-bundle": "^5.4|^6.0|^7.0", + "symfony/translation": "^6.4|^7.0", + "symfony/twig-bridge": "^6.4|^7.0", + "symfony/twig-bundle": "^6.4|^7.0", "symfony/validator": "^6.4|^7.0", - "symfony/yaml": "^5.4|^6.0|^7.0", - "twig/twig": "^2.13|^3.0.4", - "web-token/jwt-checker": "^3.1", - "web-token/jwt-signature-algorithm-ecdsa": "^3.1", - "web-token/jwt-signature-algorithm-eddsa": "^3.1", - "web-token/jwt-signature-algorithm-hmac": "^3.1", - "web-token/jwt-signature-algorithm-none": "^3.1", - "web-token/jwt-signature-algorithm-rsa": "^3.1" + "symfony/yaml": "^6.4|^7.0", + "twig/twig": "^3.12", + "web-token/jwt-library": "^3.3.2|^4.0" }, "type": "symfony-bundle", "autoload": { @@ -6795,7 +6792,7 @@ "description": "Provides a tight integration of the Security component into the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-bundle/tree/v6.4.26" + "source": "https://github.com/symfony/security-bundle/tree/v7.3.4" }, "funding": [ { @@ -6815,48 +6812,49 @@ "type": "tidelift" } ], - "time": "2025-09-22T15:03:07+00:00" + "time": "2025-09-22T15:31:00+00:00" }, { "name": "symfony/security-core", - "version": "v6.4.27", + "version": "v7.3.5", "source": { "type": "git", "url": "https://github.com/symfony/security-core.git", - "reference": "673018434b38e504eb04ca3c6d7e2e7c86735bfb" + "reference": "772a7c1eddd8bf8a977a67e6e8adc59650c604eb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-core/zipball/673018434b38e504eb04ca3c6d7e2e7c86735bfb", - "reference": "673018434b38e504eb04ca3c6d7e2e7c86735bfb", + "url": "https://api.github.com/repos/symfony/security-core/zipball/772a7c1eddd8bf8a977a67e6e8adc59650c604eb", + "reference": "772a7c1eddd8bf8a977a67e6e8adc59650c604eb", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "symfony/deprecation-contracts": "^2.5|^3", "symfony/event-dispatcher-contracts": "^2.5|^3", - "symfony/password-hasher": "^5.4|^6.0|^7.0", + "symfony/password-hasher": "^6.4|^7.0", "symfony/service-contracts": "^2.5|^3" }, "conflict": { - "symfony/event-dispatcher": "<5.4", - "symfony/http-foundation": "<5.4", - "symfony/ldap": "<5.4", - "symfony/security-guard": "<5.4", - "symfony/translation": "<5.4.35|>=6.0,<6.3.12|>=6.4,<6.4.3|>=7.0,<7.0.3", - "symfony/validator": "<5.4" + "symfony/dependency-injection": "<6.4", + "symfony/event-dispatcher": "<6.4", + "symfony/http-foundation": "<6.4", + "symfony/ldap": "<6.4", + "symfony/translation": "<6.4.3|>=7.0,<7.0.3", + "symfony/validator": "<6.4" }, "require-dev": { "psr/cache": "^1.0|^2.0|^3.0", "psr/container": "^1.1|^2.0", "psr/log": "^1|^2|^3", - "symfony/cache": "^5.4|^6.0|^7.0", - "symfony/event-dispatcher": "^5.4|^6.0|^7.0", - "symfony/expression-language": "^5.4|^6.0|^7.0", - "symfony/http-foundation": "^5.4|^6.0|^7.0", - "symfony/ldap": "^5.4|^6.0|^7.0", - "symfony/string": "^5.4|^6.0|^7.0", - "symfony/translation": "^5.4.35|~6.3.12|^6.4.3|^7.0.3", + "symfony/cache": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/event-dispatcher": "^6.4|^7.0", + "symfony/expression-language": "^6.4|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/ldap": "^6.4|^7.0", + "symfony/string": "^6.4|^7.0", + "symfony/translation": "^6.4.3|^7.0.3", "symfony/validator": "^6.4|^7.0" }, "type": "library", @@ -6885,7 +6883,7 @@ "description": "Symfony Security Component - Core Library", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-core/tree/v6.4.27" + "source": "https://github.com/symfony/security-core/tree/v7.3.5" }, "funding": [ { @@ -6905,31 +6903,33 @@ "type": "tidelift" } ], - "time": "2025-10-23T19:49:35+00:00" + "time": "2025-10-24T14:27:20+00:00" }, { "name": "symfony/security-csrf", - "version": "v6.4.24", + "version": "v7.3.0", "source": { "type": "git", "url": "https://github.com/symfony/security-csrf.git", - "reference": "9a1efc8c10b86bcedc9233affd10c716b54ca1b7" + "reference": "2b4b0c46c901729e4e90719eacd980381f53e0a3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-csrf/zipball/9a1efc8c10b86bcedc9233affd10c716b54ca1b7", - "reference": "9a1efc8c10b86bcedc9233affd10c716b54ca1b7", + "url": "https://api.github.com/repos/symfony/security-csrf/zipball/2b4b0c46c901729e4e90719eacd980381f53e0a3", + "reference": "2b4b0c46c901729e4e90719eacd980381f53e0a3", "shasum": "" }, "require": { - "php": ">=8.1", - "symfony/security-core": "^5.4|^6.0|^7.0" + "php": ">=8.2", + "symfony/security-core": "^6.4|^7.0" }, "conflict": { - "symfony/http-foundation": "<5.4" + "symfony/http-foundation": "<6.4" }, "require-dev": { - "symfony/http-foundation": "^5.4|^6.0|^7.0" + "psr/log": "^1|^2|^3", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -6957,7 +6957,7 @@ "description": "Symfony Security Component - CSRF Library", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-csrf/tree/v6.4.24" + "source": "https://github.com/symfony/security-csrf/tree/v7.3.0" }, "funding": [ { @@ -6968,60 +6968,56 @@ "url": "https://github.com/fabpot", "type": "github" }, - { - "url": "https://github.com/nicolas-grekas", - "type": "github" - }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-07-10T08:14:14+00:00" + "time": "2025-01-02T18:42:10+00:00" }, { "name": "symfony/security-http", - "version": "v6.4.26", + "version": "v7.3.5", "source": { "type": "git", "url": "https://github.com/symfony/security-http.git", - "reference": "6c2e236f0fc3e0853770a5574ef7af471486ba4c" + "reference": "e79a63fd5dec6e5b1ba31227e98d860a4f8ba95c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-http/zipball/6c2e236f0fc3e0853770a5574ef7af471486ba4c", - "reference": "6c2e236f0fc3e0853770a5574ef7af471486ba4c", + "url": "https://api.github.com/repos/symfony/security-http/zipball/e79a63fd5dec6e5b1ba31227e98d860a4f8ba95c", + "reference": "e79a63fd5dec6e5b1ba31227e98d860a4f8ba95c", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "symfony/deprecation-contracts": "^2.5|^3", - "symfony/http-foundation": "^6.2|^7.0", - "symfony/http-kernel": "^6.3|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", "symfony/polyfill-mbstring": "~1.0", - "symfony/property-access": "^5.4|^6.0|^7.0", - "symfony/security-core": "^6.4|^7.0", + "symfony/property-access": "^6.4|^7.0", + "symfony/security-core": "^7.3", "symfony/service-contracts": "^2.5|^3" }, "conflict": { - "symfony/clock": "<6.3", - "symfony/event-dispatcher": "<5.4.9|>=6,<6.0.9", + "symfony/clock": "<6.4", + "symfony/event-dispatcher": "<6.4", "symfony/http-client-contracts": "<3.0", - "symfony/security-bundle": "<5.4", - "symfony/security-csrf": "<5.4" + "symfony/security-bundle": "<6.4", + "symfony/security-csrf": "<6.4" }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/cache": "^5.4|^6.0|^7.0", - "symfony/clock": "^6.3|^7.0", - "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/cache": "^6.4|^7.0", + "symfony/clock": "^6.4|^7.0", + "symfony/expression-language": "^6.4|^7.0", + "symfony/http-client": "^6.4|^7.0", "symfony/http-client-contracts": "^3.0", - "symfony/rate-limiter": "^5.4|^6.0|^7.0", - "symfony/routing": "^5.4|^6.0|^7.0", - "symfony/security-csrf": "^5.4|^6.0|^7.0", - "symfony/translation": "^5.4|^6.0|^7.0", - "web-token/jwt-checker": "^3.1", - "web-token/jwt-signature-algorithm-ecdsa": "^3.1" + "symfony/rate-limiter": "^6.4|^7.0", + "symfony/routing": "^6.4|^7.0", + "symfony/security-csrf": "^6.4|^7.0", + "symfony/translation": "^6.4|^7.0", + "web-token/jwt-library": "^3.3.2|^4.0" }, "type": "library", "autoload": { @@ -7049,7 +7045,7 @@ "description": "Symfony Security Component - HTTP Integration", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-http/tree/v6.4.26" + "source": "https://github.com/symfony/security-http/tree/v7.3.5" }, "funding": [ { @@ -7069,7 +7065,7 @@ "type": "tidelift" } ], - "time": "2025-09-05T18:17:25+00:00" + "time": "2025-10-13T09:30:10+00:00" }, { "name": "symfony/service-contracts", @@ -7160,20 +7156,20 @@ }, { "name": "symfony/stopwatch", - "version": "v6.4.24", + "version": "v7.3.0", "source": { "type": "git", "url": "https://github.com/symfony/stopwatch.git", - "reference": "b67e94e06a05d9572c2fa354483b3e13e3cb1898" + "reference": "5a49289e2b308214c8b9c2fda4ea454d8b8ad7cd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/b67e94e06a05d9572c2fa354483b3e13e3cb1898", - "reference": "b67e94e06a05d9572c2fa354483b3e13e3cb1898", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/5a49289e2b308214c8b9c2fda4ea454d8b8ad7cd", + "reference": "5a49289e2b308214c8b9c2fda4ea454d8b8ad7cd", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "symfony/service-contracts": "^2.5|^3" }, "type": "library", @@ -7202,7 +7198,7 @@ "description": "Provides a way to profile code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/stopwatch/tree/v6.4.24" + "source": "https://github.com/symfony/stopwatch/tree/v7.3.0" }, "funding": [ { @@ -7213,33 +7209,29 @@ "url": "https://github.com/fabpot", "type": "github" }, - { - "url": "https://github.com/nicolas-grekas", - "type": "github" - }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-07-10T08:14:14+00:00" + "time": "2025-02-24T10:49:57+00:00" }, { "name": "symfony/string", - "version": "v6.4.26", + "version": "v7.3.4", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "5621f039a71a11c87c106c1c598bdcd04a19aeea" + "reference": "f96476035142921000338bad71e5247fbc138872" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/5621f039a71a11c87c106c1c598bdcd04a19aeea", - "reference": "5621f039a71a11c87c106c1c598bdcd04a19aeea", + "url": "https://api.github.com/repos/symfony/string/zipball/f96476035142921000338bad71e5247fbc138872", + "reference": "f96476035142921000338bad71e5247fbc138872", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-intl-grapheme": "~1.0", "symfony/polyfill-intl-normalizer": "~1.0", @@ -7249,10 +7241,11 @@ "symfony/translation-contracts": "<2.5" }, "require-dev": { - "symfony/http-client": "^5.4|^6.0|^7.0", - "symfony/intl": "^6.2|^7.0", + "symfony/emoji": "^7.1", + "symfony/http-client": "^6.4|^7.0", + "symfony/intl": "^6.4|^7.0", "symfony/translation-contracts": "^2.5|^3.0", - "symfony/var-exporter": "^5.4|^6.0|^7.0" + "symfony/var-exporter": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -7291,7 +7284,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v6.4.26" + "source": "https://github.com/symfony/string/tree/v7.3.4" }, "funding": [ { @@ -7311,7 +7304,7 @@ "type": "tidelift" } ], - "time": "2025-09-11T14:32:46+00:00" + "time": "2025-09-11T14:36:48+00:00" }, { "name": "symfony/templating", @@ -7385,51 +7378,52 @@ }, { "name": "symfony/translation", - "version": "v6.4.26", + "version": "v7.3.4", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "c8559fe25c7ee7aa9d28f228903a46db008156a4" + "reference": "ec25870502d0c7072d086e8ffba1420c85965174" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/c8559fe25c7ee7aa9d28f228903a46db008156a4", - "reference": "c8559fe25c7ee7aa9d28f228903a46db008156a4", + "url": "https://api.github.com/repos/symfony/translation/zipball/ec25870502d0c7072d086e8ffba1420c85965174", + "reference": "ec25870502d0c7072d086e8ffba1420c85965174", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-mbstring": "~1.0", "symfony/translation-contracts": "^2.5|^3.0" }, "conflict": { - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", + "nikic/php-parser": "<5.0", + "symfony/config": "<6.4", + "symfony/console": "<6.4", + "symfony/dependency-injection": "<6.4", "symfony/http-client-contracts": "<2.5", - "symfony/http-kernel": "<5.4", + "symfony/http-kernel": "<6.4", "symfony/service-contracts": "<2.5", - "symfony/twig-bundle": "<5.4", - "symfony/yaml": "<5.4" + "symfony/twig-bundle": "<6.4", + "symfony/yaml": "<6.4" }, "provide": { "symfony/translation-implementation": "2.3|3.0" }, "require-dev": { - "nikic/php-parser": "^4.18|^5.0", + "nikic/php-parser": "^5.0", "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0|^7.0", - "symfony/console": "^5.4|^6.0|^7.0", - "symfony/dependency-injection": "^5.4|^6.0|^7.0", - "symfony/finder": "^5.4|^6.0|^7.0", + "symfony/config": "^6.4|^7.0", + "symfony/console": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/finder": "^6.4|^7.0", "symfony/http-client-contracts": "^2.5|^3.0", - "symfony/http-kernel": "^5.4|^6.0|^7.0", - "symfony/intl": "^5.4|^6.0|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/intl": "^6.4|^7.0", "symfony/polyfill-intl-icu": "^1.21", - "symfony/routing": "^5.4|^6.0|^7.0", + "symfony/routing": "^6.4|^7.0", "symfony/service-contracts": "^2.5|^3", - "symfony/yaml": "^5.4|^6.0|^7.0" + "symfony/yaml": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -7460,7 +7454,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v6.4.26" + "source": "https://github.com/symfony/translation/tree/v7.3.4" }, "funding": [ { @@ -7480,7 +7474,7 @@ "type": "tidelift" } ], - "time": "2025-09-05T18:17:25+00:00" + "time": "2025-09-07T11:39:36+00:00" }, { "name": "symfony/translation-contracts", @@ -7566,68 +7560,70 @@ }, { "name": "symfony/twig-bridge", - "version": "v6.4.25", + "version": "v7.3.6", "source": { "type": "git", "url": "https://github.com/symfony/twig-bridge.git", - "reference": "9d13e87591c9de3221c8d6f23cd9a2b5958607bf" + "reference": "d1aaec8eee1f5591f56b9efe00194d73a8e38319" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/9d13e87591c9de3221c8d6f23cd9a2b5958607bf", - "reference": "9d13e87591c9de3221c8d6f23cd9a2b5958607bf", + "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/d1aaec8eee1f5591f56b9efe00194d73a8e38319", + "reference": "d1aaec8eee1f5591f56b9efe00194d73a8e38319", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "symfony/deprecation-contracts": "^2.5|^3", "symfony/translation-contracts": "^2.5|^3", - "twig/twig": "^2.13|^3.0.4" + "twig/twig": "^3.21" }, "conflict": { "phpdocumentor/reflection-docblock": "<3.2.2", "phpdocumentor/type-resolver": "<1.4.0", - "symfony/console": "<5.4", - "symfony/form": "<6.3", - "symfony/http-foundation": "<5.4", + "symfony/console": "<6.4", + "symfony/form": "<6.4", + "symfony/http-foundation": "<6.4", "symfony/http-kernel": "<6.4", - "symfony/mime": "<6.2", + "symfony/mime": "<6.4", "symfony/serializer": "<6.4", - "symfony/translation": "<5.4", - "symfony/workflow": "<5.4" + "symfony/translation": "<6.4", + "symfony/workflow": "<6.4" }, "require-dev": { "egulias/email-validator": "^2.1.10|^3|^4", "league/html-to-markdown": "^5.0", "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/asset": "^5.4|^6.0|^7.0", - "symfony/asset-mapper": "^6.3|^7.0", - "symfony/console": "^5.4|^6.0|^7.0", - "symfony/dependency-injection": "^5.4|^6.0|^7.0", - "symfony/expression-language": "^5.4|^6.0|^7.0", - "symfony/finder": "^5.4|^6.0|^7.0", + "symfony/asset": "^6.4|^7.0", + "symfony/asset-mapper": "^6.4|^7.0", + "symfony/console": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/emoji": "^7.1", + "symfony/expression-language": "^6.4|^7.0", + "symfony/finder": "^6.4|^7.0", "symfony/form": "^6.4.20|^7.2.5", - "symfony/html-sanitizer": "^6.1|^7.0", - "symfony/http-foundation": "^5.4|^6.0|^7.0", + "symfony/html-sanitizer": "^6.4|^7.0", + "symfony/http-foundation": "^7.3", "symfony/http-kernel": "^6.4|^7.0", - "symfony/intl": "^5.4|^6.0|^7.0", - "symfony/mime": "^6.2|^7.0", + "symfony/intl": "^6.4|^7.0", + "symfony/mime": "^6.4|^7.0", "symfony/polyfill-intl-icu": "~1.0", - "symfony/property-info": "^5.4|^6.0|^7.0", - "symfony/routing": "^5.4|^6.0|^7.0", + "symfony/property-info": "^6.4|^7.0", + "symfony/routing": "^6.4|^7.0", "symfony/security-acl": "^2.8|^3.0", - "symfony/security-core": "^5.4|^6.0|^7.0", - "symfony/security-csrf": "^5.4|^6.0|^7.0", - "symfony/security-http": "^5.4|^6.0|^7.0", + "symfony/security-core": "^6.4|^7.0", + "symfony/security-csrf": "^6.4|^7.0", + "symfony/security-http": "^6.4|^7.0", "symfony/serializer": "^6.4.3|^7.0.3", - "symfony/stopwatch": "^5.4|^6.0|^7.0", - "symfony/translation": "^6.1|^7.0", - "symfony/web-link": "^5.4|^6.0|^7.0", - "symfony/workflow": "^5.4|^6.0|^7.0", - "symfony/yaml": "^5.4|^6.0|^7.0", - "twig/cssinliner-extra": "^2.12|^3", - "twig/inky-extra": "^2.12|^3", - "twig/markdown-extra": "^2.12|^3" + "symfony/stopwatch": "^6.4|^7.0", + "symfony/translation": "^6.4|^7.0", + "symfony/validator": "^6.4|^7.0", + "symfony/web-link": "^6.4|^7.0", + "symfony/workflow": "^6.4|^7.0", + "symfony/yaml": "^6.4|^7.0", + "twig/cssinliner-extra": "^3", + "twig/inky-extra": "^3", + "twig/markdown-extra": "^3" }, "type": "symfony-bridge", "autoload": { @@ -7655,7 +7651,7 @@ "description": "Provides integration for Twig with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/twig-bridge/tree/v6.4.25" + "source": "https://github.com/symfony/twig-bridge/tree/v7.3.6" }, "funding": [ { @@ -7675,47 +7671,47 @@ "type": "tidelift" } ], - "time": "2025-08-13T09:41:44+00:00" + "time": "2025-11-04T15:37:51+00:00" }, { "name": "symfony/twig-bundle", - "version": "v6.4.24", + "version": "v7.3.4", "source": { "type": "git", "url": "https://github.com/symfony/twig-bundle.git", - "reference": "3b48b6e8225495c6d2438828982b4d219ca565ba" + "reference": "da5c778a8416fcce5318737c4d944f6fa2bb3f81" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/3b48b6e8225495c6d2438828982b4d219ca565ba", - "reference": "3b48b6e8225495c6d2438828982b4d219ca565ba", + "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/da5c778a8416fcce5318737c4d944f6fa2bb3f81", + "reference": "da5c778a8416fcce5318737c4d944f6fa2bb3f81", "shasum": "" }, "require": { "composer-runtime-api": ">=2.1", - "php": ">=8.1", - "symfony/config": "^6.1|^7.0", - "symfony/dependency-injection": "^6.1|^7.0", - "symfony/http-foundation": "^5.4|^6.0|^7.0", - "symfony/http-kernel": "^6.2", - "symfony/twig-bridge": "^6.4", - "twig/twig": "^2.13|^3.0.4" + "php": ">=8.2", + "symfony/config": "^7.3", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/twig-bridge": "^7.3", + "twig/twig": "^3.12" }, "conflict": { - "symfony/framework-bundle": "<5.4", - "symfony/translation": "<5.4" + "symfony/framework-bundle": "<6.4", + "symfony/translation": "<6.4" }, "require-dev": { - "symfony/asset": "^5.4|^6.0|^7.0", - "symfony/expression-language": "^5.4|^6.0|^7.0", - "symfony/finder": "^5.4|^6.0|^7.0", - "symfony/form": "^5.4|^6.0|^7.0", - "symfony/framework-bundle": "^5.4|^6.0|^7.0", - "symfony/routing": "^5.4|^6.0|^7.0", - "symfony/stopwatch": "^5.4|^6.0|^7.0", - "symfony/translation": "^5.4|^6.0|^7.0", - "symfony/web-link": "^5.4|^6.0|^7.0", - "symfony/yaml": "^5.4|^6.0|^7.0" + "symfony/asset": "^6.4|^7.0", + "symfony/expression-language": "^6.4|^7.0", + "symfony/finder": "^6.4|^7.0", + "symfony/form": "^6.4|^7.0", + "symfony/framework-bundle": "^6.4|^7.0", + "symfony/routing": "^6.4|^7.0", + "symfony/stopwatch": "^6.4|^7.0", + "symfony/translation": "^6.4|^7.0", + "symfony/web-link": "^6.4|^7.0", + "symfony/yaml": "^6.4|^7.0" }, "type": "symfony-bundle", "autoload": { @@ -7743,7 +7739,7 @@ "description": "Provides a tight integration of Twig into the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/twig-bundle/tree/v6.4.24" + "source": "https://github.com/symfony/twig-bundle/tree/v7.3.4" }, "funding": [ { @@ -7763,24 +7759,107 @@ "type": "tidelift" } ], - "time": "2025-07-10T08:14:14+00:00" + "time": "2025-09-10T12:00:31+00:00" + }, + { + "name": "symfony/type-info", + "version": "v7.3.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/type-info.git", + "reference": "8b36f41421160db56914f897b57eaa6a830758b3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/type-info/zipball/8b36f41421160db56914f897b57eaa6a830758b3", + "reference": "8b36f41421160db56914f897b57eaa6a830758b3", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "psr/container": "^1.1|^2.0", + "symfony/deprecation-contracts": "^2.5|^3" + }, + "conflict": { + "phpstan/phpdoc-parser": "<1.30" + }, + "require-dev": { + "phpstan/phpdoc-parser": "^1.30|^2.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\TypeInfo\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mathias Arlaud", + "email": "mathias.arlaud@gmail.com" + }, + { + "name": "Baptiste LEDUC", + "email": "baptiste.leduc@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Extracts PHP types information.", + "homepage": "https://symfony.com", + "keywords": [ + "PHPStan", + "phpdoc", + "symfony", + "type" + ], + "support": { + "source": "https://github.com/symfony/type-info/tree/v7.3.5" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-10-16T12:30:12+00:00" }, { "name": "symfony/validator", - "version": "v6.4.29", + "version": "v7.3.7", "source": { "type": "git", "url": "https://github.com/symfony/validator.git", - "reference": "99df8a769e64e399f510166141ea74f450e8dd1d" + "reference": "8290a095497c3fe5046db21888d1f75b54ddf39d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/validator/zipball/99df8a769e64e399f510166141ea74f450e8dd1d", - "reference": "99df8a769e64e399f510166141ea74f450e8dd1d", + "url": "https://api.github.com/repos/symfony/validator/zipball/8290a095497c3fe5046db21888d1f75b54ddf39d", + "reference": "8290a095497c3fe5046db21888d1f75b54ddf39d", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-mbstring": "~1.0", @@ -7788,34 +7867,35 @@ "symfony/translation-contracts": "^2.5|^3" }, "conflict": { - "doctrine/annotations": "<1.13", "doctrine/lexer": "<1.1", - "symfony/dependency-injection": "<5.4", - "symfony/expression-language": "<5.4", - "symfony/http-kernel": "<5.4", - "symfony/intl": "<5.4", - "symfony/property-info": "<5.4", - "symfony/translation": "<5.4.35|>=6.0,<6.3.12|>=6.4,<6.4.3|>=7.0,<7.0.3", - "symfony/yaml": "<5.4" + "symfony/dependency-injection": "<6.4", + "symfony/doctrine-bridge": "<7.0", + "symfony/expression-language": "<6.4", + "symfony/http-kernel": "<6.4", + "symfony/intl": "<6.4", + "symfony/property-info": "<6.4", + "symfony/translation": "<6.4.3|>=7.0,<7.0.3", + "symfony/yaml": "<6.4" }, "require-dev": { - "doctrine/annotations": "^1.13|^2", "egulias/email-validator": "^2.1.10|^3|^4", - "symfony/cache": "^5.4|^6.0|^7.0", - "symfony/config": "^5.4|^6.0|^7.0", - "symfony/console": "^5.4|^6.0|^7.0", - "symfony/dependency-injection": "^5.4|^6.0|^7.0", - "symfony/expression-language": "^5.4|^6.0|^7.0", - "symfony/finder": "^5.4|^6.0|^7.0", - "symfony/http-client": "^5.4|^6.0|^7.0", - "symfony/http-foundation": "^5.4|^6.0|^7.0", - "symfony/http-kernel": "^5.4|^6.0|^7.0", - "symfony/intl": "^5.4|^6.0|^7.0", - "symfony/mime": "^5.4|^6.0|^7.0", - "symfony/property-access": "^5.4|^6.0|^7.0", - "symfony/property-info": "^5.4|^6.0|^7.0", - "symfony/translation": "^5.4.35|~6.3.12|^6.4.3|^7.0.3", - "symfony/yaml": "^5.4|^6.0|^7.0" + "symfony/cache": "^6.4|^7.0", + "symfony/config": "^6.4|^7.0", + "symfony/console": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/expression-language": "^6.4|^7.0", + "symfony/finder": "^6.4|^7.0", + "symfony/http-client": "^6.4|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/intl": "^6.4|^7.0", + "symfony/mime": "^6.4|^7.0", + "symfony/property-access": "^6.4|^7.0", + "symfony/property-info": "^6.4|^7.0", + "symfony/string": "^6.4|^7.0", + "symfony/translation": "^6.4.3|^7.0.3", + "symfony/type-info": "^7.1.8", + "symfony/yaml": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -7844,7 +7924,7 @@ "description": "Provides tools to validate values", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/validator/tree/v6.4.29" + "source": "https://github.com/symfony/validator/tree/v7.3.7" }, "funding": [ { @@ -7864,37 +7944,36 @@ "type": "tidelift" } ], - "time": "2025-11-06T20:26:06+00:00" + "time": "2025-11-08T16:29:29+00:00" }, { "name": "symfony/var-dumper", - "version": "v6.4.26", + "version": "v7.3.5", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "cfae1497a2f1eaad78dbc0590311c599c7178d4a" + "reference": "476c4ae17f43a9a36650c69879dcf5b1e6ae724d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/cfae1497a2f1eaad78dbc0590311c599c7178d4a", - "reference": "cfae1497a2f1eaad78dbc0590311c599c7178d4a", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/476c4ae17f43a9a36650c69879dcf5b1e6ae724d", + "reference": "476c4ae17f43a9a36650c69879dcf5b1e6ae724d", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-mbstring": "~1.0" }, "conflict": { - "symfony/console": "<5.4" + "symfony/console": "<6.4" }, "require-dev": { - "symfony/console": "^5.4|^6.0|^7.0", - "symfony/error-handler": "^6.3|^7.0", - "symfony/http-kernel": "^5.4|^6.0|^7.0", - "symfony/process": "^5.4|^6.0|^7.0", - "symfony/uid": "^5.4|^6.0|^7.0", - "twig/twig": "^2.13|^3.0.4" + "symfony/console": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/process": "^6.4|^7.0", + "symfony/uid": "^6.4|^7.0", + "twig/twig": "^3.12" }, "bin": [ "Resources/bin/var-dump-server" @@ -7932,7 +8011,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v6.4.26" + "source": "https://github.com/symfony/var-dumper/tree/v7.3.5" }, "funding": [ { @@ -7952,30 +8031,30 @@ "type": "tidelift" } ], - "time": "2025-09-25T15:37:27+00:00" + "time": "2025-09-27T09:00:46+00:00" }, { "name": "symfony/var-exporter", - "version": "v6.4.26", + "version": "v7.3.4", "source": { "type": "git", "url": "https://github.com/symfony/var-exporter.git", - "reference": "466fcac5fa2e871f83d31173f80e9c2684743bfc" + "reference": "0f020b544a30a7fe8ba972e53ee48a74c0bc87f4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-exporter/zipball/466fcac5fa2e871f83d31173f80e9c2684743bfc", - "reference": "466fcac5fa2e871f83d31173f80e9c2684743bfc", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/0f020b544a30a7fe8ba972e53ee48a74c0bc87f4", + "reference": "0f020b544a30a7fe8ba972e53ee48a74c0bc87f4", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "symfony/deprecation-contracts": "^2.5|^3" }, "require-dev": { "symfony/property-access": "^6.4|^7.0", "symfony/serializer": "^6.4|^7.0", - "symfony/var-dumper": "^5.4|^6.0|^7.0" + "symfony/var-dumper": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -8013,7 +8092,7 @@ "serialize" ], "support": { - "source": "https://github.com/symfony/var-exporter/tree/v6.4.26" + "source": "https://github.com/symfony/var-exporter/tree/v7.3.4" }, "funding": [ { @@ -8033,32 +8112,32 @@ "type": "tidelift" } ], - "time": "2025-09-11T09:57:09+00:00" + "time": "2025-09-11T10:12:26+00:00" }, { "name": "symfony/yaml", - "version": "v6.4.26", + "version": "v7.3.5", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "0fc8b966fd0dcaab544ae59bfc3a433f048c17b0" + "reference": "90208e2fc6f68f613eae7ca25a2458a931b1bacc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/0fc8b966fd0dcaab544ae59bfc3a433f048c17b0", - "reference": "0fc8b966fd0dcaab544ae59bfc3a433f048c17b0", + "url": "https://api.github.com/repos/symfony/yaml/zipball/90208e2fc6f68f613eae7ca25a2458a931b1bacc", + "reference": "90208e2fc6f68f613eae7ca25a2458a931b1bacc", "shasum": "" }, "require": { - "php": ">=8.1", - "symfony/deprecation-contracts": "^2.5|^3", + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3.0", "symfony/polyfill-ctype": "^1.8" }, "conflict": { - "symfony/console": "<5.4" + "symfony/console": "<6.4" }, "require-dev": { - "symfony/console": "^5.4|^6.0|^7.0" + "symfony/console": "^6.4|^7.0" }, "bin": [ "Resources/bin/yaml-lint" @@ -8089,7 +8168,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v6.4.26" + "source": "https://github.com/symfony/yaml/tree/v7.3.5" }, "funding": [ { @@ -8109,7 +8188,7 @@ "type": "tidelift" } ], - "time": "2025-09-26T15:07:38+00:00" + "time": "2025-09-27T09:00:46+00:00" }, { "name": "twig/extra-bundle", @@ -11547,27 +11626,27 @@ }, { "name": "symfony/browser-kit", - "version": "v6.4.28", + "version": "v7.3.6", "source": { "type": "git", "url": "https://github.com/symfony/browser-kit.git", - "reference": "067e301786bbb58048077fc10507aceb18226e23" + "reference": "e9a9fd604296b17bf90939c3647069f1f16ef04e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/browser-kit/zipball/067e301786bbb58048077fc10507aceb18226e23", - "reference": "067e301786bbb58048077fc10507aceb18226e23", + "url": "https://api.github.com/repos/symfony/browser-kit/zipball/e9a9fd604296b17bf90939c3647069f1f16ef04e", + "reference": "e9a9fd604296b17bf90939c3647069f1f16ef04e", "shasum": "" }, "require": { - "php": ">=8.1", - "symfony/dom-crawler": "^5.4|^6.0|^7.0" + "php": ">=8.2", + "symfony/dom-crawler": "^6.4|^7.0" }, "require-dev": { - "symfony/css-selector": "^5.4|^6.0|^7.0", - "symfony/http-client": "^5.4|^6.0|^7.0", - "symfony/mime": "^5.4|^6.0|^7.0", - "symfony/process": "^5.4|^6.0|^7.0" + "symfony/css-selector": "^6.4|^7.0", + "symfony/http-client": "^6.4|^7.0", + "symfony/mime": "^6.4|^7.0", + "symfony/process": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -11595,7 +11674,7 @@ "description": "Simulates the behavior of a web browser, allowing you to make requests, click on links and submit forms programmatically", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/browser-kit/tree/v6.4.28" + "source": "https://github.com/symfony/browser-kit/tree/v7.3.6" }, "funding": [ { @@ -11615,30 +11694,30 @@ "type": "tidelift" } ], - "time": "2025-10-16T22:35:35+00:00" + "time": "2025-11-05T07:57:47+00:00" }, { "name": "symfony/dom-crawler", - "version": "v6.4.25", + "version": "v7.3.3", "source": { "type": "git", "url": "https://github.com/symfony/dom-crawler.git", - "reference": "976302990f9f2a6d4c07206836dd4ca77cae9524" + "reference": "efa076ea0eeff504383ff0dcf827ea5ce15690ba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/976302990f9f2a6d4c07206836dd4ca77cae9524", - "reference": "976302990f9f2a6d4c07206836dd4ca77cae9524", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/efa076ea0eeff504383ff0dcf827ea5ce15690ba", + "reference": "efa076ea0eeff504383ff0dcf827ea5ce15690ba", "shasum": "" }, "require": { "masterminds/html5": "^2.6", - "php": ">=8.1", + "php": ">=8.2", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-mbstring": "~1.0" }, "require-dev": { - "symfony/css-selector": "^5.4|^6.0|^7.0" + "symfony/css-selector": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -11666,7 +11745,7 @@ "description": "Eases DOM navigation for HTML and XML documents", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dom-crawler/tree/v6.4.25" + "source": "https://github.com/symfony/dom-crawler/tree/v7.3.3" }, "funding": [ { @@ -11686,31 +11765,31 @@ "type": "tidelift" } ], - "time": "2025-08-05T18:56:08+00:00" + "time": "2025-08-06T20:13:54+00:00" }, { "name": "symfony/phpunit-bridge", - "version": "v6.4.26", + "version": "v7.3.4", "source": { "type": "git", "url": "https://github.com/symfony/phpunit-bridge.git", - "reference": "406aa80401bf960e7a173a3ccf268ae82b6bc93f" + "reference": "ed77a629c13979e051b7000a317966474d566398" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/406aa80401bf960e7a173a3ccf268ae82b6bc93f", - "reference": "406aa80401bf960e7a173a3ccf268ae82b6bc93f", + "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/ed77a629c13979e051b7000a317966474d566398", + "reference": "ed77a629c13979e051b7000a317966474d566398", "shasum": "" }, "require": { - "php": ">=7.1.3" + "php": ">=7.2.5" }, "conflict": { "phpunit/phpunit": "<7.5|9.1.2" }, "require-dev": { "symfony/deprecation-contracts": "^2.5|^3.0", - "symfony/error-handler": "^5.4|^6.0|^7.0", + "symfony/error-handler": "^5.4|^6.4|^7.0", "symfony/polyfill-php81": "^1.27" }, "bin": [ @@ -11755,7 +11834,7 @@ "testing" ], "support": { - "source": "https://github.com/symfony/phpunit-bridge/tree/v6.4.26" + "source": "https://github.com/symfony/phpunit-bridge/tree/v7.3.4" }, "funding": [ { @@ -11775,24 +11854,24 @@ "type": "tidelift" } ], - "time": "2025-09-12T08:37:02+00:00" + "time": "2025-09-12T12:18:52+00:00" }, { "name": "symfony/process", - "version": "v6.4.26", + "version": "v7.3.4", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "48bad913268c8cafabbf7034b39c8bb24fbc5ab8" + "reference": "f24f8f316367b30810810d4eb30c543d7003ff3b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/48bad913268c8cafabbf7034b39c8bb24fbc5ab8", - "reference": "48bad913268c8cafabbf7034b39c8bb24fbc5ab8", + "url": "https://api.github.com/repos/symfony/process/zipball/f24f8f316367b30810810d4eb30c543d7003ff3b", + "reference": "f24f8f316367b30810810d4eb30c543d7003ff3b", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.2" }, "type": "library", "autoload": { @@ -11820,7 +11899,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v6.4.26" + "source": "https://github.com/symfony/process/tree/v7.3.4" }, "funding": [ { @@ -11840,42 +11919,45 @@ "type": "tidelift" } ], - "time": "2025-09-11T09:57:09+00:00" + "time": "2025-09-11T10:12:26+00:00" }, { "name": "symfony/web-profiler-bundle", - "version": "v6.4.27", + "version": "v7.3.5", "source": { "type": "git", "url": "https://github.com/symfony/web-profiler-bundle.git", - "reference": "4c2ab411372e8bd854678cd7c81f1a9bfd6914aa" + "reference": "c2ed11cc0e9093fe0425ad52498d26a458842e0c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/4c2ab411372e8bd854678cd7c81f1a9bfd6914aa", - "reference": "4c2ab411372e8bd854678cd7c81f1a9bfd6914aa", + "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/c2ed11cc0e9093fe0425ad52498d26a458842e0c", + "reference": "c2ed11cc0e9093fe0425ad52498d26a458842e0c", "shasum": "" }, "require": { - "php": ">=8.1", - "symfony/config": "^5.4|^6.0|^7.0", + "composer-runtime-api": ">=2.1", + "php": ">=8.2", + "symfony/config": "^7.3", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/framework-bundle": "^6.4|^7.0", "symfony/http-kernel": "^6.4|^7.0", - "symfony/routing": "^5.4|^6.0|^7.0", - "symfony/twig-bundle": "^5.4|^6.0", - "twig/twig": "^2.13|^3.0.4" + "symfony/routing": "^6.4|^7.0", + "symfony/twig-bundle": "^6.4|^7.0", + "twig/twig": "^3.12" }, "conflict": { - "symfony/form": "<5.4", - "symfony/mailer": "<5.4", - "symfony/messenger": "<5.4", - "symfony/twig-bundle": ">=7.0" + "symfony/form": "<6.4", + "symfony/mailer": "<6.4", + "symfony/messenger": "<6.4", + "symfony/serializer": "<7.2", + "symfony/workflow": "<7.3" }, "require-dev": { - "symfony/browser-kit": "^5.4|^6.0|^7.0", - "symfony/console": "^5.4|^6.0|^7.0", - "symfony/css-selector": "^5.4|^6.0|^7.0", - "symfony/stopwatch": "^5.4|^6.0|^7.0" + "symfony/browser-kit": "^6.4|^7.0", + "symfony/console": "^6.4|^7.0", + "symfony/css-selector": "^6.4|^7.0", + "symfony/stopwatch": "^6.4|^7.0" }, "type": "symfony-bundle", "autoload": { @@ -11906,7 +11988,7 @@ "dev" ], "support": { - "source": "https://github.com/symfony/web-profiler-bundle/tree/v6.4.27" + "source": "https://github.com/symfony/web-profiler-bundle/tree/v7.3.5" }, "funding": [ { @@ -11926,7 +12008,7 @@ "type": "tidelift" } ], - "time": "2025-10-05T13:55:43+00:00" + "time": "2025-10-06T13:36:11+00:00" }, { "name": "theseer/tokenizer", diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Request/InstitutionValueResolverTest.php b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Request/InstitutionValueResolverTest.php index 57b669e8f..01ffba07d 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Request/InstitutionValueResolverTest.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Tests/Request/InstitutionValueResolverTest.php @@ -27,7 +27,7 @@ use Surfnet\Stepup\Identity\Value\Institution; use Surfnet\StepupMiddleware\ApiBundle\Exception\BadApiRequestException; use Surfnet\StepupMiddleware\ApiBundle\Request\InstitutionValueResolver; -use Symfony\Component\HttpFoundation\ParameterBag; +use Symfony\Component\HttpFoundation\InputBag; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpKernel\ControllerMetadata\ArgumentMetadata; @@ -64,9 +64,7 @@ public function an_exception_is_thrown_when_the_parameter_is_missing(): void #[Group('api-bundle')] public function an_institution_is_resolved(): void { - $query = $this->mockQuery('ABC'); - - $this->request->query = $query; + $this->request->query = $this->mockQuery('ABC'); $equal = new Institution('ABC'); @@ -77,15 +75,8 @@ public function an_institution_is_resolved(): void $this->assertEquals($equal, $result[0]); } - private function mockQuery(bool|string $returnValue): ParameterBag&MockInterface + private function mockQuery(string|bool $returnValue): InputBag { - $query = m::mock(ParameterBag::class); - $query - ->shouldReceive('get') - ->once() - ->with('institution') - ->andReturn($returnValue); - - return $query; + return new InputBag(['institution' => $returnValue]); } } diff --git a/symfony.lock b/symfony.lock index 6fc4671ae..047406d8c 100644 --- a/symfony.lock +++ b/symfony.lock @@ -509,6 +509,18 @@ "symfony/property-access": { "version": "v4.4.9" }, + "symfony/property-info": { + "version": "7.3", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "main", + "version": "7.3", + "ref": "dae70df71978ae9226ae915ffd5fad817f5ca1f7" + }, + "files": [ + "config/packages/property_info.yaml" + ] + }, "symfony/routing": { "version": "4.2", "recipe": { From 85958d9a8516fd661bf454e3c70bab7f904eb0bc Mon Sep 17 00:00:00 2001 From: Johan Kromhout Date: Wed, 26 Nov 2025 14:31:27 +0100 Subject: [PATCH 20/32] Commands & twig functions now use attributes. GetFiltersToAsTwigFilterAttributeRector InvokableCommandInputAttributeRector --- ci/qa/phpstan-baseline.neon | 308 +----------------- config/services.yaml | 4 - .../Twig/BackwardsCompatibleExtensionTest.php | 8 +- .../Twig/BackwardsCompatibleExtension.php | 13 +- .../BootstrapGsspSecondFactorCommand.php | 62 ++-- .../Command/BootstrapIdentityCommand.php | 47 ++- ...IdentityWithYubikeySecondFactorCommand.php | 59 ++-- .../BootstrapSmsSecondFactorCommand.php | 44 +-- .../BootstrapYubikeySecondFactorCommand.php | 53 ++- .../Command/MigrateSecondFactorCommand.php | 56 ++-- 10 files changed, 134 insertions(+), 520 deletions(-) diff --git a/ci/qa/phpstan-baseline.neon b/ci/qa/phpstan-baseline.neon index c98a19828..351a6ce71 100644 --- a/ci/qa/phpstan-baseline.neon +++ b/ci/qa/phpstan-baseline.neon @@ -4566,282 +4566,6 @@ parameters: count: 1 path: ../../src/Surfnet/StepupMiddleware/ManagementBundle/Validator/ServiceProviderConfigurationValidator.php - - - message: '#^Parameter \#1 \$actorId of method Surfnet\\StepupMiddleware\\MiddlewareBundle\\Service\\BootstrapCommandService\:\:enrichEventMetadata\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapGsspSecondFactorCommand.php - - - - message: '#^Parameter \#1 \$institution of class Surfnet\\Stepup\\Identity\\Value\\Institution constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapGsspSecondFactorCommand.php - - - - message: '#^Parameter \#1 \$institution of method Surfnet\\StepupMiddleware\\MiddlewareBundle\\Service\\BootstrapCommandService\:\:requiresMailVerification\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapGsspSecondFactorCommand.php - - - - message: '#^Parameter \#1 \$registrationStatus of method Surfnet\\StepupMiddleware\\MiddlewareBundle\\Service\\BootstrapCommandService\:\:validRegistrationStatus\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapGsspSecondFactorCommand.php - - - - message: '#^Parameter \#1 \$tokenType of method Surfnet\\StepupMiddleware\\MiddlewareBundle\\Service\\BootstrapCommandService\:\:vetSecondFactor\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapGsspSecondFactorCommand.php - - - - message: '#^Parameter \#1 \$value of class Surfnet\\Stepup\\Identity\\Value\\NameId constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapGsspSecondFactorCommand.php - - - - message: '#^Parameter \#2 \$actorId of method Surfnet\\StepupMiddleware\\MiddlewareBundle\\Service\\BootstrapCommandService\:\:vetSecondFactor\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapGsspSecondFactorCommand.php - - - - message: '#^Parameter \#2 \$tokenType of method Surfnet\\StepupMiddleware\\MiddlewareBundle\\Service\\BootstrapCommandService\:\:verifyEmail\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapGsspSecondFactorCommand.php - - - - message: '#^Parameter \#2 \.\.\.\$values of function sprintf expects bool\|float\|int\|string\|null, mixed given\.$#' - identifier: argument.type - count: 9 - path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapGsspSecondFactorCommand.php - - - - message: '#^Parameter \#3 \$tokenType of method Surfnet\\StepupMiddleware\\MiddlewareBundle\\Service\\BootstrapCommandService\:\:proveGsspPossession\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapGsspSecondFactorCommand.php - - - - message: '#^Parameter \#3 \.\.\.\$values of function sprintf expects bool\|float\|int\|string\|null, mixed given\.$#' - identifier: argument.type - count: 2 - path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapGsspSecondFactorCommand.php - - - - message: '#^Parameter \#4 \$tokenIdentifier of method Surfnet\\StepupMiddleware\\MiddlewareBundle\\Service\\BootstrapCommandService\:\:proveGsspPossession\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapGsspSecondFactorCommand.php - - - - message: '#^Parameter \#5 \$secondFactorIdentifier of method Surfnet\\StepupMiddleware\\MiddlewareBundle\\Service\\BootstrapCommandService\:\:vetSecondFactor\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapGsspSecondFactorCommand.php - - - - message: '#^Parameter \#1 \$actorId of method Surfnet\\StepupMiddleware\\MiddlewareBundle\\Service\\BootstrapCommandService\:\:enrichEventMetadata\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapIdentityCommand.php - - - - message: '#^Parameter \#1 \$institution of class Surfnet\\Stepup\\Identity\\Value\\Institution constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapIdentityCommand.php - - - - message: '#^Parameter \#1 \$value of class Surfnet\\Stepup\\Identity\\Value\\NameId constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapIdentityCommand.php - - - - message: '#^Parameter \#2 \.\.\.\$values of function sprintf expects bool\|float\|int\|string\|null, mixed given\.$#' - identifier: argument.type - count: 1 - path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapIdentityCommand.php - - - - message: '#^Parameter \#3 \$commonName of method Surfnet\\StepupMiddleware\\MiddlewareBundle\\Service\\BootstrapCommandService\:\:createIdentity\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapIdentityCommand.php - - - - message: '#^Parameter \#4 \$email of method Surfnet\\StepupMiddleware\\MiddlewareBundle\\Service\\BootstrapCommandService\:\:createIdentity\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapIdentityCommand.php - - - - message: '#^Parameter \#5 \$preferredLocale of method Surfnet\\StepupMiddleware\\MiddlewareBundle\\Service\\BootstrapCommandService\:\:createIdentity\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapIdentityCommand.php - - - - message: '#^Parameter \#1 \$institution of class Surfnet\\Stepup\\Identity\\Value\\Institution constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapIdentityWithYubikeySecondFactorCommand.php - - - - message: '#^Parameter \#1 \$value of class Surfnet\\Stepup\\Identity\\Value\\NameId constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapIdentityWithYubikeySecondFactorCommand.php - - - - message: '#^Property Surfnet\\StepupMiddleware\\CommandHandlingBundle\\Identity\\Command\\BootstrapIdentityWithYubikeySecondFactorCommand\:\:\$commonName \(string\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapIdentityWithYubikeySecondFactorCommand.php - - - - message: '#^Property Surfnet\\StepupMiddleware\\CommandHandlingBundle\\Identity\\Command\\BootstrapIdentityWithYubikeySecondFactorCommand\:\:\$email \(string\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapIdentityWithYubikeySecondFactorCommand.php - - - - message: '#^Property Surfnet\\StepupMiddleware\\CommandHandlingBundle\\Identity\\Command\\BootstrapIdentityWithYubikeySecondFactorCommand\:\:\$institution \(string\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapIdentityWithYubikeySecondFactorCommand.php - - - - message: '#^Property Surfnet\\StepupMiddleware\\CommandHandlingBundle\\Identity\\Command\\BootstrapIdentityWithYubikeySecondFactorCommand\:\:\$nameId \(string\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapIdentityWithYubikeySecondFactorCommand.php - - - - message: '#^Property Surfnet\\StepupMiddleware\\CommandHandlingBundle\\Identity\\Command\\BootstrapIdentityWithYubikeySecondFactorCommand\:\:\$preferredLocale \(string\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapIdentityWithYubikeySecondFactorCommand.php - - - - message: '#^Property Surfnet\\StepupMiddleware\\CommandHandlingBundle\\Identity\\Command\\BootstrapIdentityWithYubikeySecondFactorCommand\:\:\$yubikeyPublicId \(string\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapIdentityWithYubikeySecondFactorCommand.php - - - - message: '#^Parameter \#1 \$actorId of method Surfnet\\StepupMiddleware\\MiddlewareBundle\\Service\\BootstrapCommandService\:\:enrichEventMetadata\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapSmsSecondFactorCommand.php - - - - message: '#^Parameter \#1 \$institution of class Surfnet\\Stepup\\Identity\\Value\\Institution constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapSmsSecondFactorCommand.php - - - - message: '#^Parameter \#1 \$institution of method Surfnet\\StepupMiddleware\\MiddlewareBundle\\Service\\BootstrapCommandService\:\:requiresMailVerification\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapSmsSecondFactorCommand.php - - - - message: '#^Parameter \#1 \$registrationStatus of method Surfnet\\StepupMiddleware\\MiddlewareBundle\\Service\\BootstrapCommandService\:\:validRegistrationStatus\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapSmsSecondFactorCommand.php - - - - message: '#^Parameter \#1 \$value of class Surfnet\\Stepup\\Identity\\Value\\NameId constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapSmsSecondFactorCommand.php - - - - message: '#^Parameter \#2 \$actorId of method Surfnet\\StepupMiddleware\\MiddlewareBundle\\Service\\BootstrapCommandService\:\:vetSecondFactor\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapSmsSecondFactorCommand.php - - - - message: '#^Parameter \#2 \.\.\.\$values of function sprintf expects bool\|float\|int\|string\|null, mixed given\.$#' - identifier: argument.type - count: 1 - path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapSmsSecondFactorCommand.php - - - - message: '#^Parameter \#3 \$phoneNumber of method Surfnet\\StepupMiddleware\\MiddlewareBundle\\Service\\BootstrapCommandService\:\:provePhonePossession\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapSmsSecondFactorCommand.php - - - - message: '#^Parameter \#5 \$secondFactorIdentifier of method Surfnet\\StepupMiddleware\\MiddlewareBundle\\Service\\BootstrapCommandService\:\:vetSecondFactor\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapSmsSecondFactorCommand.php - - - - message: '#^Parameter \#1 \$actorId of method Surfnet\\StepupMiddleware\\MiddlewareBundle\\Service\\BootstrapCommandService\:\:enrichEventMetadata\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapYubikeySecondFactorCommand.php - - - - message: '#^Parameter \#1 \$institution of class Surfnet\\Stepup\\Identity\\Value\\Institution constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapYubikeySecondFactorCommand.php - - - - message: '#^Parameter \#1 \$institution of method Surfnet\\StepupMiddleware\\MiddlewareBundle\\Service\\BootstrapCommandService\:\:requiresMailVerification\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapYubikeySecondFactorCommand.php - - - - message: '#^Parameter \#1 \$registrationStatus of method Surfnet\\StepupMiddleware\\MiddlewareBundle\\Service\\BootstrapCommandService\:\:validRegistrationStatus\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapYubikeySecondFactorCommand.php - - - - message: '#^Parameter \#1 \$value of class Surfnet\\Stepup\\Identity\\Value\\NameId constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapYubikeySecondFactorCommand.php - - - - message: '#^Parameter \#2 \$actorId of method Surfnet\\StepupMiddleware\\MiddlewareBundle\\Service\\BootstrapCommandService\:\:vetSecondFactor\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapYubikeySecondFactorCommand.php - - - - message: '#^Parameter \#2 \.\.\.\$values of function sprintf expects bool\|float\|int\|string\|null, mixed given\.$#' - identifier: argument.type - count: 1 - path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapYubikeySecondFactorCommand.php - - - - message: '#^Parameter \#3 \$yubikeyPublicId of method Surfnet\\StepupMiddleware\\MiddlewareBundle\\Service\\BootstrapCommandService\:\:proveYubikeyPossession\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapYubikeySecondFactorCommand.php - - - - message: '#^Parameter \#5 \$secondFactorIdentifier of method Surfnet\\StepupMiddleware\\MiddlewareBundle\\Service\\BootstrapCommandService\:\:vetSecondFactor\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapYubikeySecondFactorCommand.php - - message: '#^Parameter \#1 \$value of static method Assert\\Assertion\:\:nullOrDate\(\) expects string\|null, mixed given\.$#' identifier: argument.type @@ -4869,7 +4593,7 @@ parameters: - message: '#^Cannot access property \$id on Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Entity\\Identity\|null\.$#' identifier: property.nonObject - count: 2 + count: 1 path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/MigrateSecondFactorCommand.php - @@ -4881,30 +4605,6 @@ parameters: - message: '#^Parameter \#1 \$identity of method Surfnet\\StepupMiddleware\\MiddlewareBundle\\Service\\BootstrapCommandService\:\:getVettedSecondFactorsFromIdentity\(\) expects Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Entity\\Identity, Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Entity\\Identity\|null given\.$#' identifier: argument.type - count: 2 - path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/MigrateSecondFactorCommand.php - - - - message: '#^Parameter \#1 \$institution of class Surfnet\\Stepup\\Identity\\Value\\Institution constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/MigrateSecondFactorCommand.php - - - - message: '#^Parameter \#1 \$sourceIdentity of method Surfnet\\StepupMiddleware\\MiddlewareBundle\\Service\\BootstrapCommandService\:\:migrateVettedSecondFactor\(\) expects Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Entity\\Identity, Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Entity\\Identity\|null given\.$#' - identifier: argument.type - count: 1 - path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/MigrateSecondFactorCommand.php - - - - message: '#^Parameter \#1 \$value of class Surfnet\\Stepup\\Identity\\Value\\NameId constructor expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/MigrateSecondFactorCommand.php - - - - message: '#^Parameter \#2 \$sourceIdentity of method Surfnet\\StepupMiddleware\\MiddlewareBundle\\Console\\Command\\MigrateSecondFactorCommand\:\:createIdentity\(\) expects Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Entity\\Identity, Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Entity\\Identity\|null given\.$#' - identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/MigrateSecondFactorCommand.php @@ -4914,12 +4614,6 @@ parameters: count: 1 path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/MigrateSecondFactorCommand.php - - - message: '#^Parameter \#4 \$email of method Surfnet\\StepupMiddleware\\MiddlewareBundle\\Service\\BootstrapCommandService\:\:createIdentity\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/MigrateSecondFactorCommand.php - - message: '#^Cannot cast mixed to int\.$#' identifier: cast.int diff --git a/config/services.yaml b/config/services.yaml index 93190a767..d392d878b 100644 --- a/config/services.yaml +++ b/config/services.yaml @@ -14,10 +14,6 @@ services: - "@surfnet_stepup.service.second_factor_type" - '%skip_prove_possession_second_factors%' - Surfnet\StepupMiddleware\CommandHandlingBundle\Twig\BackwardsCompatibleExtension: - arguments: [ "@twig.extension.intl"] - tags: [{ name: twig.extension }] - twig.extension.stringloader: class: Twig\Extension\StringLoaderExtension tags: [{ name: twig.extension }] diff --git a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Twig/BackwardsCompatibleExtensionTest.php b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Twig/BackwardsCompatibleExtensionTest.php index bb1918d06..d1a5ad80d 100644 --- a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Twig/BackwardsCompatibleExtensionTest.php +++ b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Twig/BackwardsCompatibleExtensionTest.php @@ -24,8 +24,10 @@ use PHPUnit\Framework\TestCase; use Surfnet\StepupMiddleware\CommandHandlingBundle\Twig\BackwardsCompatibleExtension; use Twig\Environment; +use Twig\Extension\AttributeExtension; use Twig\Extra\Intl\IntlExtension; use Twig\Loader\ArrayLoader; +use Twig\RuntimeLoader\FactoryRuntimeLoader; #[RequiresPhpExtension('intl')] class BackwardsCompatibleExtensionTest extends TestCase @@ -36,7 +38,11 @@ public function testLocalizedData(string $template, string $expected, string $lo $dateString = "2024-12-05 13:12:10"; $date = new DateTime($dateString); $twig = new Environment(new ArrayLoader(['template' => $template]), ['debug' => true, 'cache' => false, 'autoescape' => 'html', 'optimizations' => 0]); - $twig->addExtension(new BackwardsCompatibleExtension(new IntlExtension())); + + $twig->addExtension(new AttributeExtension(BackwardsCompatibleExtension::class)); + $twig->addRuntimeLoader(new FactoryRuntimeLoader([ + BackwardsCompatibleExtension::class => static fn(): BackwardsCompatibleExtension => new BackwardsCompatibleExtension(new IntlExtension()), + ])); $output = $twig->render('template', ['date' => $date, 'locale' => $locale]); $this->assertEquals($expected, $output); diff --git a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Twig/BackwardsCompatibleExtension.php b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Twig/BackwardsCompatibleExtension.php index 22ad7b863..2d9757bbe 100644 --- a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Twig/BackwardsCompatibleExtension.php +++ b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Twig/BackwardsCompatibleExtension.php @@ -19,10 +19,9 @@ namespace Surfnet\StepupMiddleware\CommandHandlingBundle\Twig; use DateTimeInterface; +use Twig\Attribute\AsTwigFilter; use Twig\Environment; -use Twig\Extension\AbstractExtension; use Twig\Extra\Intl\IntlExtension; -use Twig\TwigFilter; /** * This class is introduced to handle BC twig changes in email templates used in the institution configuration. @@ -30,7 +29,7 @@ * * An idea was to move the email templates to disk but that would cost too much time and we still should support * * all historical events due to the nature of event sourcing. */ -class BackwardsCompatibleExtension extends AbstractExtension +class BackwardsCompatibleExtension { private IntlExtension $intlExtension; @@ -39,14 +38,8 @@ public function __construct(IntlExtension $intlExtension) $this->intlExtension = $intlExtension; } - public function getFilters(): array - { - return [ - new TwigFilter('localizeddate', $this->localizedDate(...), ['needs_environment' => true]), - ]; - } - // localizeddate('full', 'none', locale) + #[AsTwigFilter('localizeddate', needsEnvironment: true)] public function localizedDate( Environment $env, DateTimeInterface|string|null $date, diff --git a/src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapGsspSecondFactorCommand.php b/src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapGsspSecondFactorCommand.php index 63f6c6e12..9357a9f25 100644 --- a/src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapGsspSecondFactorCommand.php +++ b/src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapGsspSecondFactorCommand.php @@ -24,10 +24,8 @@ use Surfnet\Stepup\Identity\Value\NameId; use Surfnet\StepupMiddleware\MiddlewareBundle\Service\BootstrapCommandService; use Surfnet\StepupMiddleware\MiddlewareBundle\Service\TransactionHelper; +use Symfony\Component\Console\Attribute\Argument; use Symfony\Component\Console\Attribute\AsCommand; -use Symfony\Component\Console\Command\Command; -use Symfony\Component\Console\Input\InputArgument; -use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; #[AsCommand( @@ -35,54 +33,40 @@ description: 'Creates a Generic SAML Second Factor (GSSF) second factor for a specified user' ) ] -final class BootstrapGsspSecondFactorCommand extends Command +final class BootstrapGsspSecondFactorCommand { - public function __construct( - private readonly BootstrapCommandService $bootstrapService, - private readonly TransactionHelper $transactionHelper, - ) { - parent::__construct(); - } - - protected function configure(): void + public function __construct(private readonly BootstrapCommandService $bootstrapService, private readonly TransactionHelper $transactionHelper) { - $this - ->addArgument('name-id', InputArgument::REQUIRED, 'The NameID of the identity to create') - ->addArgument('institution', InputArgument::REQUIRED, 'The institution of the identity to create') - ->addArgument( - 'gssp-token-type', - InputArgument::REQUIRED, - 'The GSSP token type as defined in the GSSP config, for example tiqr or webauthn', - ) - ->addArgument( - 'gssp-token-identifier', - InputArgument::REQUIRED, - 'The identifier of the token as registered at the GSSP', - ) - ->addArgument( - 'registration-status', - InputArgument::REQUIRED, - 'Valid arguments: unverified, verified, vetted', - ) - ->addArgument('actor-id', InputArgument::REQUIRED, 'The id of the vetting actor'); } /** * @SuppressWarnings("PHPMD.ExcessiveMethodLength") Method length could be reduced by deconstructing the bootstrapping * of the required data and the vetting of the GSSP */ - protected function execute(InputInterface $input, OutputInterface $output): int - { - $registrationStatus = $input->getArgument('registration-status'); + public function __invoke( + #[Argument(description: 'The NameID of the identity to create', name: 'name-id')] + string $nameId, + #[Argument(description: 'The institution of the identity to create', name: 'institution')] + string $institution, + #[Argument(description: 'The GSSP token type as defined in the GSSP config, for example tiqr or webauthn', name: 'gssp-token-type')] + string $gsspTokenType, + #[Argument(description: 'The identifier of the token as registered at the GSSP', name: 'gssp-token-identifier')] + string $gsspTokenIdentifier, + #[Argument(description: 'Valid arguments: unverified, verified, vetted', name: 'registration-status')] + string $registrationStatus, + #[Argument(description: 'The id of the vetting actor', name: 'actor-id')] + string $actorId, + OutputInterface $output + ): int { $this->bootstrapService->validRegistrationStatus($registrationStatus); - $nameId = new NameId($input->getArgument('name-id')); - $institutionText = $input->getArgument('institution'); + $nameId = new NameId($nameId); + $institutionText = $institution; $institution = new Institution($institutionText); $mailVerificationRequired = $this->bootstrapService->requiresMailVerification($institutionText); - $tokenType = $input->getArgument('gssp-token-type'); - $tokenIdentifier = $input->getArgument('gssp-token-identifier'); - $actorId = $input->getArgument('actor-id'); + $tokenType = $gsspTokenType; + $tokenIdentifier = $gsspTokenIdentifier; + $this->bootstrapService->enrichEventMetadata($actorId); if (!$this->bootstrapService->identityExists($nameId, $institution)) { $output->writeln( diff --git a/src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapIdentityCommand.php b/src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapIdentityCommand.php index 645621f47..fede46a4b 100644 --- a/src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapIdentityCommand.php +++ b/src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapIdentityCommand.php @@ -23,42 +23,35 @@ use Surfnet\Stepup\Identity\Value\NameId; use Surfnet\StepupMiddleware\MiddlewareBundle\Service\BootstrapCommandService; use Surfnet\StepupMiddleware\MiddlewareBundle\Service\TransactionHelper; +use Symfony\Component\Console\Attribute\Argument; use Symfony\Component\Console\Attribute\AsCommand; -use Symfony\Component\Console\Command\Command; -use Symfony\Component\Console\Input\InputArgument; -use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; #[AsCommand(name: 'middleware:bootstrap:identity', description: 'Creates an identity')] -final class BootstrapIdentityCommand extends Command +final class BootstrapIdentityCommand { - public function __construct( - private readonly BootstrapCommandService $bootstrapService, - private readonly TransactionHelper $transactionHelper, - ) { - parent::__construct(); - } - - protected function configure(): void + public function __construct(private readonly BootstrapCommandService $bootstrapService, private readonly TransactionHelper $transactionHelper) { - $this - ->addArgument('name-id', InputArgument::REQUIRED, 'The NameID of the identity to create') - ->addArgument('institution', InputArgument::REQUIRED, 'The institution of the identity to create') - ->addArgument('common-name', InputArgument::REQUIRED, 'The Common Name of the identity to create') - ->addArgument('email', InputArgument::REQUIRED, 'The e-mail address of the identity to create') - ->addArgument('preferred-locale', InputArgument::REQUIRED, 'The preferred locale of the identity to create') - ->addArgument('actor-id', InputArgument::REQUIRED, 'The id of the vetting actor'); } - protected function execute(InputInterface $input, OutputInterface $output): int - { - $nameId = new NameId($input->getArgument('name-id')); - $institutionText = $input->getArgument('institution'); + public function __invoke( + #[Argument(description: 'The NameID of the identity to create', name: 'name-id')] + string $nameId, + #[Argument(description: 'The institution of the identity to create', name: 'institution')] + string $institution, + #[Argument(description: 'The Common Name of the identity to create', name: 'common-name')] + string $commonName, + #[Argument(description: 'The e-mail address of the identity to create', name: 'email')] + string $email, + #[Argument(description: 'The preferred locale of the identity to create', name: 'preferred-locale')] + string $preferredLocale, + #[Argument(description: 'The id of the vetting actor', name: 'actor-id')] + string $actorId, + OutputInterface $output + ): int { + $nameId = new NameId($nameId); + $institutionText = $institution; $institution = new Institution($institutionText); - $commonName = $input->getArgument('common-name'); - $email = $input->getArgument('email'); - $preferredLocale = $input->getArgument('preferred-locale'); - $actorId = $input->getArgument('actor-id'); $this->bootstrapService->enrichEventMetadata($actorId); diff --git a/src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapIdentityWithYubikeySecondFactorCommand.php b/src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapIdentityWithYubikeySecondFactorCommand.php index 7b62be0d6..45d615c98 100644 --- a/src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapIdentityWithYubikeySecondFactorCommand.php +++ b/src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapIdentityWithYubikeySecondFactorCommand.php @@ -26,10 +26,8 @@ use Surfnet\StepupMiddleware\CommandHandlingBundle\Identity\Command\BootstrapIdentityWithYubikeySecondFactorCommand as BootstrapIdentityWithYubikeySecondFactorIdentityCommand; use Surfnet\StepupMiddleware\MiddlewareBundle\Service\TransactionHelper; +use Symfony\Component\Console\Attribute\Argument; use Symfony\Component\Console\Attribute\AsCommand; -use Symfony\Component\Console\Command\Command; -use Symfony\Component\Console\Input\InputArgument; -use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; /** @@ -39,34 +37,29 @@ name: 'middleware:bootstrap:identity-with-yubikey', description: 'Creates an identity with a vetted Yubikey second factor', )] -final class BootstrapIdentityWithYubikeySecondFactorCommand extends Command +final class BootstrapIdentityWithYubikeySecondFactorCommand { - protected function configure(): void + public function __construct(private readonly IdentityRepository $projectionRepository, private readonly TransactionHelper $transactionHelper) { - $this - ->addArgument('name-id', InputArgument::REQUIRED, 'The NameID of the identity to create') - ->addArgument('institution', InputArgument::REQUIRED, 'The institution of the identity to create') - ->addArgument('common-name', InputArgument::REQUIRED, 'The Common Name of the identity to create') - ->addArgument('email', InputArgument::REQUIRED, 'The e-mail address of the identity to create') - ->addArgument('preferred-locale', InputArgument::REQUIRED, 'The preferred locale of the identity to create') - ->addArgument( - 'yubikey', - InputArgument::REQUIRED, - 'The public ID of the Yubikey. Remove the last 32 characters of a Yubikey OTP to acquire this.', - ); - } - - public function __construct( - private readonly IdentityRepository $projectionRepository, - private readonly TransactionHelper $transactionHelper, - ) { - parent::__construct(); } - protected function execute(InputInterface $input, OutputInterface $output): int - { - $nameId = new NameId($input->getArgument('name-id')); - $institution = new Institution($input->getArgument('institution')); + public function __invoke( + #[Argument(description: 'The NameID of the identity to create', name: 'name-id')] + string $nameId, + #[Argument(description: 'The institution of the identity to create', name: 'institution')] + string $institution, + #[Argument(description: 'The Common Name of the identity to create', name: 'common-name')] + string $commonName, + #[Argument(description: 'The e-mail address of the identity to create', name: 'email')] + string $email, + #[Argument(description: 'The preferred locale of the identity to create', name: 'preferred-locale')] + string $preferredLocale, + #[Argument(description: 'The public ID of the Yubikey. Remove the last 32 characters of a Yubikey OTP to acquire this.', name: 'yubikey')] + string $yubikey, + OutputInterface $output + ): int { + $nameId = new NameId($nameId); + $institution = new Institution($institution); if ($this->projectionRepository->hasIdentityWithNameIdAndInstitution($nameId, $institution)) { $output->writeln( @@ -83,14 +76,14 @@ protected function execute(InputInterface $input, OutputInterface $output): int $command = new BootstrapIdentityWithYubikeySecondFactorIdentityCommand(); $command->UUID = (string)Uuid::uuid4(); $command->identityId = (string)Uuid::uuid4(); - $command->nameId = $input->getArgument('name-id'); - $command->institution = $input->getArgument('institution'); - $command->commonName = $input->getArgument('common-name'); - $command->email = $input->getArgument('email'); - $command->preferredLocale = $input->getArgument('preferred-locale'); + $command->nameId = $nameId; + $command->institution = $institution; + $command->commonName = $commonName; + $command->email = $email; + $command->preferredLocale = $preferredLocale; $secondFactorId = (string)Uuid::uuid4(); $command->secondFactorId = $secondFactorId; - $command->yubikeyPublicId = $input->getArgument('yubikey'); + $command->yubikeyPublicId = $yubikey; $this->transactionHelper->beginTransaction(); diff --git a/src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapSmsSecondFactorCommand.php b/src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapSmsSecondFactorCommand.php index 28a68ca92..0154146d8 100644 --- a/src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapSmsSecondFactorCommand.php +++ b/src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapSmsSecondFactorCommand.php @@ -24,54 +24,34 @@ use Surfnet\Stepup\Identity\Value\NameId; use Surfnet\StepupMiddleware\MiddlewareBundle\Service\BootstrapCommandService; use Surfnet\StepupMiddleware\MiddlewareBundle\Service\TransactionHelper; +use Symfony\Component\Console\Attribute\Argument; use Symfony\Component\Console\Attribute\AsCommand; -use Symfony\Component\Console\Command\Command; -use Symfony\Component\Console\Input\InputArgument; -use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; #[AsCommand( name: 'middleware:bootstrap:sms', description: 'Creates a SMS second factor for a specified user' )] -final class BootstrapSmsSecondFactorCommand extends Command +final class BootstrapSmsSecondFactorCommand { - public function __construct( - private readonly BootstrapCommandService $bootstrapService, - private readonly TransactionHelper $transactionHelper, - ) { - parent::__construct(); - } - - protected function configure(): void + public function __construct(private readonly BootstrapCommandService $bootstrapService, private readonly TransactionHelper $transactionHelper) { - $this - ->addArgument('name-id', InputArgument::REQUIRED, 'The NameID of the identity to create') - ->addArgument('institution', InputArgument::REQUIRED, 'The institution of the identity to create') - ->addArgument( - 'phone-number', - InputArgument::REQUIRED, - 'The phone number of the user should be formatted like "+31 (0) 612345678"', - ) - ->addArgument( - 'registration-status', - InputArgument::REQUIRED, - 'Valid arguments: unverified, verified, vetted', - ) - ->addArgument('actor-id', InputArgument::REQUIRED, 'The id of the vetting actor'); } - protected function execute(InputInterface $input, OutputInterface $output): int + public function __invoke(#[Argument(description: 'The NameID of the identity to create', name: 'name-id')] + string $nameId, #[Argument(description: 'The institution of the identity to create', name: 'institution')] + string $institution, #[Argument(description: 'The phone number of the user should be formatted like "+31 (0) 612345678"', name: 'phone-number')] + string $phoneNumber, #[Argument(description: 'Valid arguments: unverified, verified, vetted', name: 'registration-status')] + string $registrationStatus, #[Argument(description: 'The id of the vetting actor', name: 'actor-id')] + string $actorId, OutputInterface $output): int { - $registrationStatus = $input->getArgument('registration-status'); $this->bootstrapService->validRegistrationStatus($registrationStatus); - $nameId = new NameId($input->getArgument('name-id')); - $institutionText = $input->getArgument('institution'); + $nameId = new NameId($nameId); + $institutionText = $institution; $institution = new Institution($institutionText); $mailVerificationRequired = $this->bootstrapService->requiresMailVerification($institutionText); - $phoneNumber = $input->getArgument('phone-number'); - $actorId = $input->getArgument('actor-id'); + $this->bootstrapService->enrichEventMetadata($actorId); if (!$this->bootstrapService->identityExists($nameId, $institution)) { $output->writeln( diff --git a/src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapYubikeySecondFactorCommand.php b/src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapYubikeySecondFactorCommand.php index bc0744d7c..9be3326c3 100644 --- a/src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapYubikeySecondFactorCommand.php +++ b/src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapYubikeySecondFactorCommand.php @@ -24,55 +24,40 @@ use Surfnet\Stepup\Identity\Value\NameId; use Surfnet\StepupMiddleware\MiddlewareBundle\Service\BootstrapCommandService; use Surfnet\StepupMiddleware\MiddlewareBundle\Service\TransactionHelper; +use Symfony\Component\Console\Attribute\Argument; use Symfony\Component\Console\Attribute\AsCommand; -use Symfony\Component\Console\Command\Command; -use Symfony\Component\Console\Input\InputArgument; -use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; #[AsCommand( name: 'middleware:bootstrap:yubikey', description: 'Creates a Yubikey second factor for a specified user' )] -final class BootstrapYubikeySecondFactorCommand extends Command +final class BootstrapYubikeySecondFactorCommand { - public function __construct( - private readonly BootstrapCommandService $bootstrapService, - private readonly TransactionHelper $transactionHelper, - ) { - parent::__construct(); - } - - protected function configure(): void + public function __construct(private readonly BootstrapCommandService $bootstrapService, private readonly TransactionHelper $transactionHelper) { - $this - ->addArgument('name-id', InputArgument::REQUIRED, 'The NameID of the identity to create') - ->addArgument('institution', InputArgument::REQUIRED, 'The institution of the identity to create') - ->addArgument( - 'yubikey', - InputArgument::REQUIRED, - 'The public ID of the Yubikey. Remove the last 32 characters of a Yubikey OTP to acquire this.', - ) - ->addArgument( - 'registration-status', - InputArgument::REQUIRED, - 'Valid arguments: unverified, verified, vetted', - ) - ->addArgument('actor-id', InputArgument::REQUIRED, 'The id of the vetting actor'); } - protected function execute(InputInterface $input, OutputInterface $output): int - { - $registrationStatus = $input->getArgument('registration-status'); + public function __invoke( + #[Argument(description: 'The NameID of the identity to create', name: 'name-id')] + string $nameId, + #[Argument(description: 'The institution of the identity to create', name: 'institution')] + string $institution, + #[Argument(description: 'The public ID of the Yubikey. Remove the last 32 characters of a Yubikey OTP to acquire this.', name: 'yubikey')] + string $yubikey, + #[Argument(description: 'Valid arguments: unverified, verified, vetted', name: 'registration-status')] + string $registrationStatus, + #[Argument(description: 'The id of the vetting actor', name: 'actor-id')] + string $actorId, + OutputInterface $output + ): int { $this->bootstrapService->validRegistrationStatus($registrationStatus); - $nameId = new NameId($input->getArgument('name-id')); - $institutionText = $input->getArgument('institution'); + $nameId = new NameId($nameId); + $institutionText = $institution; $institution = new Institution($institutionText); $mailVerificationRequired = $this->bootstrapService->requiresMailVerification($institutionText); - $registrationStatus = $input->getArgument('registration-status'); - $yubikey = $input->getArgument('yubikey'); - $actorId = $input->getArgument('actor-id'); + $this->bootstrapService->enrichEventMetadata($actorId); if (!$this->bootstrapService->identityExists($nameId, $institution)) { $output->writeln( diff --git a/src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/MigrateSecondFactorCommand.php b/src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/MigrateSecondFactorCommand.php index a2a463077..80c5b97ee 100644 --- a/src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/MigrateSecondFactorCommand.php +++ b/src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/MigrateSecondFactorCommand.php @@ -26,10 +26,8 @@ use Surfnet\StepupMiddleware\ApiBundle\Identity\Entity\VettedSecondFactor; use Surfnet\StepupMiddleware\MiddlewareBundle\Service\BootstrapCommandService; use Surfnet\StepupMiddleware\MiddlewareBundle\Service\TransactionHelper; +use Symfony\Component\Console\Attribute\Argument; use Symfony\Component\Console\Attribute\AsCommand; -use Symfony\Component\Console\Command\Command; -use Symfony\Component\Console\Input\InputArgument; -use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; #[AsCommand( @@ -37,39 +35,33 @@ description: 'Migrates the tokens of an identity to a new institution while preserving the old tokens' ) ] -final class MigrateSecondFactorCommand extends Command +final class MigrateSecondFactorCommand { - public function __construct( - private readonly BootstrapCommandService $bootstrapService, - private readonly TransactionHelper $transactionHelper, - ) { - parent::__construct(); - } - - protected function configure(): void + public function __construct(private readonly BootstrapCommandService $bootstrapService, private readonly TransactionHelper $transactionHelper) { - $this - ->addArgument( - 'old-name-id', - InputArgument::REQUIRED, - 'The old NameID of the identity used as the source of the tokens to move', - ) - ->addArgument( - 'new-name-id', - InputArgument::REQUIRED, - 'The new NameID of the identity to move the tokens to', - ) - ->addArgument('target-institution', InputArgument::OPTIONAL, 'The institution of the target identity') - ->addArgument('email', InputArgument::OPTIONAL, 'The e-mail address of the identity to create'); } - protected function execute(InputInterface $input, OutputInterface $output): int - { - $sourceNameId = new NameId($input->getArgument('old-name-id')); - $targetNameId = new NameId($input->getArgument('new-name-id')); + public function __invoke( + #[Argument(description: 'The old NameID of the identity used as the source of the tokens to move', name: 'old-name-id')] + string $oldNameId, + #[Argument(description: 'The new NameID of the identity to move the tokens to', name: 'new-name-id')] + string $newNameId, + #[Argument(description: 'The institution of the target identity', name: 'target-institution')] + ?string $targetInstitution, + #[Argument(description: 'The e-mail address of the identity to create', name: 'email')] + ?string $email, + OutputInterface $output + ): int { + $sourceNameId = new NameId($oldNameId); + $targetNameId = new NameId($newNameId); $output->writeln(sprintf('Starting token migration for %s', $sourceNameId)); $sourceIdentity = $this->bootstrapService->getIdentityByNameId($sourceNameId); + + if ($sourceIdentity === null) { + throw new InvalidArgumentException("oldNameId could net be resolved to a Identity."); + } + $targetIdentity = $this->bootstrapService->getIdentityByNameId($targetNameId); try { @@ -81,7 +73,7 @@ protected function execute(InputInterface $input, OutputInterface $output): int sprintf('Target with NameID %s does not exist, creating new identity', $targetNameId), ); - $identityId = $this->createIdentity($targetNameId, $sourceIdentity, $input); + $identityId = $this->createIdentity($targetNameId, $sourceIdentity, $targetInstitution, $email); $output->writeln( sprintf('Successfully created identity with UUID %s', $identityId), @@ -129,10 +121,8 @@ protected function execute(InputInterface $input, OutputInterface $output): int /** * @return string */ - private function createIdentity(NameId $targetNameId, Identity $sourceIdentity, InputInterface $input): string + private function createIdentity(NameId $targetNameId, Identity $sourceIdentity, ?string $newInstitution, ?string $newEmail): string { - $newInstitution = $input->getArgument('target-institution'); - $newEmail = $input->getArgument('email'); if (!$newInstitution || !$newEmail) { throw new InvalidArgumentException("Missing email and institution"); } From e92e4ddae269814f05c12186d3530b0e77d5b5f0 Mon Sep 17 00:00:00 2001 From: Johan Kromhout Date: Wed, 26 Nov 2025 14:41:06 +0100 Subject: [PATCH 21/32] Require `doctrine/annotations` because `jms/translation-bundle` depends on it. Running `./bin/console` produces an error without it as jms/translation-bundle tries to instatiate it. --- composer.json | 1 + composer.lock | 79 ++++++++++++++++++++++++++++++++++++++++++++++++++- symfony.lock | 9 ++++++ 3 files changed, 88 insertions(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 75407ee66..80a34d30b 100644 --- a/composer.json +++ b/composer.json @@ -25,6 +25,7 @@ "ext-pdo": "*", "broadway/broadway": "^2.5", "broadway/event-store-dbal": "^0.6", + "doctrine/annotations": "^2.0", "doctrine/doctrine-bundle": "^2.13.2", "doctrine/doctrine-migrations-bundle": "^3.4.1", "doctrine/orm": "^3.3.2", diff --git a/composer.lock b/composer.lock index a4c3b9fbc..bf36ea57f 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "78df28480994140b376e2bb8d4c3104c", + "content-hash": "6400ab9c8bde2340c2bdda954f98b18d", "packages": [ { "name": "beberlei/assert", @@ -416,6 +416,83 @@ ], "time": "2025-11-06T11:46:17+00:00" }, + { + "name": "doctrine/annotations", + "version": "2.0.2", + "source": { + "type": "git", + "url": "https://github.com/doctrine/annotations.git", + "reference": "901c2ee5d26eb64ff43c47976e114bf00843acf7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/annotations/zipball/901c2ee5d26eb64ff43c47976e114bf00843acf7", + "reference": "901c2ee5d26eb64ff43c47976e114bf00843acf7", + "shasum": "" + }, + "require": { + "doctrine/lexer": "^2 || ^3", + "ext-tokenizer": "*", + "php": "^7.2 || ^8.0", + "psr/cache": "^1 || ^2 || ^3" + }, + "require-dev": { + "doctrine/cache": "^2.0", + "doctrine/coding-standard": "^10", + "phpstan/phpstan": "^1.10.28", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "symfony/cache": "^5.4 || ^6.4 || ^7", + "vimeo/psalm": "^4.30 || ^5.14" + }, + "suggest": { + "php": "PHP 8.0 or higher comes with attributes, a native replacement for annotations" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "Docblock Annotations Parser", + "homepage": "https://www.doctrine-project.org/projects/annotations.html", + "keywords": [ + "annotations", + "docblock", + "parser" + ], + "support": { + "issues": "https://github.com/doctrine/annotations/issues", + "source": "https://github.com/doctrine/annotations/tree/2.0.2" + }, + "abandoned": true, + "time": "2024-09-05T10:17:24+00:00" + }, { "name": "doctrine/collections", "version": "2.4.0", diff --git a/symfony.lock b/symfony.lock index 047406d8c..862a56e38 100644 --- a/symfony.lock +++ b/symfony.lock @@ -35,6 +35,15 @@ "composer/xdebug-handler": { "version": "1.4.2" }, + "doctrine/annotations": { + "version": "2.0", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "main", + "version": "1.10", + "ref": "64d8583af5ea57b7afa4aba4b159907f3a148b05" + } + }, "doctrine/collections": { "version": "1.6.5" }, From 4505834df23a26ff6f8c815bd96c68470a29599c Mon Sep 17 00:00:00 2001 From: Johan Kromhout Date: Wed, 26 Nov 2025 15:39:11 +0100 Subject: [PATCH 22/32] Prior to this change, the custom console commands would not be available in the cli, because they were not autoconfigured. This change ensures they are registered by adding autoconfigure to the console_commands.yml service definition. And adds a test to validate that. And adds autoconfigure to all other service definitions to ensure all attribute services can be picked up. --- config/services.yaml | 12 +++ .../ApiBundle/Resources/config/projection.yml | 3 + .../Resources/config/command_handlers.yml | 3 + .../Resources/config/event_sourcing.yml | 2 + .../Resources/config/pipeline.yml | 3 + .../Resources/config/processors.yml | 3 + .../Resources/config/projection.yml | 3 + .../Resources/config/repositories.yml | 3 + .../Resources/config/console_commands.yml | 4 + .../Resources/config/event_replaying.yml | 3 + .../Resources/config/services.yml | 6 ++ .../ConsoleCommandRegistrationTest.php | 87 +++++++++++++++++++ 12 files changed, 132 insertions(+) create mode 100644 src/Surfnet/StepupMiddleware/MiddlewareBundle/Tests/Console/ConsoleCommandRegistrationTest.php diff --git a/config/services.yaml b/config/services.yaml index d392d878b..77270a418 100644 --- a/config/services.yaml +++ b/config/services.yaml @@ -9,6 +9,18 @@ services: autoconfigure: true public: false +# # Load services from src/ directory +# Surfnet\: +# resource: '../src/Surfnet/' +# exclude: +# - '../src/Surfnet/DataFixtures/' +# - '../src/Surfnet/Migrations/' +# - '../src/Surfnet/**/Tests/' +# - '../src/Surfnet/*/Entity/' +# - '../src/Surfnet/*/Event/' +# - '../src/Surfnet/*/Value/' +# - '../src/Surfnet/StepupMiddleware/CommandHandlingBundle/*/Command/' + Surfnet\Stepup\Helper\SecondFactorProvePossessionHelper: arguments: - "@surfnet_stepup.service.second_factor_type" diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Resources/config/projection.yml b/src/Surfnet/StepupMiddleware/ApiBundle/Resources/config/projection.yml index 1fc45e6a6..c0799aa3f 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Resources/config/projection.yml +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Resources/config/projection.yml @@ -1,4 +1,7 @@ services: + _defaults: + autoconfigure: true + surfnet_stepup_middleware_api.projector.identity: class: Surfnet\StepupMiddleware\ApiBundle\Identity\Projector\IdentityProjector arguments: diff --git a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Resources/config/command_handlers.yml b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Resources/config/command_handlers.yml index 1e630ee48..4c9c3eca6 100644 --- a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Resources/config/command_handlers.yml +++ b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Resources/config/command_handlers.yml @@ -1,4 +1,7 @@ services: + _defaults: + autoconfigure: true + surfnet_stepup_middleware_command_handling.command_handler.identity_command_handler: class: Surfnet\StepupMiddleware\CommandHandlingBundle\Identity\CommandHandler\IdentityCommandHandler arguments: diff --git a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Resources/config/event_sourcing.yml b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Resources/config/event_sourcing.yml index 520cd0786..778db74aa 100644 --- a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Resources/config/event_sourcing.yml +++ b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Resources/config/event_sourcing.yml @@ -1,4 +1,6 @@ services: + _defaults: + autoconfigure: true # BC aliases Surfnet\StepupMiddleware\CommandHandlingBundle\EventSourcing\MetadataEnricher: "@surfnet_stepup_middleware_command_handling.metadata_enricher.actor" diff --git a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Resources/config/pipeline.yml b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Resources/config/pipeline.yml index 7ccdae563..d21558bf2 100644 --- a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Resources/config/pipeline.yml +++ b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Resources/config/pipeline.yml @@ -1,4 +1,7 @@ services: + _defaults: + autoconfigure: true + pipeline: alias: surfnet_stepup_middleware_command_handling.pipeline.transaction_aware_pipeline public: true diff --git a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Resources/config/processors.yml b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Resources/config/processors.yml index bfa786669..79c65c757 100644 --- a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Resources/config/processors.yml +++ b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Resources/config/processors.yml @@ -1,4 +1,7 @@ services: + _defaults: + autoconfigure: true + surfnet_stepup_middleware_command_handling.processor.email_verification_email: class: Surfnet\StepupMiddleware\CommandHandlingBundle\Processor\EmailVerificationEmailProcessor arguments: diff --git a/src/Surfnet/StepupMiddleware/GatewayBundle/Resources/config/projection.yml b/src/Surfnet/StepupMiddleware/GatewayBundle/Resources/config/projection.yml index e1106de72..673bb720a 100644 --- a/src/Surfnet/StepupMiddleware/GatewayBundle/Resources/config/projection.yml +++ b/src/Surfnet/StepupMiddleware/GatewayBundle/Resources/config/projection.yml @@ -1,4 +1,7 @@ services: + _defaults: + autoconfigure: true + surfnet_stepup_middleware_gateway.projector.institution_configuration: class: Surfnet\StepupMiddleware\GatewayBundle\Projector\InstitutionConfigurationProjector arguments: diff --git a/src/Surfnet/StepupMiddleware/GatewayBundle/Resources/config/repositories.yml b/src/Surfnet/StepupMiddleware/GatewayBundle/Resources/config/repositories.yml index 8a4fbae31..7b05f1c4d 100644 --- a/src/Surfnet/StepupMiddleware/GatewayBundle/Resources/config/repositories.yml +++ b/src/Surfnet/StepupMiddleware/GatewayBundle/Resources/config/repositories.yml @@ -1,4 +1,7 @@ services: + _defaults: + autoconfigure: true + middleware.gateway_repository.saml_entities: class: Surfnet\StepupMiddleware\GatewayBundle\Entity\SamlEntityRepository factory: [ "@doctrine.orm.gateway_entity_manager", getRepository ] diff --git a/src/Surfnet/StepupMiddleware/MiddlewareBundle/Resources/config/console_commands.yml b/src/Surfnet/StepupMiddleware/MiddlewareBundle/Resources/config/console_commands.yml index 2f83ea214..d274fc65f 100644 --- a/src/Surfnet/StepupMiddleware/MiddlewareBundle/Resources/config/console_commands.yml +++ b/src/Surfnet/StepupMiddleware/MiddlewareBundle/Resources/config/console_commands.yml @@ -1,4 +1,8 @@ services: + _defaults: + autoconfigure: true + public: true + Surfnet\StepupMiddleware\MiddlewareBundle\Service\BootstrapCommandService: arguments: - "@surfnet_stepup_middleware_command_handling.pipeline.transaction_aware_pipeline" diff --git a/src/Surfnet/StepupMiddleware/MiddlewareBundle/Resources/config/event_replaying.yml b/src/Surfnet/StepupMiddleware/MiddlewareBundle/Resources/config/event_replaying.yml index ed1533dc7..b09fd769d 100644 --- a/src/Surfnet/StepupMiddleware/MiddlewareBundle/Resources/config/event_replaying.yml +++ b/src/Surfnet/StepupMiddleware/MiddlewareBundle/Resources/config/event_replaying.yml @@ -1,4 +1,7 @@ services: + _defaults: + autoconfigure: true + middleware.event_replay.event_collection: class: Surfnet\StepupMiddleware\MiddlewareBundle\EventSourcing\EventCollection arguments: diff --git a/src/Surfnet/StepupMiddleware/MiddlewareBundle/Resources/config/services.yml b/src/Surfnet/StepupMiddleware/MiddlewareBundle/Resources/config/services.yml index d15802dee..e3528efe9 100644 --- a/src/Surfnet/StepupMiddleware/MiddlewareBundle/Resources/config/services.yml +++ b/src/Surfnet/StepupMiddleware/MiddlewareBundle/Resources/config/services.yml @@ -9,6 +9,12 @@ services: alias: 'monolog.logger' public: true + # Load services from src/ directory + Surfnet\StepupMiddleware\MiddlewareBundle\: + resource: '../../' + exclude: + - '../../Tests' + surfnet_stepup_middleware_middleware.dbal_connection_helper: class: Surfnet\StepupMiddleware\MiddlewareBundle\Service\DBALConnectionHelper arguments: diff --git a/src/Surfnet/StepupMiddleware/MiddlewareBundle/Tests/Console/ConsoleCommandRegistrationTest.php b/src/Surfnet/StepupMiddleware/MiddlewareBundle/Tests/Console/ConsoleCommandRegistrationTest.php new file mode 100644 index 000000000..78d9d0b23 --- /dev/null +++ b/src/Surfnet/StepupMiddleware/MiddlewareBundle/Tests/Console/ConsoleCommandRegistrationTest.php @@ -0,0 +1,87 @@ +application = new Application($kernel); + } + + /** + * Data provider for console command registration tests. + * + * @return array + */ + public static function consoleCommandProvider(): array + { + return [ + 'ReplayEventsCommand' => [ + 'commandName' => 'middleware:event:replay', + ], + 'ReplaySpecificEventsCommand' => [ + 'commandName' => 'stepup:event:replay', + ], + 'BootstrapIdentityCommand' => [ + 'commandName' => 'middleware:bootstrap:identity', + ], + 'BootstrapIdentityWithYubikeySecondFactorCommand' => [ + 'commandName' => 'middleware:bootstrap:identity-with-yubikey', + ], + 'BootstrapSmsSecondFactorCommand' => [ + 'commandName' => 'middleware:bootstrap:sms', + ], + 'BootstrapYubikeySecondFactorCommand' => [ + 'commandName' => 'middleware:bootstrap:yubikey', + ], + 'BootstrapGsspSecondFactorCommand' => [ + 'commandName' => 'middleware:bootstrap:gssp', + ], + 'MigrateSecondFactorCommand' => [ + 'commandName' => 'middleware:migrate:vetted-tokens', + ], + 'EmailVerifiedSecondFactorRemindersCommand' => [ + 'commandName' => 'middleware:cron:email-reminder', + ], + ]; + } + + #[Test] + #[DataProvider('consoleCommandProvider')] + #[DoesNotPerformAssertions] + public function console_command_is_registered(string $commandName): void + { + $this->application->find($commandName); + } +} From dec15de073fb61d0975766084671d635aca97919 Mon Sep 17 00:00:00 2001 From: Johan Kromhout Date: Thu, 27 Nov 2025 11:31:05 +0100 Subject: [PATCH 23/32] Use attributes for more complicated commands --- README.md | 8 +- ci/qa/phpstan-baseline.neon | 36 --- ...ilVerifiedSecondFactorRemindersCommand.php | 72 ++--- .../Console/Command/ReplayEventsCommand.php | 48 ++- .../Command/ReplaySpecificEventsCommand.php | 42 +-- .../Resources/config/services.yml | 6 - ...rifiedSecondFactorRemindersCommandTest.php | 276 ++++++++++++++++++ 7 files changed, 334 insertions(+), 154 deletions(-) create mode 100644 src/Surfnet/StepupMiddleware/MiddlewareBundle/Tests/Console/Command/EmailVerifiedSecondFactorRemindersCommandTest.php diff --git a/README.md b/README.md index bde2a080c..50060289c 100644 --- a/README.md +++ b/README.md @@ -7,19 +7,19 @@ This component is part of "Step-up Authentication as-a Service". See [Stepup-Dep ## Requirements - * PHP 5.6+ or PHP7 + * PHP 8.2 * [Composer](https://getcomposer.org/) * A web server (Apache, Nginx) - * MariaDB 10 + * MariaDB 10.6 * A working [Gateway](https://github.com/OpenConext/Stepup-Gateway) ## Installation Clone the repository or download the archive to a directory. Install the dependencies by running `composer install` and fill out the database credentials et cetera. -Make sure to run database migrations using `bin/console middleware:migrations:migrate`. +Make sure to run database migrations using `bin/console doctrine:migrations:migrate`. -When using 'Stepup-Deploy' the 'deploy' entity manager should be used in order to use the correct credentials e.g. `bin/console middleware:migrations:migrate --em=deploy` +When using 'Stepup-Deploy' the 'deploy' entity manager should be used in order to use the correct credentials e.g. `bin/console doctrine:migrations:migrate --em=deploy` ## Management API diff --git a/ci/qa/phpstan-baseline.neon b/ci/qa/phpstan-baseline.neon index 351a6ce71..81744af39 100644 --- a/ci/qa/phpstan-baseline.neon +++ b/ci/qa/phpstan-baseline.neon @@ -4566,30 +4566,6 @@ parameters: count: 1 path: ../../src/Surfnet/StepupMiddleware/ManagementBundle/Validator/ServiceProviderConfigurationValidator.php - - - message: '#^Parameter \#1 \$value of static method Assert\\Assertion\:\:nullOrDate\(\) expects string\|null, mixed given\.$#' - identifier: argument.type - count: 1 - path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/EmailVerifiedSecondFactorRemindersCommand.php - - - - message: '#^Parameter \#2 \$datetime of static method DateTime\:\:createFromFormat\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/EmailVerifiedSecondFactorRemindersCommand.php - - - - message: '#^Parameter \#2 \.\.\.\$values of function sprintf expects bool\|float\|int\|string\|null, mixed given\.$#' - identifier: argument.type - count: 1 - path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/EmailVerifiedSecondFactorRemindersCommand.php - - - - message: '#^Property Surfnet\\StepupMiddleware\\CommandHandlingBundle\\Identity\\Command\\SendVerifiedSecondFactorRemindersCommand\:\:\$dryRun \(bool\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/EmailVerifiedSecondFactorRemindersCommand.php - - message: '#^Cannot access property \$id on Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Entity\\Identity\|null\.$#' identifier: property.nonObject @@ -4614,18 +4590,6 @@ parameters: count: 1 path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/MigrateSecondFactorCommand.php - - - message: '#^Cannot cast mixed to int\.$#' - identifier: cast.int - count: 1 - path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/ReplayEventsCommand.php - - - - message: '#^Parameter \#2 \.\.\.\$values of function sprintf expects bool\|float\|int\|string\|null, mixed given\.$#' - identifier: argument.type - count: 1 - path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/ReplayEventsCommand.php - - message: '#^Parameter \#1 \$projector of method Surfnet\\StepupMiddleware\\MiddlewareBundle\\Service\\TransactionAwareEventDispatcher\:\:registerProjector\(\) expects Broadway\\EventHandling\\EventListener, mixed given\.$#' identifier: argument.type diff --git a/src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/EmailVerifiedSecondFactorRemindersCommand.php b/src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/EmailVerifiedSecondFactorRemindersCommand.php index 51fc71928..35e9cc6f6 100644 --- a/src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/EmailVerifiedSecondFactorRemindersCommand.php +++ b/src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/EmailVerifiedSecondFactorRemindersCommand.php @@ -30,9 +30,8 @@ use Surfnet\StepupMiddleware\CommandHandlingBundle\Pipeline\TransactionAwarePipeline; use Surfnet\StepupMiddleware\MiddlewareBundle\Service\DBALConnectionHelper; use Symfony\Component\Console\Attribute\AsCommand; +use Symfony\Component\Console\Attribute\Option; use Symfony\Component\Console\Command\Command; -use Symfony\Component\Console\Input\InputInterface; -use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Output\OutputInterface; /** @@ -41,6 +40,9 @@ * The command utilizes a specific service for this task (VerifiedSecondFactorReminderService). Input validation is * performed on the incoming request parameters. * + * @TODO Once on Symfony 7.4, remove the `extends Command` and the parent constructor call + * @see https://github.com/symfony/symfony/commit/1886c105df2772c0a1a17fa739318c3bfb731ce9 + * * @SuppressWarnings("PHPMD.CouplingBetweenObjects") */ #[AsCommand( @@ -49,46 +51,38 @@ )] final class EmailVerifiedSecondFactorRemindersCommand extends Command { - protected function configure(): void - { - $this - ->addOption( - 'dry-run', - null, - InputOption::VALUE_NONE, - 'Run in dry mode, not sending any email', - ) - ->addOption( - 'date', - null, - InputOption::VALUE_OPTIONAL, - 'The date (Y-m-d) that should be used for sending reminder email messages, defaults to TODAY - 7', - ); - } - public function __construct( private readonly TransactionAwarePipeline $pipeline, private readonly BufferedEventBus $eventBus, private readonly DBALConnectionHelper $connection, - private readonly LoggerInterface $logger, + private readonly LoggerInterface $logger ) { parent::__construct(); } - protected function execute(InputInterface $input, OutputInterface $output): int - { + public function __invoke( + OutputInterface $output, + #[Option(description: 'Run in dry mode, not sending any email', name: 'dry-run')] + bool $dryRun = false, + #[Option(description: 'The date (Y-m-d) that should be used for sending reminder email messages, defaults to TODAY - 7', name: 'date')] + ?string $date = null, + ): int { try { - $this->validateInput($input); + Assertion::nullOrDate( + $date, + 'Y-m-d', + 'Expected date to be a string and formatted in the Y-m-d date format', + ); } catch (InvalidArgumentException $e) { $output->writeln('' . $e->getMessage() . ''); $this->logger->error(sprintf('Invalid arguments passed to the %s', $this->getName()), [$e->getMessage()]); return 1; } - $date = new DateTime(); - $date->sub(new DateInterval('P7D')); - if ($input->hasOption('date') && !is_null($input->getOption('date'))) { - $receivedDate = $input->getOption('date'); + $now = new DateTime(); + $now->sub(new DateInterval('P7D')); + if ($date) { + $receivedDate = $date; $date = DateTime::createFromFormat('Y-m-d', $receivedDate); if ($date === false) { $output->writeln( @@ -101,13 +95,8 @@ protected function execute(InputInterface $input, OutputInterface $output): int } } - $dryRun = false; - if ($input->hasOption('dry-run') && !is_null($input->getOption('dry-run'))) { - $dryRun = $input->getOption('dry-run'); - } - $command = new SendVerifiedSecondFactorRemindersCommand(); - $command->requestedAt = $date; + $command->requestedAt = $date ?: $now; $command->dryRun = $dryRun; $command->UUID = Uuid::uuid4()->toString(); @@ -124,21 +113,4 @@ protected function execute(InputInterface $input, OutputInterface $output): int } return 0; } - - private function validateInput(InputInterface $input): void - { - if ($input->hasOption('date')) { - $date = $input->getOption('date'); - Assertion::nullOrDate( - $date, - 'Y-m-d', - 'Expected date to be a string and formatted in the Y-m-d date format', - ); - } - - if ($input->hasOption('dry-run')) { - $dryRun = $input->getOption('dry-run'); - Assertion::nullOrBoolean($dryRun, 'Expected dry-run parameter to be a boolean value.'); - } - } } diff --git a/src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/ReplayEventsCommand.php b/src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/ReplayEventsCommand.php index 9ffd9648d..55d0c4536 100644 --- a/src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/ReplayEventsCommand.php +++ b/src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/ReplayEventsCommand.php @@ -20,11 +20,10 @@ use Surfnet\StepupMiddleware\MiddlewareBundle\Service\EventStreamReplayer; use Symfony\Component\Console\Attribute\AsCommand; -use Symfony\Component\Console\Command\Command; +use Symfony\Component\Console\Attribute\Option; use Symfony\Component\Console\Helper\FormatterHelper; use Symfony\Component\Console\Helper\QuestionHelper; use Symfony\Component\Console\Input\InputInterface; -use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Question\ConfirmationQuestion; @@ -33,34 +32,26 @@ description: 'Wipes all read models and repopulates the tables from the event store. Use the --no-interaction option to perform the event replay without the additional confirmation question.' )] -class ReplayEventsCommand extends Command +class ReplayEventsCommand { - public function __construct( - private readonly EventStreamReplayer $replayer, - private readonly string $environment, - ) { - parent::__construct(); - } - - protected function configure(): void + public function __construct(private readonly EventStreamReplayer $replayer, private readonly string $environment) { - $this - ->addOption( - 'increments', - 'i', - InputOption::VALUE_REQUIRED, - 'The amount of events that are replayed at once (repeated until all events are replayed)', - 1000, - ); } - protected function execute(InputInterface $input, OutputInterface $output): int - { - /** @var FormatterHelper $formatter */ - $formatter = $this->getHelper('formatter'); + public function __invoke( + OutputInterface $output, + InputInterface $input, + #[Option( + description: 'The amount of events that are replayed at once (repeated until all events are replayed)', + name: 'increments', + shortcut: 'i' + ) + ] + int $increments = 1000, + ): int { + $formatter = new FormatterHelper(); // Be careful, when using the no-interaction option you will not get the confirmation question - $noInteraction = $input->getOption('no-interaction'); if (!in_array($this->environment, ['dev_event_replay', 'prod_event_replay', 'smoketest_event_replay'])) { $output->writeln( @@ -78,8 +69,7 @@ protected function execute(InputInterface $input, OutputInterface $output): int return 1; } - /** @var QuestionHelper $interrogator */ - $interrogator = $this->getHelper('question'); + $interrogator = new QuestionHelper(); if ($this->environment === 'prod_event_replay') { $wantToRunOnProd = new ConfirmationQuestion( 'You have selected to run this on production. Have you disabled all access to the production ' @@ -93,12 +83,10 @@ protected function execute(InputInterface $input, OutputInterface $output): int return 1; } } - - $increments = (int)$input->getOption('increments'); if ($increments < 1) { $output->writeln( $formatter->formatBlock( - sprintf('Increments must be a positive integer, "%s" given', $input->getOption('increments')), + sprintf('Increments must be a positive integer, "%s" given', $increments), 'error', ), ); @@ -106,7 +94,7 @@ protected function execute(InputInterface $input, OutputInterface $output): int return 1; } - if (!$noInteraction) { + if ($input->isInteractive()) { $output->writeln(['', $formatter->formatBlock(['', 'WARNING!!!!', ''], 'error'), '']); $question = <<addOption( - self::OPTION_LIST_EVENTS, - null, - InputOption::VALUE_NONE, - 'List all events available to replay', - ) - ->addOption( - self::OPTION_LIST_PROJECTORS, - null, - InputOption::VALUE_NONE, - 'List all projectors available for which events can be replayed', - ); - } - public function __construct( private readonly EventCollection $collection, private readonly ProjectorCollection $projectorCollection, private readonly PastEventsService $pastEventsService, - private readonly TransactionAwareEventDispatcher $eventDispatcher, + private readonly TransactionAwareEventDispatcher $eventDispatcher ) { - parent::__construct(); } - protected function execute(InputInterface $input, OutputInterface $output): int - { + public function __invoke( + InputInterface $input, + OutputInterface $output, + #[Option(description: 'List all events available to replay', name: self::OPTION_LIST_EVENTS)] + bool $listEvents = false, + #[Option(description: 'List all projectors available for which events can be replayed', name: self::OPTION_LIST_PROJECTORS)] + bool $listProjectors = false, + ): int { $availableEvents = $this->collection->getEventNames(); $availableProjectors = $this->projectorCollection->getProjectorNames(); - if ($input->getOption(self::OPTION_LIST_EVENTS)) { + if ($listEvents) { $output->writeln('The following events can be replayed:'); $output->writeln($availableEvents === [] ? 'None.' : $availableEvents); return 0; } - if ($input->getOption(self::OPTION_LIST_PROJECTORS)) { + if ($listProjectors) { $output->writeln('Events can be replayed for the following projectors:'); $output->writeln($availableProjectors === [] ? 'None.' : $availableProjectors); @@ -90,8 +77,7 @@ protected function execute(InputInterface $input, OutputInterface $output): int return 1; } - /** @var QuestionHelper $questionHelper */ - $questionHelper = $this->getHelper('question'); + $questionHelper = new QuestionHelper(); $selectEventsQuestion = new ChoiceQuestion( 'Which events would you like to replay? Please supply a comma-separated list of numbers.', diff --git a/src/Surfnet/StepupMiddleware/MiddlewareBundle/Resources/config/services.yml b/src/Surfnet/StepupMiddleware/MiddlewareBundle/Resources/config/services.yml index e3528efe9..d15802dee 100644 --- a/src/Surfnet/StepupMiddleware/MiddlewareBundle/Resources/config/services.yml +++ b/src/Surfnet/StepupMiddleware/MiddlewareBundle/Resources/config/services.yml @@ -9,12 +9,6 @@ services: alias: 'monolog.logger' public: true - # Load services from src/ directory - Surfnet\StepupMiddleware\MiddlewareBundle\: - resource: '../../' - exclude: - - '../../Tests' - surfnet_stepup_middleware_middleware.dbal_connection_helper: class: Surfnet\StepupMiddleware\MiddlewareBundle\Service\DBALConnectionHelper arguments: diff --git a/src/Surfnet/StepupMiddleware/MiddlewareBundle/Tests/Console/Command/EmailVerifiedSecondFactorRemindersCommandTest.php b/src/Surfnet/StepupMiddleware/MiddlewareBundle/Tests/Console/Command/EmailVerifiedSecondFactorRemindersCommandTest.php new file mode 100644 index 000000000..b11ab36ad --- /dev/null +++ b/src/Surfnet/StepupMiddleware/MiddlewareBundle/Tests/Console/Command/EmailVerifiedSecondFactorRemindersCommandTest.php @@ -0,0 +1,276 @@ +pipeline = m::mock(TransactionAwarePipeline::class); + $this->eventBus = m::mock(BufferedEventBus::class); + $this->connection = m::mock(DBALConnectionHelper::class); + $this->logger = new NullLogger(); + + $this->command = new EmailVerifiedSecondFactorRemindersCommand( + $this->pipeline, + $this->eventBus, + $this->connection, + $this->logger, + ); + + $application = new Application(); + $application->add($this->command); + + $this->commandTester = new CommandTester($this->command); + } + + #[Test] + public function it_successfully_executes_with_default_date(): void + { + // Expect transaction handling + $this->connection->shouldReceive('beginTransaction')->once(); + $this->connection->shouldReceive('commit')->once(); + + // Capture the command passed to pipeline + $this->pipeline->shouldReceive('process') + ->once() + ->with(m::type(SendVerifiedSecondFactorRemindersCommand::class)) + ->andReturnUsing(function (SendVerifiedSecondFactorRemindersCommand $cmd) { + // Verify the command has correct properties + $this->assertInstanceOf(DateTime::class, $cmd->requestedAt); + $this->assertFalse($cmd->dryRun); + $this->assertNotEmpty($cmd->UUID); + + // Verify date is 7 days ago + $expectedDate = new DateTime(); + $expectedDate->sub(new DateInterval('P7D')); + $this->assertEquals($expectedDate->format('Y-m-d'), $cmd->requestedAt->format('Y-m-d')); + + return $cmd; + }); + + $this->eventBus->shouldReceive('flush')->once(); + + // Execute command + $exitCode = $this->commandTester->execute([]); + + $this->assertEquals(0, $exitCode); + } + + #[Test] + public function it_successfully_executes_with_custom_date(): void + { + $customDate = '2024-12-15'; + + // Expect transaction handling + $this->connection->shouldReceive('beginTransaction')->once(); + $this->connection->shouldReceive('commit')->once(); + + // Capture the command passed to pipeline + $this->pipeline->shouldReceive('process') + ->once() + ->with(m::type(SendVerifiedSecondFactorRemindersCommand::class)) + ->andReturnUsing(function (SendVerifiedSecondFactorRemindersCommand $cmd) use ($customDate) { + $this->assertEquals($customDate, $cmd->requestedAt->format('Y-m-d')); + $this->assertFalse($cmd->dryRun); + return $cmd; + }); + + $this->eventBus->shouldReceive('flush')->once(); + + // Execute command with --date option + $exitCode = $this->commandTester->execute([ + '--date' => $customDate, + ]); + + $this->assertEquals(0, $exitCode); + } + + #[Test] + public function it_successfully_executes_in_dry_run_mode(): void + { + // Expect transaction handling + $this->connection->shouldReceive('beginTransaction')->once(); + $this->connection->shouldReceive('commit')->once(); + + // Capture the command passed to pipeline + $this->pipeline->shouldReceive('process') + ->once() + ->with(m::type(SendVerifiedSecondFactorRemindersCommand::class)) + ->andReturnUsing(function (SendVerifiedSecondFactorRemindersCommand $cmd) { + $this->assertTrue($cmd->dryRun); + return $cmd; + }); + + $this->eventBus->shouldReceive('flush')->once(); + + // Execute command with --dry-run option + $exitCode = $this->commandTester->execute([ + '--dry-run' => true, + ]); + + $this->assertEquals(0, $exitCode); + } + + #[Test] + public function it_successfully_executes_with_both_date_and_dry_run(): void + { + $customDate = '2024-11-20'; + + // Expect transaction handling + $this->connection->shouldReceive('beginTransaction')->once(); + $this->connection->shouldReceive('commit')->once(); + + // Capture the command passed to pipeline + $this->pipeline->shouldReceive('process') + ->once() + ->with(m::type(SendVerifiedSecondFactorRemindersCommand::class)) + ->andReturnUsing(function (SendVerifiedSecondFactorRemindersCommand $cmd) use ($customDate) { + $this->assertEquals($customDate, $cmd->requestedAt->format('Y-m-d')); + $this->assertTrue($cmd->dryRun); + return $cmd; + }); + + $this->eventBus->shouldReceive('flush')->once(); + + // Execute command with both options + $exitCode = $this->commandTester->execute([ + '--date' => $customDate, + '--dry-run' => true, + ]); + + $this->assertEquals(0, $exitCode); + } + + #[Test] + public function it_returns_error_for_invalid_date_format(): void + { + $invalidDate = 'not-a-date'; + + // No transaction should be started for invalid input + $this->connection->shouldNotReceive('beginTransaction'); + $this->pipeline->shouldNotReceive('process'); + $this->eventBus->shouldNotReceive('flush'); + + // Execute command with invalid date + $exitCode = $this->commandTester->execute([ + '--date' => $invalidDate, + ]); + + $this->assertEquals(1, $exitCode); + $this->assertStringContainsString('date', $this->commandTester->getDisplay()); + } + + #[Test] + public function it_returns_error_for_incorrectly_formatted_date(): void + { + $invalidDate = '15-12-2024'; // Wrong format, should be Y-m-d + + // No transaction should be started for invalid input + $this->connection->shouldNotReceive('beginTransaction'); + $this->pipeline->shouldNotReceive('process'); + $this->eventBus->shouldNotReceive('flush'); + + // Execute command with incorrectly formatted date + $exitCode = $this->commandTester->execute([ + '--date' => $invalidDate, + ]); + + $this->assertEquals(1, $exitCode); + $this->assertStringContainsString('date', $this->commandTester->getDisplay()); + } + + #[Test] + public function it_rolls_back_transaction_on_exception(): void + { + // Expect transaction handling + $this->connection->shouldReceive('beginTransaction')->once(); + $this->connection->shouldReceive('rollBack')->once(); + + // Pipeline throws an exception + $exception = new Exception('Pipeline processing failed'); + $this->pipeline->shouldReceive('process') + ->once() + ->andThrow($exception); + + // Event bus should not be flushed when exception occurs + $this->eventBus->shouldNotReceive('flush'); + + // Execute command and expect exception to be re-thrown + $this->expectException(Exception::class); + $this->expectExceptionMessage('Pipeline processing failed'); + + $this->commandTester->execute([]); + } + + #[Test] + public function it_rolls_back_transaction_when_event_bus_flush_fails(): void + { + // Expect transaction handling + $this->connection->shouldReceive('beginTransaction')->once(); + $this->connection->shouldReceive('rollBack')->once(); + + // Pipeline succeeds + $this->pipeline->shouldReceive('process')->once(); + + // Event bus flush throws an exception + $exception = new Exception('Event bus flush failed'); + $this->eventBus->shouldReceive('flush') + ->once() + ->andThrow($exception); + + // Execute command and expect exception to be re-thrown + $this->expectException(Exception::class); + $this->expectExceptionMessage('Event bus flush failed'); + + $this->commandTester->execute([]); + } +} From 6bcf5409d7a6efd20a32571b5add040cffa09bec Mon Sep 17 00:00:00 2001 From: Johan Kromhout Date: Thu, 27 Nov 2025 14:50:57 +0100 Subject: [PATCH 24/32] Update readme & metadata --- README.md | 3 +++ component_info | 2 +- config/packages/doctrine.yaml | 3 --- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 50060289c..37314e529 100644 --- a/README.md +++ b/README.md @@ -31,6 +31,9 @@ Some of the configuration of the components is static (i.e. stored in parametere ## Development Notes +### Technical debt + * https://github.com/broadway/event-store-dbal is blocks upgrade to `doctrine/dbal:^4.0` + ### Adding new events Whenever adding a new event, be sure to update `bin/config/events.yml`. diff --git a/component_info b/component_info index 7c1720a07..22d3e04a3 100644 --- a/component_info +++ b/component_info @@ -1,5 +1,5 @@ PHP_VERSION=82 -SYMFONY_VERSION=6 +SYMFONY_VERSION=7 ENCORE=no ASSETIC=no NODE_VERSION=20 diff --git a/config/packages/doctrine.yaml b/config/packages/doctrine.yaml index a4059ac3b..ac9751383 100644 --- a/config/packages/doctrine.yaml +++ b/config/packages/doctrine.yaml @@ -119,7 +119,6 @@ doctrine: auto_mapping: false entity_managers: middleware: - report_fields_where_declared: true connection: middleware naming_strategy: doctrine.orm.naming_strategy.underscore_number_aware mappings: @@ -144,7 +143,6 @@ doctrine: schema_ignore_classes: - Surfnet\StepupMiddleware\ApiBundle\Identity\Entity\RaCandidate gateway: - report_fields_where_declared: true connection: gateway naming_strategy: doctrine.orm.naming_strategy.underscore_number_aware mappings: @@ -153,7 +151,6 @@ doctrine: type: attribute is_bundle: true deploy: - report_fields_where_declared: true connection: deploy when@dev: From 9e2377c40c298b214c680df76ab5612dedee7614 Mon Sep 17 00:00:00 2001 From: Johan Kromhout Date: Thu, 27 Nov 2025 16:53:41 +0100 Subject: [PATCH 25/32] Upgrade Symfony 7.3 > 7.4 --- ci/qa/phpstan-baseline.neon | 24 + composer.json | 34 +- composer.lock | 1469 ++++++------ config/packages/property_info.yaml | 3 + config/packages/twig.yaml | 1 - config/reference.php | 2088 +++++++++++++++++ .../DependencyInjection/Configuration.php | 3 + .../DependencyInjection/Configuration.php | 3 + .../DependencyInjection/Configuration.php | 3 + .../DependencyInjection/Configuration.php | 3 + ...ilVerifiedSecondFactorRemindersCommand.php | 9 +- .../DependencyInjection/Configuration.php | 3 + ...rifiedSecondFactorRemindersCommandTest.php | 2 +- 13 files changed, 2941 insertions(+), 704 deletions(-) create mode 100644 config/packages/property_info.yaml create mode 100644 config/reference.php diff --git a/ci/qa/phpstan-baseline.neon b/ci/qa/phpstan-baseline.neon index 81744af39..2d7acb5f1 100644 --- a/ci/qa/phpstan-baseline.neon +++ b/ci/qa/phpstan-baseline.neon @@ -2784,6 +2784,12 @@ parameters: count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/VettedSecondFactorController.php + - + message: '#^Call to method scalarNode\(\) on an unknown class Symfony\\Component\\Config\\Definition\\Builder\\NodeBuilder\\.$#' + identifier: class.notFound + count: 1 + path: ../../src/Surfnet/StepupMiddleware/ApiBundle/DependencyInjection/Configuration.php + - message: '#^Cannot cast mixed to string\.$#' identifier: cast.string @@ -3828,6 +3834,12 @@ parameters: count: 1 path: ../../src/Surfnet/StepupMiddleware/CommandHandlingBundle/DependencyInjection/CompilerPass/AddPipelineStagesCompilerPass.php + - + message: '#^Call to method scalarNode\(\) on an unknown class Symfony\\Component\\Config\\Definition\\Builder\\NodeBuilder\\.$#' + identifier: class.notFound + count: 1 + path: ../../src/Surfnet/StepupMiddleware/CommandHandlingBundle/DependencyInjection/Configuration.php + - message: '#^Property Surfnet\\StepupMiddleware\\CommandHandlingBundle\\EventHandling\\BufferedEventBus\:\:\$buffer \(array\\) does not accept array\\.$#' identifier: assign.propertyType @@ -4368,6 +4380,12 @@ parameters: count: 1 path: ../../src/Surfnet/StepupMiddleware/ManagementBundle/Controller/WhitelistController.php + - + message: '#^Call to method scalarNode\(\) on an unknown class Symfony\\Component\\Config\\Definition\\Builder\\NodeBuilder\\.$#' + identifier: class.notFound + count: 1 + path: ../../src/Surfnet/StepupMiddleware/ManagementBundle/DependencyInjection/Configuration.php + - message: '#^Method Surfnet\\StepupMiddleware\\ManagementBundle\\Tests\\Controller\\ConfigurationControllerTest\:\:invalidHttpMethodProvider\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -4608,6 +4626,12 @@ parameters: count: 1 path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/ReplaySpecificEventsCommand.php + - + message: '#^Call to method arrayNode\(\) on an unknown class Symfony\\Component\\Config\\Definition\\Builder\\NodeBuilder\\.$#' + identifier: class.notFound + count: 1 + path: ../../src/Surfnet/StepupMiddleware/MiddlewareBundle/DependencyInjection/Configuration.php + - message: '#^Cannot cast mixed to int\.$#' identifier: cast.int diff --git a/composer.json b/composer.json index 80a34d30b..aa25c08ba 100644 --- a/composer.json +++ b/composer.json @@ -36,20 +36,20 @@ "pagerfanta/pagerfanta": "^4.7.1", "ramsey/uuid": "^4.7.6", "surfnet/stepup-bundle": "^7.0", - "symfony/asset": "7.3.*", - "symfony/expression-language": "7.3.*", + "symfony/asset": "7.4.*", + "symfony/expression-language": "7.4.*", "symfony/flex": "^2.4.7", - "symfony/form": "7.3.*", - "symfony/framework-bundle": "7.3.*", - "symfony/intl": "7.3.*", - "symfony/mailer": "7.3.*", + "symfony/form": "7.4.*", + "symfony/framework-bundle": "7.4.*", + "symfony/intl": "7.4.*", + "symfony/mailer": "7.4.*", "symfony/monolog-bundle": "^3.10", - "symfony/password-hasher": "7.3.*", - "symfony/runtime": "7.3.*", - "symfony/security-bundle": "7.3.*", - "symfony/translation": "7.3.*", - "symfony/twig-bundle": "7.3.*", - "symfony/validator": "7.3.*", + "symfony/password-hasher": "7.4.*", + "symfony/runtime": "7.4.*", + "symfony/security-bundle": "7.4.*", + "symfony/translation": "7.4.*", + "symfony/twig-bundle": "7.4.*", + "symfony/validator": "7.4.*", "twig/extra-bundle": "^3.20", "twig/intl-extra": "^3.20", "twig/twig": "^3.20" @@ -71,10 +71,10 @@ "rector/rector": "^2.2", "slevomat/coding-standard": "^8.25", "squizlabs/php_codesniffer": "^4", - "symfony/browser-kit": "7.3.*", - "symfony/phpunit-bridge": "7.3.*", - "symfony/stopwatch": "7.3.*", - "symfony/web-profiler-bundle": "7.3.*" + "symfony/browser-kit": "7.4.*", + "symfony/phpunit-bridge": "7.4.*", + "symfony/stopwatch": "7.4.*", + "symfony/web-profiler-bundle": "7.4.*" }, "scripts": { "auto-scripts": { @@ -152,7 +152,7 @@ }, "symfony": { "allow-contrib": false, - "require": "7.3.*" + "require": "7.4.*" }, "runtime": { "disable_dotenv": true diff --git a/composer.lock b/composer.lock index bf36ea57f..f21aa6cd1 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "6400ab9c8bde2340c2bdda954f98b18d", + "content-hash": "e6f4c60a781be36f8c5e5a5cff4133e7", "packages": [ { "name": "beberlei/assert", @@ -2069,28 +2069,28 @@ }, { "name": "incenteev/composer-parameter-handler", - "version": "v2.2.0", + "version": "v2.3.0", "source": { "type": "git", "url": "https://github.com/Incenteev/ParameterHandler.git", - "reference": "90bffce926e96b365579a2ef024aab457f4b80c5" + "reference": "4d9a7c72322daaa11343fb885c15dc3fa096e3ac" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Incenteev/ParameterHandler/zipball/90bffce926e96b365579a2ef024aab457f4b80c5", - "reference": "90bffce926e96b365579a2ef024aab457f4b80c5", + "url": "https://api.github.com/repos/Incenteev/ParameterHandler/zipball/4d9a7c72322daaa11343fb885c15dc3fa096e3ac", + "reference": "4d9a7c72322daaa11343fb885c15dc3fa096e3ac", "shasum": "" }, "require": { "php": ">=7.4", - "symfony/yaml": "^5.4 || ^6.0 || ^7.0" + "symfony/yaml": "^5.4 || ^6.0 || ^7.0 || ^8.0" }, "require-dev": { "composer/composer": "^2.0@dev", "phpspec/prophecy-phpunit": "^2.1", "phpunit/phpunit": "^9.6", - "symfony/filesystem": "^5.4 || ^6.0 || ^7.0", - "symfony/phpunit-bridge": "^6.4.1 || ^7.0.1" + "symfony/filesystem": "^5.4 || ^6.0 || ^7.0 || ^8.0", + "symfony/phpunit-bridge": "^6.4.1 || ^7.0.1 || ^8.0" }, "type": "library", "extra": { @@ -2120,9 +2120,9 @@ ], "support": { "issues": "https://github.com/Incenteev/ParameterHandler/issues", - "source": "https://github.com/Incenteev/ParameterHandler/tree/v2.2.0" + "source": "https://github.com/Incenteev/ParameterHandler/tree/v2.3.0" }, - "time": "2023-12-09T10:31:14+00:00" + "time": "2025-11-26T14:10:46+00:00" }, { "name": "jms/translation-bundle", @@ -3465,16 +3465,16 @@ }, { "name": "symfony/asset", - "version": "v7.3.0", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/asset.git", - "reference": "56c4d9f759247c4e07d8549e3baf7493cb9c3e4b" + "reference": "0f7bccb9ffa1f373cbd659774d90629b2773464f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/asset/zipball/56c4d9f759247c4e07d8549e3baf7493cb9c3e4b", - "reference": "56c4d9f759247c4e07d8549e3baf7493cb9c3e4b", + "url": "https://api.github.com/repos/symfony/asset/zipball/0f7bccb9ffa1f373cbd659774d90629b2773464f", + "reference": "0f7bccb9ffa1f373cbd659774d90629b2773464f", "shasum": "" }, "require": { @@ -3484,9 +3484,9 @@ "symfony/http-foundation": "<6.4" }, "require-dev": { - "symfony/http-client": "^6.4|^7.0", - "symfony/http-foundation": "^6.4|^7.0", - "symfony/http-kernel": "^6.4|^7.0" + "symfony/http-client": "^6.4|^7.0|^8.0", + "symfony/http-foundation": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -3514,7 +3514,7 @@ "description": "Manages URL generation and versioning of web assets such as CSS stylesheets, JavaScript files and image files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/asset/tree/v7.3.0" + "source": "https://github.com/symfony/asset/tree/v7.4.0" }, "funding": [ { @@ -3525,25 +3525,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-03-05T10:15:41+00:00" + "time": "2025-08-04T07:05:15+00:00" }, { "name": "symfony/cache", - "version": "v7.3.6", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/cache.git", - "reference": "1277a1ec61c8d93ea61b2a59738f1deb9bfb6701" + "reference": "a7a1325a5de2e54ddb45fda002ff528162e48293" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/1277a1ec61c8d93ea61b2a59738f1deb9bfb6701", - "reference": "1277a1ec61c8d93ea61b2a59738f1deb9bfb6701", + "url": "https://api.github.com/repos/symfony/cache/zipball/a7a1325a5de2e54ddb45fda002ff528162e48293", + "reference": "a7a1325a5de2e54ddb45fda002ff528162e48293", "shasum": "" }, "require": { @@ -3551,12 +3555,14 @@ "psr/cache": "^2.0|^3.0", "psr/log": "^1.1|^2|^3", "symfony/cache-contracts": "^3.6", - "symfony/deprecation-contracts": "^2.5|^3.0", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/service-contracts": "^2.5|^3", - "symfony/var-exporter": "^6.4|^7.0" + "symfony/var-exporter": "^6.4|^7.0|^8.0" }, "conflict": { "doctrine/dbal": "<3.6", + "ext-redis": "<6.1", + "ext-relay": "<0.12.1", "symfony/dependency-injection": "<6.4", "symfony/http-kernel": "<6.4", "symfony/var-dumper": "<6.4" @@ -3571,13 +3577,13 @@ "doctrine/dbal": "^3.6|^4", "predis/predis": "^1.1|^2.0", "psr/simple-cache": "^1.0|^2.0|^3.0", - "symfony/clock": "^6.4|^7.0", - "symfony/config": "^6.4|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/filesystem": "^6.4|^7.0", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/messenger": "^6.4|^7.0", - "symfony/var-dumper": "^6.4|^7.0" + "symfony/clock": "^6.4|^7.0|^8.0", + "symfony/config": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/filesystem": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/messenger": "^6.4|^7.0|^8.0", + "symfony/var-dumper": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -3612,7 +3618,7 @@ "psr6" ], "support": { - "source": "https://github.com/symfony/cache/tree/v7.3.6" + "source": "https://github.com/symfony/cache/tree/v7.4.0" }, "funding": [ { @@ -3632,7 +3638,7 @@ "type": "tidelift" } ], - "time": "2025-10-30T13:22:58+00:00" + "time": "2025-11-16T10:14:42+00:00" }, { "name": "symfony/cache-contracts", @@ -3712,16 +3718,16 @@ }, { "name": "symfony/clock", - "version": "v7.3.0", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/clock.git", - "reference": "b81435fbd6648ea425d1ee96a2d8e68f4ceacd24" + "reference": "9169f24776edde469914c1e7a1442a50f7a4e110" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/clock/zipball/b81435fbd6648ea425d1ee96a2d8e68f4ceacd24", - "reference": "b81435fbd6648ea425d1ee96a2d8e68f4ceacd24", + "url": "https://api.github.com/repos/symfony/clock/zipball/9169f24776edde469914c1e7a1442a50f7a4e110", + "reference": "9169f24776edde469914c1e7a1442a50f7a4e110", "shasum": "" }, "require": { @@ -3766,7 +3772,7 @@ "time" ], "support": { - "source": "https://github.com/symfony/clock/tree/v7.3.0" + "source": "https://github.com/symfony/clock/tree/v7.4.0" }, "funding": [ { @@ -3777,31 +3783,35 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-09-25T14:21:43+00:00" + "time": "2025-11-12T15:39:26+00:00" }, { "name": "symfony/config", - "version": "v7.3.6", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "9d18eba95655a3152ae4c1d53c6cc34eb4d4a0b7" + "reference": "f76c74e93bce2b9285f2dad7fbd06fa8182a7a41" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/9d18eba95655a3152ae4c1d53c6cc34eb4d4a0b7", - "reference": "9d18eba95655a3152ae4c1d53c6cc34eb4d4a0b7", + "url": "https://api.github.com/repos/symfony/config/zipball/f76c74e93bce2b9285f2dad7fbd06fa8182a7a41", + "reference": "f76c74e93bce2b9285f2dad7fbd06fa8182a7a41", "shasum": "" }, "require": { "php": ">=8.2", "symfony/deprecation-contracts": "^2.5|^3", - "symfony/filesystem": "^7.1", + "symfony/filesystem": "^7.1|^8.0", "symfony/polyfill-ctype": "~1.8" }, "conflict": { @@ -3809,11 +3819,11 @@ "symfony/service-contracts": "<2.5" }, "require-dev": { - "symfony/event-dispatcher": "^6.4|^7.0", - "symfony/finder": "^6.4|^7.0", - "symfony/messenger": "^6.4|^7.0", + "symfony/event-dispatcher": "^6.4|^7.0|^8.0", + "symfony/finder": "^6.4|^7.0|^8.0", + "symfony/messenger": "^6.4|^7.0|^8.0", "symfony/service-contracts": "^2.5|^3", - "symfony/yaml": "^6.4|^7.0" + "symfony/yaml": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -3841,7 +3851,7 @@ "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/v7.3.6" + "source": "https://github.com/symfony/config/tree/v7.4.0" }, "funding": [ { @@ -3861,20 +3871,20 @@ "type": "tidelift" } ], - "time": "2025-11-02T08:04:43+00:00" + "time": "2025-11-27T13:27:24+00:00" }, { "name": "symfony/console", - "version": "v7.3.6", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "c28ad91448f86c5f6d9d2c70f0cf68bf135f252a" + "reference": "0bc0f45254b99c58d45a8fbf9fb955d46cbd1bb8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/c28ad91448f86c5f6d9d2c70f0cf68bf135f252a", - "reference": "c28ad91448f86c5f6d9d2c70f0cf68bf135f252a", + "url": "https://api.github.com/repos/symfony/console/zipball/0bc0f45254b99c58d45a8fbf9fb955d46cbd1bb8", + "reference": "0bc0f45254b99c58d45a8fbf9fb955d46cbd1bb8", "shasum": "" }, "require": { @@ -3882,7 +3892,7 @@ "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-mbstring": "~1.0", "symfony/service-contracts": "^2.5|^3", - "symfony/string": "^7.2" + "symfony/string": "^7.2|^8.0" }, "conflict": { "symfony/dependency-injection": "<6.4", @@ -3896,16 +3906,16 @@ }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/config": "^6.4|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/event-dispatcher": "^6.4|^7.0", - "symfony/http-foundation": "^6.4|^7.0", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/lock": "^6.4|^7.0", - "symfony/messenger": "^6.4|^7.0", - "symfony/process": "^6.4|^7.0", - "symfony/stopwatch": "^6.4|^7.0", - "symfony/var-dumper": "^6.4|^7.0" + "symfony/config": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/event-dispatcher": "^6.4|^7.0|^8.0", + "symfony/http-foundation": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/lock": "^6.4|^7.0|^8.0", + "symfony/messenger": "^6.4|^7.0|^8.0", + "symfony/process": "^6.4|^7.0|^8.0", + "symfony/stopwatch": "^6.4|^7.0|^8.0", + "symfony/var-dumper": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -3939,7 +3949,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v7.3.6" + "source": "https://github.com/symfony/console/tree/v7.4.0" }, "funding": [ { @@ -3959,28 +3969,28 @@ "type": "tidelift" } ], - "time": "2025-11-04T01:21:42+00:00" + "time": "2025-11-27T13:27:24+00:00" }, { "name": "symfony/dependency-injection", - "version": "v7.3.6", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "98af8bb46c56aedd9dd5a7f0414fc72bf2dcfe69" + "reference": "3972ca7bbd649467b21a54870721b9e9f3652f9b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/98af8bb46c56aedd9dd5a7f0414fc72bf2dcfe69", - "reference": "98af8bb46c56aedd9dd5a7f0414fc72bf2dcfe69", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/3972ca7bbd649467b21a54870721b9e9f3652f9b", + "reference": "3972ca7bbd649467b21a54870721b9e9f3652f9b", "shasum": "" }, "require": { "php": ">=8.2", "psr/container": "^1.1|^2.0", "symfony/deprecation-contracts": "^2.5|^3", - "symfony/service-contracts": "^3.5", - "symfony/var-exporter": "^6.4.20|^7.2.5" + "symfony/service-contracts": "^3.6", + "symfony/var-exporter": "^6.4.20|^7.2.5|^8.0" }, "conflict": { "ext-psr": "<1.1|>=2", @@ -3993,9 +4003,9 @@ "symfony/service-implementation": "1.1|2.0|3.0" }, "require-dev": { - "symfony/config": "^6.4|^7.0", - "symfony/expression-language": "^6.4|^7.0", - "symfony/yaml": "^6.4|^7.0" + "symfony/config": "^6.4|^7.0|^8.0", + "symfony/expression-language": "^6.4|^7.0|^8.0", + "symfony/yaml": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -4023,7 +4033,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/v7.3.6" + "source": "https://github.com/symfony/dependency-injection/tree/v7.4.0" }, "funding": [ { @@ -4043,7 +4053,7 @@ "type": "tidelift" } ], - "time": "2025-10-31T10:11:11+00:00" + "time": "2025-11-27T13:27:24+00:00" }, { "name": "symfony/deprecation-contracts", @@ -4114,16 +4124,16 @@ }, { "name": "symfony/doctrine-bridge", - "version": "v7.3.5", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/doctrine-bridge.git", - "reference": "e7d308bd44ff8673a259e2727d13af6a93a5d83e" + "reference": "7b511891a81ca14e993b6c88fd35d6bf656085f7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/e7d308bd44ff8673a259e2727d13af6a93a5d83e", - "reference": "e7d308bd44ff8673a259e2727d13af6a93a5d83e", + "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/7b511891a81ca14e993b6c88fd35d6bf656085f7", + "reference": "7b511891a81ca14e993b6c88fd35d6bf656085f7", "shasum": "" }, "require": { @@ -4150,7 +4160,7 @@ "symfony/property-info": "<6.4", "symfony/security-bundle": "<6.4", "symfony/security-core": "<6.4", - "symfony/validator": "<6.4" + "symfony/validator": "<7.4" }, "require-dev": { "doctrine/collections": "^1.8|^2.0", @@ -4158,24 +4168,24 @@ "doctrine/dbal": "^3.6|^4", "doctrine/orm": "^2.15|^3", "psr/log": "^1|^2|^3", - "symfony/cache": "^6.4|^7.0", - "symfony/config": "^6.4|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/doctrine-messenger": "^6.4|^7.0", - "symfony/expression-language": "^6.4|^7.0", - "symfony/form": "^6.4.6|^7.0.6", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/lock": "^6.4|^7.0", - "symfony/messenger": "^6.4|^7.0", - "symfony/property-access": "^6.4|^7.0", - "symfony/property-info": "^6.4|^7.0", - "symfony/security-core": "^6.4|^7.0", - "symfony/stopwatch": "^6.4|^7.0", - "symfony/translation": "^6.4|^7.0", - "symfony/type-info": "^7.1.8", - "symfony/uid": "^6.4|^7.0", - "symfony/validator": "^6.4|^7.0", - "symfony/var-dumper": "^6.4|^7.0" + "symfony/cache": "^6.4|^7.0|^8.0", + "symfony/config": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/doctrine-messenger": "^6.4|^7.0|^8.0", + "symfony/expression-language": "^6.4|^7.0|^8.0", + "symfony/form": "^7.2|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/lock": "^6.4|^7.0|^8.0", + "symfony/messenger": "^6.4|^7.0|^8.0", + "symfony/property-access": "^6.4|^7.0|^8.0", + "symfony/property-info": "^6.4|^7.0|^8.0", + "symfony/security-core": "^6.4|^7.0|^8.0", + "symfony/stopwatch": "^6.4|^7.0|^8.0", + "symfony/translation": "^6.4|^7.0|^8.0", + "symfony/type-info": "^7.1.8|^8.0", + "symfony/uid": "^6.4|^7.0|^8.0", + "symfony/validator": "^7.4|^8.0", + "symfony/var-dumper": "^6.4|^7.0|^8.0" }, "type": "symfony-bridge", "autoload": { @@ -4203,7 +4213,7 @@ "description": "Provides integration for Doctrine with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/doctrine-bridge/tree/v7.3.5" + "source": "https://github.com/symfony/doctrine-bridge/tree/v7.4.0" }, "funding": [ { @@ -4223,36 +4233,37 @@ "type": "tidelift" } ], - "time": "2025-09-27T09:00:46+00:00" + "time": "2025-11-04T03:05:49+00:00" }, { "name": "symfony/error-handler", - "version": "v7.3.6", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "bbe40bfab84323d99dab491b716ff142410a92a8" + "reference": "48be2b0653594eea32dcef130cca1c811dcf25c2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/bbe40bfab84323d99dab491b716ff142410a92a8", - "reference": "bbe40bfab84323d99dab491b716ff142410a92a8", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/48be2b0653594eea32dcef130cca1c811dcf25c2", + "reference": "48be2b0653594eea32dcef130cca1c811dcf25c2", "shasum": "" }, "require": { "php": ">=8.2", "psr/log": "^1|^2|^3", - "symfony/var-dumper": "^6.4|^7.0" + "symfony/polyfill-php85": "^1.32", + "symfony/var-dumper": "^6.4|^7.0|^8.0" }, "conflict": { "symfony/deprecation-contracts": "<2.5", "symfony/http-kernel": "<6.4" }, "require-dev": { - "symfony/console": "^6.4|^7.0", + "symfony/console": "^6.4|^7.0|^8.0", "symfony/deprecation-contracts": "^2.5|^3", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/serializer": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/serializer": "^6.4|^7.0|^8.0", "symfony/webpack-encore-bundle": "^1.0|^2.0" }, "bin": [ @@ -4284,7 +4295,7 @@ "description": "Provides tools to manage errors and ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/error-handler/tree/v7.3.6" + "source": "https://github.com/symfony/error-handler/tree/v7.4.0" }, "funding": [ { @@ -4304,20 +4315,20 @@ "type": "tidelift" } ], - "time": "2025-10-31T19:12:50+00:00" + "time": "2025-11-05T14:29:59+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v7.3.3", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "b7dc69e71de420ac04bc9ab830cf3ffebba48191" + "reference": "9dddcddff1ef974ad87b3708e4b442dc38b2261d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/b7dc69e71de420ac04bc9ab830cf3ffebba48191", - "reference": "b7dc69e71de420ac04bc9ab830cf3ffebba48191", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/9dddcddff1ef974ad87b3708e4b442dc38b2261d", + "reference": "9dddcddff1ef974ad87b3708e4b442dc38b2261d", "shasum": "" }, "require": { @@ -4334,13 +4345,14 @@ }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/config": "^6.4|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/error-handler": "^6.4|^7.0", - "symfony/expression-language": "^6.4|^7.0", - "symfony/http-foundation": "^6.4|^7.0", + "symfony/config": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/error-handler": "^6.4|^7.0|^8.0", + "symfony/expression-language": "^6.4|^7.0|^8.0", + "symfony/framework-bundle": "^6.4|^7.0|^8.0", + "symfony/http-foundation": "^6.4|^7.0|^8.0", "symfony/service-contracts": "^2.5|^3", - "symfony/stopwatch": "^6.4|^7.0" + "symfony/stopwatch": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -4368,7 +4380,7 @@ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v7.3.3" + "source": "https://github.com/symfony/event-dispatcher/tree/v7.4.0" }, "funding": [ { @@ -4388,7 +4400,7 @@ "type": "tidelift" } ], - "time": "2025-08-13T11:49:31+00:00" + "time": "2025-10-28T09:38:46+00:00" }, { "name": "symfony/event-dispatcher-contracts", @@ -4468,21 +4480,21 @@ }, { "name": "symfony/expression-language", - "version": "v7.3.2", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/expression-language.git", - "reference": "32d2d19c62e58767e6552166c32fb259975d2b23" + "reference": "8b9bbbb8c71f79a09638f6ea77c531e511139efa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/expression-language/zipball/32d2d19c62e58767e6552166c32fb259975d2b23", - "reference": "32d2d19c62e58767e6552166c32fb259975d2b23", + "url": "https://api.github.com/repos/symfony/expression-language/zipball/8b9bbbb8c71f79a09638f6ea77c531e511139efa", + "reference": "8b9bbbb8c71f79a09638f6ea77c531e511139efa", "shasum": "" }, "require": { "php": ">=8.2", - "symfony/cache": "^6.4|^7.0", + "symfony/cache": "^6.4|^7.0|^8.0", "symfony/deprecation-contracts": "^2.5|^3", "symfony/service-contracts": "^2.5|^3" }, @@ -4512,7 +4524,7 @@ "description": "Provides an engine that can compile and evaluate expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/expression-language/tree/v7.3.2" + "source": "https://github.com/symfony/expression-language/tree/v7.4.0" }, "funding": [ { @@ -4532,20 +4544,20 @@ "type": "tidelift" } ], - "time": "2025-07-10T08:29:33+00:00" + "time": "2025-11-12T15:39:26+00:00" }, { "name": "symfony/filesystem", - "version": "v7.3.6", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "e9bcfd7837928ab656276fe00464092cc9e1826a" + "reference": "d551b38811096d0be9c4691d406991b47c0c630a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/e9bcfd7837928ab656276fe00464092cc9e1826a", - "reference": "e9bcfd7837928ab656276fe00464092cc9e1826a", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/d551b38811096d0be9c4691d406991b47c0c630a", + "reference": "d551b38811096d0be9c4691d406991b47c0c630a", "shasum": "" }, "require": { @@ -4554,7 +4566,7 @@ "symfony/polyfill-mbstring": "~1.8" }, "require-dev": { - "symfony/process": "^6.4|^7.0" + "symfony/process": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -4582,7 +4594,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v7.3.6" + "source": "https://github.com/symfony/filesystem/tree/v7.4.0" }, "funding": [ { @@ -4602,27 +4614,27 @@ "type": "tidelift" } ], - "time": "2025-11-05T09:52:27+00:00" + "time": "2025-11-27T13:27:24+00:00" }, { "name": "symfony/finder", - "version": "v7.3.5", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "9f696d2f1e340484b4683f7853b273abff94421f" + "reference": "340b9ed7320570f319028a2cbec46d40535e94bd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/9f696d2f1e340484b4683f7853b273abff94421f", - "reference": "9f696d2f1e340484b4683f7853b273abff94421f", + "url": "https://api.github.com/repos/symfony/finder/zipball/340b9ed7320570f319028a2cbec46d40535e94bd", + "reference": "340b9ed7320570f319028a2cbec46d40535e94bd", "shasum": "" }, "require": { "php": ">=8.2" }, "require-dev": { - "symfony/filesystem": "^6.4|^7.0" + "symfony/filesystem": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -4650,7 +4662,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v7.3.5" + "source": "https://github.com/symfony/finder/tree/v7.4.0" }, "funding": [ { @@ -4670,7 +4682,7 @@ "type": "tidelift" } ], - "time": "2025-10-15T18:45:57+00:00" + "time": "2025-11-05T05:42:40+00:00" }, { "name": "symfony/flex", @@ -4747,27 +4759,27 @@ }, { "name": "symfony/form", - "version": "v7.3.6", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/form.git", - "reference": "a8f32aa19b322bf46cbaaafa89c132eb662ecfe5" + "reference": "00b8d61709b323749aef317950abd276f309597b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/form/zipball/a8f32aa19b322bf46cbaaafa89c132eb662ecfe5", - "reference": "a8f32aa19b322bf46cbaaafa89c132eb662ecfe5", + "url": "https://api.github.com/repos/symfony/form/zipball/00b8d61709b323749aef317950abd276f309597b", + "reference": "00b8d61709b323749aef317950abd276f309597b", "shasum": "" }, "require": { "php": ">=8.2", "symfony/deprecation-contracts": "^2.5|^3", - "symfony/event-dispatcher": "^6.4|^7.0", - "symfony/options-resolver": "^7.3", + "symfony/event-dispatcher": "^6.4|^7.0|^8.0", + "symfony/options-resolver": "^7.3|^8.0", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-intl-icu": "^1.21", "symfony/polyfill-mbstring": "~1.0", - "symfony/property-access": "^6.4|^7.0", + "symfony/property-access": "^6.4|^7.0|^8.0", "symfony/service-contracts": "^2.5|^3" }, "conflict": { @@ -4777,26 +4789,28 @@ "symfony/error-handler": "<6.4", "symfony/framework-bundle": "<6.4", "symfony/http-kernel": "<6.4", + "symfony/intl": "<7.4", "symfony/translation": "<6.4.3|>=7.0,<7.0.3", "symfony/translation-contracts": "<2.5", "symfony/twig-bridge": "<6.4" }, "require-dev": { "doctrine/collections": "^1.0|^2.0", - "symfony/config": "^6.4|^7.0", - "symfony/console": "^6.4|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/expression-language": "^6.4|^7.0", - "symfony/html-sanitizer": "^6.4|^7.0", - "symfony/http-foundation": "^6.4|^7.0", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/intl": "^6.4|^7.0", - "symfony/security-core": "^6.4|^7.0", - "symfony/security-csrf": "^6.4|^7.0", - "symfony/translation": "^6.4.3|^7.0.3", - "symfony/uid": "^6.4|^7.0", - "symfony/validator": "^6.4|^7.0", - "symfony/var-dumper": "^6.4|^7.0" + "symfony/clock": "^6.4|^7.0|^8.0", + "symfony/config": "^6.4|^7.0|^8.0", + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/expression-language": "^6.4|^7.0|^8.0", + "symfony/html-sanitizer": "^6.4|^7.0|^8.0", + "symfony/http-foundation": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/intl": "^7.4|^8.0", + "symfony/security-core": "^6.4|^7.0|^8.0", + "symfony/security-csrf": "^6.4|^7.0|^8.0", + "symfony/translation": "^6.4.3|^7.0.3|^8.0", + "symfony/uid": "^6.4|^7.0|^8.0", + "symfony/validator": "^6.4.12|^7.1.5|^8.0", + "symfony/var-dumper": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -4824,7 +4838,7 @@ "description": "Allows to easily create, process and reuse HTML forms", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/form/tree/v7.3.6" + "source": "https://github.com/symfony/form/tree/v7.4.0" }, "funding": [ { @@ -4844,38 +4858,39 @@ "type": "tidelift" } ], - "time": "2025-10-31T09:25:04+00:00" + "time": "2025-11-20T12:20:24+00:00" }, { "name": "symfony/framework-bundle", - "version": "v7.3.6", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/framework-bundle.git", - "reference": "cabfdfa82bc4f75d693a329fe263d96937636b77" + "reference": "3c62a3437267ac55bcd40175689c74772250e943" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/cabfdfa82bc4f75d693a329fe263d96937636b77", - "reference": "cabfdfa82bc4f75d693a329fe263d96937636b77", + "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/3c62a3437267ac55bcd40175689c74772250e943", + "reference": "3c62a3437267ac55bcd40175689c74772250e943", "shasum": "" }, "require": { "composer-runtime-api": ">=2.1", "ext-xml": "*", "php": ">=8.2", - "symfony/cache": "^6.4|^7.0", - "symfony/config": "^7.3", - "symfony/dependency-injection": "^7.2", + "symfony/cache": "^6.4.12|^7.0|^8.0", + "symfony/config": "^7.4|^8.0", + "symfony/dependency-injection": "^7.4|^8.0", "symfony/deprecation-contracts": "^2.5|^3", - "symfony/error-handler": "^7.3", - "symfony/event-dispatcher": "^6.4|^7.0", - "symfony/filesystem": "^7.1", - "symfony/finder": "^6.4|^7.0", - "symfony/http-foundation": "^7.3", - "symfony/http-kernel": "^7.2", + "symfony/error-handler": "^7.3|^8.0", + "symfony/event-dispatcher": "^6.4|^7.0|^8.0", + "symfony/filesystem": "^7.1|^8.0", + "symfony/finder": "^6.4|^7.0|^8.0", + "symfony/http-foundation": "^7.4|^8.0", + "symfony/http-kernel": "^7.4|^8.0", "symfony/polyfill-mbstring": "~1.0", - "symfony/routing": "^6.4|^7.0" + "symfony/polyfill-php85": "^1.32", + "symfony/routing": "^7.4|^8.0" }, "conflict": { "doctrine/persistence": "<1.3", @@ -4887,14 +4902,12 @@ "symfony/console": "<6.4", "symfony/dom-crawler": "<6.4", "symfony/dotenv": "<6.4", - "symfony/form": "<6.4", + "symfony/form": "<7.4", "symfony/http-client": "<6.4", - "symfony/json-streamer": ">=7.4", "symfony/lock": "<6.4", "symfony/mailer": "<6.4", - "symfony/messenger": "<6.4", + "symfony/messenger": "<7.4", "symfony/mime": "<6.4", - "symfony/object-mapper": ">=7.4", "symfony/property-access": "<6.4", "symfony/property-info": "<6.4", "symfony/runtime": "<6.4.13|>=7.0,<7.1.6", @@ -4909,51 +4922,52 @@ "symfony/validator": "<6.4", "symfony/web-profiler-bundle": "<6.4", "symfony/webhook": "<7.2", - "symfony/workflow": "<7.3.0-beta2" + "symfony/workflow": "<7.4" }, "require-dev": { "doctrine/persistence": "^1.3|^2|^3", "dragonmantank/cron-expression": "^3.1", "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", "seld/jsonlint": "^1.10", - "symfony/asset": "^6.4|^7.0", - "symfony/asset-mapper": "^6.4|^7.0", - "symfony/browser-kit": "^6.4|^7.0", - "symfony/clock": "^6.4|^7.0", - "symfony/console": "^6.4|^7.0", - "symfony/css-selector": "^6.4|^7.0", - "symfony/dom-crawler": "^6.4|^7.0", - "symfony/dotenv": "^6.4|^7.0", - "symfony/expression-language": "^6.4|^7.0", - "symfony/form": "^6.4|^7.0", - "symfony/html-sanitizer": "^6.4|^7.0", - "symfony/http-client": "^6.4|^7.0", - "symfony/json-streamer": "7.3.*", - "symfony/lock": "^6.4|^7.0", - "symfony/mailer": "^6.4|^7.0", - "symfony/messenger": "^6.4|^7.0", - "symfony/mime": "^6.4|^7.0", - "symfony/notifier": "^6.4|^7.0", - "symfony/object-mapper": "^v7.3.0-beta2", + "symfony/asset": "^6.4|^7.0|^8.0", + "symfony/asset-mapper": "^6.4|^7.0|^8.0", + "symfony/browser-kit": "^6.4|^7.0|^8.0", + "symfony/clock": "^6.4|^7.0|^8.0", + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/css-selector": "^6.4|^7.0|^8.0", + "symfony/dom-crawler": "^6.4|^7.0|^8.0", + "symfony/dotenv": "^6.4|^7.0|^8.0", + "symfony/expression-language": "^6.4|^7.0|^8.0", + "symfony/form": "^7.4|^8.0", + "symfony/html-sanitizer": "^6.4|^7.0|^8.0", + "symfony/http-client": "^6.4|^7.0|^8.0", + "symfony/json-streamer": "^7.3|^8.0", + "symfony/lock": "^6.4|^7.0|^8.0", + "symfony/mailer": "^6.4|^7.0|^8.0", + "symfony/messenger": "^7.4|^8.0", + "symfony/mime": "^6.4|^7.0|^8.0", + "symfony/notifier": "^6.4|^7.0|^8.0", + "symfony/object-mapper": "^7.3|^8.0", "symfony/polyfill-intl-icu": "~1.0", - "symfony/process": "^6.4|^7.0", - "symfony/property-info": "^6.4|^7.0", - "symfony/rate-limiter": "^6.4|^7.0", - "symfony/scheduler": "^6.4.4|^7.0.4", - "symfony/security-bundle": "^6.4|^7.0", - "symfony/semaphore": "^6.4|^7.0", - "symfony/serializer": "^7.2.5", - "symfony/stopwatch": "^6.4|^7.0", - "symfony/string": "^6.4|^7.0", - "symfony/translation": "^7.3", - "symfony/twig-bundle": "^6.4|^7.0", - "symfony/type-info": "^7.1.8", - "symfony/uid": "^6.4|^7.0", - "symfony/validator": "^6.4|^7.0", - "symfony/web-link": "^6.4|^7.0", - "symfony/webhook": "^7.2", - "symfony/workflow": "^7.3", - "symfony/yaml": "^6.4|^7.0", + "symfony/process": "^6.4|^7.0|^8.0", + "symfony/property-info": "^6.4|^7.0|^8.0", + "symfony/rate-limiter": "^6.4|^7.0|^8.0", + "symfony/runtime": "^6.4.13|^7.1.6|^8.0", + "symfony/scheduler": "^6.4.4|^7.0.4|^8.0", + "symfony/security-bundle": "^6.4|^7.0|^8.0", + "symfony/semaphore": "^6.4|^7.0|^8.0", + "symfony/serializer": "^7.2.5|^8.0", + "symfony/stopwatch": "^6.4|^7.0|^8.0", + "symfony/string": "^6.4|^7.0|^8.0", + "symfony/translation": "^7.3|^8.0", + "symfony/twig-bundle": "^6.4|^7.0|^8.0", + "symfony/type-info": "^7.1.8|^8.0", + "symfony/uid": "^6.4|^7.0|^8.0", + "symfony/validator": "^7.4|^8.0", + "symfony/web-link": "^6.4|^7.0|^8.0", + "symfony/webhook": "^7.2|^8.0", + "symfony/workflow": "^7.4|^8.0", + "symfony/yaml": "^7.3|^8.0", "twig/twig": "^3.12" }, "type": "symfony-bundle", @@ -4982,7 +4996,7 @@ "description": "Provides a tight integration between Symfony components and the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/framework-bundle/tree/v7.3.6" + "source": "https://github.com/symfony/framework-bundle/tree/v7.4.0" }, "funding": [ { @@ -5002,27 +5016,26 @@ "type": "tidelift" } ], - "time": "2025-10-30T09:42:24+00:00" + "time": "2025-11-27T13:27:24+00:00" }, { "name": "symfony/http-foundation", - "version": "v7.3.7", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "db488a62f98f7a81d5746f05eea63a74e55bb7c4" + "reference": "769c1720b68e964b13b58529c17d4a385c62167b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/db488a62f98f7a81d5746f05eea63a74e55bb7c4", - "reference": "db488a62f98f7a81d5746f05eea63a74e55bb7c4", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/769c1720b68e964b13b58529c17d4a385c62167b", + "reference": "769c1720b68e964b13b58529c17d4a385c62167b", "shasum": "" }, "require": { "php": ">=8.2", - "symfony/deprecation-contracts": "^2.5|^3.0", - "symfony/polyfill-mbstring": "~1.1", - "symfony/polyfill-php83": "^1.27" + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "^1.1" }, "conflict": { "doctrine/dbal": "<3.6", @@ -5031,13 +5044,13 @@ "require-dev": { "doctrine/dbal": "^3.6|^4", "predis/predis": "^1.1|^2.0", - "symfony/cache": "^6.4.12|^7.1.5", - "symfony/clock": "^6.4|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/expression-language": "^6.4|^7.0", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/mime": "^6.4|^7.0", - "symfony/rate-limiter": "^6.4|^7.0" + "symfony/cache": "^6.4.12|^7.1.5|^8.0", + "symfony/clock": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/expression-language": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/mime": "^6.4|^7.0|^8.0", + "symfony/rate-limiter": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -5065,7 +5078,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v7.3.7" + "source": "https://github.com/symfony/http-foundation/tree/v7.4.0" }, "funding": [ { @@ -5085,29 +5098,29 @@ "type": "tidelift" } ], - "time": "2025-11-08T16:41:12+00:00" + "time": "2025-11-13T08:49:24+00:00" }, { "name": "symfony/http-kernel", - "version": "v7.3.7", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "10b8e9b748ea95fa4539c208e2487c435d3c87ce" + "reference": "7348193cd384495a755554382e4526f27c456085" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/10b8e9b748ea95fa4539c208e2487c435d3c87ce", - "reference": "10b8e9b748ea95fa4539c208e2487c435d3c87ce", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/7348193cd384495a755554382e4526f27c456085", + "reference": "7348193cd384495a755554382e4526f27c456085", "shasum": "" }, "require": { "php": ">=8.2", "psr/log": "^1|^2|^3", "symfony/deprecation-contracts": "^2.5|^3", - "symfony/error-handler": "^6.4|^7.0", - "symfony/event-dispatcher": "^7.3", - "symfony/http-foundation": "^7.3", + "symfony/error-handler": "^6.4|^7.0|^8.0", + "symfony/event-dispatcher": "^7.3|^8.0", + "symfony/http-foundation": "^7.4|^8.0", "symfony/polyfill-ctype": "^1.8" }, "conflict": { @@ -5117,6 +5130,7 @@ "symfony/console": "<6.4", "symfony/dependency-injection": "<6.4", "symfony/doctrine-bridge": "<6.4", + "symfony/flex": "<2.10", "symfony/form": "<6.4", "symfony/http-client": "<6.4", "symfony/http-client-contracts": "<2.5", @@ -5134,27 +5148,27 @@ }, "require-dev": { "psr/cache": "^1.0|^2.0|^3.0", - "symfony/browser-kit": "^6.4|^7.0", - "symfony/clock": "^6.4|^7.0", - "symfony/config": "^6.4|^7.0", - "symfony/console": "^6.4|^7.0", - "symfony/css-selector": "^6.4|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/dom-crawler": "^6.4|^7.0", - "symfony/expression-language": "^6.4|^7.0", - "symfony/finder": "^6.4|^7.0", + "symfony/browser-kit": "^6.4|^7.0|^8.0", + "symfony/clock": "^6.4|^7.0|^8.0", + "symfony/config": "^6.4|^7.0|^8.0", + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/css-selector": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/dom-crawler": "^6.4|^7.0|^8.0", + "symfony/expression-language": "^6.4|^7.0|^8.0", + "symfony/finder": "^6.4|^7.0|^8.0", "symfony/http-client-contracts": "^2.5|^3", - "symfony/process": "^6.4|^7.0", - "symfony/property-access": "^7.1", - "symfony/routing": "^6.4|^7.0", - "symfony/serializer": "^7.1", - "symfony/stopwatch": "^6.4|^7.0", - "symfony/translation": "^6.4|^7.0", + "symfony/process": "^6.4|^7.0|^8.0", + "symfony/property-access": "^7.1|^8.0", + "symfony/routing": "^6.4|^7.0|^8.0", + "symfony/serializer": "^7.1|^8.0", + "symfony/stopwatch": "^6.4|^7.0|^8.0", + "symfony/translation": "^6.4|^7.0|^8.0", "symfony/translation-contracts": "^2.5|^3", - "symfony/uid": "^6.4|^7.0", - "symfony/validator": "^6.4|^7.0", - "symfony/var-dumper": "^6.4|^7.0", - "symfony/var-exporter": "^6.4|^7.0", + "symfony/uid": "^6.4|^7.0|^8.0", + "symfony/validator": "^6.4|^7.0|^8.0", + "symfony/var-dumper": "^6.4|^7.0|^8.0", + "symfony/var-exporter": "^6.4|^7.0|^8.0", "twig/twig": "^3.12" }, "type": "library", @@ -5183,7 +5197,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v7.3.7" + "source": "https://github.com/symfony/http-kernel/tree/v7.4.0" }, "funding": [ { @@ -5203,20 +5217,20 @@ "type": "tidelift" } ], - "time": "2025-11-12T11:38:40+00:00" + "time": "2025-11-27T13:38:24+00:00" }, { "name": "symfony/intl", - "version": "v7.3.5", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/intl.git", - "reference": "9eccaaa94ac6f9deb3620c9d47a057d965baeabf" + "reference": "2fa074de6c7faa6b54f2891fc22708f42245ed5c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/intl/zipball/9eccaaa94ac6f9deb3620c9d47a057d965baeabf", - "reference": "9eccaaa94ac6f9deb3620c9d47a057d965baeabf", + "url": "https://api.github.com/repos/symfony/intl/zipball/2fa074de6c7faa6b54f2891fc22708f42245ed5c", + "reference": "2fa074de6c7faa6b54f2891fc22708f42245ed5c", "shasum": "" }, "require": { @@ -5227,8 +5241,8 @@ "symfony/string": "<7.1" }, "require-dev": { - "symfony/filesystem": "^6.4|^7.0", - "symfony/var-exporter": "^6.4|^7.0" + "symfony/filesystem": "^6.4|^7.0|^8.0", + "symfony/var-exporter": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -5273,7 +5287,7 @@ "localization" ], "support": { - "source": "https://github.com/symfony/intl/tree/v7.3.5" + "source": "https://github.com/symfony/intl/tree/v7.4.0" }, "funding": [ { @@ -5293,20 +5307,20 @@ "type": "tidelift" } ], - "time": "2025-10-01T06:11:17+00:00" + "time": "2025-11-27T13:27:24+00:00" }, { "name": "symfony/mailer", - "version": "v7.3.5", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/mailer.git", - "reference": "fd497c45ba9c10c37864e19466b090dcb60a50ba" + "reference": "a3d9eea8cfa467ece41f0f54ba28185d74bd53fd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/fd497c45ba9c10c37864e19466b090dcb60a50ba", - "reference": "fd497c45ba9c10c37864e19466b090dcb60a50ba", + "url": "https://api.github.com/repos/symfony/mailer/zipball/a3d9eea8cfa467ece41f0f54ba28185d74bd53fd", + "reference": "a3d9eea8cfa467ece41f0f54ba28185d74bd53fd", "shasum": "" }, "require": { @@ -5314,8 +5328,8 @@ "php": ">=8.2", "psr/event-dispatcher": "^1", "psr/log": "^1|^2|^3", - "symfony/event-dispatcher": "^6.4|^7.0", - "symfony/mime": "^7.2", + "symfony/event-dispatcher": "^6.4|^7.0|^8.0", + "symfony/mime": "^7.2|^8.0", "symfony/service-contracts": "^2.5|^3" }, "conflict": { @@ -5326,10 +5340,10 @@ "symfony/twig-bridge": "<6.4" }, "require-dev": { - "symfony/console": "^6.4|^7.0", - "symfony/http-client": "^6.4|^7.0", - "symfony/messenger": "^6.4|^7.0", - "symfony/twig-bridge": "^6.4|^7.0" + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/http-client": "^6.4|^7.0|^8.0", + "symfony/messenger": "^6.4|^7.0|^8.0", + "symfony/twig-bridge": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -5357,7 +5371,7 @@ "description": "Helps sending emails", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailer/tree/v7.3.5" + "source": "https://github.com/symfony/mailer/tree/v7.4.0" }, "funding": [ { @@ -5377,24 +5391,25 @@ "type": "tidelift" } ], - "time": "2025-10-24T14:27:20+00:00" + "time": "2025-11-21T15:26:00+00:00" }, { "name": "symfony/mime", - "version": "v7.3.4", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "b1b828f69cbaf887fa835a091869e55df91d0e35" + "reference": "bdb02729471be5d047a3ac4a69068748f1a6be7a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/b1b828f69cbaf887fa835a091869e55df91d0e35", - "reference": "b1b828f69cbaf887fa835a091869e55df91d0e35", + "url": "https://api.github.com/repos/symfony/mime/zipball/bdb02729471be5d047a3ac4a69068748f1a6be7a", + "reference": "bdb02729471be5d047a3ac4a69068748f1a6be7a", "shasum": "" }, "require": { "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-intl-idn": "^1.10", "symfony/polyfill-mbstring": "^1.0" }, @@ -5409,11 +5424,11 @@ "egulias/email-validator": "^2.1.10|^3.1|^4", "league/html-to-markdown": "^5.0", "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/process": "^6.4|^7.0", - "symfony/property-access": "^6.4|^7.0", - "symfony/property-info": "^6.4|^7.0", - "symfony/serializer": "^6.4.3|^7.0.3" + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/process": "^6.4|^7.0|^8.0", + "symfony/property-access": "^6.4|^7.0|^8.0", + "symfony/property-info": "^6.4|^7.0|^8.0", + "symfony/serializer": "^6.4.3|^7.0.3|^8.0" }, "type": "library", "autoload": { @@ -5445,7 +5460,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v7.3.4" + "source": "https://github.com/symfony/mime/tree/v7.4.0" }, "funding": [ { @@ -5465,26 +5480,27 @@ "type": "tidelift" } ], - "time": "2025-09-16T08:38:17+00:00" + "time": "2025-11-16T10:14:42+00:00" }, { "name": "symfony/monolog-bridge", - "version": "v7.3.6", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/monolog-bridge.git", - "reference": "48e8542ba35afd2293a8c8fd4bcf8abe46357ddf" + "reference": "189d16466ff83d9c51fad26382bf0beeb41bda21" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/48e8542ba35afd2293a8c8fd4bcf8abe46357ddf", - "reference": "48e8542ba35afd2293a8c8fd4bcf8abe46357ddf", + "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/189d16466ff83d9c51fad26382bf0beeb41bda21", + "reference": "189d16466ff83d9c51fad26382bf0beeb41bda21", "shasum": "" }, "require": { "monolog/monolog": "^3", "php": ">=8.2", - "symfony/http-kernel": "^6.4|^7.0", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/http-kernel": "^6.4|^7.0|^8.0", "symfony/service-contracts": "^2.5|^3" }, "conflict": { @@ -5493,13 +5509,13 @@ "symfony/security-core": "<6.4" }, "require-dev": { - "symfony/console": "^6.4|^7.0", - "symfony/http-client": "^6.4|^7.0", - "symfony/mailer": "^6.4|^7.0", - "symfony/messenger": "^6.4|^7.0", - "symfony/mime": "^6.4|^7.0", - "symfony/security-core": "^6.4|^7.0", - "symfony/var-dumper": "^6.4|^7.0" + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/http-client": "^6.4|^7.0|^8.0", + "symfony/mailer": "^6.4|^7.0|^8.0", + "symfony/messenger": "^6.4|^7.0|^8.0", + "symfony/mime": "^6.4|^7.0|^8.0", + "symfony/security-core": "^6.4|^7.0|^8.0", + "symfony/var-dumper": "^6.4|^7.0|^8.0" }, "type": "symfony-bridge", "autoload": { @@ -5527,7 +5543,7 @@ "description": "Provides integration for Monolog with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/monolog-bridge/tree/v7.3.6" + "source": "https://github.com/symfony/monolog-bridge/tree/v7.4.0" }, "funding": [ { @@ -5547,48 +5563,43 @@ "type": "tidelift" } ], - "time": "2025-11-01T09:17:24+00:00" + "time": "2025-11-01T09:17:33+00:00" }, { "name": "symfony/monolog-bundle", - "version": "v3.10.0", + "version": "v3.11.0", "source": { "type": "git", "url": "https://github.com/symfony/monolog-bundle.git", - "reference": "414f951743f4aa1fd0f5bf6a0e9c16af3fe7f181" + "reference": "e12eb92655b234cd50c21cda648088847a7ec777" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/monolog-bundle/zipball/414f951743f4aa1fd0f5bf6a0e9c16af3fe7f181", - "reference": "414f951743f4aa1fd0f5bf6a0e9c16af3fe7f181", + "url": "https://api.github.com/repos/symfony/monolog-bundle/zipball/e12eb92655b234cd50c21cda648088847a7ec777", + "reference": "e12eb92655b234cd50c21cda648088847a7ec777", "shasum": "" }, "require": { + "composer-runtime-api": "^2.0", "monolog/monolog": "^1.25.1 || ^2.0 || ^3.0", - "php": ">=7.2.5", - "symfony/config": "^5.4 || ^6.0 || ^7.0", - "symfony/dependency-injection": "^5.4 || ^6.0 || ^7.0", - "symfony/http-kernel": "^5.4 || ^6.0 || ^7.0", - "symfony/monolog-bridge": "^5.4 || ^6.0 || ^7.0" + "php": ">=8.1", + "symfony/config": "^6.4 || ^7.0", + "symfony/dependency-injection": "^6.4 || ^7.0", + "symfony/deprecation-contracts": "^2.5 || ^3.0", + "symfony/http-kernel": "^6.4 || ^7.0", + "symfony/monolog-bridge": "^6.4 || ^7.0", + "symfony/polyfill-php84": "^1.30" }, "require-dev": { - "symfony/console": "^5.4 || ^6.0 || ^7.0", - "symfony/phpunit-bridge": "^6.3 || ^7.0", - "symfony/yaml": "^5.4 || ^6.0 || ^7.0" + "symfony/console": "^6.4 || ^7.0", + "symfony/phpunit-bridge": "^7.3.3", + "symfony/yaml": "^6.4 || ^7.0" }, "type": "symfony-bundle", - "extra": { - "branch-alias": { - "dev-master": "3.x-dev" - } - }, "autoload": { "psr-4": { - "Symfony\\Bundle\\MonologBundle\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Symfony\\Bundle\\MonologBundle\\": "src" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -5612,7 +5623,7 @@ ], "support": { "issues": "https://github.com/symfony/monolog-bundle/issues", - "source": "https://github.com/symfony/monolog-bundle/tree/v3.10.0" + "source": "https://github.com/symfony/monolog-bundle/tree/v3.11.0" }, "funding": [ { @@ -5623,25 +5634,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2023-11-06T17:08:13+00:00" + "time": "2025-11-27T09:16:19+00:00" }, { "name": "symfony/options-resolver", - "version": "v7.3.3", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/options-resolver.git", - "reference": "0ff2f5c3df08a395232bbc3c2eb7e84912df911d" + "reference": "b38026df55197f9e39a44f3215788edf83187b80" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/0ff2f5c3df08a395232bbc3c2eb7e84912df911d", - "reference": "0ff2f5c3df08a395232bbc3c2eb7e84912df911d", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/b38026df55197f9e39a44f3215788edf83187b80", + "reference": "b38026df55197f9e39a44f3215788edf83187b80", "shasum": "" }, "require": { @@ -5679,7 +5694,7 @@ "options" ], "support": { - "source": "https://github.com/symfony/options-resolver/tree/v7.3.3" + "source": "https://github.com/symfony/options-resolver/tree/v7.4.0" }, "funding": [ { @@ -5699,20 +5714,20 @@ "type": "tidelift" } ], - "time": "2025-08-05T10:16:07+00:00" + "time": "2025-11-12T15:39:26+00:00" }, { "name": "symfony/password-hasher", - "version": "v7.3.0", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/password-hasher.git", - "reference": "31fbe66af859582a20b803f38be96be8accdf2c3" + "reference": "aa075ce6f54fe931f03c1e382597912f4fd94e1e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/password-hasher/zipball/31fbe66af859582a20b803f38be96be8accdf2c3", - "reference": "31fbe66af859582a20b803f38be96be8accdf2c3", + "url": "https://api.github.com/repos/symfony/password-hasher/zipball/aa075ce6f54fe931f03c1e382597912f4fd94e1e", + "reference": "aa075ce6f54fe931f03c1e382597912f4fd94e1e", "shasum": "" }, "require": { @@ -5722,8 +5737,8 @@ "symfony/security-core": "<6.4" }, "require-dev": { - "symfony/console": "^6.4|^7.0", - "symfony/security-core": "^6.4|^7.0" + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/security-core": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -5755,7 +5770,7 @@ "password" ], "support": { - "source": "https://github.com/symfony/password-hasher/tree/v7.3.0" + "source": "https://github.com/symfony/password-hasher/tree/v7.4.0" }, "funding": [ { @@ -5766,12 +5781,16 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-02-04T08:22:58+00:00" + "time": "2025-08-13T16:46:49+00:00" }, { "name": "symfony/polyfill-ctype", @@ -6443,26 +6462,107 @@ ], "time": "2025-06-24T13:30:11+00:00" }, + { + "name": "symfony/polyfill-php85", + "version": "v1.33.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php85.git", + "reference": "d4e5fcd4ab3d998ab16c0db48e6cbb9a01993f91" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php85/zipball/d4e5fcd4ab3d998ab16c0db48e6cbb9a01993f91", + "reference": "d4e5fcd4ab3d998ab16c0db48e6cbb9a01993f91", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php85\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.5+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php85/tree/v1.33.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-06-23T16:12:55+00:00" + }, { "name": "symfony/property-access", - "version": "v7.3.3", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/property-access.git", - "reference": "4a4389e5c8bd1d0320d80a23caa6a1ac71cb81a7" + "reference": "537626149d2910ca43eb9ce465654366bf4442f4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-access/zipball/4a4389e5c8bd1d0320d80a23caa6a1ac71cb81a7", - "reference": "4a4389e5c8bd1d0320d80a23caa6a1ac71cb81a7", + "url": "https://api.github.com/repos/symfony/property-access/zipball/537626149d2910ca43eb9ce465654366bf4442f4", + "reference": "537626149d2910ca43eb9ce465654366bf4442f4", "shasum": "" }, "require": { "php": ">=8.2", - "symfony/property-info": "^6.4|^7.0" + "symfony/property-info": "^6.4|^7.0|^8.0" }, "require-dev": { - "symfony/cache": "^6.4|^7.0" + "symfony/cache": "^6.4|^7.0|^8.0", + "symfony/var-exporter": "^6.4.1|^7.0.1|^8.0" }, "type": "library", "autoload": { @@ -6501,7 +6601,7 @@ "reflection" ], "support": { - "source": "https://github.com/symfony/property-access/tree/v7.3.3" + "source": "https://github.com/symfony/property-access/tree/v7.4.0" }, "funding": [ { @@ -6521,27 +6621,27 @@ "type": "tidelift" } ], - "time": "2025-08-04T15:15:28+00:00" + "time": "2025-09-08T21:14:32+00:00" }, { "name": "symfony/property-info", - "version": "v7.3.5", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/property-info.git", - "reference": "0b346ed259dc5da43535caf243005fe7d4b0f051" + "reference": "c3c686e3d3a33a99f6967e69d6d5832acb7c25a1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-info/zipball/0b346ed259dc5da43535caf243005fe7d4b0f051", - "reference": "0b346ed259dc5da43535caf243005fe7d4b0f051", + "url": "https://api.github.com/repos/symfony/property-info/zipball/c3c686e3d3a33a99f6967e69d6d5832acb7c25a1", + "reference": "c3c686e3d3a33a99f6967e69d6d5832acb7c25a1", "shasum": "" }, "require": { "php": ">=8.2", "symfony/deprecation-contracts": "^2.5|^3", - "symfony/string": "^6.4|^7.0", - "symfony/type-info": "^7.3.5" + "symfony/string": "^6.4|^7.0|^8.0", + "symfony/type-info": "^7.3.5|^8.0" }, "conflict": { "phpdocumentor/reflection-docblock": "<5.2", @@ -6553,9 +6653,9 @@ "require-dev": { "phpdocumentor/reflection-docblock": "^5.2", "phpstan/phpdoc-parser": "^1.0|^2.0", - "symfony/cache": "^6.4|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/serializer": "^6.4|^7.0" + "symfony/cache": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/serializer": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -6591,7 +6691,7 @@ "validator" ], "support": { - "source": "https://github.com/symfony/property-info/tree/v7.3.5" + "source": "https://github.com/symfony/property-info/tree/v7.4.0" }, "funding": [ { @@ -6611,20 +6711,20 @@ "type": "tidelift" } ], - "time": "2025-10-05T22:12:41+00:00" + "time": "2025-11-13T08:38:49+00:00" }, { "name": "symfony/routing", - "version": "v7.3.6", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "c97abe725f2a1a858deca629a6488c8fc20c3091" + "reference": "4720254cb2644a0b876233d258a32bf017330db7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/c97abe725f2a1a858deca629a6488c8fc20c3091", - "reference": "c97abe725f2a1a858deca629a6488c8fc20c3091", + "url": "https://api.github.com/repos/symfony/routing/zipball/4720254cb2644a0b876233d258a32bf017330db7", + "reference": "4720254cb2644a0b876233d258a32bf017330db7", "shasum": "" }, "require": { @@ -6638,11 +6738,11 @@ }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/config": "^6.4|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/expression-language": "^6.4|^7.0", - "symfony/http-foundation": "^6.4|^7.0", - "symfony/yaml": "^6.4|^7.0" + "symfony/config": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/expression-language": "^6.4|^7.0|^8.0", + "symfony/http-foundation": "^6.4|^7.0|^8.0", + "symfony/yaml": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -6676,7 +6776,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v7.3.6" + "source": "https://github.com/symfony/routing/tree/v7.4.0" }, "funding": [ { @@ -6696,20 +6796,20 @@ "type": "tidelift" } ], - "time": "2025-11-05T07:57:47+00:00" + "time": "2025-11-27T13:27:24+00:00" }, { "name": "symfony/runtime", - "version": "v7.3.4", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/runtime.git", - "reference": "3550e2711e30bfa5d808514781cd52d1cc1d9e9f" + "reference": "e3dd6c0f46a6810b3245726e8452cee45754e628" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/runtime/zipball/3550e2711e30bfa5d808514781cd52d1cc1d9e9f", - "reference": "3550e2711e30bfa5d808514781cd52d1cc1d9e9f", + "url": "https://api.github.com/repos/symfony/runtime/zipball/e3dd6c0f46a6810b3245726e8452cee45754e628", + "reference": "e3dd6c0f46a6810b3245726e8452cee45754e628", "shasum": "" }, "require": { @@ -6721,10 +6821,10 @@ }, "require-dev": { "composer/composer": "^2.6", - "symfony/console": "^6.4|^7.0", - "symfony/dotenv": "^6.4|^7.0", - "symfony/http-foundation": "^6.4|^7.0", - "symfony/http-kernel": "^6.4|^7.0" + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/dotenv": "^6.4|^7.0|^8.0", + "symfony/http-foundation": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0" }, "type": "composer-plugin", "extra": { @@ -6759,7 +6859,7 @@ "runtime" ], "support": { - "source": "https://github.com/symfony/runtime/tree/v7.3.4" + "source": "https://github.com/symfony/runtime/tree/v7.4.0" }, "funding": [ { @@ -6779,36 +6879,37 @@ "type": "tidelift" } ], - "time": "2025-09-11T15:31:28+00:00" + "time": "2025-11-04T03:05:49+00:00" }, { "name": "symfony/security-bundle", - "version": "v7.3.4", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/security-bundle.git", - "reference": "f750d9abccbeaa433c56f6a4eb2073166476a75a" + "reference": "48a64e746857464a5e8fd7bab84b31c9ba967eb9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-bundle/zipball/f750d9abccbeaa433c56f6a4eb2073166476a75a", - "reference": "f750d9abccbeaa433c56f6a4eb2073166476a75a", + "url": "https://api.github.com/repos/symfony/security-bundle/zipball/48a64e746857464a5e8fd7bab84b31c9ba967eb9", + "reference": "48a64e746857464a5e8fd7bab84b31c9ba967eb9", "shasum": "" }, "require": { "composer-runtime-api": ">=2.1", "ext-xml": "*", "php": ">=8.2", - "symfony/clock": "^6.4|^7.0", - "symfony/config": "^7.3", - "symfony/dependency-injection": "^6.4.11|^7.1.4", - "symfony/event-dispatcher": "^6.4|^7.0", - "symfony/http-foundation": "^6.4|^7.0", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/password-hasher": "^6.4|^7.0", - "symfony/security-core": "^7.3", - "symfony/security-csrf": "^6.4|^7.0", - "symfony/security-http": "^7.3", + "symfony/clock": "^6.4|^7.0|^8.0", + "symfony/config": "^7.4|^8.0", + "symfony/dependency-injection": "^6.4.11|^7.1.4|^8.0", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/event-dispatcher": "^6.4|^7.0|^8.0", + "symfony/http-foundation": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4.13|^7.1.6|^8.0", + "symfony/password-hasher": "^6.4|^7.0|^8.0", + "symfony/security-core": "^7.4|^8.0", + "symfony/security-csrf": "^6.4|^7.0|^8.0", + "symfony/security-http": "^7.4|^8.0", "symfony/service-contracts": "^2.5|^3" }, "conflict": { @@ -6822,25 +6923,26 @@ "symfony/validator": "<6.4" }, "require-dev": { - "symfony/asset": "^6.4|^7.0", - "symfony/browser-kit": "^6.4|^7.0", - "symfony/console": "^6.4|^7.0", - "symfony/css-selector": "^6.4|^7.0", - "symfony/dom-crawler": "^6.4|^7.0", - "symfony/expression-language": "^6.4|^7.0", - "symfony/form": "^6.4|^7.0", - "symfony/framework-bundle": "^6.4|^7.0", - "symfony/http-client": "^6.4|^7.0", - "symfony/ldap": "^6.4|^7.0", - "symfony/process": "^6.4|^7.0", - "symfony/rate-limiter": "^6.4|^7.0", - "symfony/serializer": "^6.4|^7.0", - "symfony/translation": "^6.4|^7.0", - "symfony/twig-bridge": "^6.4|^7.0", - "symfony/twig-bundle": "^6.4|^7.0", - "symfony/validator": "^6.4|^7.0", - "symfony/yaml": "^6.4|^7.0", - "twig/twig": "^3.12", + "symfony/asset": "^6.4|^7.0|^8.0", + "symfony/browser-kit": "^6.4|^7.0|^8.0", + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/css-selector": "^6.4|^7.0|^8.0", + "symfony/dom-crawler": "^6.4|^7.0|^8.0", + "symfony/expression-language": "^6.4|^7.0|^8.0", + "symfony/form": "^6.4|^7.0|^8.0", + "symfony/framework-bundle": "^6.4.13|^7.1.6|^8.0", + "symfony/http-client": "^6.4|^7.0|^8.0", + "symfony/ldap": "^6.4|^7.0|^8.0", + "symfony/process": "^6.4|^7.0|^8.0", + "symfony/rate-limiter": "^6.4|^7.0|^8.0", + "symfony/runtime": "^6.4.13|^7.1.6|^8.0", + "symfony/serializer": "^6.4|^7.0|^8.0", + "symfony/translation": "^6.4|^7.0|^8.0", + "symfony/twig-bridge": "^6.4|^7.0|^8.0", + "symfony/twig-bundle": "^6.4|^7.0|^8.0", + "symfony/validator": "^6.4|^7.0|^8.0", + "symfony/yaml": "^6.4|^7.0|^8.0", + "twig/twig": "^3.15", "web-token/jwt-library": "^3.3.2|^4.0" }, "type": "symfony-bundle", @@ -6869,7 +6971,7 @@ "description": "Provides a tight integration of the Security component into the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-bundle/tree/v7.3.4" + "source": "https://github.com/symfony/security-bundle/tree/v7.4.0" }, "funding": [ { @@ -6889,27 +6991,27 @@ "type": "tidelift" } ], - "time": "2025-09-22T15:31:00+00:00" + "time": "2025-11-14T09:57:20+00:00" }, { "name": "symfony/security-core", - "version": "v7.3.5", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/security-core.git", - "reference": "772a7c1eddd8bf8a977a67e6e8adc59650c604eb" + "reference": "fe4d25e5700a2f3b605bf23f520be57504ae5c51" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-core/zipball/772a7c1eddd8bf8a977a67e6e8adc59650c604eb", - "reference": "772a7c1eddd8bf8a977a67e6e8adc59650c604eb", + "url": "https://api.github.com/repos/symfony/security-core/zipball/fe4d25e5700a2f3b605bf23f520be57504ae5c51", + "reference": "fe4d25e5700a2f3b605bf23f520be57504ae5c51", "shasum": "" }, "require": { "php": ">=8.2", "symfony/deprecation-contracts": "^2.5|^3", "symfony/event-dispatcher-contracts": "^2.5|^3", - "symfony/password-hasher": "^6.4|^7.0", + "symfony/password-hasher": "^6.4|^7.0|^8.0", "symfony/service-contracts": "^2.5|^3" }, "conflict": { @@ -6924,15 +7026,15 @@ "psr/cache": "^1.0|^2.0|^3.0", "psr/container": "^1.1|^2.0", "psr/log": "^1|^2|^3", - "symfony/cache": "^6.4|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/event-dispatcher": "^6.4|^7.0", - "symfony/expression-language": "^6.4|^7.0", - "symfony/http-foundation": "^6.4|^7.0", - "symfony/ldap": "^6.4|^7.0", - "symfony/string": "^6.4|^7.0", - "symfony/translation": "^6.4.3|^7.0.3", - "symfony/validator": "^6.4|^7.0" + "symfony/cache": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/event-dispatcher": "^6.4|^7.0|^8.0", + "symfony/expression-language": "^6.4|^7.0|^8.0", + "symfony/http-foundation": "^6.4|^7.0|^8.0", + "symfony/ldap": "^6.4|^7.0|^8.0", + "symfony/string": "^6.4|^7.0|^8.0", + "symfony/translation": "^6.4.3|^7.0.3|^8.0", + "symfony/validator": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -6960,7 +7062,7 @@ "description": "Symfony Security Component - Core Library", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-core/tree/v7.3.5" + "source": "https://github.com/symfony/security-core/tree/v7.4.0" }, "funding": [ { @@ -6980,33 +7082,33 @@ "type": "tidelift" } ], - "time": "2025-10-24T14:27:20+00:00" + "time": "2025-11-21T15:26:00+00:00" }, { "name": "symfony/security-csrf", - "version": "v7.3.0", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/security-csrf.git", - "reference": "2b4b0c46c901729e4e90719eacd980381f53e0a3" + "reference": "ec41009e83589d0b3d86bd131d07e6fc8ecf35ab" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-csrf/zipball/2b4b0c46c901729e4e90719eacd980381f53e0a3", - "reference": "2b4b0c46c901729e4e90719eacd980381f53e0a3", + "url": "https://api.github.com/repos/symfony/security-csrf/zipball/ec41009e83589d0b3d86bd131d07e6fc8ecf35ab", + "reference": "ec41009e83589d0b3d86bd131d07e6fc8ecf35ab", "shasum": "" }, "require": { "php": ">=8.2", - "symfony/security-core": "^6.4|^7.0" + "symfony/security-core": "^6.4|^7.0|^8.0" }, "conflict": { "symfony/http-foundation": "<6.4" }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/http-foundation": "^6.4|^7.0", - "symfony/http-kernel": "^6.4|^7.0" + "symfony/http-foundation": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -7034,7 +7136,7 @@ "description": "Symfony Security Component - CSRF Library", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-csrf/tree/v7.3.0" + "source": "https://github.com/symfony/security-csrf/tree/v7.4.0" }, "funding": [ { @@ -7045,55 +7147,59 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-01-02T18:42:10+00:00" + "time": "2025-11-21T15:26:00+00:00" }, { "name": "symfony/security-http", - "version": "v7.3.5", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/security-http.git", - "reference": "e79a63fd5dec6e5b1ba31227e98d860a4f8ba95c" + "reference": "92f9cc6494f3d29042ac35c2ee5209191bbbb781" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-http/zipball/e79a63fd5dec6e5b1ba31227e98d860a4f8ba95c", - "reference": "e79a63fd5dec6e5b1ba31227e98d860a4f8ba95c", + "url": "https://api.github.com/repos/symfony/security-http/zipball/92f9cc6494f3d29042ac35c2ee5209191bbbb781", + "reference": "92f9cc6494f3d29042ac35c2ee5209191bbbb781", "shasum": "" }, "require": { "php": ">=8.2", "symfony/deprecation-contracts": "^2.5|^3", - "symfony/http-foundation": "^6.4|^7.0", - "symfony/http-kernel": "^6.4|^7.0", + "symfony/event-dispatcher": "^6.4|^7.0", + "symfony/http-foundation": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", "symfony/polyfill-mbstring": "~1.0", - "symfony/property-access": "^6.4|^7.0", - "symfony/security-core": "^7.3", + "symfony/property-access": "^6.4|^7.0|^8.0", + "symfony/security-core": "^7.3|^8.0", "symfony/service-contracts": "^2.5|^3" }, "conflict": { "symfony/clock": "<6.4", - "symfony/event-dispatcher": "<6.4", "symfony/http-client-contracts": "<3.0", "symfony/security-bundle": "<6.4", "symfony/security-csrf": "<6.4" }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/cache": "^6.4|^7.0", - "symfony/clock": "^6.4|^7.0", - "symfony/expression-language": "^6.4|^7.0", - "symfony/http-client": "^6.4|^7.0", + "symfony/cache": "^6.4|^7.0|^8.0", + "symfony/clock": "^6.4|^7.0|^8.0", + "symfony/expression-language": "^6.4|^7.0|^8.0", + "symfony/http-client": "^6.4|^7.0|^8.0", "symfony/http-client-contracts": "^3.0", - "symfony/rate-limiter": "^6.4|^7.0", - "symfony/routing": "^6.4|^7.0", - "symfony/security-csrf": "^6.4|^7.0", - "symfony/translation": "^6.4|^7.0", + "symfony/rate-limiter": "^6.4|^7.0|^8.0", + "symfony/routing": "^6.4|^7.0|^8.0", + "symfony/security-csrf": "^6.4|^7.0|^8.0", + "symfony/translation": "^6.4|^7.0|^8.0", "web-token/jwt-library": "^3.3.2|^4.0" }, "type": "library", @@ -7122,7 +7228,7 @@ "description": "Symfony Security Component - HTTP Integration", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-http/tree/v7.3.5" + "source": "https://github.com/symfony/security-http/tree/v7.4.0" }, "funding": [ { @@ -7142,7 +7248,7 @@ "type": "tidelift" } ], - "time": "2025-10-13T09:30:10+00:00" + "time": "2025-11-27T13:27:24+00:00" }, { "name": "symfony/service-contracts", @@ -7233,16 +7339,16 @@ }, { "name": "symfony/stopwatch", - "version": "v7.3.0", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/stopwatch.git", - "reference": "5a49289e2b308214c8b9c2fda4ea454d8b8ad7cd" + "reference": "8a24af0a2e8a872fb745047180649b8418303084" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/5a49289e2b308214c8b9c2fda4ea454d8b8ad7cd", - "reference": "5a49289e2b308214c8b9c2fda4ea454d8b8ad7cd", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/8a24af0a2e8a872fb745047180649b8418303084", + "reference": "8a24af0a2e8a872fb745047180649b8418303084", "shasum": "" }, "require": { @@ -7275,7 +7381,7 @@ "description": "Provides a way to profile code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/stopwatch/tree/v7.3.0" + "source": "https://github.com/symfony/stopwatch/tree/v7.4.0" }, "funding": [ { @@ -7286,31 +7392,36 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-02-24T10:49:57+00:00" + "time": "2025-08-04T07:05:15+00:00" }, { "name": "symfony/string", - "version": "v7.3.4", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "f96476035142921000338bad71e5247fbc138872" + "reference": "d50e862cb0a0e0886f73ca1f31b865efbb795003" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/f96476035142921000338bad71e5247fbc138872", - "reference": "f96476035142921000338bad71e5247fbc138872", + "url": "https://api.github.com/repos/symfony/string/zipball/d50e862cb0a0e0886f73ca1f31b865efbb795003", + "reference": "d50e862cb0a0e0886f73ca1f31b865efbb795003", "shasum": "" }, "require": { "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3.0", "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-grapheme": "~1.0", + "symfony/polyfill-intl-grapheme": "~1.33", "symfony/polyfill-intl-normalizer": "~1.0", "symfony/polyfill-mbstring": "~1.0" }, @@ -7318,11 +7429,11 @@ "symfony/translation-contracts": "<2.5" }, "require-dev": { - "symfony/emoji": "^7.1", - "symfony/http-client": "^6.4|^7.0", - "symfony/intl": "^6.4|^7.0", + "symfony/emoji": "^7.1|^8.0", + "symfony/http-client": "^6.4|^7.0|^8.0", + "symfony/intl": "^6.4|^7.0|^8.0", "symfony/translation-contracts": "^2.5|^3.0", - "symfony/var-exporter": "^6.4|^7.0" + "symfony/var-exporter": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -7361,7 +7472,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v7.3.4" + "source": "https://github.com/symfony/string/tree/v7.4.0" }, "funding": [ { @@ -7381,7 +7492,7 @@ "type": "tidelift" } ], - "time": "2025-09-11T14:36:48+00:00" + "time": "2025-11-27T13:27:24+00:00" }, { "name": "symfony/templating", @@ -7455,23 +7566,23 @@ }, { "name": "symfony/translation", - "version": "v7.3.4", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "ec25870502d0c7072d086e8ffba1420c85965174" + "reference": "2d01ca0da3f092f91eeedb46f24aa30d2fca8f68" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/ec25870502d0c7072d086e8ffba1420c85965174", - "reference": "ec25870502d0c7072d086e8ffba1420c85965174", + "url": "https://api.github.com/repos/symfony/translation/zipball/2d01ca0da3f092f91eeedb46f24aa30d2fca8f68", + "reference": "2d01ca0da3f092f91eeedb46f24aa30d2fca8f68", "shasum": "" }, "require": { "php": ">=8.2", "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-mbstring": "~1.0", - "symfony/translation-contracts": "^2.5|^3.0" + "symfony/translation-contracts": "^2.5.3|^3.3" }, "conflict": { "nikic/php-parser": "<5.0", @@ -7490,17 +7601,17 @@ "require-dev": { "nikic/php-parser": "^5.0", "psr/log": "^1|^2|^3", - "symfony/config": "^6.4|^7.0", - "symfony/console": "^6.4|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/finder": "^6.4|^7.0", + "symfony/config": "^6.4|^7.0|^8.0", + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/finder": "^6.4|^7.0|^8.0", "symfony/http-client-contracts": "^2.5|^3.0", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/intl": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/intl": "^6.4|^7.0|^8.0", "symfony/polyfill-intl-icu": "^1.21", - "symfony/routing": "^6.4|^7.0", + "symfony/routing": "^6.4|^7.0|^8.0", "symfony/service-contracts": "^2.5|^3", - "symfony/yaml": "^6.4|^7.0" + "symfony/yaml": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -7531,7 +7642,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v7.3.4" + "source": "https://github.com/symfony/translation/tree/v7.4.0" }, "funding": [ { @@ -7551,7 +7662,7 @@ "type": "tidelift" } ], - "time": "2025-09-07T11:39:36+00:00" + "time": "2025-11-27T13:27:24+00:00" }, { "name": "symfony/translation-contracts", @@ -7637,16 +7748,16 @@ }, { "name": "symfony/twig-bridge", - "version": "v7.3.6", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/twig-bridge.git", - "reference": "d1aaec8eee1f5591f56b9efe00194d73a8e38319" + "reference": "e96998da928007554b8b8c02e677861877daced9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/d1aaec8eee1f5591f56b9efe00194d73a8e38319", - "reference": "d1aaec8eee1f5591f56b9efe00194d73a8e38319", + "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/e96998da928007554b8b8c02e677861877daced9", + "reference": "e96998da928007554b8b8c02e677861877daced9", "shasum": "" }, "require": { @@ -7671,33 +7782,33 @@ "egulias/email-validator": "^2.1.10|^3|^4", "league/html-to-markdown": "^5.0", "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/asset": "^6.4|^7.0", - "symfony/asset-mapper": "^6.4|^7.0", - "symfony/console": "^6.4|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/emoji": "^7.1", - "symfony/expression-language": "^6.4|^7.0", - "symfony/finder": "^6.4|^7.0", - "symfony/form": "^6.4.20|^7.2.5", - "symfony/html-sanitizer": "^6.4|^7.0", - "symfony/http-foundation": "^7.3", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/intl": "^6.4|^7.0", - "symfony/mime": "^6.4|^7.0", + "symfony/asset": "^6.4|^7.0|^8.0", + "symfony/asset-mapper": "^6.4|^7.0|^8.0", + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/emoji": "^7.1|^8.0", + "symfony/expression-language": "^6.4|^7.0|^8.0", + "symfony/finder": "^6.4|^7.0|^8.0", + "symfony/form": "^6.4.20|^7.2.5|^8.0", + "symfony/html-sanitizer": "^6.4|^7.0|^8.0", + "symfony/http-foundation": "^7.3|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/intl": "^6.4|^7.0|^8.0", + "symfony/mime": "^6.4|^7.0|^8.0", "symfony/polyfill-intl-icu": "~1.0", - "symfony/property-info": "^6.4|^7.0", - "symfony/routing": "^6.4|^7.0", + "symfony/property-info": "^6.4|^7.0|^8.0", + "symfony/routing": "^6.4|^7.0|^8.0", "symfony/security-acl": "^2.8|^3.0", - "symfony/security-core": "^6.4|^7.0", - "symfony/security-csrf": "^6.4|^7.0", - "symfony/security-http": "^6.4|^7.0", - "symfony/serializer": "^6.4.3|^7.0.3", - "symfony/stopwatch": "^6.4|^7.0", - "symfony/translation": "^6.4|^7.0", - "symfony/validator": "^6.4|^7.0", - "symfony/web-link": "^6.4|^7.0", - "symfony/workflow": "^6.4|^7.0", - "symfony/yaml": "^6.4|^7.0", + "symfony/security-core": "^6.4|^7.0|^8.0", + "symfony/security-csrf": "^6.4|^7.0|^8.0", + "symfony/security-http": "^6.4|^7.0|^8.0", + "symfony/serializer": "^6.4.3|^7.0.3|^8.0", + "symfony/stopwatch": "^6.4|^7.0|^8.0", + "symfony/translation": "^6.4|^7.0|^8.0", + "symfony/validator": "^6.4|^7.0|^8.0", + "symfony/web-link": "^6.4|^7.0|^8.0", + "symfony/workflow": "^6.4|^7.0|^8.0", + "symfony/yaml": "^6.4|^7.0|^8.0", "twig/cssinliner-extra": "^3", "twig/inky-extra": "^3", "twig/markdown-extra": "^3" @@ -7728,7 +7839,7 @@ "description": "Provides integration for Twig with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/twig-bridge/tree/v7.3.6" + "source": "https://github.com/symfony/twig-bridge/tree/v7.4.0" }, "funding": [ { @@ -7748,30 +7859,30 @@ "type": "tidelift" } ], - "time": "2025-11-04T15:37:51+00:00" + "time": "2025-11-05T14:29:59+00:00" }, { "name": "symfony/twig-bundle", - "version": "v7.3.4", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/twig-bundle.git", - "reference": "da5c778a8416fcce5318737c4d944f6fa2bb3f81" + "reference": "f83f530d00d1bbc6f7fafeb433077887c83326ef" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/da5c778a8416fcce5318737c4d944f6fa2bb3f81", - "reference": "da5c778a8416fcce5318737c4d944f6fa2bb3f81", + "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/f83f530d00d1bbc6f7fafeb433077887c83326ef", + "reference": "f83f530d00d1bbc6f7fafeb433077887c83326ef", "shasum": "" }, "require": { "composer-runtime-api": ">=2.1", "php": ">=8.2", - "symfony/config": "^7.3", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/http-foundation": "^6.4|^7.0", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/twig-bridge": "^7.3", + "symfony/config": "^7.4|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/http-foundation": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4.13|^7.1.6|^8.0", + "symfony/twig-bridge": "^7.3|^8.0", "twig/twig": "^3.12" }, "conflict": { @@ -7779,16 +7890,17 @@ "symfony/translation": "<6.4" }, "require-dev": { - "symfony/asset": "^6.4|^7.0", - "symfony/expression-language": "^6.4|^7.0", - "symfony/finder": "^6.4|^7.0", - "symfony/form": "^6.4|^7.0", - "symfony/framework-bundle": "^6.4|^7.0", - "symfony/routing": "^6.4|^7.0", - "symfony/stopwatch": "^6.4|^7.0", - "symfony/translation": "^6.4|^7.0", - "symfony/web-link": "^6.4|^7.0", - "symfony/yaml": "^6.4|^7.0" + "symfony/asset": "^6.4|^7.0|^8.0", + "symfony/expression-language": "^6.4|^7.0|^8.0", + "symfony/finder": "^6.4|^7.0|^8.0", + "symfony/form": "^6.4|^7.0|^8.0", + "symfony/framework-bundle": "^6.4.13|^7.1.6|^8.0", + "symfony/routing": "^6.4|^7.0|^8.0", + "symfony/runtime": "^6.4.13|^7.1.6", + "symfony/stopwatch": "^6.4|^7.0|^8.0", + "symfony/translation": "^6.4|^7.0|^8.0", + "symfony/web-link": "^6.4|^7.0|^8.0", + "symfony/yaml": "^6.4|^7.0|^8.0" }, "type": "symfony-bundle", "autoload": { @@ -7816,7 +7928,7 @@ "description": "Provides a tight integration of Twig into the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/twig-bundle/tree/v7.3.4" + "source": "https://github.com/symfony/twig-bundle/tree/v7.4.0" }, "funding": [ { @@ -7836,20 +7948,20 @@ "type": "tidelift" } ], - "time": "2025-09-10T12:00:31+00:00" + "time": "2025-10-02T07:41:02+00:00" }, { "name": "symfony/type-info", - "version": "v7.3.5", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/type-info.git", - "reference": "8b36f41421160db56914f897b57eaa6a830758b3" + "reference": "7f9743e921abcce92a03fc693530209c59e73076" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/type-info/zipball/8b36f41421160db56914f897b57eaa6a830758b3", - "reference": "8b36f41421160db56914f897b57eaa6a830758b3", + "url": "https://api.github.com/repos/symfony/type-info/zipball/7f9743e921abcce92a03fc693530209c59e73076", + "reference": "7f9743e921abcce92a03fc693530209c59e73076", "shasum": "" }, "require": { @@ -7899,7 +8011,7 @@ "type" ], "support": { - "source": "https://github.com/symfony/type-info/tree/v7.3.5" + "source": "https://github.com/symfony/type-info/tree/v7.4.0" }, "funding": [ { @@ -7919,20 +8031,20 @@ "type": "tidelift" } ], - "time": "2025-10-16T12:30:12+00:00" + "time": "2025-11-07T09:36:46+00:00" }, { "name": "symfony/validator", - "version": "v7.3.7", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/validator.git", - "reference": "8290a095497c3fe5046db21888d1f75b54ddf39d" + "reference": "829d4acbecc6a9c097ca9cb118d7f96f46d33da9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/validator/zipball/8290a095497c3fe5046db21888d1f75b54ddf39d", - "reference": "8290a095497c3fe5046db21888d1f75b54ddf39d", + "url": "https://api.github.com/repos/symfony/validator/zipball/829d4acbecc6a9c097ca9cb118d7f96f46d33da9", + "reference": "829d4acbecc6a9c097ca9cb118d7f96f46d33da9", "shasum": "" }, "require": { @@ -7952,27 +8064,29 @@ "symfony/intl": "<6.4", "symfony/property-info": "<6.4", "symfony/translation": "<6.4.3|>=7.0,<7.0.3", + "symfony/var-exporter": "<6.4.25|>=7.0,<7.3.3", "symfony/yaml": "<6.4" }, "require-dev": { "egulias/email-validator": "^2.1.10|^3|^4", - "symfony/cache": "^6.4|^7.0", - "symfony/config": "^6.4|^7.0", - "symfony/console": "^6.4|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/expression-language": "^6.4|^7.0", - "symfony/finder": "^6.4|^7.0", - "symfony/http-client": "^6.4|^7.0", - "symfony/http-foundation": "^6.4|^7.0", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/intl": "^6.4|^7.0", - "symfony/mime": "^6.4|^7.0", - "symfony/property-access": "^6.4|^7.0", - "symfony/property-info": "^6.4|^7.0", - "symfony/string": "^6.4|^7.0", - "symfony/translation": "^6.4.3|^7.0.3", + "symfony/cache": "^6.4|^7.0|^8.0", + "symfony/config": "^6.4|^7.0|^8.0", + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/expression-language": "^6.4|^7.0|^8.0", + "symfony/finder": "^6.4|^7.0|^8.0", + "symfony/http-client": "^6.4|^7.0|^8.0", + "symfony/http-foundation": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/intl": "^6.4|^7.0|^8.0", + "symfony/mime": "^6.4|^7.0|^8.0", + "symfony/process": "^6.4|^7.0|^8.0", + "symfony/property-access": "^6.4|^7.0|^8.0", + "symfony/property-info": "^6.4|^7.0|^8.0", + "symfony/string": "^6.4|^7.0|^8.0", + "symfony/translation": "^6.4.3|^7.0.3|^8.0", "symfony/type-info": "^7.1.8", - "symfony/yaml": "^6.4|^7.0" + "symfony/yaml": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -8001,7 +8115,7 @@ "description": "Provides tools to validate values", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/validator/tree/v7.3.7" + "source": "https://github.com/symfony/validator/tree/v7.4.0" }, "funding": [ { @@ -8021,20 +8135,20 @@ "type": "tidelift" } ], - "time": "2025-11-08T16:29:29+00:00" + "time": "2025-11-18T13:23:20+00:00" }, { "name": "symfony/var-dumper", - "version": "v7.3.5", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "476c4ae17f43a9a36650c69879dcf5b1e6ae724d" + "reference": "41fd6c4ae28c38b294b42af6db61446594a0dece" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/476c4ae17f43a9a36650c69879dcf5b1e6ae724d", - "reference": "476c4ae17f43a9a36650c69879dcf5b1e6ae724d", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/41fd6c4ae28c38b294b42af6db61446594a0dece", + "reference": "41fd6c4ae28c38b294b42af6db61446594a0dece", "shasum": "" }, "require": { @@ -8046,10 +8160,10 @@ "symfony/console": "<6.4" }, "require-dev": { - "symfony/console": "^6.4|^7.0", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/process": "^6.4|^7.0", - "symfony/uid": "^6.4|^7.0", + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/process": "^6.4|^7.0|^8.0", + "symfony/uid": "^6.4|^7.0|^8.0", "twig/twig": "^3.12" }, "bin": [ @@ -8088,7 +8202,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v7.3.5" + "source": "https://github.com/symfony/var-dumper/tree/v7.4.0" }, "funding": [ { @@ -8108,20 +8222,20 @@ "type": "tidelift" } ], - "time": "2025-09-27T09:00:46+00:00" + "time": "2025-10-27T20:36:44+00:00" }, { "name": "symfony/var-exporter", - "version": "v7.3.4", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/var-exporter.git", - "reference": "0f020b544a30a7fe8ba972e53ee48a74c0bc87f4" + "reference": "03a60f169c79a28513a78c967316fbc8bf17816f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-exporter/zipball/0f020b544a30a7fe8ba972e53ee48a74c0bc87f4", - "reference": "0f020b544a30a7fe8ba972e53ee48a74c0bc87f4", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/03a60f169c79a28513a78c967316fbc8bf17816f", + "reference": "03a60f169c79a28513a78c967316fbc8bf17816f", "shasum": "" }, "require": { @@ -8129,9 +8243,9 @@ "symfony/deprecation-contracts": "^2.5|^3" }, "require-dev": { - "symfony/property-access": "^6.4|^7.0", - "symfony/serializer": "^6.4|^7.0", - "symfony/var-dumper": "^6.4|^7.0" + "symfony/property-access": "^6.4|^7.0|^8.0", + "symfony/serializer": "^6.4|^7.0|^8.0", + "symfony/var-dumper": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -8169,7 +8283,7 @@ "serialize" ], "support": { - "source": "https://github.com/symfony/var-exporter/tree/v7.3.4" + "source": "https://github.com/symfony/var-exporter/tree/v7.4.0" }, "funding": [ { @@ -8189,32 +8303,32 @@ "type": "tidelift" } ], - "time": "2025-09-11T10:12:26+00:00" + "time": "2025-09-11T10:15:23+00:00" }, { "name": "symfony/yaml", - "version": "v7.3.5", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "90208e2fc6f68f613eae7ca25a2458a931b1bacc" + "reference": "6c84a4b55aee4cd02034d1c528e83f69ddf63810" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/90208e2fc6f68f613eae7ca25a2458a931b1bacc", - "reference": "90208e2fc6f68f613eae7ca25a2458a931b1bacc", + "url": "https://api.github.com/repos/symfony/yaml/zipball/6c84a4b55aee4cd02034d1c528e83f69ddf63810", + "reference": "6c84a4b55aee4cd02034d1c528e83f69ddf63810", "shasum": "" }, "require": { "php": ">=8.2", - "symfony/deprecation-contracts": "^2.5|^3.0", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-ctype": "^1.8" }, "conflict": { "symfony/console": "<6.4" }, "require-dev": { - "symfony/console": "^6.4|^7.0" + "symfony/console": "^6.4|^7.0|^8.0" }, "bin": [ "Resources/bin/yaml-lint" @@ -8245,7 +8359,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v7.3.5" + "source": "https://github.com/symfony/yaml/tree/v7.4.0" }, "funding": [ { @@ -8265,7 +8379,7 @@ "type": "tidelift" } ], - "time": "2025-09-27T09:00:46+00:00" + "time": "2025-11-16T10:14:42+00:00" }, { "name": "twig/extra-bundle", @@ -9466,16 +9580,16 @@ }, { "name": "overtrue/phplint", - "version": "9.6.2", + "version": "9.6.3", "source": { "type": "git", "url": "https://github.com/overtrue/phplint.git", - "reference": "e2ebdbac93fa6ffe45d724e350f77df34c1f8fb4" + "reference": "b0ec1d07b37a37e7fc872c8bdbddacadcecbe047" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/overtrue/phplint/zipball/e2ebdbac93fa6ffe45d724e350f77df34c1f8fb4", - "reference": "e2ebdbac93fa6ffe45d724e350f77df34c1f8fb4", + "url": "https://api.github.com/repos/overtrue/phplint/zipball/b0ec1d07b37a37e7fc872c8bdbddacadcecbe047", + "reference": "b0ec1d07b37a37e7fc872c8bdbddacadcecbe047", "shasum": "" }, "require": { @@ -9547,7 +9661,7 @@ ], "support": { "issues": "https://github.com/overtrue/phplint/issues", - "source": "https://github.com/overtrue/phplint/tree/9.6.2" + "source": "https://github.com/overtrue/phplint/tree/9.6.3" }, "funding": [ { @@ -9555,7 +9669,7 @@ "type": "github" } ], - "time": "2025-04-10T13:12:51+00:00" + "time": "2025-11-27T13:49:59+00:00" }, { "name": "pdepend/pdepend", @@ -11559,16 +11673,16 @@ }, { "name": "slevomat/coding-standard", - "version": "8.25.0", + "version": "8.25.1", "source": { "type": "git", "url": "https://github.com/slevomat/coding-standard.git", - "reference": "3ce4dafb4fe2493715f397f21772988ef2122e20" + "reference": "4caa5ec5a30b84b2305e80159c710d437f40cc40" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/slevomat/coding-standard/zipball/3ce4dafb4fe2493715f397f21772988ef2122e20", - "reference": "3ce4dafb4fe2493715f397f21772988ef2122e20", + "url": "https://api.github.com/repos/slevomat/coding-standard/zipball/4caa5ec5a30b84b2305e80159c710d437f40cc40", + "reference": "4caa5ec5a30b84b2305e80159c710d437f40cc40", "shasum": "" }, "require": { @@ -11608,7 +11722,7 @@ ], "support": { "issues": "https://github.com/slevomat/coding-standard/issues", - "source": "https://github.com/slevomat/coding-standard/tree/8.25.0" + "source": "https://github.com/slevomat/coding-standard/tree/8.25.1" }, "funding": [ { @@ -11620,7 +11734,7 @@ "type": "tidelift" } ], - "time": "2025-11-22T10:33:53+00:00" + "time": "2025-11-25T18:01:43+00:00" }, { "name": "squizlabs/php_codesniffer", @@ -11703,27 +11817,28 @@ }, { "name": "symfony/browser-kit", - "version": "v7.3.6", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/browser-kit.git", - "reference": "e9a9fd604296b17bf90939c3647069f1f16ef04e" + "reference": "3bb26dafce31633b1f699894c86379eefc8af5bb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/browser-kit/zipball/e9a9fd604296b17bf90939c3647069f1f16ef04e", - "reference": "e9a9fd604296b17bf90939c3647069f1f16ef04e", + "url": "https://api.github.com/repos/symfony/browser-kit/zipball/3bb26dafce31633b1f699894c86379eefc8af5bb", + "reference": "3bb26dafce31633b1f699894c86379eefc8af5bb", "shasum": "" }, "require": { "php": ">=8.2", - "symfony/dom-crawler": "^6.4|^7.0" + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/dom-crawler": "^6.4|^7.0|^8.0" }, "require-dev": { - "symfony/css-selector": "^6.4|^7.0", - "symfony/http-client": "^6.4|^7.0", - "symfony/mime": "^6.4|^7.0", - "symfony/process": "^6.4|^7.0" + "symfony/css-selector": "^6.4|^7.0|^8.0", + "symfony/http-client": "^6.4|^7.0|^8.0", + "symfony/mime": "^6.4|^7.0|^8.0", + "symfony/process": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -11751,7 +11866,7 @@ "description": "Simulates the behavior of a web browser, allowing you to make requests, click on links and submit forms programmatically", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/browser-kit/tree/v7.3.6" + "source": "https://github.com/symfony/browser-kit/tree/v7.4.0" }, "funding": [ { @@ -11771,30 +11886,31 @@ "type": "tidelift" } ], - "time": "2025-11-05T07:57:47+00:00" + "time": "2025-11-05T14:29:59+00:00" }, { "name": "symfony/dom-crawler", - "version": "v7.3.3", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/dom-crawler.git", - "reference": "efa076ea0eeff504383ff0dcf827ea5ce15690ba" + "reference": "8f3e7464fe7e77294686e935956a6a8ccf7442c4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/efa076ea0eeff504383ff0dcf827ea5ce15690ba", - "reference": "efa076ea0eeff504383ff0dcf827ea5ce15690ba", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/8f3e7464fe7e77294686e935956a6a8ccf7442c4", + "reference": "8f3e7464fe7e77294686e935956a6a8ccf7442c4", "shasum": "" }, "require": { "masterminds/html5": "^2.6", "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-mbstring": "~1.0" }, "require-dev": { - "symfony/css-selector": "^6.4|^7.0" + "symfony/css-selector": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -11822,7 +11938,7 @@ "description": "Eases DOM navigation for HTML and XML documents", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dom-crawler/tree/v7.3.3" + "source": "https://github.com/symfony/dom-crawler/tree/v7.4.0" }, "funding": [ { @@ -11842,32 +11958,28 @@ "type": "tidelift" } ], - "time": "2025-08-06T20:13:54+00:00" + "time": "2025-10-31T09:30:03+00:00" }, { "name": "symfony/phpunit-bridge", - "version": "v7.3.4", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/phpunit-bridge.git", - "reference": "ed77a629c13979e051b7000a317966474d566398" + "reference": "059b051b38f2138ef104dd848fa48f0cbbb7d78b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/ed77a629c13979e051b7000a317966474d566398", - "reference": "ed77a629c13979e051b7000a317966474d566398", + "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/059b051b38f2138ef104dd848fa48f0cbbb7d78b", + "reference": "059b051b38f2138ef104dd848fa48f0cbbb7d78b", "shasum": "" }, "require": { - "php": ">=7.2.5" - }, - "conflict": { - "phpunit/phpunit": "<7.5|9.1.2" + "php": ">=8.1.0" }, "require-dev": { - "symfony/deprecation-contracts": "^2.5|^3.0", - "symfony/error-handler": "^5.4|^6.4|^7.0", - "symfony/polyfill-php81": "^1.27" + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/error-handler": "^6.4.3|^7.0.3|^8.0" }, "bin": [ "bin/simple-phpunit" @@ -11911,7 +12023,7 @@ "testing" ], "support": { - "source": "https://github.com/symfony/phpunit-bridge/tree/v7.3.4" + "source": "https://github.com/symfony/phpunit-bridge/tree/v7.4.0" }, "funding": [ { @@ -11931,20 +12043,20 @@ "type": "tidelift" } ], - "time": "2025-09-12T12:18:52+00:00" + "time": "2025-10-28T22:44:23+00:00" }, { "name": "symfony/process", - "version": "v7.3.4", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "f24f8f316367b30810810d4eb30c543d7003ff3b" + "reference": "7ca8dc2d0dcf4882658313aba8be5d9fd01026c8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/f24f8f316367b30810810d4eb30c543d7003ff3b", - "reference": "f24f8f316367b30810810d4eb30c543d7003ff3b", + "url": "https://api.github.com/repos/symfony/process/zipball/7ca8dc2d0dcf4882658313aba8be5d9fd01026c8", + "reference": "7ca8dc2d0dcf4882658313aba8be5d9fd01026c8", "shasum": "" }, "require": { @@ -11976,7 +12088,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v7.3.4" + "source": "https://github.com/symfony/process/tree/v7.4.0" }, "funding": [ { @@ -11996,32 +12108,32 @@ "type": "tidelift" } ], - "time": "2025-09-11T10:12:26+00:00" + "time": "2025-10-16T11:21:06+00:00" }, { "name": "symfony/web-profiler-bundle", - "version": "v7.3.5", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/web-profiler-bundle.git", - "reference": "c2ed11cc0e9093fe0425ad52498d26a458842e0c" + "reference": "dcd955ca9c60f2942194854518049f8ae4dbd696" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/c2ed11cc0e9093fe0425ad52498d26a458842e0c", - "reference": "c2ed11cc0e9093fe0425ad52498d26a458842e0c", + "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/dcd955ca9c60f2942194854518049f8ae4dbd696", + "reference": "dcd955ca9c60f2942194854518049f8ae4dbd696", "shasum": "" }, "require": { "composer-runtime-api": ">=2.1", "php": ">=8.2", - "symfony/config": "^7.3", + "symfony/config": "^7.3|^8.0", "symfony/deprecation-contracts": "^2.5|^3", - "symfony/framework-bundle": "^6.4|^7.0", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/routing": "^6.4|^7.0", - "symfony/twig-bundle": "^6.4|^7.0", - "twig/twig": "^3.12" + "symfony/framework-bundle": "^6.4.13|^7.1.6|^8.0", + "symfony/http-kernel": "^6.4.13|^7.1.6|^8.0", + "symfony/routing": "^6.4|^7.0|^8.0", + "symfony/twig-bundle": "^6.4|^7.0|^8.0", + "twig/twig": "^3.15" }, "conflict": { "symfony/form": "<6.4", @@ -12031,10 +12143,11 @@ "symfony/workflow": "<7.3" }, "require-dev": { - "symfony/browser-kit": "^6.4|^7.0", - "symfony/console": "^6.4|^7.0", - "symfony/css-selector": "^6.4|^7.0", - "symfony/stopwatch": "^6.4|^7.0" + "symfony/browser-kit": "^6.4|^7.0|^8.0", + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/css-selector": "^6.4|^7.0|^8.0", + "symfony/runtime": "^6.4.13|^7.1.6|^8.0", + "symfony/stopwatch": "^6.4|^7.0|^8.0" }, "type": "symfony-bundle", "autoload": { @@ -12065,7 +12178,7 @@ "dev" ], "support": { - "source": "https://github.com/symfony/web-profiler-bundle/tree/v7.3.5" + "source": "https://github.com/symfony/web-profiler-bundle/tree/v7.4.0" }, "funding": [ { @@ -12085,7 +12198,7 @@ "type": "tidelift" } ], - "time": "2025-10-06T13:36:11+00:00" + "time": "2025-11-19T14:48:01+00:00" }, { "name": "theseer/tokenizer", diff --git a/config/packages/property_info.yaml b/config/packages/property_info.yaml new file mode 100644 index 000000000..dd31b9da2 --- /dev/null +++ b/config/packages/property_info.yaml @@ -0,0 +1,3 @@ +framework: + property_info: + with_constructor_extractor: true diff --git a/config/packages/twig.yaml b/config/packages/twig.yaml index d7764775c..c194f9370 100644 --- a/config/packages/twig.yaml +++ b/config/packages/twig.yaml @@ -2,7 +2,6 @@ twig: default_path: '%kernel.project_dir%/templates' debug: '%kernel.debug%' strict_variables: '%kernel.debug%' - exception_controller: null when@test: twig: diff --git a/config/reference.php b/config/reference.php new file mode 100644 index 000000000..8f25ce3a8 --- /dev/null +++ b/config/reference.php @@ -0,0 +1,2088 @@ + [ + * 'App\\' => [ + * 'resource' => '../src/', + * ], + * ], + * ]); + * ``` + * + * @psalm-type ImportsConfig = list + * @psalm-type ParametersConfig = array|null>|null> + * @psalm-type ArgumentsType = list|array + * @psalm-type CallType = array|array{0:string, 1?:ArgumentsType, 2?:bool}|array{method:string, arguments?:ArgumentsType, returns_clone?:bool} + * @psalm-type TagsType = list>> // arrays inside the list must have only one element, with the tag name as the key + * @psalm-type CallbackType = string|array{0:string|ReferenceConfigurator,1:string}|\Closure|ReferenceConfigurator|ExpressionConfigurator + * @psalm-type DeprecationType = array{package: string, version: string, message?: string} + * @psalm-type DefaultsType = array{ + * public?: bool, + * tags?: TagsType, + * resource_tags?: TagsType, + * autowire?: bool, + * autoconfigure?: bool, + * bind?: array, + * } + * @psalm-type InstanceofType = array{ + * shared?: bool, + * lazy?: bool|string, + * public?: bool, + * properties?: array, + * configurator?: CallbackType, + * calls?: list, + * tags?: TagsType, + * resource_tags?: TagsType, + * autowire?: bool, + * bind?: array, + * constructor?: string, + * } + * @psalm-type DefinitionType = array{ + * class?: string, + * file?: string, + * parent?: string, + * shared?: bool, + * synthetic?: bool, + * lazy?: bool|string, + * public?: bool, + * abstract?: bool, + * deprecated?: DeprecationType, + * factory?: CallbackType, + * configurator?: CallbackType, + * arguments?: ArgumentsType, + * properties?: array, + * calls?: list, + * tags?: TagsType, + * resource_tags?: TagsType, + * decorates?: string, + * decoration_inner_name?: string, + * decoration_priority?: int, + * decoration_on_invalid?: 'exception'|'ignore'|null, + * autowire?: bool, + * autoconfigure?: bool, + * bind?: array, + * constructor?: string, + * from_callable?: CallbackType, + * } + * @psalm-type AliasType = string|array{ + * alias: string, + * public?: bool, + * deprecated?: DeprecationType, + * } + * @psalm-type PrototypeType = array{ + * resource: string, + * namespace?: string, + * exclude?: string|list, + * parent?: string, + * shared?: bool, + * lazy?: bool|string, + * public?: bool, + * abstract?: bool, + * deprecated?: DeprecationType, + * factory?: CallbackType, + * arguments?: ArgumentsType, + * properties?: array, + * configurator?: CallbackType, + * calls?: list, + * tags?: TagsType, + * resource_tags?: TagsType, + * autowire?: bool, + * autoconfigure?: bool, + * bind?: array, + * constructor?: string, + * } + * @psalm-type StackType = array{ + * stack: list>, + * public?: bool, + * deprecated?: DeprecationType, + * } + * @psalm-type ServicesConfig = array{ + * _defaults?: DefaultsType, + * _instanceof?: InstanceofType, + * ... + * } + * @psalm-type ExtensionType = array + * @psalm-type FrameworkConfig = array{ + * secret?: scalar|null, + * http_method_override?: bool, // Set true to enable support for the '_method' request parameter to determine the intended HTTP method on POST requests. // Default: false + * allowed_http_method_override?: list|null, + * trust_x_sendfile_type_header?: scalar|null, // Set true to enable support for xsendfile in binary file responses. // Default: "%env(bool:default::SYMFONY_TRUST_X_SENDFILE_TYPE_HEADER)%" + * ide?: scalar|null, // Default: "%env(default::SYMFONY_IDE)%" + * test?: bool, + * default_locale?: scalar|null, // Default: "en" + * set_locale_from_accept_language?: bool, // Whether to use the Accept-Language HTTP header to set the Request locale (only when the "_locale" request attribute is not passed). // Default: false + * set_content_language_from_locale?: bool, // Whether to set the Content-Language HTTP header on the Response using the Request locale. // Default: false + * enabled_locales?: list, + * trusted_hosts?: list, + * trusted_proxies?: mixed, // Default: ["%env(default::SYMFONY_TRUSTED_PROXIES)%"] + * trusted_headers?: list, + * error_controller?: scalar|null, // Default: "error_controller" + * handle_all_throwables?: bool, // HttpKernel will handle all kinds of \Throwable. // Default: true + * csrf_protection?: bool|array{ + * enabled?: scalar|null, // Default: null + * stateless_token_ids?: list, + * check_header?: scalar|null, // Whether to check the CSRF token in a header in addition to a cookie when using stateless protection. // Default: false + * cookie_name?: scalar|null, // The name of the cookie to use when using stateless protection. // Default: "csrf-token" + * }, + * form?: bool|array{ // Form configuration + * enabled?: bool, // Default: true + * csrf_protection?: array{ + * enabled?: scalar|null, // Default: null + * token_id?: scalar|null, // Default: null + * field_name?: scalar|null, // Default: "_token" + * field_attr?: array, + * }, + * }, + * http_cache?: bool|array{ // HTTP cache configuration + * enabled?: bool, // Default: false + * debug?: bool, // Default: "%kernel.debug%" + * trace_level?: "none"|"short"|"full", + * trace_header?: scalar|null, + * default_ttl?: int, + * private_headers?: list, + * skip_response_headers?: list, + * allow_reload?: bool, + * allow_revalidate?: bool, + * stale_while_revalidate?: int, + * stale_if_error?: int, + * terminate_on_cache_hit?: bool, + * }, + * esi?: bool|array{ // ESI configuration + * enabled?: bool, // Default: false + * }, + * ssi?: bool|array{ // SSI configuration + * enabled?: bool, // Default: false + * }, + * fragments?: bool|array{ // Fragments configuration + * enabled?: bool, // Default: false + * hinclude_default_template?: scalar|null, // Default: null + * path?: scalar|null, // Default: "/_fragment" + * }, + * profiler?: bool|array{ // Profiler configuration + * enabled?: bool, // Default: false + * collect?: bool, // Default: true + * collect_parameter?: scalar|null, // The name of the parameter to use to enable or disable collection on a per request basis. // Default: null + * only_exceptions?: bool, // Default: false + * only_main_requests?: bool, // Default: false + * dsn?: scalar|null, // Default: "file:%kernel.cache_dir%/profiler" + * collect_serializer_data?: bool, // Enables the serializer data collector and profiler panel. // Default: false + * }, + * workflows?: bool|array{ + * enabled?: bool, // Default: false + * workflows?: array, + * definition_validators?: list, + * support_strategy?: scalar|null, + * initial_marking?: list, + * events_to_dispatch?: list|null, + * places?: list, + * }>, + * transitions: list, + * to?: list, + * weight?: int, // Default: 1 + * metadata?: list, + * }>, + * metadata?: list, + * }>, + * }, + * router?: bool|array{ // Router configuration + * enabled?: bool, // Default: false + * resource: scalar|null, + * type?: scalar|null, + * cache_dir?: scalar|null, // Deprecated: Setting the "framework.router.cache_dir.cache_dir" configuration option is deprecated. It will be removed in version 8.0. // Default: "%kernel.build_dir%" + * default_uri?: scalar|null, // The default URI used to generate URLs in a non-HTTP context. // Default: null + * http_port?: scalar|null, // Default: 80 + * https_port?: scalar|null, // Default: 443 + * strict_requirements?: scalar|null, // set to true to throw an exception when a parameter does not match the requirements set to false to disable exceptions when a parameter does not match the requirements (and return null instead) set to null to disable parameter checks against requirements 'true' is the preferred configuration in development mode, while 'false' or 'null' might be preferred in production // Default: true + * utf8?: bool, // Default: true + * }, + * session?: bool|array{ // Session configuration + * enabled?: bool, // Default: false + * storage_factory_id?: scalar|null, // Default: "session.storage.factory.native" + * handler_id?: scalar|null, // Defaults to using the native session handler, or to the native *file* session handler if "save_path" is not null. + * name?: scalar|null, + * cookie_lifetime?: scalar|null, + * cookie_path?: scalar|null, + * cookie_domain?: scalar|null, + * cookie_secure?: true|false|"auto", // Default: "auto" + * cookie_httponly?: bool, // Default: true + * cookie_samesite?: null|"lax"|"strict"|"none", // Default: "lax" + * use_cookies?: bool, + * gc_divisor?: scalar|null, + * gc_probability?: scalar|null, + * gc_maxlifetime?: scalar|null, + * save_path?: scalar|null, // Defaults to "%kernel.cache_dir%/sessions" if the "handler_id" option is not null. + * metadata_update_threshold?: int, // Seconds to wait between 2 session metadata updates. // Default: 0 + * sid_length?: int, // Deprecated: Setting the "framework.session.sid_length.sid_length" configuration option is deprecated. It will be removed in version 8.0. No alternative is provided as PHP 8.4 has deprecated the related option. + * sid_bits_per_character?: int, // Deprecated: Setting the "framework.session.sid_bits_per_character.sid_bits_per_character" configuration option is deprecated. It will be removed in version 8.0. No alternative is provided as PHP 8.4 has deprecated the related option. + * }, + * request?: bool|array{ // Request configuration + * enabled?: bool, // Default: false + * formats?: array>, + * }, + * assets?: bool|array{ // Assets configuration + * enabled?: bool, // Default: true + * strict_mode?: bool, // Throw an exception if an entry is missing from the manifest.json. // Default: false + * version_strategy?: scalar|null, // Default: null + * version?: scalar|null, // Default: null + * version_format?: scalar|null, // Default: "%%s?%%s" + * json_manifest_path?: scalar|null, // Default: null + * base_path?: scalar|null, // Default: "" + * base_urls?: list, + * packages?: array, + * }>, + * }, + * asset_mapper?: bool|array{ // Asset Mapper configuration + * enabled?: bool, // Default: false + * paths?: array, + * excluded_patterns?: list, + * exclude_dotfiles?: bool, // If true, any files starting with "." will be excluded from the asset mapper. // Default: true + * server?: bool, // If true, a "dev server" will return the assets from the public directory (true in "debug" mode only by default). // Default: true + * public_prefix?: scalar|null, // The public path where the assets will be written to (and served from when "server" is true). // Default: "/assets/" + * missing_import_mode?: "strict"|"warn"|"ignore", // Behavior if an asset cannot be found when imported from JavaScript or CSS files - e.g. "import './non-existent.js'". "strict" means an exception is thrown, "warn" means a warning is logged, "ignore" means the import is left as-is. // Default: "warn" + * extensions?: array, + * importmap_path?: scalar|null, // The path of the importmap.php file. // Default: "%kernel.project_dir%/importmap.php" + * importmap_polyfill?: scalar|null, // The importmap name that will be used to load the polyfill. Set to false to disable. // Default: "es-module-shims" + * importmap_script_attributes?: array, + * vendor_dir?: scalar|null, // The directory to store JavaScript vendors. // Default: "%kernel.project_dir%/assets/vendor" + * precompress?: bool|array{ // Precompress assets with Brotli, Zstandard and gzip. + * enabled?: bool, // Default: false + * formats?: list, + * extensions?: list, + * }, + * }, + * translator?: bool|array{ // Translator configuration + * enabled?: bool, // Default: true + * fallbacks?: list, + * logging?: bool, // Default: false + * formatter?: scalar|null, // Default: "translator.formatter.default" + * cache_dir?: scalar|null, // Default: "%kernel.cache_dir%/translations" + * default_path?: scalar|null, // The default path used to load translations. // Default: "%kernel.project_dir%/translations" + * paths?: list, + * pseudo_localization?: bool|array{ + * enabled?: bool, // Default: false + * accents?: bool, // Default: true + * expansion_factor?: float, // Default: 1.0 + * brackets?: bool, // Default: true + * parse_html?: bool, // Default: false + * localizable_html_attributes?: list, + * }, + * providers?: array, + * locales?: list, + * }>, + * globals?: array, + * domain?: string, + * }>, + * }, + * validation?: bool|array{ // Validation configuration + * enabled?: bool, // Default: true + * cache?: scalar|null, // Deprecated: Setting the "framework.validation.cache.cache" configuration option is deprecated. It will be removed in version 8.0. + * enable_attributes?: bool, // Default: true + * static_method?: list, + * translation_domain?: scalar|null, // Default: "validators" + * email_validation_mode?: "html5"|"html5-allow-no-tld"|"strict"|"loose", // Default: "html5" + * mapping?: array{ + * paths?: list, + * }, + * not_compromised_password?: bool|array{ + * enabled?: bool, // When disabled, compromised passwords will be accepted as valid. // Default: true + * endpoint?: scalar|null, // API endpoint for the NotCompromisedPassword Validator. // Default: null + * }, + * disable_translation?: bool, // Default: false + * auto_mapping?: array, + * }>, + * }, + * annotations?: bool|array{ + * enabled?: bool, // Default: false + * }, + * serializer?: bool|array{ // Serializer configuration + * enabled?: bool, // Default: false + * enable_attributes?: bool, // Default: true + * name_converter?: scalar|null, + * circular_reference_handler?: scalar|null, + * max_depth_handler?: scalar|null, + * mapping?: array{ + * paths?: list, + * }, + * default_context?: list, + * named_serializers?: array, + * include_built_in_normalizers?: bool, // Whether to include the built-in normalizers // Default: true + * include_built_in_encoders?: bool, // Whether to include the built-in encoders // Default: true + * }>, + * }, + * property_access?: bool|array{ // Property access configuration + * enabled?: bool, // Default: true + * magic_call?: bool, // Default: false + * magic_get?: bool, // Default: true + * magic_set?: bool, // Default: true + * throw_exception_on_invalid_index?: bool, // Default: false + * throw_exception_on_invalid_property_path?: bool, // Default: true + * }, + * type_info?: bool|array{ // Type info configuration + * enabled?: bool, // Default: true + * aliases?: array, + * }, + * property_info?: bool|array{ // Property info configuration + * enabled?: bool, // Default: true + * with_constructor_extractor?: bool, // Registers the constructor extractor. + * }, + * cache?: array{ // Cache configuration + * prefix_seed?: scalar|null, // Used to namespace cache keys when using several apps with the same shared backend. // Default: "_%kernel.project_dir%.%kernel.container_class%" + * app?: scalar|null, // App related cache pools configuration. // Default: "cache.adapter.filesystem" + * system?: scalar|null, // System related cache pools configuration. // Default: "cache.adapter.system" + * directory?: scalar|null, // Default: "%kernel.share_dir%/pools/app" + * default_psr6_provider?: scalar|null, + * default_redis_provider?: scalar|null, // Default: "redis://localhost" + * default_valkey_provider?: scalar|null, // Default: "valkey://localhost" + * default_memcached_provider?: scalar|null, // Default: "memcached://localhost" + * default_doctrine_dbal_provider?: scalar|null, // Default: "database_connection" + * default_pdo_provider?: scalar|null, // Default: null + * pools?: array, + * tags?: scalar|null, // Default: null + * public?: bool, // Default: false + * default_lifetime?: scalar|null, // Default lifetime of the pool. + * provider?: scalar|null, // Overwrite the setting from the default provider for this adapter. + * early_expiration_message_bus?: scalar|null, + * clearer?: scalar|null, + * }>, + * }, + * php_errors?: array{ // PHP errors handling configuration + * log?: mixed, // Use the application logger instead of the PHP logger for logging PHP errors. // Default: true + * throw?: bool, // Throw PHP errors as \ErrorException instances. // Default: true + * }, + * exceptions?: array, + * web_link?: bool|array{ // Web links configuration + * enabled?: bool, // Default: false + * }, + * lock?: bool|string|array{ // Lock configuration + * enabled?: bool, // Default: false + * resources?: array>, + * }, + * semaphore?: bool|string|array{ // Semaphore configuration + * enabled?: bool, // Default: false + * resources?: array, + * }, + * messenger?: bool|array{ // Messenger configuration + * enabled?: bool, // Default: false + * routing?: array, + * }>, + * serializer?: array{ + * default_serializer?: scalar|null, // Service id to use as the default serializer for the transports. // Default: "messenger.transport.native_php_serializer" + * symfony_serializer?: array{ + * format?: scalar|null, // Serialization format for the messenger.transport.symfony_serializer service (which is not the serializer used by default). // Default: "json" + * context?: array, + * }, + * }, + * transports?: array, + * failure_transport?: scalar|null, // Transport name to send failed messages to (after all retries have failed). // Default: null + * retry_strategy?: string|array{ + * service?: scalar|null, // Service id to override the retry strategy entirely. // Default: null + * max_retries?: int, // Default: 3 + * delay?: int, // Time in ms to delay (or the initial value when multiplier is used). // Default: 1000 + * multiplier?: float, // If greater than 1, delay will grow exponentially for each retry: this delay = (delay * (multiple ^ retries)). // Default: 2 + * max_delay?: int, // Max time in ms that a retry should ever be delayed (0 = infinite). // Default: 0 + * jitter?: float, // Randomness to apply to the delay (between 0 and 1). // Default: 0.1 + * }, + * rate_limiter?: scalar|null, // Rate limiter name to use when processing messages. // Default: null + * }>, + * failure_transport?: scalar|null, // Transport name to send failed messages to (after all retries have failed). // Default: null + * stop_worker_on_signals?: list, + * default_bus?: scalar|null, // Default: null + * buses?: array, + * }>, + * }>, + * }, + * scheduler?: bool|array{ // Scheduler configuration + * enabled?: bool, // Default: false + * }, + * disallow_search_engine_index?: bool, // Enabled by default when debug is enabled. // Default: true + * http_client?: bool|array{ // HTTP Client configuration + * enabled?: bool, // Default: false + * max_host_connections?: int, // The maximum number of connections to a single host. + * default_options?: array{ + * headers?: array, + * vars?: list, + * max_redirects?: int, // The maximum number of redirects to follow. + * http_version?: scalar|null, // The default HTTP version, typically 1.1 or 2.0, leave to null for the best version. + * resolve?: array, + * proxy?: scalar|null, // The URL of the proxy to pass requests through or null for automatic detection. + * no_proxy?: scalar|null, // A comma separated list of hosts that do not require a proxy to be reached. + * timeout?: float, // The idle timeout, defaults to the "default_socket_timeout" ini parameter. + * max_duration?: float, // The maximum execution time for the request+response as a whole. + * bindto?: scalar|null, // A network interface name, IP address, a host name or a UNIX socket to bind to. + * verify_peer?: bool, // Indicates if the peer should be verified in a TLS context. + * verify_host?: bool, // Indicates if the host should exist as a certificate common name. + * cafile?: scalar|null, // A certificate authority file. + * capath?: scalar|null, // A directory that contains multiple certificate authority files. + * local_cert?: scalar|null, // A PEM formatted certificate file. + * local_pk?: scalar|null, // A private key file. + * passphrase?: scalar|null, // The passphrase used to encrypt the "local_pk" file. + * ciphers?: scalar|null, // A list of TLS ciphers separated by colons, commas or spaces (e.g. "RC3-SHA:TLS13-AES-128-GCM-SHA256"...) + * peer_fingerprint?: array{ // Associative array: hashing algorithm => hash(es). + * sha1?: mixed, + * pin-sha256?: mixed, + * md5?: mixed, + * }, + * crypto_method?: scalar|null, // The minimum version of TLS to accept; must be one of STREAM_CRYPTO_METHOD_TLSv*_CLIENT constants. + * extra?: list, + * rate_limiter?: scalar|null, // Rate limiter name to use for throttling requests. // Default: null + * caching?: bool|array{ // Caching configuration. + * enabled?: bool, // Default: false + * cache_pool?: string, // The taggable cache pool to use for storing the responses. // Default: "cache.http_client" + * shared?: bool, // Indicates whether the cache is shared (public) or private. // Default: true + * max_ttl?: int, // The maximum TTL (in seconds) allowed for cached responses. Null means no cap. // Default: null + * }, + * retry_failed?: bool|array{ + * enabled?: bool, // Default: false + * retry_strategy?: scalar|null, // service id to override the retry strategy. // Default: null + * http_codes?: array, + * }>, + * max_retries?: int, // Default: 3 + * delay?: int, // Time in ms to delay (or the initial value when multiplier is used). // Default: 1000 + * multiplier?: float, // If greater than 1, delay will grow exponentially for each retry: delay * (multiple ^ retries). // Default: 2 + * max_delay?: int, // Max time in ms that a retry should ever be delayed (0 = infinite). // Default: 0 + * jitter?: float, // Randomness in percent (between 0 and 1) to apply to the delay. // Default: 0.1 + * }, + * }, + * mock_response_factory?: scalar|null, // The id of the service that should generate mock responses. It should be either an invokable or an iterable. + * scoped_clients?: array, + * headers?: array, + * max_redirects?: int, // The maximum number of redirects to follow. + * http_version?: scalar|null, // The default HTTP version, typically 1.1 or 2.0, leave to null for the best version. + * resolve?: array, + * proxy?: scalar|null, // The URL of the proxy to pass requests through or null for automatic detection. + * no_proxy?: scalar|null, // A comma separated list of hosts that do not require a proxy to be reached. + * timeout?: float, // The idle timeout, defaults to the "default_socket_timeout" ini parameter. + * max_duration?: float, // The maximum execution time for the request+response as a whole. + * bindto?: scalar|null, // A network interface name, IP address, a host name or a UNIX socket to bind to. + * verify_peer?: bool, // Indicates if the peer should be verified in a TLS context. + * verify_host?: bool, // Indicates if the host should exist as a certificate common name. + * cafile?: scalar|null, // A certificate authority file. + * capath?: scalar|null, // A directory that contains multiple certificate authority files. + * local_cert?: scalar|null, // A PEM formatted certificate file. + * local_pk?: scalar|null, // A private key file. + * passphrase?: scalar|null, // The passphrase used to encrypt the "local_pk" file. + * ciphers?: scalar|null, // A list of TLS ciphers separated by colons, commas or spaces (e.g. "RC3-SHA:TLS13-AES-128-GCM-SHA256"...). + * peer_fingerprint?: array{ // Associative array: hashing algorithm => hash(es). + * sha1?: mixed, + * pin-sha256?: mixed, + * md5?: mixed, + * }, + * crypto_method?: scalar|null, // The minimum version of TLS to accept; must be one of STREAM_CRYPTO_METHOD_TLSv*_CLIENT constants. + * extra?: list, + * rate_limiter?: scalar|null, // Rate limiter name to use for throttling requests. // Default: null + * caching?: bool|array{ // Caching configuration. + * enabled?: bool, // Default: false + * cache_pool?: string, // The taggable cache pool to use for storing the responses. // Default: "cache.http_client" + * shared?: bool, // Indicates whether the cache is shared (public) or private. // Default: true + * max_ttl?: int, // The maximum TTL (in seconds) allowed for cached responses. Null means no cap. // Default: null + * }, + * retry_failed?: bool|array{ + * enabled?: bool, // Default: false + * retry_strategy?: scalar|null, // service id to override the retry strategy. // Default: null + * http_codes?: array, + * }>, + * max_retries?: int, // Default: 3 + * delay?: int, // Time in ms to delay (or the initial value when multiplier is used). // Default: 1000 + * multiplier?: float, // If greater than 1, delay will grow exponentially for each retry: delay * (multiple ^ retries). // Default: 2 + * max_delay?: int, // Max time in ms that a retry should ever be delayed (0 = infinite). // Default: 0 + * jitter?: float, // Randomness in percent (between 0 and 1) to apply to the delay. // Default: 0.1 + * }, + * }>, + * }, + * mailer?: bool|array{ // Mailer configuration + * enabled?: bool, // Default: true + * message_bus?: scalar|null, // The message bus to use. Defaults to the default bus if the Messenger component is installed. // Default: null + * dsn?: scalar|null, // Default: null + * transports?: array, + * envelope?: array{ // Mailer Envelope configuration + * sender?: scalar|null, + * recipients?: list, + * allowed_recipients?: list, + * }, + * headers?: array, + * dkim_signer?: bool|array{ // DKIM signer configuration + * enabled?: bool, // Default: false + * key?: scalar|null, // Key content, or path to key (in PEM format with the `file://` prefix) // Default: "" + * domain?: scalar|null, // Default: "" + * select?: scalar|null, // Default: "" + * passphrase?: scalar|null, // The private key passphrase // Default: "" + * options?: array, + * }, + * smime_signer?: bool|array{ // S/MIME signer configuration + * enabled?: bool, // Default: false + * key?: scalar|null, // Path to key (in PEM format) // Default: "" + * certificate?: scalar|null, // Path to certificate (in PEM format without the `file://` prefix) // Default: "" + * passphrase?: scalar|null, // The private key passphrase // Default: null + * extra_certificates?: scalar|null, // Default: null + * sign_options?: int, // Default: null + * }, + * smime_encrypter?: bool|array{ // S/MIME encrypter configuration + * enabled?: bool, // Default: false + * repository?: scalar|null, // S/MIME certificate repository service. This service shall implement the `Symfony\Component\Mailer\EventListener\SmimeCertificateRepositoryInterface`. // Default: "" + * cipher?: int, // A set of algorithms used to encrypt the message // Default: null + * }, + * }, + * secrets?: bool|array{ + * enabled?: bool, // Default: true + * vault_directory?: scalar|null, // Default: "%kernel.project_dir%/config/secrets/%kernel.runtime_environment%" + * local_dotenv_file?: scalar|null, // Default: "%kernel.project_dir%/.env.%kernel.runtime_environment%.local" + * decryption_env_var?: scalar|null, // Default: "base64:default::SYMFONY_DECRYPTION_SECRET" + * }, + * notifier?: bool|array{ // Notifier configuration + * enabled?: bool, // Default: false + * message_bus?: scalar|null, // The message bus to use. Defaults to the default bus if the Messenger component is installed. // Default: null + * chatter_transports?: array, + * texter_transports?: array, + * notification_on_failed_messages?: bool, // Default: false + * channel_policy?: array>, + * admin_recipients?: list, + * }, + * rate_limiter?: bool|array{ // Rate limiter configuration + * enabled?: bool, // Default: false + * limiters?: array, + * limit?: int, // The maximum allowed hits in a fixed interval or burst. + * interval?: scalar|null, // Configures the fixed interval if "policy" is set to "fixed_window" or "sliding_window". The value must be a number followed by "second", "minute", "hour", "day", "week" or "month" (or their plural equivalent). + * rate?: array{ // Configures the fill rate if "policy" is set to "token_bucket". + * interval?: scalar|null, // Configures the rate interval. The value must be a number followed by "second", "minute", "hour", "day", "week" or "month" (or their plural equivalent). + * amount?: int, // Amount of tokens to add each interval. // Default: 1 + * }, + * }>, + * }, + * uid?: bool|array{ // Uid configuration + * enabled?: bool, // Default: false + * default_uuid_version?: 7|6|4|1, // Default: 7 + * name_based_uuid_version?: 5|3, // Default: 5 + * name_based_uuid_namespace?: scalar|null, + * time_based_uuid_version?: 7|6|1, // Default: 7 + * time_based_uuid_node?: scalar|null, + * }, + * html_sanitizer?: bool|array{ // HtmlSanitizer configuration + * enabled?: bool, // Default: false + * sanitizers?: array, + * block_elements?: list, + * drop_elements?: list, + * allow_attributes?: array, + * drop_attributes?: array, + * force_attributes?: array>, + * force_https_urls?: bool, // Transforms URLs using the HTTP scheme to use the HTTPS scheme instead. // Default: false + * allowed_link_schemes?: list, + * allowed_link_hosts?: list|null, + * allow_relative_links?: bool, // Allows relative URLs to be used in links href attributes. // Default: false + * allowed_media_schemes?: list, + * allowed_media_hosts?: list|null, + * allow_relative_medias?: bool, // Allows relative URLs to be used in media source attributes (img, audio, video, ...). // Default: false + * with_attribute_sanitizers?: list, + * without_attribute_sanitizers?: list, + * max_input_length?: int, // The maximum length allowed for the sanitized input. // Default: 0 + * }>, + * }, + * webhook?: bool|array{ // Webhook configuration + * enabled?: bool, // Default: false + * message_bus?: scalar|null, // The message bus to use. // Default: "messenger.default_bus" + * routing?: array, + * }, + * remote-event?: bool|array{ // RemoteEvent configuration + * enabled?: bool, // Default: false + * }, + * json_streamer?: bool|array{ // JSON streamer configuration + * enabled?: bool, // Default: false + * }, + * } + * @psalm-type NelmioSecurityConfig = array{ + * signed_cookie?: array{ + * names?: list, + * secret?: scalar|null, // Default: "%kernel.secret%" + * hash_algo?: scalar|null, + * legacy_hash_algo?: scalar|null, // Fallback algorithm to allow for frictionless hash algorithm upgrades. Use with caution and as a temporary measure as it allows for downgrade attacks. // Default: null + * separator?: scalar|null, // Default: "." + * }, + * clickjacking?: array{ + * hosts?: list, + * paths?: array, + * content_types?: list, + * }, + * external_redirects?: array{ + * abort?: bool, // Default: false + * override?: scalar|null, // Default: null + * forward_as?: scalar|null, // Default: null + * log?: bool, // Default: false + * allow_list?: list, + * }, + * flexible_ssl?: bool|array{ + * enabled?: bool, // Default: false + * cookie_name?: scalar|null, // Default: "auth" + * unsecured_logout?: bool, // Default: false + * }, + * forced_ssl?: bool|array{ + * enabled?: bool, // Default: false + * hsts_max_age?: scalar|null, // Default: null + * hsts_subdomains?: bool, // Default: false + * hsts_preload?: bool, // Default: false + * allow_list?: list, + * hosts?: list, + * redirect_status_code?: scalar|null, // Default: 302 + * }, + * content_type?: array{ + * nosniff?: bool, // Default: false + * }, + * xss_protection?: array{ // Deprecated: The "xss_protection" option is deprecated, use Content Security Policy without allowing "unsafe-inline" scripts instead. + * enabled?: bool, // Default: false + * mode_block?: bool, // Default: false + * report_uri?: scalar|null, // Default: null + * }, + * csp?: bool|array{ + * enabled?: bool, // Default: true + * request_matcher?: scalar|null, // Default: null + * hosts?: list, + * content_types?: list, + * report_endpoint?: array{ + * log_channel?: scalar|null, // Default: null + * log_formatter?: scalar|null, // Default: "nelmio_security.csp_report.log_formatter" + * log_level?: "alert"|"critical"|"debug"|"emergency"|"error"|"info"|"notice"|"warning", // Default: "notice" + * filters?: array{ + * domains?: bool, // Default: true + * schemes?: bool, // Default: true + * browser_bugs?: bool, // Default: true + * injected_scripts?: bool, // Default: true + * }, + * dismiss?: list>, + * }, + * compat_headers?: bool, // Default: true + * report_logger_service?: scalar|null, // Default: "logger" + * hash?: array{ + * algorithm?: "sha256"|"sha384"|"sha512", // The algorithm to use for hashes // Default: "sha256" + * }, + * report?: array{ + * level1_fallback?: bool, // Provides CSP Level 1 fallback when using hash or nonce (CSP level 2) by adding 'unsafe-inline' source. See https://www.w3.org/TR/CSP2/#directive-script-src and https://www.w3.org/TR/CSP2/#directive-style-src // Default: true + * browser_adaptive?: bool|array{ // Do not send directives that browser do not support + * enabled?: bool, // Default: false + * parser?: scalar|null, // Default: "nelmio_security.ua_parser.ua_php" + * }, + * default-src?: list, + * base-uri?: list, + * block-all-mixed-content?: bool, // Default: false + * child-src?: list, + * connect-src?: list, + * font-src?: list, + * form-action?: list, + * frame-ancestors?: list, + * frame-src?: list, + * img-src?: list, + * manifest-src?: list, + * media-src?: list, + * object-src?: list, + * plugin-types?: list, + * script-src?: list, + * style-src?: list, + * upgrade-insecure-requests?: bool, // Default: false + * report-uri?: list, + * worker-src?: list, + * prefetch-src?: list, + * report-to?: scalar|null, + * }, + * enforce?: array{ + * level1_fallback?: bool, // Provides CSP Level 1 fallback when using hash or nonce (CSP level 2) by adding 'unsafe-inline' source. See https://www.w3.org/TR/CSP2/#directive-script-src and https://www.w3.org/TR/CSP2/#directive-style-src // Default: true + * browser_adaptive?: bool|array{ // Do not send directives that browser do not support + * enabled?: bool, // Default: false + * parser?: scalar|null, // Default: "nelmio_security.ua_parser.ua_php" + * }, + * default-src?: list, + * base-uri?: list, + * block-all-mixed-content?: bool, // Default: false + * child-src?: list, + * connect-src?: list, + * font-src?: list, + * form-action?: list, + * frame-ancestors?: list, + * frame-src?: list, + * img-src?: list, + * manifest-src?: list, + * media-src?: list, + * object-src?: list, + * plugin-types?: list, + * script-src?: list, + * style-src?: list, + * upgrade-insecure-requests?: bool, // Default: false + * report-uri?: list, + * worker-src?: list, + * prefetch-src?: list, + * report-to?: scalar|null, + * }, + * }, + * referrer_policy?: bool|array{ + * enabled?: bool, // Default: false + * policies?: list, + * }, + * permissions_policy?: bool|array{ + * enabled?: bool, // Default: false + * policies?: array{ + * accelerometer?: mixed, // Default: null + * ambient_light_sensor?: mixed, // Default: null + * attribution_reporting?: mixed, // Default: null + * autoplay?: mixed, // Default: null + * bluetooth?: mixed, // Default: null + * browsing_topics?: mixed, // Default: null + * camera?: mixed, // Default: null + * captured_surface_control?: mixed, // Default: null + * compute_pressure?: mixed, // Default: null + * cross_origin_isolated?: mixed, // Default: null + * deferred_fetch?: mixed, // Default: null + * deferred_fetch_minimal?: mixed, // Default: null + * display_capture?: mixed, // Default: null + * encrypted_media?: mixed, // Default: null + * fullscreen?: mixed, // Default: null + * gamepad?: mixed, // Default: null + * geolocation?: mixed, // Default: null + * gyroscope?: mixed, // Default: null + * hid?: mixed, // Default: null + * identity_credentials_get?: mixed, // Default: null + * idle_detection?: mixed, // Default: null + * interest_cohort?: mixed, // Default: null + * language_detector?: mixed, // Default: null + * local_fonts?: mixed, // Default: null + * magnetometer?: mixed, // Default: null + * microphone?: mixed, // Default: null + * midi?: mixed, // Default: null + * otp_credentials?: mixed, // Default: null + * payment?: mixed, // Default: null + * picture_in_picture?: mixed, // Default: null + * publickey_credentials_create?: mixed, // Default: null + * publickey_credentials_get?: mixed, // Default: null + * screen_wake_lock?: mixed, // Default: null + * serial?: mixed, // Default: null + * speaker_selection?: mixed, // Default: null + * storage_access?: mixed, // Default: null + * summarizer?: mixed, // Default: null + * translator?: mixed, // Default: null + * usb?: mixed, // Default: null + * web_share?: mixed, // Default: null + * window_management?: mixed, // Default: null + * xr_spatial_tracking?: mixed, // Default: null + * }, + * }, + * } + * @psalm-type OpenConextMonitorConfig = array + * @psalm-type SurfnetStepupConfig = array{ + * logging: array{ + * application_name: scalar|null, // This is the application name that is included with each log message + * }, + * loa_definition?: bool|array{ + * enabled?: bool, // Default: true + * loa1?: scalar|null, + * loa2?: scalar|null, + * loa3?: scalar|null, + * loa_self_asserted?: scalar|null, + * }, + * attach_request_id_injector_to?: list, + * gateway_api?: bool|array{ // Gateway API configuration + * enabled?: bool, // Default: false + * credentials?: array{ // Basic authentication credentials + * username: scalar|null, // Username for the Gateway API + * password: scalar|null, // Password for the Gateway API + * }, + * url: scalar|null, // The URL to the Gateway application (e.g. https://gateway.tld) + * }, + * sms: bool|array{ // SMS configuration + * enabled?: bool, // Default: true + * service?: scalar|null, // The ID of the SMS service used for sending SMS messages. Must implement "Surfnet\StepupBundle\Service\SmsService". // Default: "surfnet_stepup.service.gateway_api_sms" + * originator?: scalar|null, // Originator (sender) for SMS messages + * otp_expiry_interval?: int, // After how many seconds an SMS challenge OTP expires + * maximum_otp_requests?: int, // How many challenges a user may request during a session + * }, + * locale_cookie?: bool|array{ // Cookie settings for locale cookie + * enabled?: bool, // Default: true + * name?: scalar|null, // Name for the cookie // Default: "stepup_locale" + * domain?: scalar|null, // Domain the cookie is scoped to // Default: "example.org" + * expire?: int, // Defines a specific number of seconds for when the browser should delete the cookie. // Default: 0 + * path?: scalar|null, // Path the cookie is scoped to // Default: "/" + * secure?: bool, // Only transmit cookie over secure connections? // Default: true + * http_only?: bool, // Directs browsers not to expose cookies through channels other than HTTP (and HTTPS) requests // Default: true + * }, + * } + * @psalm-type MonologConfig = array{ + * use_microseconds?: scalar|null, // Default: true + * channels?: list, + * handlers?: array, + * excluded_http_codes?: list, + * }>, + * accepted_levels?: list, + * min_level?: scalar|null, // Default: "DEBUG" + * max_level?: scalar|null, // Default: "EMERGENCY" + * buffer_size?: scalar|null, // Default: 0 + * flush_on_overflow?: bool, // Default: false + * handler?: scalar|null, + * url?: scalar|null, + * exchange?: scalar|null, + * exchange_name?: scalar|null, // Default: "log" + * room?: scalar|null, + * message_format?: scalar|null, // Default: "text" + * api_version?: scalar|null, // Default: null + * channel?: scalar|null, // Default: null + * bot_name?: scalar|null, // Default: "Monolog" + * use_attachment?: scalar|null, // Default: true + * use_short_attachment?: scalar|null, // Default: false + * include_extra?: scalar|null, // Default: false + * icon_emoji?: scalar|null, // Default: null + * webhook_url?: scalar|null, + * exclude_fields?: list, + * team?: scalar|null, + * notify?: scalar|null, // Default: false + * nickname?: scalar|null, // Default: "Monolog" + * token?: scalar|null, + * region?: scalar|null, + * source?: scalar|null, + * use_ssl?: bool, // Default: true + * user?: mixed, + * title?: scalar|null, // Default: null + * host?: scalar|null, // Default: null + * port?: scalar|null, // Default: 514 + * config?: list, + * members?: list, + * connection_string?: scalar|null, + * timeout?: scalar|null, + * time?: scalar|null, // Default: 60 + * deduplication_level?: scalar|null, // Default: 400 + * store?: scalar|null, // Default: null + * connection_timeout?: scalar|null, + * persistent?: bool, + * dsn?: scalar|null, + * hub_id?: scalar|null, // Default: null + * client_id?: scalar|null, // Default: null + * auto_log_stacks?: scalar|null, // Default: false + * release?: scalar|null, // Default: null + * environment?: scalar|null, // Default: null + * message_type?: scalar|null, // Default: 0 + * parse_mode?: scalar|null, // Default: null + * disable_webpage_preview?: bool|null, // Default: null + * disable_notification?: bool|null, // Default: null + * split_long_messages?: bool, // Default: false + * delay_between_messages?: bool, // Default: false + * topic?: int, // Default: null + * factor?: int, // Default: 1 + * tags?: list, + * console_formater_options?: mixed, // Deprecated: "monolog.handlers..console_formater_options.console_formater_options" is deprecated, use "monolog.handlers..console_formater_options.console_formatter_options" instead. + * console_formatter_options?: mixed, // Default: [] + * formatter?: scalar|null, + * nested?: bool, // Default: false + * publisher?: string|array{ + * id?: scalar|null, + * hostname?: scalar|null, + * port?: scalar|null, // Default: 12201 + * chunk_size?: scalar|null, // Default: 1420 + * encoder?: "json"|"compressed_json", + * }, + * mongo?: string|array{ + * id?: scalar|null, + * host?: scalar|null, + * port?: scalar|null, // Default: 27017 + * user?: scalar|null, + * pass?: scalar|null, + * database?: scalar|null, // Default: "monolog" + * collection?: scalar|null, // Default: "logs" + * }, + * mongodb?: string|array{ + * id?: scalar|null, // ID of a MongoDB\Client service + * uri?: scalar|null, + * username?: scalar|null, + * password?: scalar|null, + * database?: scalar|null, // Default: "monolog" + * collection?: scalar|null, // Default: "logs" + * }, + * elasticsearch?: string|array{ + * id?: scalar|null, + * hosts?: list, + * host?: scalar|null, + * port?: scalar|null, // Default: 9200 + * transport?: scalar|null, // Default: "Http" + * user?: scalar|null, // Default: null + * password?: scalar|null, // Default: null + * }, + * index?: scalar|null, // Default: "monolog" + * document_type?: scalar|null, // Default: "logs" + * ignore_error?: scalar|null, // Default: false + * redis?: string|array{ + * id?: scalar|null, + * host?: scalar|null, + * password?: scalar|null, // Default: null + * port?: scalar|null, // Default: 6379 + * database?: scalar|null, // Default: 0 + * key_name?: scalar|null, // Default: "monolog_redis" + * }, + * predis?: string|array{ + * id?: scalar|null, + * host?: scalar|null, + * }, + * from_email?: scalar|null, + * to_email?: list, + * subject?: scalar|null, + * content_type?: scalar|null, // Default: null + * headers?: list, + * mailer?: scalar|null, // Default: null + * email_prototype?: string|array{ + * id: scalar|null, + * method?: scalar|null, // Default: null + * }, + * lazy?: bool, // Default: true + * verbosity_levels?: array{ + * VERBOSITY_QUIET?: scalar|null, // Default: "ERROR" + * VERBOSITY_NORMAL?: scalar|null, // Default: "WARNING" + * VERBOSITY_VERBOSE?: scalar|null, // Default: "NOTICE" + * VERBOSITY_VERY_VERBOSE?: scalar|null, // Default: "INFO" + * VERBOSITY_DEBUG?: scalar|null, // Default: "DEBUG" + * }, + * channels?: string|array{ + * type?: scalar|null, + * elements?: list, + * }, + * }>, + * } + * @psalm-type DoctrineConfig = array{ + * dbal?: array{ + * default_connection?: scalar|null, + * types?: array, + * driver_schemes?: array, + * connections?: array, + * mapping_types?: array, + * default_table_options?: array, + * schema_manager_factory?: scalar|null, // Default: "doctrine.dbal.legacy_schema_manager_factory" + * result_cache?: scalar|null, + * slaves?: array, + * replicas?: array, + * }>, + * }, + * orm?: array{ + * default_entity_manager?: scalar|null, + * auto_generate_proxy_classes?: scalar|null, // Auto generate mode possible values are: "NEVER", "ALWAYS", "FILE_NOT_EXISTS", "EVAL", "FILE_NOT_EXISTS_OR_CHANGED", this option is ignored when the "enable_native_lazy_objects" option is true // Default: false + * enable_lazy_ghost_objects?: bool, // Enables the new implementation of proxies based on lazy ghosts instead of using the legacy implementation // Default: true + * enable_native_lazy_objects?: bool, // Enables the new native implementation of PHP lazy objects instead of generated proxies // Default: false + * proxy_dir?: scalar|null, // Configures the path where generated proxy classes are saved when using non-native lazy objects, this option is ignored when the "enable_native_lazy_objects" option is true // Default: "%kernel.build_dir%/doctrine/orm/Proxies" + * proxy_namespace?: scalar|null, // Defines the root namespace for generated proxy classes when using non-native lazy objects, this option is ignored when the "enable_native_lazy_objects" option is true // Default: "Proxies" + * controller_resolver?: bool|array{ + * enabled?: bool, // Default: true + * auto_mapping?: bool|null, // Set to false to disable using route placeholders as lookup criteria when the primary key doesn't match the argument name // Default: null + * evict_cache?: bool, // Set to true to fetch the entity from the database instead of using the cache, if any // Default: false + * }, + * entity_managers?: array, + * }>, + * }>, + * }, + * connection?: scalar|null, + * class_metadata_factory_name?: scalar|null, // Default: "Doctrine\\ORM\\Mapping\\ClassMetadataFactory" + * default_repository_class?: scalar|null, // Default: "Doctrine\\ORM\\EntityRepository" + * auto_mapping?: scalar|null, // Default: false + * naming_strategy?: scalar|null, // Default: "doctrine.orm.naming_strategy.default" + * quote_strategy?: scalar|null, // Default: "doctrine.orm.quote_strategy.default" + * typed_field_mapper?: scalar|null, // Default: "doctrine.orm.typed_field_mapper.default" + * entity_listener_resolver?: scalar|null, // Default: null + * fetch_mode_subselect_batch_size?: scalar|null, + * repository_factory?: scalar|null, // Default: "doctrine.orm.container_repository_factory" + * schema_ignore_classes?: list, + * report_fields_where_declared?: bool, // Set to "true" to opt-in to the new mapping driver mode that was added in Doctrine ORM 2.16 and will be mandatory in ORM 3.0. See https://github.com/doctrine/orm/pull/10455. // Default: true + * validate_xml_mapping?: bool, // Set to "true" to opt-in to the new mapping driver mode that was added in Doctrine ORM 2.14. See https://github.com/doctrine/orm/pull/6728. // Default: false + * second_level_cache?: array{ + * region_cache_driver?: string|array{ + * type?: scalar|null, // Default: null + * id?: scalar|null, + * pool?: scalar|null, + * }, + * region_lock_lifetime?: scalar|null, // Default: 60 + * log_enabled?: bool, // Default: true + * region_lifetime?: scalar|null, // Default: 3600 + * enabled?: bool, // Default: true + * factory?: scalar|null, + * regions?: array, + * loggers?: array, + * }, + * hydrators?: array, + * mappings?: array, + * dql?: array{ + * string_functions?: array, + * numeric_functions?: array, + * datetime_functions?: array, + * }, + * filters?: array, + * }>, + * identity_generation_preferences?: array, + * }>, + * resolve_target_entities?: array, + * }, + * } + * @psalm-type DoctrineMigrationsConfig = array{ + * enable_service_migrations?: bool, // Whether to enable fetching migrations from the service container. // Default: false + * migrations_paths?: array, + * services?: array, + * factories?: array, + * storage?: array{ // Storage to use for migration status metadata. + * table_storage?: array{ // The default metadata storage, implemented as a table in the database. + * table_name?: scalar|null, // Default: null + * version_column_name?: scalar|null, // Default: null + * version_column_length?: scalar|null, // Default: null + * executed_at_column_name?: scalar|null, // Default: null + * execution_time_column_name?: scalar|null, // Default: null + * }, + * }, + * migrations?: list, + * connection?: scalar|null, // Connection name to use for the migrations database. // Default: null + * em?: scalar|null, // Entity manager name to use for the migrations database (available when doctrine/orm is installed). // Default: null + * all_or_nothing?: scalar|null, // Run all migrations in a transaction. // Default: false + * check_database_platform?: scalar|null, // Adds an extra check in the generated migrations to allow execution only on the same platform as they were initially generated on. // Default: true + * custom_template?: scalar|null, // Custom template path for generated migration classes. // Default: null + * organize_migrations?: scalar|null, // Organize migrations mode. Possible values are: "BY_YEAR", "BY_YEAR_AND_MONTH", false // Default: false + * enable_profiler?: bool, // Whether or not to enable the profiler collector to calculate and visualize migration status. This adds some queries overhead. // Default: false + * transactional?: bool, // Whether or not to wrap migrations in a single transaction. // Default: true + * } + * @psalm-type LiipTestFixturesConfig = array{ + * cache_db?: array{ + * sqlite?: scalar|null, // Default: null + * ... + * }, + * keep_database_and_schema?: bool, // Default: false + * cache_metadata?: bool, // Default: true + * } + * @psalm-type TwigExtraConfig = array{ + * cache?: bool|array{ + * enabled?: bool, // Default: false + * }, + * html?: bool|array{ + * enabled?: bool, // Default: false + * }, + * markdown?: bool|array{ + * enabled?: bool, // Default: false + * }, + * intl?: bool|array{ + * enabled?: bool, // Default: true + * }, + * cssinliner?: bool|array{ + * enabled?: bool, // Default: false + * }, + * inky?: bool|array{ + * enabled?: bool, // Default: false + * }, + * string?: bool|array{ + * enabled?: bool, // Default: false + * }, + * commonmark?: array{ + * renderer?: array{ // Array of options for rendering HTML. + * block_separator?: scalar|null, + * inner_separator?: scalar|null, + * soft_break?: scalar|null, + * }, + * html_input?: "strip"|"allow"|"escape", // How to handle HTML input. + * allow_unsafe_links?: bool, // Remove risky link and image URLs by setting this to false. // Default: true + * max_nesting_level?: int, // The maximum nesting level for blocks. // Default: 9223372036854775807 + * max_delimiters_per_line?: int, // The maximum number of strong/emphasis delimiters per line. // Default: 9223372036854775807 + * slug_normalizer?: array{ // Array of options for configuring how URL-safe slugs are created. + * instance?: mixed, + * max_length?: int, // Default: 255 + * unique?: mixed, + * }, + * commonmark?: array{ // Array of options for configuring the CommonMark core extension. + * enable_em?: bool, // Default: true + * enable_strong?: bool, // Default: true + * use_asterisk?: bool, // Default: true + * use_underscore?: bool, // Default: true + * unordered_list_markers?: list, + * }, + * ... + * }, + * } + * @psalm-type TwigConfig = array{ + * form_themes?: list, + * globals?: array, + * autoescape_service?: scalar|null, // Default: null + * autoescape_service_method?: scalar|null, // Default: null + * base_template_class?: scalar|null, // Deprecated: The child node "base_template_class" at path "twig.base_template_class" is deprecated. + * cache?: scalar|null, // Default: true + * charset?: scalar|null, // Default: "%kernel.charset%" + * debug?: bool, // Default: "%kernel.debug%" + * strict_variables?: bool, // Default: "%kernel.debug%" + * auto_reload?: scalar|null, + * optimizations?: int, + * default_path?: scalar|null, // The default path used to load templates. // Default: "%kernel.project_dir%/templates" + * file_name_pattern?: list, + * paths?: array, + * date?: array{ // The default format options used by the date filter. + * format?: scalar|null, // Default: "F j, Y H:i" + * interval_format?: scalar|null, // Default: "%d days" + * timezone?: scalar|null, // The timezone used when formatting dates, when set to null, the timezone returned by date_default_timezone_get() is used. // Default: null + * }, + * number_format?: array{ // The default format options for the number_format filter. + * decimals?: int, // Default: 0 + * decimal_point?: scalar|null, // Default: "." + * thousands_separator?: scalar|null, // Default: "," + * }, + * mailer?: array{ + * html_to_text_converter?: scalar|null, // A service implementing the "Symfony\Component\Mime\HtmlToTextConverter\HtmlToTextConverterInterface". // Default: null + * }, + * } + * @psalm-type SecurityConfig = array{ + * access_denied_url?: scalar|null, // Default: null + * session_fixation_strategy?: "none"|"migrate"|"invalidate", // Default: "migrate" + * hide_user_not_found?: bool, // Deprecated: The "hide_user_not_found" option is deprecated and will be removed in 8.0. Use the "expose_security_errors" option instead. + * expose_security_errors?: \Symfony\Component\Security\Http\Authentication\ExposeSecurityLevel::None|\Symfony\Component\Security\Http\Authentication\ExposeSecurityLevel::AccountStatus|\Symfony\Component\Security\Http\Authentication\ExposeSecurityLevel::All, // Default: "none" + * erase_credentials?: bool, // Default: true + * access_decision_manager?: array{ + * strategy?: "affirmative"|"consensus"|"unanimous"|"priority", + * service?: scalar|null, + * strategy_service?: scalar|null, + * allow_if_all_abstain?: bool, // Default: false + * allow_if_equal_granted_denied?: bool, // Default: true + * }, + * password_hashers?: array, + * hash_algorithm?: scalar|null, // Name of hashing algorithm for PBKDF2 (i.e. sha256, sha512, etc..) See hash_algos() for a list of supported algorithms. // Default: "sha512" + * key_length?: scalar|null, // Default: 40 + * ignore_case?: bool, // Default: false + * encode_as_base64?: bool, // Default: true + * iterations?: scalar|null, // Default: 5000 + * cost?: int, // Default: null + * memory_cost?: scalar|null, // Default: null + * time_cost?: scalar|null, // Default: null + * id?: scalar|null, + * }>, + * providers?: array, + * }, + * entity?: array{ + * class: scalar|null, // The full entity class name of your user class. + * property?: scalar|null, // Default: null + * manager_name?: scalar|null, // Default: null + * }, + * memory?: array{ + * users?: array, + * }>, + * }, + * ldap?: array{ + * service: scalar|null, + * base_dn: scalar|null, + * search_dn?: scalar|null, // Default: null + * search_password?: scalar|null, // Default: null + * extra_fields?: list, + * default_roles?: list, + * role_fetcher?: scalar|null, // Default: null + * uid_key?: scalar|null, // Default: "sAMAccountName" + * filter?: scalar|null, // Default: "({uid_key}={user_identifier})" + * password_attribute?: scalar|null, // Default: null + * }, + * }>, + * firewalls: array, + * security?: bool, // Default: true + * user_checker?: scalar|null, // The UserChecker to use when authenticating users in this firewall. // Default: "security.user_checker" + * request_matcher?: scalar|null, + * access_denied_url?: scalar|null, + * access_denied_handler?: scalar|null, + * entry_point?: scalar|null, // An enabled authenticator name or a service id that implements "Symfony\Component\Security\Http\EntryPoint\AuthenticationEntryPointInterface". + * provider?: scalar|null, + * stateless?: bool, // Default: false + * lazy?: bool, // Default: false + * context?: scalar|null, + * logout?: array{ + * enable_csrf?: bool|null, // Default: null + * csrf_token_id?: scalar|null, // Default: "logout" + * csrf_parameter?: scalar|null, // Default: "_csrf_token" + * csrf_token_manager?: scalar|null, + * path?: scalar|null, // Default: "/logout" + * target?: scalar|null, // Default: "/" + * invalidate_session?: bool, // Default: true + * clear_site_data?: list<"*"|"cache"|"cookies"|"storage"|"executionContexts">, + * delete_cookies?: array, + * }, + * switch_user?: array{ + * provider?: scalar|null, + * parameter?: scalar|null, // Default: "_switch_user" + * role?: scalar|null, // Default: "ROLE_ALLOWED_TO_SWITCH" + * target_route?: scalar|null, // Default: null + * }, + * required_badges?: list, + * custom_authenticators?: list, + * login_throttling?: array{ + * limiter?: scalar|null, // A service id implementing "Symfony\Component\HttpFoundation\RateLimiter\RequestRateLimiterInterface". + * max_attempts?: int, // Default: 5 + * interval?: scalar|null, // Default: "1 minute" + * lock_factory?: scalar|null, // The service ID of the lock factory used by the login rate limiter (or null to disable locking). // Default: null + * cache_pool?: string, // The cache pool to use for storing the limiter state // Default: "cache.rate_limiter" + * storage_service?: string, // The service ID of a custom storage implementation, this precedes any configured "cache_pool" // Default: null + * }, + * x509?: array{ + * provider?: scalar|null, + * user?: scalar|null, // Default: "SSL_CLIENT_S_DN_Email" + * credentials?: scalar|null, // Default: "SSL_CLIENT_S_DN" + * user_identifier?: scalar|null, // Default: "emailAddress" + * }, + * remote_user?: array{ + * provider?: scalar|null, + * user?: scalar|null, // Default: "REMOTE_USER" + * }, + * login_link?: array{ + * check_route: scalar|null, // Route that will validate the login link - e.g. "app_login_link_verify". + * check_post_only?: scalar|null, // If true, only HTTP POST requests to "check_route" will be handled by the authenticator. // Default: false + * signature_properties: list, + * lifetime?: int, // The lifetime of the login link in seconds. // Default: 600 + * max_uses?: int, // Max number of times a login link can be used - null means unlimited within lifetime. // Default: null + * used_link_cache?: scalar|null, // Cache service id used to expired links of max_uses is set. + * success_handler?: scalar|null, // A service id that implements Symfony\Component\Security\Http\Authentication\AuthenticationSuccessHandlerInterface. + * failure_handler?: scalar|null, // A service id that implements Symfony\Component\Security\Http\Authentication\AuthenticationFailureHandlerInterface. + * provider?: scalar|null, // The user provider to load users from. + * secret?: scalar|null, // Default: "%kernel.secret%" + * always_use_default_target_path?: bool, // Default: false + * default_target_path?: scalar|null, // Default: "/" + * login_path?: scalar|null, // Default: "/login" + * target_path_parameter?: scalar|null, // Default: "_target_path" + * use_referer?: bool, // Default: false + * failure_path?: scalar|null, // Default: null + * failure_forward?: bool, // Default: false + * failure_path_parameter?: scalar|null, // Default: "_failure_path" + * }, + * form_login?: array{ + * provider?: scalar|null, + * remember_me?: bool, // Default: true + * success_handler?: scalar|null, + * failure_handler?: scalar|null, + * check_path?: scalar|null, // Default: "/login_check" + * use_forward?: bool, // Default: false + * login_path?: scalar|null, // Default: "/login" + * username_parameter?: scalar|null, // Default: "_username" + * password_parameter?: scalar|null, // Default: "_password" + * csrf_parameter?: scalar|null, // Default: "_csrf_token" + * csrf_token_id?: scalar|null, // Default: "authenticate" + * enable_csrf?: bool, // Default: false + * post_only?: bool, // Default: true + * form_only?: bool, // Default: false + * always_use_default_target_path?: bool, // Default: false + * default_target_path?: scalar|null, // Default: "/" + * target_path_parameter?: scalar|null, // Default: "_target_path" + * use_referer?: bool, // Default: false + * failure_path?: scalar|null, // Default: null + * failure_forward?: bool, // Default: false + * failure_path_parameter?: scalar|null, // Default: "_failure_path" + * }, + * form_login_ldap?: array{ + * provider?: scalar|null, + * remember_me?: bool, // Default: true + * success_handler?: scalar|null, + * failure_handler?: scalar|null, + * check_path?: scalar|null, // Default: "/login_check" + * use_forward?: bool, // Default: false + * login_path?: scalar|null, // Default: "/login" + * username_parameter?: scalar|null, // Default: "_username" + * password_parameter?: scalar|null, // Default: "_password" + * csrf_parameter?: scalar|null, // Default: "_csrf_token" + * csrf_token_id?: scalar|null, // Default: "authenticate" + * enable_csrf?: bool, // Default: false + * post_only?: bool, // Default: true + * form_only?: bool, // Default: false + * always_use_default_target_path?: bool, // Default: false + * default_target_path?: scalar|null, // Default: "/" + * target_path_parameter?: scalar|null, // Default: "_target_path" + * use_referer?: bool, // Default: false + * failure_path?: scalar|null, // Default: null + * failure_forward?: bool, // Default: false + * failure_path_parameter?: scalar|null, // Default: "_failure_path" + * service?: scalar|null, // Default: "ldap" + * dn_string?: scalar|null, // Default: "{user_identifier}" + * query_string?: scalar|null, + * search_dn?: scalar|null, // Default: "" + * search_password?: scalar|null, // Default: "" + * }, + * json_login?: array{ + * provider?: scalar|null, + * remember_me?: bool, // Default: true + * success_handler?: scalar|null, + * failure_handler?: scalar|null, + * check_path?: scalar|null, // Default: "/login_check" + * use_forward?: bool, // Default: false + * login_path?: scalar|null, // Default: "/login" + * username_path?: scalar|null, // Default: "username" + * password_path?: scalar|null, // Default: "password" + * }, + * json_login_ldap?: array{ + * provider?: scalar|null, + * remember_me?: bool, // Default: true + * success_handler?: scalar|null, + * failure_handler?: scalar|null, + * check_path?: scalar|null, // Default: "/login_check" + * use_forward?: bool, // Default: false + * login_path?: scalar|null, // Default: "/login" + * username_path?: scalar|null, // Default: "username" + * password_path?: scalar|null, // Default: "password" + * service?: scalar|null, // Default: "ldap" + * dn_string?: scalar|null, // Default: "{user_identifier}" + * query_string?: scalar|null, + * search_dn?: scalar|null, // Default: "" + * search_password?: scalar|null, // Default: "" + * }, + * access_token?: array{ + * provider?: scalar|null, + * remember_me?: bool, // Default: true + * success_handler?: scalar|null, + * failure_handler?: scalar|null, + * realm?: scalar|null, // Default: null + * token_extractors?: list, + * token_handler: string|array{ + * id?: scalar|null, + * oidc_user_info?: string|array{ + * base_uri: scalar|null, // Base URI of the userinfo endpoint on the OIDC server, or the OIDC server URI to use the discovery (require "discovery" to be configured). + * discovery?: array{ // Enable the OIDC discovery. + * cache?: array{ + * id: scalar|null, // Cache service id to use to cache the OIDC discovery configuration. + * }, + * }, + * claim?: scalar|null, // Claim which contains the user identifier (e.g. sub, email, etc.). // Default: "sub" + * client?: scalar|null, // HttpClient service id to use to call the OIDC server. + * }, + * oidc?: array{ + * discovery?: array{ // Enable the OIDC discovery. + * base_uri: list, + * cache?: array{ + * id: scalar|null, // Cache service id to use to cache the OIDC discovery configuration. + * }, + * }, + * claim?: scalar|null, // Claim which contains the user identifier (e.g.: sub, email..). // Default: "sub" + * audience: scalar|null, // Audience set in the token, for validation purpose. + * issuers: list, + * algorithm?: array, + * algorithms: list, + * key?: scalar|null, // Deprecated: The "key" option is deprecated and will be removed in 8.0. Use the "keyset" option instead. // JSON-encoded JWK used to sign the token (must contain a "kty" key). + * keyset?: scalar|null, // JSON-encoded JWKSet used to sign the token (must contain a list of valid public keys). + * encryption?: bool|array{ + * enabled?: bool, // Default: false + * enforce?: bool, // When enabled, the token shall be encrypted. // Default: false + * algorithms: list, + * keyset: scalar|null, // JSON-encoded JWKSet used to decrypt the token (must contain a list of valid private keys). + * }, + * }, + * cas?: array{ + * validation_url: scalar|null, // CAS server validation URL + * prefix?: scalar|null, // CAS prefix // Default: "cas" + * http_client?: scalar|null, // HTTP Client service // Default: null + * }, + * oauth2?: scalar|null, + * }, + * }, + * http_basic?: array{ + * provider?: scalar|null, + * realm?: scalar|null, // Default: "Secured Area" + * }, + * http_basic_ldap?: array{ + * provider?: scalar|null, + * realm?: scalar|null, // Default: "Secured Area" + * service?: scalar|null, // Default: "ldap" + * dn_string?: scalar|null, // Default: "{user_identifier}" + * query_string?: scalar|null, + * search_dn?: scalar|null, // Default: "" + * search_password?: scalar|null, // Default: "" + * }, + * remember_me?: array{ + * secret?: scalar|null, // Default: "%kernel.secret%" + * service?: scalar|null, + * user_providers?: list, + * catch_exceptions?: bool, // Default: true + * signature_properties?: list, + * token_provider?: string|array{ + * service?: scalar|null, // The service ID of a custom remember-me token provider. + * doctrine?: bool|array{ + * enabled?: bool, // Default: false + * connection?: scalar|null, // Default: null + * }, + * }, + * token_verifier?: scalar|null, // The service ID of a custom rememberme token verifier. + * name?: scalar|null, // Default: "REMEMBERME" + * lifetime?: int, // Default: 31536000 + * path?: scalar|null, // Default: "/" + * domain?: scalar|null, // Default: null + * secure?: true|false|"auto", // Default: null + * httponly?: bool, // Default: true + * samesite?: null|"lax"|"strict"|"none", // Default: "lax" + * always_remember_me?: bool, // Default: false + * remember_me_parameter?: scalar|null, // Default: "_remember_me" + * }, + * }>, + * access_control?: list, + * attributes?: array, + * route?: scalar|null, // Default: null + * methods?: list, + * allow_if?: scalar|null, // Default: null + * roles?: list, + * }>, + * role_hierarchy?: array>, + * } + * @psalm-type WebProfilerConfig = array{ + * toolbar?: bool|array{ // Profiler toolbar configuration + * enabled?: bool, // Default: false + * ajax_replace?: bool, // Replace toolbar on AJAX requests // Default: false + * }, + * intercept_redirects?: bool, // Default: false + * excluded_ajax_paths?: scalar|null, // Default: "^/((index|app(_[\\w]+)?)\\.php/)?_wdt" + * } + * @psalm-type SurfnetStepupMiddlewareApiConfig = array{ + * http_basic_realm?: scalar|null, // Default: "Secure Gateway API" + * } + * @psalm-type SurfnetStepupMiddlewareCommandHandlingConfig = array{ + * self_service_email_verification_url_template: scalar|null, // Configures the URL where registrants can verify e-mail address ownership. + * self_service_url: scalar|null, // Configures the URL for Self Service. + * email_sender: array{ // Configures the sender used for all outgoing e-mail messages + * name: scalar|null, + * email: scalar|null, + * }, + * email_fallback_locale: scalar|null, + * } + * @psalm-type SurfnetStepupMiddlewareGatewayConfig = array + * @psalm-type SurfnetStepupMiddlewareManagementConfig = array{ + * email_required_locale: scalar|null, + * } + * @psalm-type SurfnetStepupMiddlewareMiddlewareConfig = array{ + * second_factors_display_name: list, + * email_verification_window?: scalar|null, // The amount of seconds after which the email verification url/code expires // Default: 3600 + * enabled_generic_second_factors: list, + * } + * @psalm-type SurfnetSamlConfig = array + * @psalm-type ConfigType = array{ + * imports?: ImportsConfig, + * parameters?: ParametersConfig, + * services?: ServicesConfig, + * framework?: FrameworkConfig, + * nelmio_security?: NelmioSecurityConfig, + * open_conext_monitor?: OpenConextMonitorConfig, + * surfnet_stepup?: SurfnetStepupConfig, + * monolog?: MonologConfig, + * doctrine?: DoctrineConfig, + * doctrine_migrations?: DoctrineMigrationsConfig, + * twig_extra?: TwigExtraConfig, + * twig?: TwigConfig, + * security?: SecurityConfig, + * surfnet_stepup_middleware_api?: SurfnetStepupMiddlewareApiConfig, + * surfnet_stepup_middleware_command_handling?: SurfnetStepupMiddlewareCommandHandlingConfig, + * surfnet_stepup_middleware_gateway?: SurfnetStepupMiddlewareGatewayConfig, + * surfnet_stepup_middleware_management?: SurfnetStepupMiddlewareManagementConfig, + * surfnet_stepup_middleware_middleware?: SurfnetStepupMiddlewareMiddlewareConfig, + * "when@dev"?: array{ + * imports?: ImportsConfig, + * parameters?: ParametersConfig, + * services?: ServicesConfig, + * framework?: FrameworkConfig, + * nelmio_security?: NelmioSecurityConfig, + * open_conext_monitor?: OpenConextMonitorConfig, + * surfnet_stepup?: SurfnetStepupConfig, + * monolog?: MonologConfig, + * doctrine?: DoctrineConfig, + * doctrine_migrations?: DoctrineMigrationsConfig, + * liip_test_fixtures?: LiipTestFixturesConfig, + * twig_extra?: TwigExtraConfig, + * twig?: TwigConfig, + * security?: SecurityConfig, + * web_profiler?: WebProfilerConfig, + * surfnet_stepup_middleware_api?: SurfnetStepupMiddlewareApiConfig, + * surfnet_stepup_middleware_command_handling?: SurfnetStepupMiddlewareCommandHandlingConfig, + * surfnet_stepup_middleware_gateway?: SurfnetStepupMiddlewareGatewayConfig, + * surfnet_stepup_middleware_management?: SurfnetStepupMiddlewareManagementConfig, + * surfnet_stepup_middleware_middleware?: SurfnetStepupMiddlewareMiddlewareConfig, + * }, + * "when@dev_event_replay"?: array{ + * imports?: ImportsConfig, + * parameters?: ParametersConfig, + * services?: ServicesConfig, + * framework?: FrameworkConfig, + * nelmio_security?: NelmioSecurityConfig, + * open_conext_monitor?: OpenConextMonitorConfig, + * surfnet_stepup?: SurfnetStepupConfig, + * monolog?: MonologConfig, + * doctrine?: DoctrineConfig, + * doctrine_migrations?: DoctrineMigrationsConfig, + * twig_extra?: TwigExtraConfig, + * twig?: TwigConfig, + * security?: SecurityConfig, + * web_profiler?: WebProfilerConfig, + * surfnet_stepup_middleware_api?: SurfnetStepupMiddlewareApiConfig, + * surfnet_stepup_middleware_command_handling?: SurfnetStepupMiddlewareCommandHandlingConfig, + * surfnet_stepup_middleware_gateway?: SurfnetStepupMiddlewareGatewayConfig, + * surfnet_stepup_middleware_management?: SurfnetStepupMiddlewareManagementConfig, + * surfnet_stepup_middleware_middleware?: SurfnetStepupMiddlewareMiddlewareConfig, + * }, + * "when@prod"?: array{ + * imports?: ImportsConfig, + * parameters?: ParametersConfig, + * services?: ServicesConfig, + * framework?: FrameworkConfig, + * nelmio_security?: NelmioSecurityConfig, + * open_conext_monitor?: OpenConextMonitorConfig, + * surfnet_stepup?: SurfnetStepupConfig, + * monolog?: MonologConfig, + * doctrine?: DoctrineConfig, + * doctrine_migrations?: DoctrineMigrationsConfig, + * twig_extra?: TwigExtraConfig, + * twig?: TwigConfig, + * security?: SecurityConfig, + * surfnet_stepup_middleware_api?: SurfnetStepupMiddlewareApiConfig, + * surfnet_stepup_middleware_command_handling?: SurfnetStepupMiddlewareCommandHandlingConfig, + * surfnet_stepup_middleware_gateway?: SurfnetStepupMiddlewareGatewayConfig, + * surfnet_stepup_middleware_management?: SurfnetStepupMiddlewareManagementConfig, + * surfnet_stepup_middleware_middleware?: SurfnetStepupMiddlewareMiddlewareConfig, + * }, + * "when@prod_event_replay"?: array{ + * imports?: ImportsConfig, + * parameters?: ParametersConfig, + * services?: ServicesConfig, + * framework?: FrameworkConfig, + * nelmio_security?: NelmioSecurityConfig, + * open_conext_monitor?: OpenConextMonitorConfig, + * surfnet_stepup?: SurfnetStepupConfig, + * monolog?: MonologConfig, + * doctrine?: DoctrineConfig, + * doctrine_migrations?: DoctrineMigrationsConfig, + * twig_extra?: TwigExtraConfig, + * twig?: TwigConfig, + * security?: SecurityConfig, + * web_profiler?: WebProfilerConfig, + * surfnet_stepup_middleware_api?: SurfnetStepupMiddlewareApiConfig, + * surfnet_stepup_middleware_command_handling?: SurfnetStepupMiddlewareCommandHandlingConfig, + * surfnet_stepup_middleware_gateway?: SurfnetStepupMiddlewareGatewayConfig, + * surfnet_stepup_middleware_management?: SurfnetStepupMiddlewareManagementConfig, + * surfnet_stepup_middleware_middleware?: SurfnetStepupMiddlewareMiddlewareConfig, + * }, + * "when@smoketes"?: array{ + * imports?: ImportsConfig, + * parameters?: ParametersConfig, + * services?: ServicesConfig, + * framework?: FrameworkConfig, + * nelmio_security?: NelmioSecurityConfig, + * open_conext_monitor?: OpenConextMonitorConfig, + * surfnet_stepup?: SurfnetStepupConfig, + * monolog?: MonologConfig, + * doctrine?: DoctrineConfig, + * doctrine_migrations?: DoctrineMigrationsConfig, + * twig_extra?: TwigExtraConfig, + * twig?: TwigConfig, + * security?: SecurityConfig, + * surfnet_stepup_middleware_api?: SurfnetStepupMiddlewareApiConfig, + * surfnet_stepup_middleware_command_handling?: SurfnetStepupMiddlewareCommandHandlingConfig, + * surfnet_stepup_middleware_gateway?: SurfnetStepupMiddlewareGatewayConfig, + * surfnet_stepup_middleware_management?: SurfnetStepupMiddlewareManagementConfig, + * surfnet_stepup_middleware_middleware?: SurfnetStepupMiddlewareMiddlewareConfig, + * }, + * "when@smoketest"?: array{ + * imports?: ImportsConfig, + * parameters?: ParametersConfig, + * services?: ServicesConfig, + * framework?: FrameworkConfig, + * nelmio_security?: NelmioSecurityConfig, + * open_conext_monitor?: OpenConextMonitorConfig, + * surfnet_stepup?: SurfnetStepupConfig, + * monolog?: MonologConfig, + * doctrine?: DoctrineConfig, + * doctrine_migrations?: DoctrineMigrationsConfig, + * liip_test_fixtures?: LiipTestFixturesConfig, + * twig_extra?: TwigExtraConfig, + * twig?: TwigConfig, + * security?: SecurityConfig, + * web_profiler?: WebProfilerConfig, + * surfnet_stepup_middleware_api?: SurfnetStepupMiddlewareApiConfig, + * surfnet_stepup_middleware_command_handling?: SurfnetStepupMiddlewareCommandHandlingConfig, + * surfnet_stepup_middleware_gateway?: SurfnetStepupMiddlewareGatewayConfig, + * surfnet_stepup_middleware_management?: SurfnetStepupMiddlewareManagementConfig, + * surfnet_stepup_middleware_middleware?: SurfnetStepupMiddlewareMiddlewareConfig, + * }, + * "when@smoketest_event_replay"?: array{ + * imports?: ImportsConfig, + * parameters?: ParametersConfig, + * services?: ServicesConfig, + * framework?: FrameworkConfig, + * nelmio_security?: NelmioSecurityConfig, + * open_conext_monitor?: OpenConextMonitorConfig, + * surfnet_stepup?: SurfnetStepupConfig, + * monolog?: MonologConfig, + * doctrine?: DoctrineConfig, + * doctrine_migrations?: DoctrineMigrationsConfig, + * liip_test_fixtures?: LiipTestFixturesConfig, + * twig_extra?: TwigExtraConfig, + * twig?: TwigConfig, + * security?: SecurityConfig, + * web_profiler?: WebProfilerConfig, + * surfnet_stepup_middleware_api?: SurfnetStepupMiddlewareApiConfig, + * surfnet_stepup_middleware_command_handling?: SurfnetStepupMiddlewareCommandHandlingConfig, + * surfnet_stepup_middleware_gateway?: SurfnetStepupMiddlewareGatewayConfig, + * surfnet_stepup_middleware_management?: SurfnetStepupMiddlewareManagementConfig, + * surfnet_stepup_middleware_middleware?: SurfnetStepupMiddlewareMiddlewareConfig, + * }, + * "when@sometest_event_replay"?: array{ + * imports?: ImportsConfig, + * parameters?: ParametersConfig, + * services?: ServicesConfig, + * framework?: FrameworkConfig, + * nelmio_security?: NelmioSecurityConfig, + * open_conext_monitor?: OpenConextMonitorConfig, + * surfnet_stepup?: SurfnetStepupConfig, + * monolog?: MonologConfig, + * doctrine?: DoctrineConfig, + * doctrine_migrations?: DoctrineMigrationsConfig, + * twig_extra?: TwigExtraConfig, + * twig?: TwigConfig, + * security?: SecurityConfig, + * surfnet_stepup_middleware_api?: SurfnetStepupMiddlewareApiConfig, + * surfnet_stepup_middleware_command_handling?: SurfnetStepupMiddlewareCommandHandlingConfig, + * surfnet_stepup_middleware_gateway?: SurfnetStepupMiddlewareGatewayConfig, + * surfnet_stepup_middleware_management?: SurfnetStepupMiddlewareManagementConfig, + * surfnet_stepup_middleware_middleware?: SurfnetStepupMiddlewareMiddlewareConfig, + * }, + * "when@test"?: array{ + * imports?: ImportsConfig, + * parameters?: ParametersConfig, + * services?: ServicesConfig, + * framework?: FrameworkConfig, + * nelmio_security?: NelmioSecurityConfig, + * open_conext_monitor?: OpenConextMonitorConfig, + * surfnet_stepup?: SurfnetStepupConfig, + * monolog?: MonologConfig, + * doctrine?: DoctrineConfig, + * doctrine_migrations?: DoctrineMigrationsConfig, + * liip_test_fixtures?: LiipTestFixturesConfig, + * twig_extra?: TwigExtraConfig, + * twig?: TwigConfig, + * security?: SecurityConfig, + * web_profiler?: WebProfilerConfig, + * surfnet_stepup_middleware_api?: SurfnetStepupMiddlewareApiConfig, + * surfnet_stepup_middleware_command_handling?: SurfnetStepupMiddlewareCommandHandlingConfig, + * surfnet_stepup_middleware_gateway?: SurfnetStepupMiddlewareGatewayConfig, + * surfnet_stepup_middleware_management?: SurfnetStepupMiddlewareManagementConfig, + * surfnet_stepup_middleware_middleware?: SurfnetStepupMiddlewareMiddlewareConfig, + * }, + * "when@test_event_replay"?: array{ + * imports?: ImportsConfig, + * parameters?: ParametersConfig, + * services?: ServicesConfig, + * framework?: FrameworkConfig, + * nelmio_security?: NelmioSecurityConfig, + * open_conext_monitor?: OpenConextMonitorConfig, + * surfnet_stepup?: SurfnetStepupConfig, + * monolog?: MonologConfig, + * doctrine?: DoctrineConfig, + * doctrine_migrations?: DoctrineMigrationsConfig, + * twig_extra?: TwigExtraConfig, + * twig?: TwigConfig, + * security?: SecurityConfig, + * surfnet_stepup_middleware_api?: SurfnetStepupMiddlewareApiConfig, + * surfnet_stepup_middleware_command_handling?: SurfnetStepupMiddlewareCommandHandlingConfig, + * surfnet_stepup_middleware_gateway?: SurfnetStepupMiddlewareGatewayConfig, + * surfnet_stepup_middleware_management?: SurfnetStepupMiddlewareManagementConfig, + * surfnet_stepup_middleware_middleware?: SurfnetStepupMiddlewareMiddlewareConfig, + * }, + * ..., + * }> + * } + */ +final class App +{ + /** + * @param ConfigType $config + * + * @psalm-return ConfigType + */ + public static function config(array $config): array + { + return AppReference::config($config); + } +} + +namespace Symfony\Component\Routing\Loader\Configurator; + +/** + * This class provides array-shapes for configuring the routes of an application. + * + * Example: + * + * ```php + * // config/routes.php + * namespace Symfony\Component\Routing\Loader\Configurator; + * + * return Routes::config([ + * 'controllers' => [ + * 'resource' => 'routing.controllers', + * ], + * ]); + * ``` + * + * @psalm-type RouteConfig = array{ + * path: string|array, + * controller?: string, + * methods?: string|list, + * requirements?: array, + * defaults?: array, + * options?: array, + * host?: string|array, + * schemes?: string|list, + * condition?: string, + * locale?: string, + * format?: string, + * utf8?: bool, + * stateless?: bool, + * } + * @psalm-type ImportConfig = array{ + * resource: string, + * type?: string, + * exclude?: string|list, + * prefix?: string|array, + * name_prefix?: string, + * trailing_slash_on_root?: bool, + * controller?: string, + * methods?: string|list, + * requirements?: array, + * defaults?: array, + * options?: array, + * host?: string|array, + * schemes?: string|list, + * condition?: string, + * locale?: string, + * format?: string, + * utf8?: bool, + * stateless?: bool, + * } + * @psalm-type AliasConfig = array{ + * alias: string, + * deprecated?: array{package:string, version:string, message?:string}, + * } + * @psalm-type RoutesConfig = array{ + * "when@dev"?: array, + * "when@dev_event_replay"?: array, + * "when@prod"?: array, + * "when@prod_event_replay"?: array, + * "when@smoketes"?: array, + * "when@smoketest"?: array, + * "when@smoketest_event_replay"?: array, + * "when@sometest_event_replay"?: array, + * "when@test"?: array, + * "when@test_event_replay"?: array, + * ... + * } + */ +final class Routes +{ + /** + * @param RoutesConfig $config + * + * @psalm-return RoutesConfig + */ + public static function config(array $config): array + { + return $config; + } +} diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/DependencyInjection/Configuration.php b/src/Surfnet/StepupMiddleware/ApiBundle/DependencyInjection/Configuration.php index 77012057c..14cb2ec72 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/DependencyInjection/Configuration.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/DependencyInjection/Configuration.php @@ -23,6 +23,9 @@ class Configuration implements ConfigurationInterface { + /** + * @return TreeBuilder<'array'> + */ public function getConfigTreeBuilder(): TreeBuilder { $treeBuilder = new TreeBuilder('surfnet_stepup_middleware_api'); diff --git a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/DependencyInjection/Configuration.php b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/DependencyInjection/Configuration.php index 31c6012b9..6c42f1855 100644 --- a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/DependencyInjection/Configuration.php +++ b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/DependencyInjection/Configuration.php @@ -23,6 +23,9 @@ class Configuration implements ConfigurationInterface { + /** + * @return TreeBuilder<'array'> + */ public function getConfigTreeBuilder(): TreeBuilder { $treeBuilder = new TreeBuilder('surfnet_stepup_middleware_command_handling'); diff --git a/src/Surfnet/StepupMiddleware/GatewayBundle/DependencyInjection/Configuration.php b/src/Surfnet/StepupMiddleware/GatewayBundle/DependencyInjection/Configuration.php index c923ebf4c..5c0cded28 100644 --- a/src/Surfnet/StepupMiddleware/GatewayBundle/DependencyInjection/Configuration.php +++ b/src/Surfnet/StepupMiddleware/GatewayBundle/DependencyInjection/Configuration.php @@ -23,6 +23,9 @@ class Configuration implements ConfigurationInterface { + /** + * @return TreeBuilder<'array'> + */ public function getConfigTreeBuilder(): TreeBuilder { return new TreeBuilder('surfnet_stepup_gateway_gateway'); diff --git a/src/Surfnet/StepupMiddleware/ManagementBundle/DependencyInjection/Configuration.php b/src/Surfnet/StepupMiddleware/ManagementBundle/DependencyInjection/Configuration.php index cdb19d9d2..97089a0c6 100644 --- a/src/Surfnet/StepupMiddleware/ManagementBundle/DependencyInjection/Configuration.php +++ b/src/Surfnet/StepupMiddleware/ManagementBundle/DependencyInjection/Configuration.php @@ -23,6 +23,9 @@ class Configuration implements ConfigurationInterface { + /** + * @return TreeBuilder<'array'> + */ public function getConfigTreeBuilder(): TreeBuilder { $treeBuilder = new TreeBuilder('surfnet_stepup_middleware_management'); diff --git a/src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/EmailVerifiedSecondFactorRemindersCommand.php b/src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/EmailVerifiedSecondFactorRemindersCommand.php index 35e9cc6f6..cc5027a0a 100644 --- a/src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/EmailVerifiedSecondFactorRemindersCommand.php +++ b/src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/EmailVerifiedSecondFactorRemindersCommand.php @@ -31,7 +31,6 @@ use Surfnet\StepupMiddleware\MiddlewareBundle\Service\DBALConnectionHelper; use Symfony\Component\Console\Attribute\AsCommand; use Symfony\Component\Console\Attribute\Option; -use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Output\OutputInterface; /** @@ -40,16 +39,13 @@ * The command utilizes a specific service for this task (VerifiedSecondFactorReminderService). Input validation is * performed on the incoming request parameters. * - * @TODO Once on Symfony 7.4, remove the `extends Command` and the parent constructor call - * @see https://github.com/symfony/symfony/commit/1886c105df2772c0a1a17fa739318c3bfb731ce9 - * * @SuppressWarnings("PHPMD.CouplingBetweenObjects") */ #[AsCommand( name: 'middleware:cron:email-reminder', description: 'Sends email reminders to identities with verified tokens more than 7 days old.' )] -final class EmailVerifiedSecondFactorRemindersCommand extends Command +final class EmailVerifiedSecondFactorRemindersCommand { public function __construct( private readonly TransactionAwarePipeline $pipeline, @@ -57,7 +53,6 @@ public function __construct( private readonly DBALConnectionHelper $connection, private readonly LoggerInterface $logger ) { - parent::__construct(); } public function __invoke( @@ -75,7 +70,7 @@ public function __invoke( ); } catch (InvalidArgumentException $e) { $output->writeln('' . $e->getMessage() . ''); - $this->logger->error(sprintf('Invalid arguments passed to the %s', $this->getName()), [$e->getMessage()]); + $this->logger->error(sprintf('Invalid arguments passed to the %s', 'middleware:cron:email-reminder'), [$e->getMessage()]); return 1; } diff --git a/src/Surfnet/StepupMiddleware/MiddlewareBundle/DependencyInjection/Configuration.php b/src/Surfnet/StepupMiddleware/MiddlewareBundle/DependencyInjection/Configuration.php index 4e32baf4c..c73ba11ee 100644 --- a/src/Surfnet/StepupMiddleware/MiddlewareBundle/DependencyInjection/Configuration.php +++ b/src/Surfnet/StepupMiddleware/MiddlewareBundle/DependencyInjection/Configuration.php @@ -23,6 +23,9 @@ class Configuration implements ConfigurationInterface { + /** + * @return TreeBuilder<'array'> + */ public function getConfigTreeBuilder(): TreeBuilder { $treeBuilder = new TreeBuilder('surfnet_stepup_middleware_middleware'); diff --git a/src/Surfnet/StepupMiddleware/MiddlewareBundle/Tests/Console/Command/EmailVerifiedSecondFactorRemindersCommandTest.php b/src/Surfnet/StepupMiddleware/MiddlewareBundle/Tests/Console/Command/EmailVerifiedSecondFactorRemindersCommandTest.php index b11ab36ad..5cf7df41f 100644 --- a/src/Surfnet/StepupMiddleware/MiddlewareBundle/Tests/Console/Command/EmailVerifiedSecondFactorRemindersCommandTest.php +++ b/src/Surfnet/StepupMiddleware/MiddlewareBundle/Tests/Console/Command/EmailVerifiedSecondFactorRemindersCommandTest.php @@ -67,7 +67,7 @@ protected function setUp(): void ); $application = new Application(); - $application->add($this->command); + $application->addCommand($this->command); $this->commandTester = new CommandTester($this->command); } From c8d329f413c3e960fffbe4bac81a6756cb47b47e Mon Sep 17 00:00:00 2001 From: Johan Kromhout Date: Mon, 1 Dec 2025 15:29:20 +0100 Subject: [PATCH 26/32] Doctrine: No longer rely on the deprecated `commented` setting in the doctrine bundle. Instead, set the commented via the custom type. https://github.com/doctrine/DoctrineBundle/issues/977 --- config/packages/doctrine.yaml | 27 ------------------- .../Doctrine/Type/AuthorityRoleType.php | 5 ++++ .../Doctrine/Type/CommonNameType.php | 5 ++++ .../ConfigurationContactInformationType.php | 5 ++++ .../Type/ConfigurationInstitutionType.php | 5 ++++ .../Type/ConfigurationLocationType.php | 5 ++++ .../Doctrine/Type/ContactInformationType.php | 5 ++++ .../ApiBundle/Doctrine/Type/DateTimeType.php | 5 ++++ .../Doctrine/Type/DocumentNumberType.php | 5 ++++ .../ApiBundle/Doctrine/Type/EmailType.php | 5 ++++ .../Doctrine/Type/InstitutionRoleType.php | 5 ++++ .../Doctrine/Type/InstitutionType.php | 5 ++++ .../ApiBundle/Doctrine/Type/LocaleType.php | 5 ++++ .../ApiBundle/Doctrine/Type/LocationType.php | 5 ++++ .../ApiBundle/Doctrine/Type/NameIdType.php | 5 ++++ .../Type/NumberOfTokensPerIdentityType.php | 5 ++++ .../Doctrine/Type/RaLocationNameType.php | 5 ++++ .../Doctrine/Type/RecoveryTokenStatusType.php | 5 ++++ .../Doctrine/Type/SecondFactorStatusType.php | 5 ++++ .../Doctrine/Type/SecondFactorTypeType.php | 5 ++++ .../Type/SelfAssertedTokensOptionType.php | 5 ++++ .../Doctrine/Type/SelfVetOptionType.php | 5 ++++ .../ShowRaaContactInformationOptionType.php | 5 ++++ .../Doctrine/Type/SsoOn2faOptionType.php | 5 ++++ .../Type/SsoRegistrationBypassOptionType.php | 5 ++++ .../Type/UseRaLocationsOptionType.php | 5 ++++ .../Doctrine/Type/VerifyEmailOptionType.php | 5 ++++ .../Doctrine/Type/VettingTypeHintsType.php | 5 ++++ 28 files changed, 135 insertions(+), 27 deletions(-) diff --git a/config/packages/doctrine.yaml b/config/packages/doctrine.yaml index ac9751383..036d7bb04 100644 --- a/config/packages/doctrine.yaml +++ b/config/packages/doctrine.yaml @@ -33,85 +33,58 @@ doctrine: types: authority_role: class: Surfnet\StepupMiddleware\ApiBundle\Doctrine\Type\AuthorityRoleType - commented: false institution: class: Surfnet\StepupMiddleware\ApiBundle\Doctrine\Type\InstitutionType - commented: false stepup_contact_information: class: Surfnet\StepupMiddleware\ApiBundle\Doctrine\Type\ContactInformationType - commented: false stepup_common_name: class: Surfnet\StepupMiddleware\ApiBundle\Doctrine\Type\CommonNameType - commented: false stepup_datetime: class: Surfnet\StepupMiddleware\ApiBundle\Doctrine\Type\DateTimeType - commented: false stepup_document_number: class: Surfnet\StepupMiddleware\ApiBundle\Doctrine\Type\DocumentNumberType - commented: false stepup_email: class: Surfnet\StepupMiddleware\ApiBundle\Doctrine\Type\EmailType - commented: false stepup_name_id: class: Surfnet\StepupMiddleware\ApiBundle\Doctrine\Type\NameIdType - commented: false stepup_locale: class: Surfnet\StepupMiddleware\ApiBundle\Doctrine\Type\LocaleType - commented: false stepup_location: class: Surfnet\StepupMiddleware\ApiBundle\Doctrine\Type\LocationType - commented: false stepup_second_factor_status: class: Surfnet\StepupMiddleware\ApiBundle\Doctrine\Type\SecondFactorStatusType - commented: false stepup_recovery_token_status: class: Surfnet\StepupMiddleware\ApiBundle\Doctrine\Type\RecoveryTokenStatusType - commented: false stepup_ra_location_name: class: Surfnet\StepupMiddleware\ApiBundle\Doctrine\Type\RaLocationNameType - commented: false stepup_configuration_institution: class: Surfnet\StepupMiddleware\ApiBundle\Doctrine\Type\ConfigurationInstitutionType - commented: false stepup_configuration_contact_information: class: Surfnet\StepupMiddleware\ApiBundle\Doctrine\Type\ConfigurationContactInformationType - commented: false stepup_configuration_location: class: Surfnet\StepupMiddleware\ApiBundle\Doctrine\Type\ConfigurationLocationType - commented: false stepup_use_ra_locations_option: class: Surfnet\StepupMiddleware\ApiBundle\Doctrine\Type\UseRaLocationsOptionType - commented: false stepup_show_raa_contact_information_option: class: Surfnet\StepupMiddleware\ApiBundle\Doctrine\Type\ShowRaaContactInformationOptionType - commented: false stepup_second_factor_type: class: Surfnet\StepupMiddleware\ApiBundle\Doctrine\Type\SecondFactorTypeType - commented: false stepup_verify_email_option: class: Surfnet\StepupMiddleware\ApiBundle\Doctrine\Type\VerifyEmailOptionType - commented: false stepup_number_of_tokens_per_identity_option: class: Surfnet\StepupMiddleware\ApiBundle\Doctrine\Type\NumberOfTokensPerIdentityType - commented: false stepup_self_vet_option: class: Surfnet\StepupMiddleware\ApiBundle\Doctrine\Type\SelfVetOptionType - commented: false stepup_self_asserted_tokens_option: class: Surfnet\StepupMiddleware\ApiBundle\Doctrine\Type\SelfAssertedTokensOptionType - commented: false stepup_sso_on_2fa_option: class: Surfnet\StepupMiddleware\ApiBundle\Doctrine\Type\SsoOn2faOptionType - commented: false stepup_sso_registration_bypass_option: class: Surfnet\StepupMiddleware\ApiBundle\Doctrine\Type\SsoRegistrationBypassOptionType - commented: false stepup_institution_role: class: Surfnet\StepupMiddleware\ApiBundle\Doctrine\Type\InstitutionRoleType - commented: false stepup_vetting_type_hints: class: Surfnet\StepupMiddleware\ApiBundle\Doctrine\Type\VettingTypeHintsType - commented: false orm: default_entity_manager: middleware auto_generate_proxy_classes: "%kernel.debug%" diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/AuthorityRoleType.php b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/AuthorityRoleType.php index d55845991..fddea069c 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/AuthorityRoleType.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/AuthorityRoleType.php @@ -74,4 +74,9 @@ public function getName(): string { return self::NAME; } + + public function requiresSQLCommentHint(AbstractPlatform $platform): bool + { + return false; + } } diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/CommonNameType.php b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/CommonNameType.php index 9252c8da5..2e7682010 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/CommonNameType.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/CommonNameType.php @@ -71,4 +71,9 @@ public function getName(): string { return self::NAME; } + + public function requiresSQLCommentHint(AbstractPlatform $platform): bool + { + return false; + } } diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/ConfigurationContactInformationType.php b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/ConfigurationContactInformationType.php index ef3167b99..a02e1f8e6 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/ConfigurationContactInformationType.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/ConfigurationContactInformationType.php @@ -83,4 +83,9 @@ public function getName(): string { return self::NAME; } + + public function requiresSQLCommentHint(AbstractPlatform $platform): bool + { + return false; + } } diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/ConfigurationInstitutionType.php b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/ConfigurationInstitutionType.php index 18de4be50..2ca6ef5df 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/ConfigurationInstitutionType.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/ConfigurationInstitutionType.php @@ -80,4 +80,9 @@ public function getName(): string { return self::NAME; } + + public function requiresSQLCommentHint(AbstractPlatform $platform): bool + { + return false; + } } diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/ConfigurationLocationType.php b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/ConfigurationLocationType.php index 55f0324f1..f3bf9b354 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/ConfigurationLocationType.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/ConfigurationLocationType.php @@ -83,4 +83,9 @@ public function getName(): string { return self::NAME; } + + public function requiresSQLCommentHint(AbstractPlatform $platform): bool + { + return false; + } } diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/ContactInformationType.php b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/ContactInformationType.php index d9b399dab..f9cd551bf 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/ContactInformationType.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/ContactInformationType.php @@ -73,4 +73,9 @@ public function getName(): string { return self::NAME; } + + public function requiresSQLCommentHint(AbstractPlatform $platform): bool + { + return false; + } } diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/DateTimeType.php b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/DateTimeType.php index 0457837a5..4d3704ddd 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/DateTimeType.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/DateTimeType.php @@ -84,4 +84,9 @@ public function getName(): string { return self::NAME; } + + public function requiresSQLCommentHint(AbstractPlatform $platform): bool + { + return false; + } } diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/DocumentNumberType.php b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/DocumentNumberType.php index 49eea8447..9d16e84fc 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/DocumentNumberType.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/DocumentNumberType.php @@ -76,4 +76,9 @@ public function getName(): string { return self::NAME; } + + public function requiresSQLCommentHint(AbstractPlatform $platform): bool + { + return false; + } } diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/EmailType.php b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/EmailType.php index 330510131..66e8f05d9 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/EmailType.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/EmailType.php @@ -70,4 +70,9 @@ public function getName(): string { return self::NAME; } + + public function requiresSQLCommentHint(AbstractPlatform $platform): bool + { + return false; + } } diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/InstitutionRoleType.php b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/InstitutionRoleType.php index b300d21da..2b634ddd6 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/InstitutionRoleType.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/InstitutionRoleType.php @@ -80,4 +80,9 @@ public function getName(): string { return self::NAME; } + + public function requiresSQLCommentHint(AbstractPlatform $platform): bool + { + return false; + } } diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/InstitutionType.php b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/InstitutionType.php index 1de1dc879..67760d252 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/InstitutionType.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/InstitutionType.php @@ -70,4 +70,9 @@ public function getName(): string { return self::NAME; } + + public function requiresSQLCommentHint(AbstractPlatform $platform): bool + { + return false; + } } diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/LocaleType.php b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/LocaleType.php index 1520fd75c..f895058bd 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/LocaleType.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/LocaleType.php @@ -73,4 +73,9 @@ public function getName(): string { return self::NAME; } + + public function requiresSQLCommentHint(AbstractPlatform $platform): bool + { + return false; + } } diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/LocationType.php b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/LocationType.php index 1a4bfe8a7..d017a9eb4 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/LocationType.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/LocationType.php @@ -73,4 +73,9 @@ public function getName(): string { return self::NAME; } + + public function requiresSQLCommentHint(AbstractPlatform $platform): bool + { + return false; + } } diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/NameIdType.php b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/NameIdType.php index f1c4138d9..8a7d43ca5 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/NameIdType.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/NameIdType.php @@ -70,4 +70,9 @@ public function getName(): string { return self::NAME; } + + public function requiresSQLCommentHint(AbstractPlatform $platform): bool + { + return false; + } } diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/NumberOfTokensPerIdentityType.php b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/NumberOfTokensPerIdentityType.php index 8ac75e8bb..14054c83c 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/NumberOfTokensPerIdentityType.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/NumberOfTokensPerIdentityType.php @@ -81,4 +81,9 @@ public function getName(): string { return self::NAME; } + + public function requiresSQLCommentHint(AbstractPlatform $platform): bool + { + return false; + } } diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/RaLocationNameType.php b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/RaLocationNameType.php index eefeefad1..ece33068b 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/RaLocationNameType.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/RaLocationNameType.php @@ -80,4 +80,9 @@ public function getName(): string { return self::NAME; } + + public function requiresSQLCommentHint(AbstractPlatform $platform): bool + { + return false; + } } diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/RecoveryTokenStatusType.php b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/RecoveryTokenStatusType.php index fc249ae31..1b73e751b 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/RecoveryTokenStatusType.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/RecoveryTokenStatusType.php @@ -91,4 +91,9 @@ public function getName(): string { return self::NAME; } + + public function requiresSQLCommentHint(AbstractPlatform $platform): bool + { + return false; + } } diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/SecondFactorStatusType.php b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/SecondFactorStatusType.php index 40d56d731..3580f6e49 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/SecondFactorStatusType.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/SecondFactorStatusType.php @@ -104,4 +104,9 @@ public function getName(): string { return self::NAME; } + + public function requiresSQLCommentHint(AbstractPlatform $platform): bool + { + return false; + } } diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/SecondFactorTypeType.php b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/SecondFactorTypeType.php index 74d2a6a48..c16e06d43 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/SecondFactorTypeType.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/SecondFactorTypeType.php @@ -70,4 +70,9 @@ public function getName(): string { return self::NAME; } + + public function requiresSQLCommentHint(AbstractPlatform $platform): bool + { + return false; + } } diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/SelfAssertedTokensOptionType.php b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/SelfAssertedTokensOptionType.php index 57a49af4e..4dc2fb43d 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/SelfAssertedTokensOptionType.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/SelfAssertedTokensOptionType.php @@ -81,4 +81,9 @@ public function getName(): string { return self::NAME; } + + public function requiresSQLCommentHint(AbstractPlatform $platform): bool + { + return false; + } } diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/SelfVetOptionType.php b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/SelfVetOptionType.php index 6a32eb222..d683cc785 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/SelfVetOptionType.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/SelfVetOptionType.php @@ -81,4 +81,9 @@ public function getName(): string { return self::NAME; } + + public function requiresSQLCommentHint(AbstractPlatform $platform): bool + { + return false; + } } diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/ShowRaaContactInformationOptionType.php b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/ShowRaaContactInformationOptionType.php index 263320b61..213fef0bb 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/ShowRaaContactInformationOptionType.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/ShowRaaContactInformationOptionType.php @@ -82,4 +82,9 @@ public function getName(): string { return self::NAME; } + + public function requiresSQLCommentHint(AbstractPlatform $platform): bool + { + return false; + } } diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/SsoOn2faOptionType.php b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/SsoOn2faOptionType.php index 96818bc31..3ecd80973 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/SsoOn2faOptionType.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/SsoOn2faOptionType.php @@ -81,4 +81,9 @@ public function getName(): string { return self::NAME; } + + public function requiresSQLCommentHint(AbstractPlatform $platform): bool + { + return false; + } } diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/SsoRegistrationBypassOptionType.php b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/SsoRegistrationBypassOptionType.php index 90924cb55..e4d0a28dd 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/SsoRegistrationBypassOptionType.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/SsoRegistrationBypassOptionType.php @@ -85,4 +85,9 @@ public function getName(): string { return self::NAME; } + + public function requiresSQLCommentHint(AbstractPlatform $platform): bool + { + return false; + } } diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/UseRaLocationsOptionType.php b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/UseRaLocationsOptionType.php index b4473bde8..c49c42f6d 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/UseRaLocationsOptionType.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/UseRaLocationsOptionType.php @@ -80,4 +80,9 @@ public function getName(): string { return self::NAME; } + + public function requiresSQLCommentHint(AbstractPlatform $platform): bool + { + return false; + } } diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/VerifyEmailOptionType.php b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/VerifyEmailOptionType.php index d0c153b79..0dee3cad8 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/VerifyEmailOptionType.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/VerifyEmailOptionType.php @@ -80,4 +80,9 @@ public function getName(): string { return self::NAME; } + + public function requiresSQLCommentHint(AbstractPlatform $platform): bool + { + return false; + } } diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/VettingTypeHintsType.php b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/VettingTypeHintsType.php index 2034d71b7..d0ca4e2b8 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/VettingTypeHintsType.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/VettingTypeHintsType.php @@ -62,4 +62,9 @@ public function getName(): string { return self::NAME; } + + public function requiresSQLCommentHint(AbstractPlatform $platform): bool + { + return false; + } } From c31a288773385ab20a08a391bcad6f00c7b98a2f Mon Sep 17 00:00:00 2001 From: Johan Kromhout Date: Mon, 1 Dec 2025 15:39:54 +0100 Subject: [PATCH 27/32] Fix deprecation: Don't rely on db specific varchar size Relying on the default column size for varchar fields is deprecated. This change configures all varchar custom types to rely on the previous default value of 255, if not overridden. See \Doctrine\DBAL\Platforms\AbstractPlatform::getVarcharDefaultLength See https://github.com/doctrine/dbal/issues/3263 --- .../ApiBundle/Doctrine/Type/CommonNameType.php | 4 ++++ .../ApiBundle/Doctrine/Type/ConfigurationInstitutionType.php | 4 ++++ .../ApiBundle/Doctrine/Type/DocumentNumberType.php | 4 ++++ .../StepupMiddleware/ApiBundle/Doctrine/Type/EmailType.php | 4 ++++ .../ApiBundle/Doctrine/Type/InstitutionRoleType.php | 4 ++++ .../ApiBundle/Doctrine/Type/InstitutionType.php | 4 ++++ .../StepupMiddleware/ApiBundle/Doctrine/Type/LocaleType.php | 4 ++++ .../StepupMiddleware/ApiBundle/Doctrine/Type/NameIdType.php | 4 ++++ .../ApiBundle/Doctrine/Type/RaLocationNameType.php | 5 ++++- .../ApiBundle/Doctrine/Type/SecondFactorTypeType.php | 4 ++++ 10 files changed, 40 insertions(+), 1 deletion(-) diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/CommonNameType.php b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/CommonNameType.php index 2e7682010..6bf74734b 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/CommonNameType.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/CommonNameType.php @@ -34,6 +34,10 @@ class CommonNameType extends Type public function getSQLDeclaration(array $column, AbstractPlatform $platform): string { + if (!isset($column['length'])) { + $column['length'] = 255; + } + return $platform->getStringTypeDeclarationSQL($column); } diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/ConfigurationInstitutionType.php b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/ConfigurationInstitutionType.php index 2ca6ef5df..8b2c1eec1 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/ConfigurationInstitutionType.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/ConfigurationInstitutionType.php @@ -33,6 +33,10 @@ class ConfigurationInstitutionType extends Type public function getSQLDeclaration(array $column, AbstractPlatform $platform): string { + if (!isset($column['length'])) { + $column['length'] = 255; + } + return $platform->getStringTypeDeclarationSQL($column); } diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/DocumentNumberType.php b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/DocumentNumberType.php index 9d16e84fc..3951ecdc7 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/DocumentNumberType.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/DocumentNumberType.php @@ -35,6 +35,10 @@ class DocumentNumberType extends Type public function getSQLDeclaration(array $column, AbstractPlatform $platform): string { + if (!isset($column['length'])) { + $column['length'] = 255; + } + return $platform->getStringTypeDeclarationSQL($column); } diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/EmailType.php b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/EmailType.php index 66e8f05d9..7e0694271 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/EmailType.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/EmailType.php @@ -33,6 +33,10 @@ class EmailType extends Type public function getSQLDeclaration(array $column, AbstractPlatform $platform): string { + if (!isset($column['length'])) { + $column['length'] = 255; + } + return $platform->getStringTypeDeclarationSQL($column); } diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/InstitutionRoleType.php b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/InstitutionRoleType.php index 2b634ddd6..fa5097dda 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/InstitutionRoleType.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/InstitutionRoleType.php @@ -33,6 +33,10 @@ class InstitutionRoleType extends Type public function getSQLDeclaration(array $column, AbstractPlatform $platform): string { + if (!isset($column['length'])) { + $column['length'] = 255; + } + return $platform->getStringTypeDeclarationSQL($column); } diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/InstitutionType.php b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/InstitutionType.php index 67760d252..d478b6d81 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/InstitutionType.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/InstitutionType.php @@ -33,6 +33,10 @@ class InstitutionType extends Type public function getSQLDeclaration(array $column, AbstractPlatform $platform): string { + if (!isset($column['length'])) { + $column['length'] = 255; + } + return $platform->getStringTypeDeclarationSQL($column); } diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/LocaleType.php b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/LocaleType.php index f895058bd..102c6d633 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/LocaleType.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/LocaleType.php @@ -36,6 +36,10 @@ class LocaleType extends Type public function getSQLDeclaration(array $column, AbstractPlatform $platform): string { + if (!isset($column['length'])) { + $column['length'] = 255; + } + return $platform->getStringTypeDeclarationSQL($column); } diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/NameIdType.php b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/NameIdType.php index 8a7d43ca5..ce336e722 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/NameIdType.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/NameIdType.php @@ -33,6 +33,10 @@ class NameIdType extends Type public function getSQLDeclaration(array $column, AbstractPlatform $platform): string { + if (!isset($column['length'])) { + $column['length'] = 255; + } + return $platform->getStringTypeDeclarationSQL($column); } diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/RaLocationNameType.php b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/RaLocationNameType.php index ece33068b..0eada5984 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/RaLocationNameType.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/RaLocationNameType.php @@ -33,7 +33,10 @@ class RaLocationNameType extends Type public function getSQLDeclaration(array $column, AbstractPlatform $platform): string { - return $platform->getStringTypeDeclarationSQL([]); + $clearColumn = []; + $clearColumn['length'] = 255; + + return $platform->getStringTypeDeclarationSQL($clearColumn); } public function convertToDatabaseValue($value, AbstractPlatform $platform): mixed diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/SecondFactorTypeType.php b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/SecondFactorTypeType.php index c16e06d43..44219eea7 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/SecondFactorTypeType.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Doctrine/Type/SecondFactorTypeType.php @@ -33,6 +33,10 @@ class SecondFactorTypeType extends Type public function getSQLDeclaration(array $column, AbstractPlatform $platform): string { + if (!isset($column['length'])) { + $column['length'] = 255; + } + return $platform->getStringTypeDeclarationSQL($column); } From 5889f2764356e164d2fa023aa58ecb3cfc7e42b0 Mon Sep 17 00:00:00 2001 From: Johan Kromhout Date: Mon, 1 Dec 2025 16:10:51 +0100 Subject: [PATCH 28/32] Fix deprecation: Doctrine safepoints Prior to this change, deprecation warnings about safepoints were thrown. This change enables safepoints for all connections. Safepoints are not supported by myisam tables or drivers like sqlite. https://github.com/doctrine/dbal/issues/6272 --- config/packages/doctrine.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/config/packages/doctrine.yaml b/config/packages/doctrine.yaml index 036d7bb04..b06a52151 100644 --- a/config/packages/doctrine.yaml +++ b/config/packages/doctrine.yaml @@ -12,6 +12,7 @@ doctrine: password: "%database_middleware_password%" server_version: "%database_server_version%" charset: utf8 + use_savepoints: true gateway: driver: "%database_driver%" host: "%database_host%" @@ -21,6 +22,7 @@ doctrine: password: "%database_gateway_password%" server_version: "%database_server_version%" charset: utf8 + use_savepoints: true deploy: driver: "%database_driver%" host: "%database_host%" @@ -30,6 +32,7 @@ doctrine: password: "%database_deploy_password%" server_version: "%database_server_version%" charset: utf8 + use_savepoints: true types: authority_role: class: Surfnet\StepupMiddleware\ApiBundle\Doctrine\Type\AuthorityRoleType From 1192eead1e33b7bcc4b7ddf6e895bf20c08765e4 Mon Sep 17 00:00:00 2001 From: Johan Kromhout Date: Mon, 1 Dec 2025 16:30:14 +0100 Subject: [PATCH 29/32] Fix deprecation: $request->get $request->get is deprecated. $request->query->get for URL parameters or $request->request->get for POST should be used instead. See https://symfony.com/blog/new-in-symfony-7-4-request-class-improvements Phpstan: Fix get parameter types Prior to this change, \Surfnet\StepupMiddleware\ApiBundle\Controller\RaCandidateController::search could receive `secondFactorTypes`, which could never be an array, yet the query expects an array. This change ensures the query parameters for this property are read sa an array read. --- ci/qa/phpstan-baseline.neon | 348 ------------------ config/packages/framework.yaml | 1 + config/reference.php | 14 +- .../Controller/AuditLogController.php | 9 +- .../Controller/IdentityController.php | 8 +- .../Controller/ProfileController.php | 2 +- .../Controller/RaCandidateController.php | 37 +- .../Controller/RaListingController.php | 51 +-- .../Controller/RaLocationController.php | 9 +- .../Controller/RaSecondFactorController.php | 26 +- .../Controller/RecoveryTokenController.php | 26 +- .../UnverifiedSecondFactorController.php | 14 +- .../VerifiedSecondFactorController.php | 29 +- .../VettedSecondFactorController.php | 11 +- 14 files changed, 149 insertions(+), 436 deletions(-) diff --git a/ci/qa/phpstan-baseline.neon b/ci/qa/phpstan-baseline.neon index 2d7acb5f1..7e8a7be31 100644 --- a/ci/qa/phpstan-baseline.neon +++ b/ci/qa/phpstan-baseline.neon @@ -2400,30 +2400,6 @@ parameters: count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Configuration/Service/InstitutionAuthorizationOptionMap.php - - - message: '#^Parameter \#1 \$value of class Surfnet\\Stepup\\Identity\\Value\\IdentityId constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/AuditLogController.php - - - - message: '#^Property Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Query\\AbstractQuery\:\:\$pageNumber \(int\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/AuditLogController.php - - - - message: '#^Property Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Query\\SecondFactorAuditLogQuery\:\:\$orderBy \(string\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/AuditLogController.php - - - - message: '#^Property Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Query\\SecondFactorAuditLogQuery\:\:\$orderDirection \(string\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/AuditLogController.php - - message: '#^Access to an undefined property Surfnet\\StepupMiddleware\\CommandHandlingBundle\\Identity\\Command\\CreateIdentityCommand\|Surfnet\\StepupMiddleware\\CommandHandlingBundle\\Identity\\Command\\UpdateIdentityCommand\:\:\$institution\.$#' identifier: property.notFound @@ -2436,150 +2412,12 @@ parameters: count: 2 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/CommandController.php - - - message: '#^Cannot cast mixed to int\.$#' - identifier: cast.int - count: 1 - path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/IdentityController.php - - - - message: '#^Property Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Query\\IdentityQuery\:\:\$commonName \(string\|null\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/IdentityController.php - - - - message: '#^Property Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Query\\IdentityQuery\:\:\$email \(string\|null\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/IdentityController.php - - - - message: '#^Property Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Query\\IdentityQuery\:\:\$nameId \(string\|null\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/IdentityController.php - - - - message: '#^Cannot cast mixed to int\.$#' - identifier: cast.int - count: 1 - path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaCandidateController.php - - - - message: '#^Parameter \#1 \$identityId of method Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Service\\RaCandidateService\:\:findOneByIdentityId\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaCandidateController.php - - - - message: '#^Parameter \#1 \$value of class Surfnet\\Stepup\\Identity\\Value\\IdentityId constructor expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaCandidateController.php - - message: '#^Parameter \#2 \.\.\.\$values of function sprintf expects bool\|float\|int\|string\|null, mixed given\.$#' identifier: argument.type count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaCandidateController.php - - - message: '#^Property Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Query\\RaCandidateQuery\:\:\$commonName \(string\|null\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaCandidateController.php - - - - message: '#^Property Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Query\\RaCandidateQuery\:\:\$email \(string\|null\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaCandidateController.php - - - - message: '#^Property Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Query\\RaCandidateQuery\:\:\$institution \(string\|Surfnet\\Stepup\\Identity\\Value\\Institution\|null\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaCandidateController.php - - - - message: '#^Property Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Query\\RaCandidateQuery\:\:\$raInstitution \(string\|Surfnet\\Stepup\\Identity\\Value\\Institution\|null\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaCandidateController.php - - - - message: '#^Property Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Query\\RaCandidateQuery\:\:\$secondFactorTypes \(array\\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaCandidateController.php - - - - message: '#^Cannot cast mixed to int\.$#' - identifier: cast.int - count: 1 - path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaListingController.php - - - - message: '#^Parameter \#1 \$institution of class Surfnet\\Stepup\\Identity\\Value\\Institution constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaListingController.php - - - - message: '#^Parameter \#1 \$value of class Surfnet\\Stepup\\Identity\\Value\\IdentityId constructor expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaListingController.php - - - - message: '#^Property Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Query\\RaListingQuery\:\:\$email \(string\|null\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaListingController.php - - - - message: '#^Property Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Query\\RaListingQuery\:\:\$institution \(string\|Surfnet\\Stepup\\Identity\\Value\\Institution\|null\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaListingController.php - - - - message: '#^Property Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Query\\RaListingQuery\:\:\$name \(string\|null\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaListingController.php - - - - message: '#^Property Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Query\\RaListingQuery\:\:\$orderBy \(string\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaListingController.php - - - - message: '#^Property Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Query\\RaListingQuery\:\:\$orderDirection \(string\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaListingController.php - - - - message: '#^Property Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Query\\RaListingQuery\:\:\$raInstitution \(string\|null\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaListingController.php - - - - message: '#^Property Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Query\\RaListingQuery\:\:\$role \(string\|null\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaListingController.php - - - - message: '#^Parameter \#1 \$raLocationId of class Surfnet\\Stepup\\Configuration\\Value\\RaLocationId constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaLocationController.php - - message: '#^Parameter \#1 \$value of function count expects array\|Countable, array\\|null given\.$#' identifier: argument.type @@ -2592,198 +2430,12 @@ parameters: count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaLocationController.php - - - message: '#^Property Surfnet\\StepupMiddleware\\ApiBundle\\Configuration\\Query\\RaLocationQuery\:\:\$orderBy \(string\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaLocationController.php - - - - message: '#^Property Surfnet\\StepupMiddleware\\ApiBundle\\Configuration\\Query\\RaLocationQuery\:\:\$orderDirection \(string\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaLocationController.php - - - - message: '#^Cannot cast mixed to int\.$#' - identifier: cast.int - count: 1 - path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaSecondFactorController.php - - - - message: '#^Parameter \#1 \$value of class Surfnet\\Stepup\\Identity\\Value\\IdentityId constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaSecondFactorController.php - - - - message: '#^Property Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Query\\RaSecondFactorQuery\:\:\$email \(string\|null\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaSecondFactorController.php - - - - message: '#^Property Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Query\\RaSecondFactorQuery\:\:\$institution \(string\|null\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaSecondFactorController.php - - - - message: '#^Property Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Query\\RaSecondFactorQuery\:\:\$name \(string\|null\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaSecondFactorController.php - - - - message: '#^Property Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Query\\RaSecondFactorQuery\:\:\$orderBy \(string\|null\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaSecondFactorController.php - - - - message: '#^Property Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Query\\RaSecondFactorQuery\:\:\$orderDirection \(string\|null\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaSecondFactorController.php - - - - message: '#^Property Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Query\\RaSecondFactorQuery\:\:\$secondFactorId \(string\|null\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaSecondFactorController.php - - - - message: '#^Property Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Query\\RaSecondFactorQuery\:\:\$status \(string\|null\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaSecondFactorController.php - - - - message: '#^Property Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Query\\RaSecondFactorQuery\:\:\$type \(string\|null\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaSecondFactorController.php - - message: '#^Cannot call method getRoles\(\) on Symfony\\Component\\Security\\Core\\User\\UserInterface\|null\.$#' identifier: method.nonObject count: 1 path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/RecoveryTokenController.php - - - message: '#^Cannot cast mixed to int\.$#' - identifier: cast.int - count: 1 - path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/RecoveryTokenController.php - - - - message: '#^Parameter \#1 \$value of class Surfnet\\Stepup\\Identity\\Value\\IdentityId constructor expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/RecoveryTokenController.php - - - - message: '#^Parameter \#2 \.\.\.\$values of function sprintf expects bool\|float\|int\|string\|null, mixed given\.$#' - identifier: argument.type - count: 1 - path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/RecoveryTokenController.php - - - - message: '#^Property Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Query\\RecoveryTokenQuery\:\:\$email \(string\|null\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/RecoveryTokenController.php - - - - message: '#^Property Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Query\\RecoveryTokenQuery\:\:\$institution \(string\|null\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/RecoveryTokenController.php - - - - message: '#^Property Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Query\\RecoveryTokenQuery\:\:\$name \(string\|null\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/RecoveryTokenController.php - - - - message: '#^Property Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Query\\RecoveryTokenQuery\:\:\$orderBy \(string\|null\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/RecoveryTokenController.php - - - - message: '#^Property Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Query\\RecoveryTokenQuery\:\:\$orderDirection \(string\|null\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/RecoveryTokenController.php - - - - message: '#^Property Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Query\\RecoveryTokenQuery\:\:\$status \(string\|null\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/RecoveryTokenController.php - - - - message: '#^Property Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Query\\RecoveryTokenQuery\:\:\$type \(string\|null\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/RecoveryTokenController.php - - - - message: '#^Cannot cast mixed to int\.$#' - identifier: cast.int - count: 1 - path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/UnverifiedSecondFactorController.php - - - - message: '#^Parameter \#1 \$value of class Surfnet\\Stepup\\Identity\\Value\\IdentityId constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/UnverifiedSecondFactorController.php - - - - message: '#^Property Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Query\\UnverifiedSecondFactorQuery\:\:\$verificationNonce \(string\|null\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/UnverifiedSecondFactorController.php - - - - message: '#^Cannot cast mixed to int\.$#' - identifier: cast.int - count: 2 - path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/VerifiedSecondFactorController.php - - - - message: '#^Parameter \#1 \$value of class Surfnet\\Stepup\\Identity\\Value\\IdentityId constructor expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/VerifiedSecondFactorController.php - - - - message: '#^Parameter \#1 \$value of class Surfnet\\Stepup\\Identity\\Value\\SecondFactorId constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/VerifiedSecondFactorController.php - - - - message: '#^Property Surfnet\\StepupMiddleware\\ApiBundle\\Identity\\Query\\VerifiedSecondFactorQuery\:\:\$registrationCode \(string\|null\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/VerifiedSecondFactorController.php - - - - message: '#^Cannot cast mixed to int\.$#' - identifier: cast.int - count: 1 - path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/VettedSecondFactorController.php - - - - message: '#^Parameter \#1 \$value of class Surfnet\\Stepup\\Identity\\Value\\IdentityId constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: ../../src/Surfnet/StepupMiddleware/ApiBundle/Controller/VettedSecondFactorController.php - - message: '#^Call to method scalarNode\(\) on an unknown class Symfony\\Component\\Config\\Definition\\Builder\\NodeBuilder\\.$#' identifier: class.notFound diff --git a/config/packages/framework.yaml b/config/packages/framework.yaml index d7ba5f7d8..2cf717b0a 100644 --- a/config/packages/framework.yaml +++ b/config/packages/framework.yaml @@ -28,6 +28,7 @@ when@smoketest: &testOverride test: true profiler: collect: false + collect_serializer_data: true php_errors: log: false # prevents user deprecated warnings session: diff --git a/config/reference.php b/config/reference.php index 8f25ce3a8..ec488bddd 100644 --- a/config/reference.php +++ b/config/reference.php @@ -128,7 +128,7 @@ * http_method_override?: bool, // Set true to enable support for the '_method' request parameter to determine the intended HTTP method on POST requests. // Default: false * allowed_http_method_override?: list|null, * trust_x_sendfile_type_header?: scalar|null, // Set true to enable support for xsendfile in binary file responses. // Default: "%env(bool:default::SYMFONY_TRUST_X_SENDFILE_TYPE_HEADER)%" - * ide?: scalar|null, // Default: "%env(default::SYMFONY_IDE)%" + * ide?: scalar|null, // Default: null * test?: bool, * default_locale?: scalar|null, // Default: "en" * set_locale_from_accept_language?: bool, // Whether to use the Accept-Language HTTP header to set the Request locale (only when the "_locale" request attribute is not passed). // Default: false @@ -285,7 +285,7 @@ * paths?: array, * excluded_patterns?: list, * exclude_dotfiles?: bool, // If true, any files starting with "." will be excluded from the asset mapper. // Default: true - * server?: bool, // If true, a "dev server" will return the assets from the public directory (true in "debug" mode only by default). // Default: true + * server?: bool, // If true, a "dev server" will return the assets from the public directory (true in "debug" mode only by default). // Default: false * public_prefix?: scalar|null, // The public path where the assets will be written to (and served from when "server" is true). // Default: "/assets/" * missing_import_mode?: "strict"|"warn"|"ignore", // Behavior if an asset cannot be found when imported from JavaScript or CSS files - e.g. "import './non-existent.js'". "strict" means an exception is thrown, "warn" means a warning is logged, "ignore" means the import is left as-is. // Default: "warn" * extensions?: array, @@ -405,7 +405,7 @@ * }, * php_errors?: array{ // PHP errors handling configuration * log?: mixed, // Use the application logger instead of the PHP logger for logging PHP errors. // Default: true - * throw?: bool, // Throw PHP errors as \ErrorException instances. // Default: true + * throw?: bool, // Throw PHP errors as \ErrorException instances. // Default: false * }, * exceptions?: arraydenyAccessUnlessGrantedOneOff(['ROLE_RA', 'ROLE_READ']); - $identityId = $request->get('identityId'); + $identityId = $request->query->get('identityId'); if (empty($identityId)) { throw new BadApiRequestException(['This API-call MUST include the identityId as get parameter']); } @@ -46,9 +45,9 @@ public function secondFactorAuditLog(Request $request, Institution $institution) $query = new SecondFactorAuditLogQuery(); $query->identityInstitution = $institution; $query->identityId = new IdentityId($identityId); - $query->orderBy = $request->get('orderBy', $query->orderBy); - $query->orderDirection = $request->get('orderDirection', $query->orderDirection); - $query->pageNumber = $request->get('p', 1); + $query->orderBy = $request->query->get('orderBy', $query->orderBy); + $query->orderDirection = $request->query->get('orderDirection', $query->orderDirection); + $query->pageNumber = $request->query->getInt('p', 1); $paginator = $this->auditLogService->searchSecondFactorAuditLog($query); diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Controller/IdentityController.php b/src/Surfnet/StepupMiddleware/ApiBundle/Controller/IdentityController.php index 8af7a4392..d0c7ff41c 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Controller/IdentityController.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Controller/IdentityController.php @@ -55,10 +55,10 @@ public function collection(Request $request, Institution $institution): JsonColl $query = new IdentityQuery(); $query->institution = $institution; - $query->nameId = $request->get('NameID'); - $query->commonName = $request->get('commonName'); - $query->email = $request->get('email'); - $query->pageNumber = (int)$request->get('p', 1); + $query->nameId = $request->query->get('NameID'); + $query->commonName = $request->query->get('commonName'); + $query->email = $request->query->get('email'); + $query->pageNumber = $request->query->getInt('p', 1); $paginator = $this->identityService->search($query); diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Controller/ProfileController.php b/src/Surfnet/StepupMiddleware/ApiBundle/Controller/ProfileController.php index e1d08e9c1..61aa3e469 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Controller/ProfileController.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Controller/ProfileController.php @@ -38,7 +38,7 @@ public function get(Request $request, string $identityId): JsonResponse $this->denyAccessUnlessGrantedOneOff(['ROLE_RA', 'ROLE_READ']); // Is the actor allowed to view the profile page? - $actorId = $request->get('actorId'); + $actorId = $request->query->get('actorId'); if ($identityId !== $actorId) { throw new AccessDeniedHttpException( "Identity and actor id should match. It is not yet allowed to view the profile of somebody else.", diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaCandidateController.php b/src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaCandidateController.php index df9fae983..04b72d49b 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaCandidateController.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaCandidateController.php @@ -27,6 +27,7 @@ use Surfnet\StepupMiddleware\ApiBundle\Response\JsonCollectionResponse; use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\HttpKernel\Exception\BadRequestHttpException; use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; use function sprintf; @@ -45,15 +46,27 @@ public function search(Request $request): JsonCollectionResponse { $this->denyAccessUnlessGrantedOneOff(['ROLE_RA', 'ROLE_READ']); - $actorId = new IdentityId($request->get('actorId')); + $actorIdString = $request->query->get('actorId'); + if (!is_string($actorIdString)) { + throw new BadRequestHttpException(sprintf('Invalid actorId "%s"', $actorIdString)); + } + $actorId = new IdentityId($actorIdString); + + $secondFactorTypes = $request->query->all('secondFactorTypes'); + foreach ($secondFactorTypes as $type) { + if (!is_string($type)) { + throw new BadRequestHttpException(sprintf('Invalid secondFactorType "%s", string expected.', $type)); + } + } + /** @var array $secondFactorTypes */ $query = new RaCandidateQuery(); - $query->institution = $request->get('institution'); - $query->commonName = $request->get('commonName'); - $query->email = $request->get('email'); - $query->secondFactorTypes = $request->get('secondFactorTypes'); - $query->raInstitution = $request->get('raInstitution'); - $query->pageNumber = (int)$request->get('p', 1); + $query->institution = $request->query->get('institution'); + $query->commonName = $request->query->get('commonName'); + $query->email = $request->query->get('email'); + $query->secondFactorTypes = $secondFactorTypes; + $query->raInstitution = $request->query->get('raInstitution'); + $query->pageNumber = $request->query->getInt('p', 1); $query->authorizationContext = $this->authorizationService->buildSelectRaaInstitutionAuthorizationContext( $actorId, @@ -69,13 +82,17 @@ public function search(Request $request): JsonCollectionResponse /** * @return JsonResponse */ - public function get(Request $request): JsonResponse + public function get(Request $request, string $identityId): JsonResponse { $this->denyAccessUnlessGrantedOneOff(['ROLE_RA', 'ROLE_READ']); - $actorId = new IdentityId($request->get('actorId')); + $actorIdString = $request->query->get('actorId'); + if (!is_string($actorIdString)) { + throw new BadRequestHttpException(sprintf('Invalid actorId "%s"', $actorIdString)); + } + + $actorId = new IdentityId($actorIdString); - $identityId = $request->get('identityId'); $authorizationContext = $this->authorizationService->buildInstitutionAuthorizationContext( $actorId, diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaListingController.php b/src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaListingController.php index 9228282b4..671b33fba 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaListingController.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaListingController.php @@ -22,13 +22,13 @@ use Surfnet\Stepup\Identity\Value\Institution; use Surfnet\Stepup\Identity\Value\RegistrationAuthorityRole; use Surfnet\StepupMiddleware\ApiBundle\Authorization\Service\AuthorizationContextService; -use Surfnet\StepupMiddleware\ApiBundle\Controller\AbstractController; use Surfnet\StepupMiddleware\ApiBundle\Identity\Entity\RaListing; use Surfnet\StepupMiddleware\ApiBundle\Identity\Query\RaListingQuery; use Surfnet\StepupMiddleware\ApiBundle\Identity\Service\RaListingService; use Surfnet\StepupMiddleware\ApiBundle\Response\JsonCollectionResponse; use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\HttpKernel\Exception\BadRequestHttpException; use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; class RaListingController extends AbstractController @@ -39,12 +39,17 @@ public function __construct( ) { } - public function get(Request $request, string $identityId): JsonResponse + public function get(Request $request, string $identityId, string $institution): JsonResponse { $this->denyAccessUnlessGrantedOneOff(['ROLE_RA', 'ROLE_READ']); - $actorId = new IdentityId($request->get('actorId')); - $institution = new Institution($request->get('institution')); + $actorIdString = $request->query->get('actorId'); + if (!is_string($actorIdString)) { + throw new BadRequestHttpException(sprintf('Invalid actorId "%s"', $actorIdString)); + } + $actorId = new IdentityId($actorIdString); + + $institutionObject = new Institution($institution); $authorizationContext = $this->authorizationService->buildInstitutionAuthorizationContext( $actorId, @@ -53,7 +58,7 @@ public function get(Request $request, string $identityId): JsonResponse $raListing = $this->raListingService->findByIdentityIdAndRaInstitutionWithContext( new IdentityId($identityId), - $institution, + $institutionObject, $authorizationContext, ); @@ -71,37 +76,41 @@ public function search(Request $request): JsonCollectionResponse { $this->denyAccessUnlessGrantedOneOff(['ROLE_RA', 'ROLE_READ']); - $actorId = new IdentityId($request->get('actorId')); + $actorIdString = $request->query->get('actorId'); + if (!is_string($actorIdString)) { + throw new BadRequestHttpException(sprintf('Invalid actorId "%s"', $actorIdString)); + } + $actorId = new IdentityId($actorIdString); $query = new RaListingQuery(); - if ($request->get('identityId')) { - $query->identityId = new IdentityId($request->get('identityId')); + if ($request->query->get('identityId')) { + $query->identityId = new IdentityId($request->query->get('identityId')); } - if ($request->get('institution')) { - $query->institution = $request->get('institution'); + if ($request->query->get('institution')) { + $query->institution = $request->query->get('institution'); } - if ($request->get('name')) { - $query->name = $request->get('name'); + if ($request->query->get('name')) { + $query->name = $request->query->get('name'); } - if ($request->get('email')) { - $query->email = $request->get('email'); + if ($request->query->get('email')) { + $query->email = $request->query->get('email'); } - if ($request->get('role')) { - $query->role = $request->get('role'); + if ($request->query->get('role')) { + $query->role = $request->query->get('role'); } - if ($request->get('raInstitution')) { - $query->raInstitution = $request->get('raInstitution'); + if ($request->query->get('raInstitution')) { + $query->raInstitution = $request->query->get('raInstitution'); } - $query->pageNumber = (int)$request->get('p', 1); - $query->orderBy = $request->get('orderBy'); - $query->orderDirection = $request->get('orderDirection'); + $query->pageNumber = $request->query->getInt('p', 1); + $query->orderBy = $request->query->getString('orderBy'); + $query->orderDirection = $request->query->getString('orderDirection'); $query->authorizationContext = $this->authorizationService->buildInstitutionAuthorizationContext( $actorId, RegistrationAuthorityRole::raa(), diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaLocationController.php b/src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaLocationController.php index 24cb6730c..32c1b1263 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaLocationController.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaLocationController.php @@ -40,8 +40,8 @@ public function search(Request $request, Institution $institution): JsonCollecti $query = new RaLocationQuery(); $query->institution = $institution; - $query->orderBy = $request->get('orderBy', $query->orderBy); - $query->orderDirection = $request->get('orderDirection', $query->orderDirection); + $query->orderBy = $request->query->get('orderBy', $query->orderBy); + $query->orderDirection = $request->query->get('orderDirection', $query->orderDirection); $raLocations = $this->raLocationService->search($query); $count = count($raLocations); @@ -49,12 +49,11 @@ public function search(Request $request, Institution $institution): JsonCollecti return new JsonCollectionResponse($count, 1, $count, $raLocations); } - public function get(Request $request): JsonResponse + public function get(string $raLocationId): JsonResponse { $this->denyAccessUnlessGrantedOneOff(['ROLE_RA', 'ROLE_SS', 'ROLE_READ']); - $raLocationId = new RaLocationId($request->get('raLocationId')); - $raLocation = $this->raLocationService->findByRaLocationId($raLocationId); + $raLocation = $this->raLocationService->findByRaLocationId(new RaLocationId($raLocationId)); return new JsonResponse($raLocation); } diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaSecondFactorController.php b/src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaSecondFactorController.php index a7f9cc1b3..c3b0305e9 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaSecondFactorController.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Controller/RaSecondFactorController.php @@ -27,6 +27,7 @@ use Surfnet\StepupMiddleware\ApiBundle\Response\JsonCollectionResponse; use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\HttpKernel\Exception\BadRequestHttpException; final class RaSecondFactorController extends AbstractController { @@ -65,18 +66,23 @@ public function export(Request $request): JsonResponse */ private function buildRaSecondFactorQuery(Request $request): RaSecondFactorQuery { - $actorId = new IdentityId($request->get('actorId')); + $actorIdString = $request->query->get('actorId'); + if (!is_string($actorIdString)) { + throw new BadRequestHttpException(sprintf('Invalid actorId "%s"', $actorIdString)); + } + + $actorId = new IdentityId($actorIdString); $query = new RaSecondFactorQuery(); - $query->pageNumber = (int)$request->get('p', 1); - $query->name = $request->get('name'); - $query->type = $request->get('type'); - $query->secondFactorId = $request->get('secondFactorId'); - $query->email = $request->get('email'); - $query->institution = $request->get('institution'); - $query->status = $request->get('status'); - $query->orderBy = $request->get('orderBy'); - $query->orderDirection = $request->get('orderDirection'); + $query->pageNumber = $request->query->getInt('p', 1); + $query->name = $request->query->get('name'); + $query->type = $request->query->get('type'); + $query->secondFactorId = $request->query->get('secondFactorId'); + $query->email = $request->query->get('email'); + $query->institution = $request->query->get('institution'); + $query->status = $request->query->get('status'); + $query->orderBy = $request->query->get('orderBy'); + $query->orderDirection = $request->query->get('orderDirection'); $query->authorizationContext = $this->authorizationService->buildInstitutionAuthorizationContext( $actorId, RegistrationAuthorityRole::ra(), diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Controller/RecoveryTokenController.php b/src/Surfnet/StepupMiddleware/ApiBundle/Controller/RecoveryTokenController.php index f198de1ed..95bd9d9c7 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Controller/RecoveryTokenController.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Controller/RecoveryTokenController.php @@ -23,18 +23,19 @@ use Surfnet\Stepup\Identity\Value\RecoveryTokenId; use Surfnet\Stepup\Identity\Value\RegistrationAuthorityRole; use Surfnet\StepupMiddleware\ApiBundle\Authorization\Service\AuthorizationContextService; -use Surfnet\StepupMiddleware\ApiBundle\Controller\AbstractController; use Surfnet\StepupMiddleware\ApiBundle\Exception\NotFoundException; use Surfnet\StepupMiddleware\ApiBundle\Identity\Query\RecoveryTokenQuery; use Surfnet\StepupMiddleware\ApiBundle\Identity\Service\RecoveryTokenService; use Surfnet\StepupMiddleware\ApiBundle\Response\JsonCollectionResponse; use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\HttpKernel\Exception\BadRequestHttpException; use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; /** * Exposes the Recovery Tokens projection through the * Middleware Identity (read) API + * @SuppressWarnings("PHPMD.CouplingBetweenObjects") */ class RecoveryTokenController extends AbstractController { @@ -65,21 +66,24 @@ public function collection(Request $request): JsonCollectionResponse sprintf('Received search request for recovery tokens with params: %s', $request->getQueryString()), ); $query = new RecoveryTokenQuery(); - $query->identityId = $request->get('identityId') ? new IdentityId($request->get('identityId')) : null; - $query->type = $request->get('type'); - $query->status = $request->get('status'); - $query->institution = $request->get('institution'); - $query->email = $request->get('email'); - $query->name = $request->get('name'); - $query->pageNumber = (int)$request->get('p', 1); - $query->orderBy = $request->get('orderBy'); - $query->orderDirection = $request->get('orderDirection'); + $query->identityId = $request->query->get('identityId') ? new IdentityId($request->query->get('identityId')) : null; + $query->type = $request->query->get('type'); + $query->status = $request->query->get('status'); + $query->institution = $request->query->get('institution'); + $query->email = $request->query->get('email'); + $query->name = $request->query->get('name'); + $query->pageNumber = $request->query->getInt('p', 1); + $query->orderBy = $request->query->get('orderBy'); + $query->orderDirection = $request->query->get('orderDirection'); $roles = $this->getUser()->getRoles(); // Only apply the authorization context on non selfservice requests if (!in_array('ROLE_SS', $roles)) { - $actorId = $request->get('actorId', $request->get('identityId')); + $actorId = $request->query->get('actorId', $request->query->get('identityId')); $this->logger->info(sprintf('Executing query on behalf of %s', $actorId)); + if (!is_string($actorId)) { + throw new BadRequestHttpException('Invalid actorId or identityId, string expected.'); + } $actorId = new IdentityId($actorId); $query->authorizationContext = $this->authorizationService->buildInstitutionAuthorizationContext( $actorId, diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Controller/UnverifiedSecondFactorController.php b/src/Surfnet/StepupMiddleware/ApiBundle/Controller/UnverifiedSecondFactorController.php index ae3460eba..c6a83a8c2 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Controller/UnverifiedSecondFactorController.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Controller/UnverifiedSecondFactorController.php @@ -25,6 +25,7 @@ use Surfnet\StepupMiddleware\ApiBundle\Identity\Query\UnverifiedSecondFactorQuery; use Surfnet\StepupMiddleware\ApiBundle\Identity\Service\SecondFactorService; use Surfnet\StepupMiddleware\ApiBundle\Response\JsonCollectionResponse; +use Symfony\Component\HttpFoundation\Exception\BadRequestException; use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; @@ -54,9 +55,16 @@ public function collection(Request $request): JsonCollectionResponse $this->denyAccessUnlessGrantedOneOff(['ROLE_RA', 'ROLE_SS', 'ROLE_READ']); $query = new UnverifiedSecondFactorQuery(); - $query->identityId = new IdentityId($request->get('identityId')); - $query->verificationNonce = $request->get('verificationNonce'); - $query->pageNumber = (int)$request->get('p', 1); + + $identityIdString = $request->query->get('identityId'); + if (!is_string($identityIdString)) { + throw new BadRequestException(sprintf('Invalid identityId "%s"', $identityIdString)); + } + + $query->identityId = new IdentityId($identityIdString); + + $query->verificationNonce = $request->query->get('verificationNonce'); + $query->pageNumber = $request->query->getInt('p', 1); $paginator = $this->secondFactorService->searchUnverifiedSecondFactors($query); diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Controller/VerifiedSecondFactorController.php b/src/Surfnet/StepupMiddleware/ApiBundle/Controller/VerifiedSecondFactorController.php index 86d6491fb..94734c02f 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Controller/VerifiedSecondFactorController.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Controller/VerifiedSecondFactorController.php @@ -30,6 +30,7 @@ use Surfnet\StepupMiddleware\ApiBundle\Identity\Query\VerifiedSecondFactorQuery; use Surfnet\StepupMiddleware\ApiBundle\Identity\Service\SecondFactorService; use Surfnet\StepupMiddleware\ApiBundle\Response\JsonCollectionResponse; +use Symfony\Component\HttpFoundation\Exception\BadRequestException; use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; @@ -63,20 +64,25 @@ public function collection(Request $request): JsonCollectionResponse { $this->denyAccessUnlessGrantedOneOff(['ROLE_RA', 'ROLE_READ']); - $actorId = new IdentityId($request->get('actorId')); + $actorIdString = $request->query->get('actorId'); + if (!is_string($actorIdString)) { + throw new BadRequestException(sprintf('Invalid actorId "%s"', $actorIdString)); + } + + $actorId = new IdentityId($actorIdString); $query = new VerifiedSecondFactorQuery(); - if ($request->get('identityId')) { - $query->identityId = new IdentityId($request->get('identityId')); + if ($request->query->get('identityId')) { + $query->identityId = new IdentityId($request->query->get('identityId')); } - if ($request->get('secondFactorId')) { - $query->secondFactorId = new SecondFactorId($request->get('secondFactorId')); + if ($request->query->get('secondFactorId')) { + $query->secondFactorId = new SecondFactorId($request->query->get('secondFactorId')); } - $query->registrationCode = $request->get('registrationCode'); - $query->pageNumber = (int)$request->get('p', 1); + $query->registrationCode = $request->query->get('registrationCode'); + $query->pageNumber = $request->query->getInt('p', 1); $query->authorizationContext = $this->institutionAuthorizationService->buildInstitutionAuthorizationContext( $actorId, RegistrationAuthorityRole::ra(), @@ -92,8 +98,13 @@ public function collectionOfIdentity(Request $request): JsonCollectionResponse $this->denyAccessUnlessGrantedOneOff(['ROLE_SS', 'ROLE_READ']); $query = new VerifiedSecondFactorOfIdentityQuery(); - $query->identityId = new IdentityId($request->get('identityId')); - $query->pageNumber = (int)$request->get('p', 1); + $identityIdString = $request->query->get('identityId'); + if (!is_string($identityIdString)) { + throw new BadRequestException(sprintf('Invalid identityId "%s"', $identityIdString)); + } + + $query->identityId = new IdentityId($identityIdString); + $query->pageNumber = $request->query->getInt('p', 1); $paginator = $this->secondFactorService->searchVerifiedSecondFactorsOfIdentity($query); diff --git a/src/Surfnet/StepupMiddleware/ApiBundle/Controller/VettedSecondFactorController.php b/src/Surfnet/StepupMiddleware/ApiBundle/Controller/VettedSecondFactorController.php index c904366da..4589316f5 100644 --- a/src/Surfnet/StepupMiddleware/ApiBundle/Controller/VettedSecondFactorController.php +++ b/src/Surfnet/StepupMiddleware/ApiBundle/Controller/VettedSecondFactorController.php @@ -25,6 +25,7 @@ use Surfnet\StepupMiddleware\ApiBundle\Identity\Query\VettedSecondFactorQuery; use Surfnet\StepupMiddleware\ApiBundle\Identity\Service\SecondFactorService; use Surfnet\StepupMiddleware\ApiBundle\Response\JsonCollectionResponse; +use Symfony\Component\HttpFoundation\Exception\BadRequestException; use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; @@ -54,8 +55,14 @@ public function collection(Request $request): JsonCollectionResponse $this->denyAccessUnlessGrantedOneOff(['ROLE_RA', 'ROLE_SS', 'ROLE_READ']); $query = new VettedSecondFactorQuery(); - $query->identityId = new IdentityId($request->get('identityId')); - $query->pageNumber = (int)$request->get('p', 1); + + $identityIdString = $request->query->get('identityId'); + if (!is_string($identityIdString)) { + throw new BadRequestException(sprintf('Invalid identityId "%s"', $identityIdString)); + } + + $query->identityId = new IdentityId($identityIdString); + $query->pageNumber = $request->query->getInt('p', 1); $paginator = $this->secondFactorService->searchVettedSecondFactors($query); From 3e2e1e95186467de8258eff8a32a39d8639baee9 Mon Sep 17 00:00:00 2001 From: Johan Kromhout Date: Tue, 2 Dec 2025 10:40:45 +0100 Subject: [PATCH 30/32] AllowDynamicProperties on RegisterSelfAssertedSecondFactorCommand and UpdateIdentityCommand Prior to this change, `Deprecated: Creation of dynamic property` was logged when running the behat tests in devconf. This can be caused when properties are set in old events, that are later removed from the class. We could check in the CommandValueResolver whether a field exists before setting it, but that carries more risk, in case the properties might be still read dynamically somewhere. --- .../Command/RegisterSelfAssertedSecondFactorCommand.php | 2 ++ .../Identity/Command/UpdateIdentityCommand.php | 2 ++ 2 files changed, 4 insertions(+) diff --git a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Identity/Command/RegisterSelfAssertedSecondFactorCommand.php b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Identity/Command/RegisterSelfAssertedSecondFactorCommand.php index 04afd31ce..0a6d14c6d 100644 --- a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Identity/Command/RegisterSelfAssertedSecondFactorCommand.php +++ b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Identity/Command/RegisterSelfAssertedSecondFactorCommand.php @@ -18,11 +18,13 @@ namespace Surfnet\StepupMiddleware\CommandHandlingBundle\Identity\Command; +use AllowDynamicProperties; use Surfnet\StepupMiddleware\CommandHandlingBundle\Command\AbstractCommand; use Surfnet\StepupMiddleware\CommandHandlingBundle\Command\SelfAsserted; use Surfnet\StepupMiddleware\CommandHandlingBundle\Command\SelfServiceExecutable; use Symfony\Component\Validator\Constraints as Assert; +#[AllowDynamicProperties] class RegisterSelfAssertedSecondFactorCommand extends AbstractCommand implements SelfServiceExecutable, SelfAsserted { /** diff --git a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Identity/Command/UpdateIdentityCommand.php b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Identity/Command/UpdateIdentityCommand.php index addd8293c..00ed1ec74 100644 --- a/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Identity/Command/UpdateIdentityCommand.php +++ b/src/Surfnet/StepupMiddleware/CommandHandlingBundle/Identity/Command/UpdateIdentityCommand.php @@ -18,10 +18,12 @@ namespace Surfnet\StepupMiddleware\CommandHandlingBundle\Identity\Command; +use AllowDynamicProperties; use Surfnet\StepupMiddleware\CommandHandlingBundle\Command\AbstractCommand; use Surfnet\StepupMiddleware\CommandHandlingBundle\Command\SelfServiceExecutable; use Symfony\Component\Validator\Constraints as Assert; +#[AllowDynamicProperties] class UpdateIdentityCommand extends AbstractCommand implements SelfServiceExecutable { /** From e10d090fe165e0c329165cf11217ebc4fafd87b6 Mon Sep 17 00:00:00 2001 From: Johan Kromhout Date: Tue, 2 Dec 2025 13:37:18 +0100 Subject: [PATCH 31/32] Add changelog --- CHANGELOG.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index f79a6caa1..b8f98af45 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,23 @@ # Changelog +# 7.0.0 - unreleased +**Notable Changes** +- Upgrade to Symfony 7.4 (from 6.4) +- Upgrade to PHPUnit 10 (from 9.x) +- Upgrade to PHPStan 2.0 (from 1.x) +- Migrate from annotations to attributes (PHP 8 attributes) + +**Important for System Administrators** +Ensure the `database_server_version` parameter contains the correct MariaDB version. e.g. `10.6.23-MariaDB` + + +**Improvements** +- Upgrade all Symfony components to 7.4 +- Upgrade Stepup-Bundle to 7.0 +- Modernize codebase with PHP 8+ features +- Fix various Symfony and Doctrine deprecations +- Improved code quality with updated tooling + # 6.0.2 - Repair deprovisioning API calls - Restore deprovisioned user on new login (returing users) From cab9488ec120aab32c003c568d9b5f716ebff31f Mon Sep 17 00:00:00 2001 From: Johan Kromhout Date: Tue, 2 Dec 2025 15:30:30 +0100 Subject: [PATCH 32/32] rework --- README.md | 2 +- ci/qa/phpunit-ci | 1 - .../Configuration/Value/AllowedSecondFactorListTest.php | 9 +-------- .../Console/Command/BootstrapGsspSecondFactorCommand.php | 3 +-- .../Console/Command/MigrateSecondFactorCommand.php | 3 +-- 5 files changed, 4 insertions(+), 14 deletions(-) delete mode 100755 ci/qa/phpunit-ci diff --git a/README.md b/README.md index 37314e529..df5a19098 100644 --- a/README.md +++ b/README.md @@ -32,7 +32,7 @@ Some of the configuration of the components is static (i.e. stored in parametere ## Development Notes ### Technical debt - * https://github.com/broadway/event-store-dbal is blocks upgrade to `doctrine/dbal:^4.0` + * https://github.com/broadway/event-store-dbal blocks upgrade to `doctrine/dbal:^4.0` ### Adding new events diff --git a/ci/qa/phpunit-ci b/ci/qa/phpunit-ci deleted file mode 100755 index 8b1378917..000000000 --- a/ci/qa/phpunit-ci +++ /dev/null @@ -1 +0,0 @@ - diff --git a/src/Surfnet/Stepup/Tests/Configuration/Value/AllowedSecondFactorListTest.php b/src/Surfnet/Stepup/Tests/Configuration/Value/AllowedSecondFactorListTest.php index 764c2416d..2f7a54cc0 100644 --- a/src/Surfnet/Stepup/Tests/Configuration/Value/AllowedSecondFactorListTest.php +++ b/src/Surfnet/Stepup/Tests/Configuration/Value/AllowedSecondFactorListTest.php @@ -102,14 +102,7 @@ public function an_allowed_second_factor_list_contains_the_given_second_factors( new SecondFactorType('yubikey'), ]; - $allowedSecondFactorList = AllowedSecondFactorList::ofTypes($secondFactorTypes); - - $builtList = []; - foreach ($allowedSecondFactorList as $item) { - $builtList[] = $item; - } - - foreach ($builtList as $index => $actualSecondFactorType) { + foreach (iterator_to_array(AllowedSecondFactorList::ofTypes($secondFactorTypes)) as $index => $actualSecondFactorType) { $this->assertTrue($secondFactorTypes[$index]->equals($actualSecondFactorType)); } } diff --git a/src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapGsspSecondFactorCommand.php b/src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapGsspSecondFactorCommand.php index 9357a9f25..66fde3b72 100644 --- a/src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapGsspSecondFactorCommand.php +++ b/src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/BootstrapGsspSecondFactorCommand.php @@ -31,8 +31,7 @@ #[AsCommand( name: 'middleware:bootstrap:gssp', description: 'Creates a Generic SAML Second Factor (GSSF) second factor for a specified user' -) -] +)] final class BootstrapGsspSecondFactorCommand { public function __construct(private readonly BootstrapCommandService $bootstrapService, private readonly TransactionHelper $transactionHelper) diff --git a/src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/MigrateSecondFactorCommand.php b/src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/MigrateSecondFactorCommand.php index 80c5b97ee..f1768c0d3 100644 --- a/src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/MigrateSecondFactorCommand.php +++ b/src/Surfnet/StepupMiddleware/MiddlewareBundle/Console/Command/MigrateSecondFactorCommand.php @@ -33,8 +33,7 @@ #[AsCommand( name: 'middleware:migrate:vetted-tokens', description: 'Migrates the tokens of an identity to a new institution while preserving the old tokens' -) -] +)] final class MigrateSecondFactorCommand { public function __construct(private readonly BootstrapCommandService $bootstrapService, private readonly TransactionHelper $transactionHelper)