Files
puter/tests/api-tester/tests/stat.js
T
Xiaochen Cui c93a53ead2 ci: init e2e test for browser env, tidy other tests (#1796)
* ci: init e2e test for browser env

stash changes

* test: update fsentry definition, add tests

stash changes

* test: pass puter-js mkdir test

* test: add test for puter-js move

* tidy code

* tidy code

* doc: add docs for playwright test

* recover memoryfs

* test: puter-js readdir/stat

* test: puter-js write

* test: puter-js read

* test: puter-js move_cart

* test: fix failed tests on move

* tests: rename files

* test: puter-js copy_cart

* tests: puter-js batch/delete, read config from file

* ci: add vitest

* ci: update names and timeout

* ci: simplify playwright-test

* ci: simplify api-test

* move "api-tester" from tools to tests

* test: update example config

* test: remove folder tests/api-tester/ci

* test: unify config location

* test: remove unused files

* ci: fix wrong config

* ci: fix wrong path

* test: add docs

* ci: update timeout, print artifact url
2025-10-28 16:35:37 -07:00

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);
}
};