mirror of
https://github.com/paperclipai/paperclip.git
synced 2026-10-23 00:53:38 +02:00
Preserve resolved secrets when audit writes fail
This commit is contained in:
1 parent
98083b7ff0
commit
b4c25b8bf0
2 files changed
+34
-2
No files matched your search
@@ -205,6 +205,37 @@ describeEmbeddedPostgres("secretService", () => {
|
||||
expect(JSON.stringify(events)).not.toContain("runtime-secret");
|
||||
});
|
||||
|
||||
it("returns resolved secrets even when success metadata writes fail", async () => {
|
||||
const companyId = await seedCompany();
|
||||
const svc = secretService(db);
|
||||
const secret = await svc.create(companyId, {
|
||||
name: `metadata-write-${randomUUID()}`,
|
||||
provider: "local_encrypted",
|
||||
value: "runtime-secret",
|
||||
});
|
||||
const env = {
|
||||
API_KEY: { type: "secret_ref" as const, secretId: secret.id, version: "latest" as const },
|
||||
};
|
||||
await svc.syncEnvBindingsForTarget(companyId, { targetType: "agent", targetId: "agent-1" }, env);
|
||||
|
||||
vi.spyOn(db, "update").mockImplementationOnce(
|
||||
() => ({
|
||||
set: () => ({
|
||||
where: () => Promise.reject(new Error("metadata write failed")),
|
||||
}),
|
||||
}) as ReturnType<typeof db.update>,
|
||||
);
|
||||
|
||||
const resolved = await svc.resolveEnvBindings(companyId, env, {
|
||||
consumerType: "agent",
|
||||
consumerId: "agent-1",
|
||||
actorType: "agent",
|
||||
actorId: "agent-1",
|
||||
});
|
||||
|
||||
expect(resolved.env.API_KEY).toBe("runtime-secret");
|
||||
});
|
||||
|
||||
it("stores external references without requiring or persisting secret values", async () => {
|
||||
const companyId = await seedCompany();
|
||||
const svc = secretService(db);
|
||||
|
||||
@@ -528,7 +528,8 @@ export function secretService(db: Db) {
|
||||
db
|
||||
.update(companySecrets)
|
||||
.set({ lastResolvedAt: new Date(), updatedAt: new Date() })
|
||||
.where(eq(companySecrets.id, secret.id)),
|
||||
.where(eq(companySecrets.id, secret.id))
|
||||
.catch(() => undefined),
|
||||
recordAccessEvent({
|
||||
companyId,
|
||||
secretId: secret.id,
|
||||
@@ -536,7 +537,7 @@ export function secretService(db: Db) {
|
||||
provider: providerId,
|
||||
context,
|
||||
outcome: "success",
|
||||
}),
|
||||
}).catch(() => undefined),
|
||||
]);
|
||||
return {
|
||||
value,
|
||||
|
||||
Reference in new issue
Block a user