// Use this to create a new user and login with that user // Simply call this with: // node --require esbuild-register ./cypress/support/create-user.ts username@example.com // and it will log out the cookie value you can use to interact with the server // as that new user. import { parse } from "cookie"; import { installGlobals } from "@remix-run/node/globals"; import { createUserSession } from "~/session.server"; import { createUser } from "~/models/user.server"; installGlobals(); async function createAndLogin(email: string) { if (!email) { throw new Error("email required for login"); } if (!email.endsWith("@example.com")) { throw new Error("All test emails must end in @example.com"); } const user = await createUser(email, "myreallystrongpassword"); const response = await createUserSession({ request: new Request(""), userId: user.id, remember: false, redirectTo: "/", }); const cookieValue = response.headers.get("Set-Cookie"); if (!cookieValue) { throw new Error("Cookie missing from createUserSession response"); } const parsedCookie = parse(cookieValue); // we log it like this so our cypress command can parse it out and set it as // the cookie value. console.log( ` ${parsedCookie.__session} `.trim() ); } createAndLogin(process.argv[2]);