mirror of
https://github.com/better-auth/better-auth.git
synced 2026-05-23 23:52:05 -05:00
fix(stripe): pass metadata to subscription object in upgrade method (#7090)
This commit is contained in:
@@ -532,15 +532,23 @@ export const upgradeSubscription = (options: StripeOptions) => {
|
||||
],
|
||||
subscription_data: {
|
||||
...freeTrial,
|
||||
metadata: {
|
||||
...ctx.body.metadata,
|
||||
...params?.params?.subscription_data?.metadata,
|
||||
userId: user.id,
|
||||
subscriptionId: subscription.id,
|
||||
referenceId,
|
||||
},
|
||||
},
|
||||
mode: "subscription",
|
||||
client_reference_id: referenceId,
|
||||
...params?.params,
|
||||
metadata: {
|
||||
...ctx.body.metadata,
|
||||
...params?.params?.metadata,
|
||||
userId: user.id,
|
||||
subscriptionId: subscription.id,
|
||||
referenceId,
|
||||
...params?.params?.metadata,
|
||||
},
|
||||
},
|
||||
params?.options,
|
||||
|
||||
@@ -329,6 +329,71 @@ describe("stripe", () => {
|
||||
expect(mockStripe.subscriptions.update).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it("should pass metadata to subscription when upgrading", async () => {
|
||||
const { client, sessionSetter } = await getTestInstance(
|
||||
{
|
||||
database: memory,
|
||||
plugins: [stripe(stripeOptions)],
|
||||
},
|
||||
{
|
||||
disableTestUser: true,
|
||||
clientOptions: {
|
||||
plugins: [
|
||||
stripeClient({
|
||||
subscription: true,
|
||||
}),
|
||||
],
|
||||
},
|
||||
},
|
||||
);
|
||||
|
||||
await client.signUp.email(
|
||||
{
|
||||
...testUser,
|
||||
email: "metadata-test@email.com",
|
||||
},
|
||||
{
|
||||
throw: true,
|
||||
},
|
||||
);
|
||||
|
||||
const headers = new Headers();
|
||||
await client.signIn.email(
|
||||
{
|
||||
...testUser,
|
||||
email: "metadata-test@email.com",
|
||||
},
|
||||
{
|
||||
throw: true,
|
||||
onSuccess: sessionSetter(headers),
|
||||
},
|
||||
);
|
||||
|
||||
const customMetadata = {
|
||||
customField: "customValue",
|
||||
organizationId: "org_123",
|
||||
projectId: "proj_456",
|
||||
};
|
||||
|
||||
await client.subscription.upgrade({
|
||||
plan: "starter",
|
||||
metadata: customMetadata,
|
||||
fetchOptions: {
|
||||
headers,
|
||||
},
|
||||
});
|
||||
|
||||
expect(mockStripe.checkout.sessions.create).toHaveBeenCalledWith(
|
||||
expect.objectContaining({
|
||||
subscription_data: expect.objectContaining({
|
||||
metadata: expect.objectContaining(customMetadata),
|
||||
}),
|
||||
metadata: expect.objectContaining(customMetadata),
|
||||
}),
|
||||
undefined,
|
||||
);
|
||||
});
|
||||
|
||||
it("should list active subscriptions", async () => {
|
||||
const { client, auth, sessionSetter } = await getTestInstance(
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user