fix: preserve query params in returnTo during login redirect (#12567)

Co-authored-by: openhands <openhands@all-hands.dev>
This commit is contained in:
Rohit Malhotra
2026-01-22 21:31:42 -08:00
committed by GitHub
parent d5ee799670
commit d60dd38d78
2 changed files with 52 additions and 4 deletions

View File

@@ -48,6 +48,7 @@ function LoginStub() {
searchParams.get("email_verification_required") === "true";
const emailVerified = searchParams.get("email_verified") === "true";
const emailVerificationText = "AUTH$PLEASE_CHECK_EMAIL_TO_VERIFY";
const returnTo = searchParams.get("returnTo");
return (
<div data-testid="login-page">
@@ -58,6 +59,7 @@ function LoginStub() {
{emailVerificationText}
</div>
)}
{returnTo && <div data-testid="return-to-param">{returnTo}</div>}
</div>
</div>
);
@@ -100,6 +102,27 @@ const RouterStubWithLogin = createRoutesStub([
},
]);
const RouterStubWithDeviceVerify = createRoutesStub([
{
Component: MainApp,
path: "/",
children: [
{
Component: () => <div data-testid="outlet-content" />,
path: "/",
},
{
Component: () => <div data-testid="device-verify-page" />,
path: "/oauth/device/verify",
},
],
},
{
Component: LoginStub,
path: "/login",
},
]);
const renderMainApp = (initialEntries: string[] = ["/"]) =>
render(<RouterStub initialEntries={initialEntries} />, {
wrapper: ({ children }) => (
@@ -311,5 +334,23 @@ describe("MainApp", () => {
{ timeout: 2000 },
);
});
it("should preserve query parameters in returnTo when redirecting to login", async () => {
renderWithLoginStub(RouterStubWithDeviceVerify, [
"/oauth/device/verify?user_code=F9XN6BKU",
]);
await waitFor(
() => {
expect(screen.getByTestId("login-page")).toBeInTheDocument();
const returnToElement = screen.getByTestId("return-to-param");
expect(returnToElement).toBeInTheDocument();
expect(returnToElement.textContent).toBe(
"/oauth/device/verify?user_code=F9XN6BKU",
);
},
{ timeout: 2000 },
);
});
});
});