Ctrl K
ComunidadGuías…

app/scripts/smoke-plugin-services.mjs

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

Archivo original ↗Preguntar a KiBot
import assert from 'node:assert/strict'
import { createHash, randomBytes, randomUUID } from 'node:crypto'
import { makeSignature } from 'better-auth/crypto'
import { createSmokeRpc } from './smoke-rpc.mjs'

/** Exercises the composed local/npm fixture plugins through real core handlers. */
export async function smokePluginServices({
  origin,
  authSecret,
  query,
  appDir,
  development = false,
  modulePrefix = 'src',
  bundleDir,
}) {
  if (process.env.DEVPUSH_SMOKE_PLUGINS !== '1') return
  const teamId = randomUUID(),
    userId = randomUUID(),
    token = randomBytes(32).toString('hex'),
    now = Date.now()
  await query(
    0,
    `insert into teams(id,name,slug) values('${teamId}','Plugin smoke','${teamId}')`,
  )
  await query(
    0,
    `insert into user(id,name,username,email,email_verified,default_team_id,profile_confirmed_at) values('${userId}','Plugin smoke','${userId}','${userId}@example.invalid',1,'${teamId}',${now})`,
  )
  await query(
    0,
    `insert into team_members(id,user_id,team_id,role) values('${randomUUID()}','${userId}','${teamId}','owner')`,
  )
  await query(
    0,
    `insert into session(id,token,user_id,expires_at,created_at,updated_at) values('${randomUUID()}','${token}','${userId}',${now + 3600000},${now},${now})`,
  )
  const headers = {
    cookie: `devpush.session_token=${encodeURIComponent(token + '.' + (await makeSignature(token, authSecret)))}`,
    origin,
  }
  const create = await createSmokeRpc({
    origin,
    headers,
    appDir,
    development,
    name: 'createServer',
    modulePath: `${modulePrefix}/server/servers/functions.ts`,
    ...(bundleDir ? { bundleDir } : {}),
  })
  const events = async (id) =>
    (await fetch(`${origin}/api/plugins/${id}/events?team=${teamId}`)).json()
  const created = await create({ teamSlug: teamId, name: 'plugin-server' })
  assert.ok(created.result?.id, JSON.stringify(created))
  for (const id of ['local-proof', 'npm-proof'])
    assert.deepEqual(await events(id), [`${id}:before`, `${id}:after`])
  assert.deepEqual(
    await (
      await fetch(`${origin}/api/plugins/local-proof/order?team=${teamId}`)
    ).json(),
    [
      'local-proof:before',
      'npm-proof:before',
      'npm-proof:after',
      'local-proof:after',
    ],
  )
  const agentToken = 'dpa_' + randomBytes(32).toString('hex')
  await query(
    0,
    `update servers set status='connected',agent_credential_hash='${createHash('sha256').update(agentToken).digest('hex')}' where id='${created.result.id}'`,
  )
  const certificate = (token) =>
    fetch(`${origin}/api/agents/certificates`, {
      method: 'POST',
      headers: { 'content-type': 'application/json' },
      body: JSON.stringify({ serverId: created.result.id, token }),
    })
  assert.equal((await certificate('invalid-credential')).status, 401)
  assert.deepEqual(await events('local-proof'), [
    'local-proof:before',
    'local-proof:after',
  ])
  const response = await certificate(agentToken)
  assert.equal(response.status, 200, await response.clone().text())
  assert.deepEqual(await response.json(), {
    status: 'configuration',
    dnsNames: ['*.proof.example.test'],
  })
  assert.deepEqual(await events('local-proof'), [
    'local-proof:before',
    'local-proof:after',
    'local-proof:reconcile',
    'local-proof:certificate',
  ])
  assert.deepEqual(await events('npm-proof'), [
    'npm-proof:before',
    'npm-proof:after',
    'npm-proof:reconcile',
  ])
  await query(
    0,
    `update team_members set role='member' where team_id='${teamId}'`,
  )
  assert.equal(
    (await create({ teamSlug: teamId, name: 'forbidden' })).error?.code,
    'FORBIDDEN',
  )
  assert.equal(
    (await events('local-proof')).length,
    4,
    'RBAC must run before policies',
  )
  await query(
    0,
    `update team_members set role='owner' where team_id='${teamId}'`,
  )
  assert.equal(
    (
      await fetch(`${origin}/api/plugins/local-proof/deny?team=${teamId}`, {
        method: 'POST',
      })
    ).status,
    204,
  )
  assert.equal(
    (await create({ teamSlug: teamId, name: 'restricted' })).error?.code,
    'WORKSPACE_RESTRICTED',
  )
  assert.equal(
    (await events('npm-proof')).length,
    3,
    'Rejecting policy must prevent later policies',
  )
  assert.equal(
    (
      await query(
        0,
        `select count(*) as n from servers where team_id='${teamId}'`,
      )
    )[0].n,
    1,
    'Refused operations must not write',
  )
  console.log(
    'Installed local/npm policies, RBAC ordering, lifecycle fan-out and authenticated certificate provider passed.',
  )
}