Improve (even more) the use of multiple handler in portal unit tests
This MR improves !438 (merged) even more by moving all the multi-handler logic into the "register" function
No more "switch", now, the only times you need to explicitely switch handlers is when you call a class handler method (checkConf) from unit tests directly. This can be done with the new withHandler wrapper:
withHandler( 'op', sub { $op->p->HANDLER->checkConf(1) } );
I have removed all switch($xx)
statements from the test suite, from now on, they are automatically performed when invoking the _get or _post method on client objects (see the wrapper definition in register
)
This new implementation also supports "stacking" handlers, which can happen when a portal with handler "rp" calls another portal with handler "op". This means that complex test such as t/35-REST-config-backend.t
which perform HTTP requests during instanciation also work.
As a bonus, I added a Logger implementation that displays the handler stack nicely:
DEBUG=1 prove t/32-Auth-and-issuer-OIDC-authorization_code.t
# Request on RP is now clearly indicated:
[rp] [info] New request Lemonldap::NG::Portal::Main GET /
# Request on OP:
[op] [info] New request Lemonldap::NG::Portal::Main GET /oauth2/authorize?response_type=code&state=1706044640_37651&nonce=0yP2fr80AqBknj0-jOpoxg&redirect_uri=http%3A%2F%2Fauth.rp.com%2F%3Fopenidconnectcallback%3D1&client_id=rpid&scope=openid+profile+email&my_param=my+value&max_age=30&display=&acr_values=loa-32+customacr-1
# Even RP to OP requests are properly marked:
[rp->op] [info] New request Lemonldap::NG::Portal::Main POST /oauth2/token
This will make troubleshooting unit tests a LOT, LOT, LOT easier.
And hopefully, writing them, too