Skip to content

Conversation

@johanib
Copy link
Contributor

@johanib johanib commented Oct 8, 2025

pablothedude and others added 5 commits October 8, 2025 14:01
Also adjust the CI/CD config to run GH actions.
This will effectively do the following changes:

- Fix conflicts after merge commits removal
- Update very outdated packages in preparation for symfony 5.4
- Adding documentation for symfony 4.4
- Updating symfony 4.4 configuration and fix deprecation
- Fix behat browser tab tests
- Fix cypress tests - you need to focus the element
- Update tests, gitignore and controller configuration
- Add copyright for docheader check
- Update functional testing configuration for symfony 4.4
- Codesniffer long lines updates
- Update docker configuration for symfony 4.4
- Update functional testing configuration for symfony 4.4
- Change deprecation level
- Chown tests dir
- Fix xdebug mode
- Fix unit tests - The way features are loaded have been changed since the symfony 4.4 upgrade
- Fix Ci/CD pipeline
- Make sure that all types of tests will run
- Make behat compatible with symfony 4
- Replace app/console with bin/console
- Additional update composer.lock with merge and remove legacy config from Kernel
- Update migrations to be compatible with symfony 4.4
- Update service configuration to be compatible with symfony 4.4
- Update routing from config to annotation based
- Upgrade to symfony 4
- App folder removed
- Config folder added
- AppKernel replaced with Kernel
- Implement Rector recommendations
- Fix caching and check cache permissions
- Fix caching
- Cleanup codebase
- Fix deprecations
- Fix Twig deprecations
- Enable strict mode
- Use Chrome for all browser tests (with Devconf)
- Move Exceptions to comply with PSR-0 autoloading
- Fix behat tests
- Fix tests
- Add upgrade doc
Depr: Use AbstractController instead of Controller

Upgrade behat/mink-goutte-driver and friends-of-behat/mink-extension

Prior to this change, SF could not be upgraded to SF54, because behat/mink-goutte-driver would hold it back.

In order to upgrade that package, friends-of-behat/mink-extension also needs an update, because otherwise the fabpot/goutte driver could not be instantiated.

In order to make this possible, composer needs to think it runs on php 7.4, as it is listed as a requirement in one of those packages.

Upgrade SF 44 > 54, fixing errors, using fake PHP 7.4.

fixup: Prevent fetching from kernel before its booted

Fix behat tests - prevent state from leaking into other scenario's, causing failed tests when tests are executed all vs seperate.

Add symfony.lock to prevent recipes being added by composer all the time.
Prior to this change, EB would not run on PHP 8.2.
This change does the minimal needed changes to make EB run on PHP 8.2.

Mainly, work around the stricter serialization / deserialization of
objecs introduced in PHP 8.1.

---

PHP55: use class constant

RandomFunctionRector
ThisCallOnStaticMethodToStaticCallRector

PHP71 RemoveExtraParametersRector

PHP72 StringsAssertNakedRector

PHP73 SensitiveHereNowDocRector

GetDebugTypeRector
OptionalParametersAfterRequiredRector

PHP82 - Fix unset warnings without bcbreak.

Upgrade pimple to php8 compatible version

composer update openconext/saml-value-object friends-of-behat/symfony-extension ingenerator/behat-tableassert doctrine/doctrine-migrations-bundle -W -m

PHP82 in pipeline

Fix: Error: Call to a member function authenticate() on null

Prior to this change, the authorization mechanism could try to trigger a re-authentication. (because it did not trust the token?)

This caused the Connections, Consent, Deprovision and AttributeReleasePolicy controller tests fail.

This change prevents re-authentication attempts in the authorization flow by performing them upfront.

Fix Loopguard serialization issue

Prior to this change, some behat tests, like `AcsTinkering.feature` would fail when redirecting to the error page.
This was caused by the FunctionalTestingAuthenticationLoopGuard being serialized into the session.
This loopguard only needs the three int values in its state. But the Func testing variant had the datastore, including flysystem, serialized into the session. This caused gateway timeouts, causing the tests to fail.

This change removes the storage from the scope of the object, and injects is when needed from the context.

Do not serialize certificate resources in the SP or IDP to the session.

In the consent flow, the IDP/SP is serialized to the session via the 'role' property.
This change enables serialization of these entities in PHP 8.1, where the serialization of a resource is no longer possible.
Technically, it was never possible, as resources cannot be serialized.

Enable serialization of Request / Response to session

Prior to this change, PHP 8.1 would not allow the AuthnRequest or the Response to be serialized to the session, because it contains a DomDocument.
This change converts the underlying message to XML on serialization, and restores the original message from XML on deserialisation to the session.

PHP81: Make child classes conform to parent signature

Update monolog/guzzle and make depencency on robrichards/xmlseclibs explicit.

Resolve multiple Doctrine Entity Managers
Prior to this change, the tests would fail.
There were mulitple services that were essentially the same entity manager. But because they were separate, calling `persist` on a service, one instance of the EM would try to insert a new instance, as it was untracked in that instance of the EM.

This change injects the same EM in all services, eliminating multiple state issues.
However, I have no idea why the extra `persist` calls are needed. But many tests fail if they are absent.
(Also, what was the reason for the compat EM in the first place?)

Package updates & fix deprecations

Package updates & prepare for doctrine upgrade by changing json_array > json

Make phpunit trigger & show deprecations

Fix deprecations triggered during phpunit tests.

Move packages back to no-dev requirements

Packages were moved by accident to --dev

Upgrade `openconext/saml-value-object` to the new 3.0 release for php 8.2 support via upgraded `beberlei/assert`.

On production, the column type is `array`, not `json_array`. This is not needed.

Restore accidentaly removed var/cache/.gitkeep

Instead of using reflection, return a static array of properties to serialize.
Because it might be a slight performance improvement.

Add routes/prod to ensure bootstrapping succeeds for --env=prod

Prevent error on accessing unset logo

Preserve RelayState through serialization
Prior to this change, the RelayState would get lost during serialization, this caused the IdP to not accept the response.
This change ensures the RelayState gets preserved during the login flow.
Prior to this change, the codebase was compatible with php 8.2 but still
triggerd lots of output, and some packages were still very old.
This meant new CVE fixes might not be installable.
Also the goutte drive for the behat tests was abandoned.

This change is a major step forward to make the codebase ready for the
Symfony 6.4 upgrade.

Notable changes:
 - Upgraded Doctrine ORM and DBAL
 - Removed queries using PDO directly
 - Replaced the abandoned swiftmailer by `symfony/mailer`
 - Upgraded phpunit
 - Replace annotations with attributes on most places
 - Remove the abandoned goutte driver in favor of `mint-browserkit-driver`
 - Copy the deprecated `spaceless` twig filter into EB for backward compatability

See #1799
See #1844
@johanib johanib linked an issue Oct 8, 2025 that may be closed by this pull request
5 tasks
@johanib johanib requested a review from baszoetekouw October 8, 2025 12:27
@baszoetekouw baszoetekouw self-assigned this Oct 18, 2025
@baszoetekouw baszoetekouw merged commit 99fa3dd into main Oct 18, 2025
4 checks passed
@baszoetekouw baszoetekouw modified the milestone: 7.0.0 Oct 18, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Symfony/php upgrade voor Engineblock

4 participants