[10.x] Fix assertRedirectToRoute
when route uri is empty
#48023
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Overview
There is a small issue with
assertRedirectToRoute
adding a trailing slash to the actual redirect url being tested, when theLocation
header has an empty path, and an existing query string.Example
Having a route that returns a redirect response, to a route with an empty uri (and at least one parameter):
When we try to test the redirection:
The actual redirection would be
http://localhost?foo=bar
, and this is what we expect, but the actual url generated byassertRedirectToRoute
ishttp://localhost/?foo=bar
and the test fails.Problem
It happens due to the
$request->fullUrl()
adding the trailing slash when bothbaseUrl
andrequestUri
are empty.Solution
I changed the:
to:
which seems to solve the issue and also matches the
assertRedirect
implementation.