Ctrl K
ComunidadGuías…

scripts/sie-import/browser-fixture.mjs

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
import { readFileSync, writeFileSync, existsSync } from 'node:fs'
import { randomBytes, randomUUID } from 'node:crypto'
import { createClient } from '@supabase/supabase-js'
import { createServerClient } from '@supabase/ssr'
import dotenv from 'dotenv'

const env=dotenv.parse(readFileSync('.env.sie-runtime.local'))
if(env.NEXT_PUBLIC_SUPABASE_URL!=='https://metjnjrhvujscngnpzdv.supabase.co') throw new Error('Staging only')
const admin=createClient(env.NEXT_PUBLIC_SUPABASE_URL,env.SUPABASE_SERVICE_ROLE_KEY,{auth:{persistSession:false}})
let fixture
if(existsSync('.env.sie-ui.json')) fixture=JSON.parse(readFileSync('.env.sie-ui.json','utf8'))
else {
  const report=JSON.parse(readFileSync('.env.sie-acceptance.json','utf8'))
  const company=report.fixtures[1].company
  const {data:companyRow,error:companyError}=await admin.from('companies').select('id,name').eq('id',company).single()
  if(companyError || !companyRow.name.startsWith('SIE acceptance')) throw new Error('Synthetic company required')
  const email=`sie-browser-${randomUUID()}@test.invalid`,password=randomBytes(32).toString('hex')
  const {data,error}=await admin.auth.admin.createUser({email,password,email_confirm:true})
  if(error) throw error
  fixture={company,user:data.user.id,email,password}
  writeFileSync('.env.sie-ui.json',JSON.stringify(fixture,null,2))
  for(const result of [
    await admin.from('company_members').insert({company_id:company,user_id:fixture.user,role:'owner'}),
    await admin.from('user_preferences').upsert({user_id:fixture.user,active_company_id:company,locale:'sv'},{onConflict:'user_id'}),
    await admin.from('company_settings').update({onboarding_complete:true,company_name:'SIE browser test AB'}).eq('company_id',company),
  ]) if(result.error) throw result.error
}
const cookies=[]
const client=createServerClient(env.NEXT_PUBLIC_SUPABASE_URL,env.NEXT_PUBLIC_SUPABASE_ANON_KEY,{
  cookies:{getAll:()=>[],setAll:values=>cookies.push(...values)},
})
const {error}=await client.auth.signInWithPassword({email:fixture.email,password:fixture.password})
if(error) throw error
writeFileSync('.env.sie-browser-state.json',JSON.stringify({cookies:cookies.map(cookie=>({
  name:cookie.name,value:cookie.value,domain:'localhost',path:'/',expires:-1,httpOnly:false,secure:false,sameSite:'Lax',
})),origins:[]}))
console.log('Synthetic staging browser session prepared')