mirror of
https://github.com/certd/certd.git
synced 2026-05-17 05:37:30 +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() {
|
async onTestRequest() {
|
||||||
await this.getCallerIdentity();
|
await this.getCallerIdentity();
|
||||||
return "ok"
|
return "ok";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -64,6 +64,11 @@ export class AliyunAccess extends BaseAccess {
|
|||||||
const sts = await this.getStsClient();
|
const sts = await this.getStsClient();
|
||||||
// 调用 GetCallerIdentity 接口
|
// 调用 GetCallerIdentity 接口
|
||||||
const result = await sts.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("✅ 密钥有效!");
|
||||||
this.ctx.logger.log(` 账户ID: ${result.AccountId}`);
|
this.ctx.logger.log(` 账户ID: ${result.AccountId}`);
|
||||||
|
|||||||
Reference in New Issue
Block a user