All checks were successful
Container-Image bauen und veröffentlichen / build-and-push (push) Successful in 5m15s
29 lines
2.3 KiB
JavaScript
29 lines
2.3 KiB
JavaScript
import { mkdtempSync, cpSync } from 'node:fs'
|
|
import { tmpdir } from 'node:os'
|
|
import { join } from 'node:path'
|
|
import { spawnSync, spawn } from 'node:child_process'
|
|
import { randomBytes } from 'node:crypto'
|
|
import { PrismaClient } from '@prisma/client'
|
|
import bcrypt from 'bcryptjs'
|
|
const production=process.argv.includes('--production')
|
|
const dir=mkdtempSync(join(tmpdir(),'syncova-test-'))
|
|
const database='file:'+join(dir,'test.db').replaceAll('\\','/')
|
|
const env={...process.env,DATABASE_URL:database,NEXTAUTH_SECRET:randomBytes(32).toString('hex'),AUTH_TRUST_HOST:'true',NEXTAUTH_URL:'http://127.0.0.1:3219',PORT:'3219',HOSTNAME:'127.0.0.1',TEST_DIST_DIR:production?'.next-e2e-production':'.next-e2e'}
|
|
const setup=spawnSync(process.execPath,['node_modules/prisma/build/index.js','db','push','--skip-generate'],{env,stdio:'inherit'})
|
|
if(setup.status!==0) process.exit(1)
|
|
const prisma=new PrismaClient({datasources:{db:{url:database}}})
|
|
await prisma.user.create({data:{email:'super@example.org',password:await bcrypt.hash('Test-password-only-2026',12),role:'SUPER_ADMIN'}})
|
|
await prisma.user.create({data:{email:'editor@example.org',password:await bcrypt.hash('Test-password-only-2026',12),role:'ADMIN'}})
|
|
await prisma.sitePages.create({data:{id:1,imprint:'## Kontakt\nTestverwaltung',privacy:'## Datenschutz\nTestinhalt',accessibility:'## Stand\nTestinhalt',easyLanguage:'## Willkommen\nTestinhalt',signLanguage:'## Video\nTestinhalt'}})
|
|
await prisma.privacyPolicy.create({data:{slug:'test-bauantrag',title:'Bauantrag',processingDescription:'Bauantrag bearbeiten',recipients:'Bauamt',responsible:'Testverwaltung',isPublic:true}})
|
|
await prisma.$disconnect()
|
|
if(production){
|
|
const build=spawnSync(process.execPath,['node_modules/next/dist/bin/next','build'],{env,stdio:'inherit'})
|
|
if(build.status!==0)process.exit(build.status??1)
|
|
cpSync(join(env.TEST_DIST_DIR,'static'),join(env.TEST_DIST_DIR,'standalone',env.TEST_DIST_DIR,'static'),{recursive:true})
|
|
}
|
|
const args=production?[join(env.TEST_DIST_DIR,'standalone','server.js')]:['node_modules/next/dist/bin/next','dev','--port','3219','--hostname','127.0.0.1']
|
|
const child=spawn(process.execPath,args,{env,stdio:'inherit'})
|
|
for(const signal of ['SIGINT','SIGTERM']) process.on(signal,()=>child.kill(signal))
|
|
child.on('exit',code=>process.exit(code??1))
|