64 lines
1.5 KiB
TypeScript
64 lines
1.5 KiB
TypeScript
import { assert } from 'vitest'
|
|
|
|
import { isDebug, sandboxTest, wait } from '../setup.js'
|
|
import { catchCmdExitErrorInBackground } from '../cmdHelper.js'
|
|
sandboxTest(
|
|
'ping server in running sandbox',
|
|
async ({ sandbox }) => {
|
|
const cmd = await sandbox.commands.run('python -m http.server 8000', {
|
|
background: true,
|
|
})
|
|
|
|
const disable = catchCmdExitErrorInBackground(cmd)
|
|
|
|
try {
|
|
await wait(1000)
|
|
|
|
const host = sandbox.getHost(8000)
|
|
|
|
let res = await fetch(`${isDebug ? 'http' : 'https'}://${host}`)
|
|
|
|
for (let i = 0; i < 20; i++) {
|
|
if (res.status === 200) {
|
|
break
|
|
}
|
|
|
|
res = await fetch(`${isDebug ? 'http' : 'https'}://${host}`)
|
|
await wait(500)
|
|
}
|
|
assert.equal(res.status, 200)
|
|
disable()
|
|
} finally {
|
|
try {
|
|
await cmd.kill()
|
|
} catch (e) {
|
|
console.error(e)
|
|
}
|
|
}
|
|
},
|
|
60_000
|
|
)
|
|
|
|
sandboxTest.skipIf(isDebug)(
|
|
'ping server in non-running sandbox',
|
|
async ({ sandbox }) => {
|
|
const host = sandbox.getHost(3000)
|
|
const url = `https://${host}`
|
|
|
|
await sandbox.kill()
|
|
|
|
const res = await fetch(url)
|
|
assert.equal(res.status, 502)
|
|
|
|
const text = await res.text()
|
|
const json = JSON.parse(text) as {
|
|
message: string
|
|
sandboxId: string
|
|
code: number
|
|
}
|
|
assert.equal(json.message, 'The sandbox was not found')
|
|
assert.isTrue(sandbox.sandboxId.startsWith(json.sandboxId))
|
|
assert.equal(json.code, 502)
|
|
}
|
|
)
|