mirror of
https://github.com/HeyPuter/puter.git
synced 2025-12-30 17:50:00 -06:00
119 lines
4.1 KiB
JavaScript
119 lines
4.1 KiB
JavaScript
const { verify_fsentry } = require("./fsentry");
|
|
const { expect } = require("chai");
|
|
|
|
module.exports = {
|
|
name: 'stat',
|
|
do: async t => {
|
|
let result;
|
|
|
|
const TEST_FILENAME = 'test_stat.txt';
|
|
|
|
let recorded_uid = null;
|
|
|
|
await t.case('stat with path (no flags)', async () => {
|
|
await t.write(TEST_FILENAME, 'stat test\n', { overwrite: true });
|
|
result = await t.stat(TEST_FILENAME);
|
|
|
|
await verify_fsentry(t, result);
|
|
recorded_uid = result.uid;
|
|
await t.case('filename is correct', () => {
|
|
expect(result.name).equal('test_stat.txt');
|
|
});
|
|
})
|
|
|
|
await t.case('stat with uid (no flags)', async () => {
|
|
result = await t.statu(recorded_uid);
|
|
|
|
await verify_fsentry(t, result);
|
|
await t.case('filename is correct', () => {
|
|
expect(result.name).equal('test_stat.txt');
|
|
});
|
|
})
|
|
|
|
await t.case('stat with no path or uid provided fails', async () => {
|
|
let threw = false;
|
|
try {
|
|
const res = await t.get('stat', {});
|
|
} catch (e) {
|
|
expect(e.response.status).equal(400);
|
|
expect(e.response.data).deep.equal({
|
|
code: 'field_missing',
|
|
message: 'Field `subject` is required.',
|
|
key: 'subject',
|
|
});
|
|
threw = true;
|
|
}
|
|
expect(threw).true;
|
|
});
|
|
|
|
await t.case('stat with versions', async () => {
|
|
result = await t.stat(TEST_FILENAME, {
|
|
return_versions: true,
|
|
});
|
|
|
|
await verify_fsentry(t, result);
|
|
await t.case('filename is correct', () => {
|
|
expect(result.name).equal(`test_stat.txt`);
|
|
});
|
|
await t.case(`result has versions array`, () => {
|
|
expect(Array.isArray(result.versions)).true;
|
|
});
|
|
})
|
|
|
|
// Backend should return 'shares' field when 'return_shares' is true. And
|
|
// the backwards compatiable of `return_permissions` is also tested here.
|
|
const flags = ['shares', 'permissions'];
|
|
for ( const flag of flags ) {
|
|
await t.case('stat with ' + flag, async () => {
|
|
result = await t.stat(TEST_FILENAME, {
|
|
['return_' + flag]: true,
|
|
});
|
|
|
|
await verify_fsentry(t, result);
|
|
await t.case('filename is correct', () => {
|
|
expect(result.name).equal(`test_stat.txt`);
|
|
});
|
|
await t.case(`result has shares (apps and users)`, () => {
|
|
expect('shares' in result).true;
|
|
expect(Array.isArray(result['shares']['users'])).true;
|
|
expect(Array.isArray(result['shares']['apps'])).true;
|
|
});
|
|
})
|
|
}
|
|
|
|
await t.mkdir('test_stat_subdomains', { overwrite: true });
|
|
await t.case('stat with subdomains', async () => {
|
|
result = await t.stat('test_stat_subdomains', {
|
|
return_subdomains: true,
|
|
});
|
|
|
|
await verify_fsentry(t, result);
|
|
await t.case('directory name is correct', () => {
|
|
expect(result.name).equal(`test_stat_subdomains`);
|
|
});
|
|
await t.case(`result has subdomains array`, () => {
|
|
expect(Array.isArray(result.subdomains)).true;
|
|
});
|
|
console.log('RESULT', result);
|
|
})
|
|
|
|
{
|
|
const flag = 'size';
|
|
await t.case('stat with ' + flag, async () => {
|
|
result = await t.stat(TEST_FILENAME, {
|
|
['return_' + flag]: true,
|
|
});
|
|
|
|
await verify_fsentry(t, result);
|
|
await t.case('filename is correct', () => {
|
|
expect(result.name).equal(`test_stat.txt`);
|
|
});
|
|
console.log('RESULT', result);
|
|
})
|
|
}
|
|
|
|
|
|
// console.log('result?', result);
|
|
}
|
|
};
|