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 () => ` NoSuchKey The specified key does not exist. `, }); 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); });