Files
bare-operating-system/packages/bare-os-booter/test.vfs-bare-guest-deny.js
T
2026-08-18 18:11:34 -04:00

61 lines
1.4 KiB
JavaScript

import test from 'brittle'
import b4a from 'b4a'
import Hyperdrive from 'hyperdrive'
import Corestore from 'corestore'
import { rmSync } from 'node:fs'
import { createVfs } from './lib/vfs/vfs.js'
function testCorestoreDir(name) {
return `/tmp/bare-os-booter-${name}-${Date.now()}-${Math.random().toString(16).slice(2)}`
}
test('guest denies /.bare sensitive operations (readdir/read/write/unlink)', async (t) => {
const dir = testCorestoreDir('vfs-bare-guest-deny')
const store = new Corestore(dir)
const sys = new Hyperdrive(store)
const personal = new Hyperdrive(store.namespace('pv-bare-deny'))
await sys.ready()
await personal.ready()
await personal.put('/.bare/account', b4a.from('acct'))
const vfs = createVfs(sys, personal, {
HOME: '/home/guest',
PWD: '/home/guest',
PATH: '/bin',
USER: 'guest'
})
vfs.bareOsIdentitySession = 'guest'
let e1 = null
try {
await vfs.readdir('/.bare/account')
} catch (e) {
e1 = e
}
t.ok(e1)
let e2 = null
try {
await vfs.readFile('/.bare/account')
} catch (e) {
e2 = e
}
t.ok(e2)
let e3 = null
try {
await vfs.writeFile('/.bare/account', b4a.from('x'))
} catch (e) {
e3 = e
}
t.ok(e3)
let e4 = null
try {
await vfs.unlink('/.bare/account')
} catch (e) {
e4 = e
}
t.ok(e4)
await store.close()
rmSync(dir, { recursive: true, force: true })
})