2026-05-10 16:57:12 +08:00
|
|
|
import assert from "assert";
|
2026-05-24 05:42:51 +08:00
|
|
|
import esmock from "esmock";
|
2026-05-10 16:57:12 +08:00
|
|
|
import { AccessService } from "./access-service.js";
|
|
|
|
|
|
|
|
|
|
describe("AccessService", () => {
|
|
|
|
|
it("does not write id into access setting when updating selected fields", async () => {
|
|
|
|
|
let updateParam: any;
|
|
|
|
|
const service = new AccessService();
|
2026-05-24 05:42:51 +08:00
|
|
|
service.info = async () =>
|
|
|
|
|
({
|
|
|
|
|
id: 12,
|
|
|
|
|
type: "eab",
|
|
|
|
|
}) as any;
|
2026-05-10 16:57:12 +08:00
|
|
|
service.decryptAccessEntity = () => ({
|
|
|
|
|
kid: "kid-1",
|
|
|
|
|
});
|
|
|
|
|
service.update = async (param: any) => {
|
|
|
|
|
updateParam = param;
|
|
|
|
|
return param;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
await service.updateAccess({
|
|
|
|
|
id: 12,
|
|
|
|
|
accountKey: "account-key",
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
assert.deepEqual(JSON.parse(updateParam.setting), {
|
|
|
|
|
kid: "kid-1",
|
|
|
|
|
accountKey: "account-key",
|
|
|
|
|
});
|
|
|
|
|
});
|
2026-05-24 05:42:51 +08:00
|
|
|
|
|
|
|
|
it("writes subtype from access define field", async () => {
|
|
|
|
|
const { AccessService: MockedAccessService } = await esmock("./access-service.js", {
|
|
|
|
|
"@certd/pipeline": {
|
|
|
|
|
accessRegistry: {
|
|
|
|
|
getDefine(type: string) {
|
|
|
|
|
assert.equal(type, "acmeAccount");
|
|
|
|
|
return {
|
|
|
|
|
name: "acmeAccount",
|
|
|
|
|
subtype: "caType",
|
|
|
|
|
input: {
|
|
|
|
|
caType: {},
|
|
|
|
|
account: {
|
|
|
|
|
encrypt: true,
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
};
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
});
|
|
|
|
|
const service = new MockedAccessService();
|
|
|
|
|
service.encryptService = {
|
|
|
|
|
encrypt(value: string) {
|
|
|
|
|
return `encrypted:${value}`;
|
|
|
|
|
},
|
|
|
|
|
};
|
|
|
|
|
const param: any = {
|
|
|
|
|
type: "acmeAccount",
|
|
|
|
|
setting: JSON.stringify({
|
|
|
|
|
caType: "letsencrypt",
|
|
|
|
|
account: JSON.stringify({
|
|
|
|
|
accountKey: "key",
|
|
|
|
|
accountUri: "https://example.com/acct/1",
|
|
|
|
|
caType: "letsencrypt",
|
|
|
|
|
}),
|
|
|
|
|
}),
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
service.encryptSetting(param);
|
|
|
|
|
|
|
|
|
|
assert.equal(param.subtype, "letsencrypt");
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it("allows acme account access to be saved before account generation", async () => {
|
|
|
|
|
const { AccessService: MockedAccessService } = await esmock("./access-service.js", {
|
|
|
|
|
"@certd/pipeline": {
|
|
|
|
|
accessRegistry: {
|
|
|
|
|
getDefine() {
|
|
|
|
|
return {
|
|
|
|
|
name: "acmeAccount",
|
|
|
|
|
subtype: "caType",
|
|
|
|
|
input: {
|
|
|
|
|
caType: {},
|
|
|
|
|
account: {
|
|
|
|
|
encrypt: true,
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
};
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
});
|
|
|
|
|
const service = new MockedAccessService();
|
|
|
|
|
const param: any = {
|
|
|
|
|
type: "acmeAccount",
|
|
|
|
|
setting: JSON.stringify({
|
|
|
|
|
caType: "letsencrypt",
|
|
|
|
|
}),
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
service.encryptSetting(param);
|
|
|
|
|
|
|
|
|
|
assert.equal(param.subtype, "letsencrypt");
|
|
|
|
|
assert.deepEqual(JSON.parse(param.setting), {
|
|
|
|
|
caType: "letsencrypt",
|
|
|
|
|
});
|
|
|
|
|
});
|
2026-05-10 16:57:12 +08:00
|
|
|
});
|