53 lines
1.7 KiB
JavaScript
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);
|
||
|
|
});
|