Skip to content

Commit a901fc9

Browse files
authored
fix(clerk-js): Pass unsafeMetadata with sign up ticket flows (#7657)
1 parent b7a4e1e commit a901fc9

File tree

3 files changed

+49
-3
lines changed

3 files changed

+49
-3
lines changed

.changeset/bumpy-clowns-nail.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@clerk/clerk-js': patch
3+
---
4+
5+
fix: Ensure unsafeMetadata is passed with Sign Up Ticket flow

packages/clerk-js/src/ui/components/SignUp/SignUpStart.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ function SignUpStartInternal(): JSX.Element {
146146
status.setLoading();
147147
card.setLoading();
148148
signUp
149-
.create({ strategy: 'ticket', ticket: formState.ticket.value })
149+
.create({ strategy: 'ticket', ticket: formState.ticket.value, unsafeMetadata })
150150
.then(signUp => {
151151
formState.emailAddress.setValue(signUp.emailAddress || '');
152152
// In case we are in a Ticket flow and the sign up is not complete yet, update the state

packages/clerk-js/src/ui/components/SignUp/__tests__/SignUpStart.test.tsx

Lines changed: 43 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -379,7 +379,11 @@ describe('SignUpStart', () => {
379379
);
380380

381381
await waitFor(() =>
382-
expect(fixtures.signUp.create).toHaveBeenCalledWith({ strategy: 'ticket', ticket: 'test_ticket' }),
382+
expect(fixtures.signUp.create).toHaveBeenCalledWith({
383+
strategy: 'ticket',
384+
ticket: 'test_ticket',
385+
unsafeMetadata: undefined,
386+
}),
383387
);
384388

385389
//don't remove the query param quite yet
@@ -390,6 +394,39 @@ describe('SignUpStart', () => {
390394
);
391395
});
392396

397+
it('passes unsafeMetadata to signUp.create when ticket is detected', async () => {
398+
const { wrapper, fixtures, props } = await createFixtures(f => {
399+
f.withEmailAddress();
400+
f.withPassword();
401+
});
402+
fixtures.signUp.create.mockResolvedValueOnce({} as SignUpResource);
403+
props.setProps({ unsafeMetadata: { foo: 'bar', nested: { value: 123 } } });
404+
405+
Object.defineProperty(window, 'location', {
406+
writable: true,
407+
value: { href: 'http://localhost/sign-up?__clerk_ticket=test_ticket' },
408+
});
409+
Object.defineProperty(window, 'history', {
410+
writable: true,
411+
value: { replaceState: vi.fn() },
412+
});
413+
414+
render(
415+
<CardStateProvider>
416+
<SignUpStart />
417+
</CardStateProvider>,
418+
{ wrapper },
419+
);
420+
421+
await waitFor(() =>
422+
expect(fixtures.signUp.create).toHaveBeenCalledWith({
423+
strategy: 'ticket',
424+
ticket: 'test_ticket',
425+
unsafeMetadata: { foo: 'bar', nested: { value: 123 } },
426+
}),
427+
);
428+
});
429+
393430
it('removes the ticket from the url when completing the sign up', async () => {
394431
const { wrapper, fixtures } = await createFixtures(f => {
395432
f.withEmailAddress();
@@ -414,7 +451,11 @@ describe('SignUpStart', () => {
414451
);
415452

416453
await waitFor(() =>
417-
expect(fixtures.signUp.create).toHaveBeenCalledWith({ strategy: 'ticket', ticket: 'test_ticket' }),
454+
expect(fixtures.signUp.create).toHaveBeenCalledWith({
455+
strategy: 'ticket',
456+
ticket: 'test_ticket',
457+
unsafeMetadata: undefined,
458+
}),
418459
);
419460

420461
expect(window.history.replaceState).toHaveBeenCalledWith(

0 commit comments

Comments
 (0)