74 lines
2.4 KiB
JavaScript
74 lines
2.4 KiB
JavaScript
import fs from 'node:fs'
|
|
import os from 'node:os'
|
|
import path from 'node:path'
|
|
import { spawnSync } from 'node:child_process'
|
|
import { fileURLToPath } from 'node:url'
|
|
|
|
import { describe, expect, it } from 'vitest'
|
|
|
|
const currentFile = fileURLToPath(import.meta.url)
|
|
const websiteRoot = path.resolve(path.dirname(currentFile), '..')
|
|
const scriptPath = path.join(websiteRoot, 'scripts', 'run-vps-same-origin-live-deploy.mjs')
|
|
|
|
describe('run-vps-same-origin-live-deploy CLI', () => {
|
|
it('supports dry-run json output with a sanitized manifest preview', () => {
|
|
const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), 'hypertwist-live-deploy-cli-'))
|
|
const manifestPath = path.join(tempDir, 'bundle.json')
|
|
const identityFile = path.join(tempDir, 'id_ed25519')
|
|
|
|
fs.writeFileSync(manifestPath, JSON.stringify({
|
|
deploymentTier: 'preview',
|
|
checkoutRoot: '/srv/hypertwist/current',
|
|
publicOrigin: 'https://hypertwist.app',
|
|
supportEmail: 'hello@hypertwist.app',
|
|
publicDocsUrl: 'https://hypertwist.app/resources',
|
|
releaseNotesUrl: 'https://hypertwist.app/changelog',
|
|
correspondingSourceUrl: 'https://git.scriptoriumai.io/scriptoriumadmin/hypertwist',
|
|
openSourceRepoUrl: 'https://git.scriptoriumai.io/scriptoriumadmin/hypertwist',
|
|
operatorCheckoutUrl: '',
|
|
windowsDownloadUrl: '',
|
|
releaseManifestVersion: '',
|
|
windowsRelease: {
|
|
buildId: '',
|
|
sha256: '',
|
|
publishedAt: '',
|
|
},
|
|
server: {
|
|
paddleWebhookSecret: 'super-secret-token',
|
|
},
|
|
}, null, 2))
|
|
fs.writeFileSync(identityFile, 'fake-key', 'utf8')
|
|
|
|
try {
|
|
const result = spawnSync(
|
|
process.execPath,
|
|
[
|
|
scriptPath,
|
|
'--manifest',
|
|
manifestPath,
|
|
'--identity-file',
|
|
identityFile,
|
|
'--archive-source',
|
|
'worktree',
|
|
'--dry-run',
|
|
'--json',
|
|
],
|
|
{
|
|
cwd: websiteRoot,
|
|
encoding: 'utf8',
|
|
},
|
|
)
|
|
|
|
expect(result.status).toBe(0)
|
|
expect(result.stderr).toBe('')
|
|
|
|
const payload = JSON.parse(result.stdout)
|
|
expect(payload.vpsUser).toBe('root')
|
|
expect(payload.archiveSource).toBe('worktree')
|
|
expect(payload.manifest.server.paddleWebhookSecret).toBe('su***en')
|
|
expect(payload.deployScript).toContain('__HYPERTWIST_LIVE_DEPLOY_SUMMARY__')
|
|
} finally {
|
|
fs.rmSync(tempDir, { recursive: true, force: true })
|
|
}
|
|
})
|
|
})
|