Files
omniai-server/scripts/ossClientContract.test.js
2026-06-02 13:14:10 +08:00

53 lines
1.7 KiB
JavaScript

const assert = require("node:assert/strict");
process.env.STS_ACCESS_KEY_ID = "test-key";
process.env.STS_ACCESS_KEY_SECRET = "test-secret";
process.env.OSS_BUCKET = "test-bucket";
process.env.OSS_REGION = "oss-cn-test";
const { getObject, createSignedReadUrl } = require("../src/ossClient");
async function main() {
const originalFetch = global.fetch;
global.fetch = async () => ({
ok: false,
status: 404,
text: async () => `<?xml version="1.0" encoding="UTF-8"?>
<Error>
<Code>NoSuchKey</Code>
<Message>The specified key does not exist.</Message>
</Error>`,
});
try {
await assert.rejects(
() => getObject("users/1/projects/missing/current/project.json"),
(error) => {
assert.equal(error.status, 404);
assert.equal(error.code, "oss_no_such_key");
return true;
},
);
} finally {
global.fetch = originalFetch;
}
const beforeExpires = Math.floor(Date.now() / 1000) + 60;
const signedUrl = createSignedReadUrl("tmp/admin-1/generation-inputs/audios/demo audio.mp3", 60);
const parsedSignedUrl = new URL(signedUrl);
const afterExpires = Math.floor(Date.now() / 1000) + 60;
assert.equal(parsedSignedUrl.host, "test-bucket.oss-cn-test.aliyuncs.com");
assert.equal(parsedSignedUrl.pathname, "/tmp/admin-1/generation-inputs/audios/demo%20audio.mp3");
assert.equal(parsedSignedUrl.searchParams.get("OSSAccessKeyId"), "test-key");
assert.ok(Number(parsedSignedUrl.searchParams.get("Expires")) >= beforeExpires);
assert.ok(Number(parsedSignedUrl.searchParams.get("Expires")) <= afterExpires);
assert.ok(parsedSignedUrl.searchParams.get("Signature"));
console.log("oss client contract tests passed");
}
main().catch((error) => {
console.error(error);
process.exit(1);
});