mirror of
https://github.com/certd/certd.git
synced 2026-05-13 19:47:55 +08:00
fix(aliyun-access): 添加阿里云密钥校验失败的错误处理
在测试阿里云访问密钥时,增加对STS错误响应的处理逻辑 添加相关测试用例验证错误处理和正常情况
This commit is contained in:
@@ -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}`);
|
||||
|
||||
Reference in New Issue
Block a user