UNPKG

@better-auth-kit/tests

Version:

A collection of utilities to help you test your Better-Auth plugins.

4 lines (2 loc) 3.31 kB
import{createAuthClient as B}from"better-auth/react";import{BetterAuthError as A}from"better-auth";var h=Object.create(null),l=(t)=>globalThis.process?.env||globalThis.Deno?.env.toObject()||globalThis.__env__||(t?h:globalThis),i=new Proxy(h,{get(t,e){return l()[e]??h[e]},has(t,e){let s=l();return e in s||e in h},set(t,e,s){let d=l(!0);return d[e]=s,!0},deleteProperty(t,e){if(!e)return!1;let s=l(!0);return delete s[e],!0},ownKeys(){let t=l(!0);return Object.keys(t)}});function L(t){return t?t!=="false":!1}var P=typeof process!=="undefined"&&process.env&&"development"||"";var H=P==="test"||L(i.TEST);function x(t){try{return new URL(t).pathname!=="/"}catch(e){throw new A(`Invalid base URL: ${t}. Please provide a valid base URL.`)}}function w(t,e="/api/auth"){if(x(t))return t;return e=e.startsWith("/")?e:`/${e}`,`${t.replace(/\/+$/,"")}${e}`}function b(t,e){if(t)return w(t,e);let s=i.BETTER_AUTH_URL||i.NEXT_PUBLIC_BETTER_AUTH_URL||i.PUBLIC_BETTER_AUTH_URL||i.NUXT_PUBLIC_BETTER_AUTH_URL||i.NUXT_PUBLIC_AUTH_URL||(i.BASE_URL!=="/"?i.BASE_URL:void 0);if(s)return w(s,e);if(typeof window!=="undefined"&&window.location)return w(window.location.origin,e);return}import{getMigrations as I,getAdapter as _}from"better-auth/db";import{parseSetCookieHeader as R,setCookieToHeader as E}from"better-auth/cookies";async function j(t,e){let s=t,d=s.options,U={email:"test@test.com",password:"test123456",name:"test user",...e?.testUser};if(e?.shouldRunMigrations){let{runMigrations:r}=await I({...s.options,database:d.database});await r()}async function y(){if(e?.disableTestUser)throw new Error("Test user is disabled");let r=new Headers,a=(n,c)=>{let g=r.get("cookie");r.set("cookie",`${g||""}; ${n}=${c}`)},{data:o,error:u}=await f.signIn.email({email:U.email,password:U.password,fetchOptions:{onSuccess(n){let c=n.response.headers.get("set-cookie"),p=R(c||"").get("better-auth.session_token")?.value;r.set("cookie",`better-auth.session_token=${p}`)}}});return{session:o.session,user:o.user,headers:r,setCookie:a}}async function k(r,a){let o=new Headers,{data:u}=await f.signIn.email({email:r,password:a,fetchOptions:{onSuccess(n){let c=n.response.headers.get("set-cookie"),p=R(c||"").get("better-auth.session_token")?.value;o.set("cookie",`better-auth.session_token=${p}`)}}});return{res:u,headers:o}}let T=async(r,a)=>{let o=new Request(r.toString(),a);return s.handler(o)};function m(r){return(a)=>{let o=a.response.headers.get("set-cookie");if(o){let n=R(o||"").get("better-auth.session_token")?.value;r.set("cookie",`better-auth.session_token=${n}`)}}}let f=B({...e?.clientOptions,baseURL:b(d.baseURL||"http://localhost:"+(e?.port||3000),d.basePath||"/api/auth"),fetchOptions:{customFetchImpl:T}});async function C(r=["session","account","verification","user"]){let o=(await s.$context).adapter;for(let u of r){let n=await o.findMany({model:u,limit:1000});for(let c of n)await o.delete({model:u,where:[{field:"id",value:c.id}]})}console.log("Database successfully reset.")}return{client:f,testUser:U,signInWithTestUser:y,signInWithUser:k,cookieSetter:E,customFetchImpl:T,sessionSetter:m,db:await _(s.options),resetDatabase:C}}async function z(t){try{return{data:await t,error:null}}catch(e){return{data:null,error:e}}}export{z as tryCatch,j as getTestInstance}; //# debugId=B51A4E7FB54FB27464756E2164756E21