fix(aliyun-access): 添加阿里云密钥校验失败的错误处理

在测试阿里云访问密钥时,增加对STS错误响应的处理逻辑
添加相关测试用例验证错误处理和正常情况
This commit is contained in:
xiaojunnuo
2026-05-07 22:18:34 +08:00
parent 7083e7aff7
commit b75c625ddc
2 changed files with 47 additions and 1 deletions
@@ -0,0 +1,41 @@
/// <reference types="mocha" />
import assert from "node:assert/strict";
import { AliyunAccess } from "./aliyun-access.js";
function createAccess(result: Record<string, unknown>) {
const access = new AliyunAccess();
access.ctx = {
logger: {
log() {},
},
} as any;
access.getStsClient = async () =>
({
getCallerIdentity: async () => result,
}) as any;
return access;
}
describe("AliyunAccess", () => {
it("rejects STS error responses when testing access keys", async () => {
const access = createAccess({
Code: "InvalidAccessKeyId.NotFound",
Message: "Specified access key is not found.",
RequestId: "request-id",
});
await assert.rejects(() => access.onTestRequest(), /InvalidAccessKeyId\.NotFound/);
});
it("returns ok for valid STS identity responses", async () => {
const access = createAccess({
AccountId: "123456789",
Arn: "acs:ram::123456789:user/test",
UserId: "test-user",
});
assert.equal(await access.onTestRequest(), "ok");
});
});
@@ -41,7 +41,7 @@ export class AliyunAccess extends BaseAccess {
async onTestRequest() {
await this.getCallerIdentity();
return "ok"
return "ok";
}
@@ -64,6 +64,11 @@ export class AliyunAccess extends BaseAccess {
const sts = await this.getStsClient();
// 调用 GetCallerIdentity 接口
const result = await sts.getCallerIdentity();
if (result.Code || !result.AccountId) {
const message = result.Message || "阿里云密钥校验失败";
const code = result.Code ? `[${result.Code}] ` : "";
throw new Error(`${code}${message}`);
}
this.ctx.logger.log("✅ 密钥有效!");
this.ctx.logger.log(` 账户ID: ${result.AccountId}`);