MCPcopy Create free account
hub / github.com/UsefulSoftwareCo/executor / createInvitedIdentity

Function createInvitedIdentity

e2e/targets/selfhost.ts:107–149  ·  view source on GitHub ↗
(
  baseUrl: string,
  admin: Identity,
  options?: { readonly role?: "admin" | "member"; readonly emailPrefix?: string },
)

Source from the content-addressed store, hash-verified

105// invited email signup → Better Auth session. What multi-user scenarios use
106// until per-test invite-signup isolation lands in newIdentity itself.
107export const createInvitedIdentity = async (
108 baseUrl: string,
109 admin: Identity,
110 options?: { readonly role?: "admin" | "member"; readonly emailPrefix?: string },
111): Promise<Identity> => {
112 const cookie = admin.headers?.cookie;
113 if (typeof cookie !== "string") {
114 throw new Error("createInvitedIdentity: the admin identity has no Better Auth session cookie");
115 }
116 const origin = new URL(baseUrl).origin;
117
118 const invite = await fetch(new URL("/api/admin/invites", baseUrl), {
119 method: "POST",
120 headers: { "content-type": "application/json", cookie, origin },
121 body: JSON.stringify({ role: options?.role ?? "member" }),
122 });
123 if (invite.status !== 200) {
124 throw new Error(`createInvitedIdentity: invite create failed (${await invite.text()})`);
125 }
126 const inviteBody = (await invite.json()) as { readonly code?: string };
127 if (typeof inviteBody.code !== "string") {
128 throw new Error("createInvitedIdentity: invite response carried no redeemable code");
129 }
130
131 const email = `${options?.emailPrefix ?? "invited-member"}-${randomBytes(5).toString("hex")}@e2e.test`;
132 const password = "invited-member-password-123";
133 const signup = await fetch(new URL("/api/auth/sign-up/email", baseUrl), {
134 method: "POST",
135 headers: { "content-type": "application/json", origin },
136 body: JSON.stringify({ email, password, name: email, inviteCode: inviteBody.code }),
137 });
138 if (signup.status !== 200) {
139 throw new Error(`createInvitedIdentity: invited signup failed (${await signup.text()})`);
140 }
141
142 const session = await signInSession(baseUrl, { email, password });
143 return {
144 label: email,
145 credentials: { email, password },
146 headers: { cookie: session.cookieHeader },
147 cookies: session.cookies,
148 };
149};
150
151export const selfhostTarget = (): Target => ({
152 name: "selfhost",

Calls 5

signInSessionFunction · 0.85
toStringMethod · 0.80
textMethod · 0.65
jsonMethod · 0.65
fetchFunction · 0.50

Tested by

no test coverage detected